标签: docker-secrets

你如何使用docker-compose v3.1管理秘密值?

docker-compose.yml规范的3.1版引入了对秘密的支持.

我试过这个:

version: '3.1'

services:
  a: 
    image: tutum/hello-world
  secret: 
    password: the_password
  b:
    image: tutum/hello-world
Run Code Online (Sandbox Code Playgroud)

$ docker-compose up 收益:

Unsupported config option for services.secret: 'password'

我们如何在实践中使用秘密功能?

docker docker-compose docker-secrets

49
推荐指数
3
解决办法
5万
查看次数

在 docker compose 中指定用于健康检查的 postgres 参数的安全方法

我使用 Secrets 来通过使用 Postgres 作为数据库的 Docker 堆栈来管理用户名、密码和数据库名。我现在想使用Docker提供的健康检查功能。

docker-compose.yml

x-db-secrets: &db_secrets
    - psql_user
    - psql_pass
    - psql_dbname

services:
  db:
    image: postgres:13.1
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER_FILE=/run/secrets/psql_user
      - POSTGRES_DB_FILE=/run/secrets/psql_dbname
      - POSTGRES_PASSWORD_FILE=/run/secrets/psql_pass
    secrets: *db_secrets
    healthcheck:
      test: pg_isready -U myuser -d db_prod
      interval: 10s
      timeout: 3s
      retries: 3

(... other services...)

volumes:
  postgres_data:
  static_content:
  media_content:

secrets:
  psql_user:
    external: true
  psql_pass:
    external: true
  psql_dbname:
    external: true
Run Code Online (Sandbox Code Playgroud)

正如本节中可以指出的healthcheck:,我通过运行状况检查公开了数据库用户名和数据库名称。我的问题(根据答案进行一些后续行动):

  • 有关系吗?docker-compose.yml 文件并不存在于运行此代码的主机上。因此,潜在的攻击者无法从那里访问此信息...但是,由于 docker 将执行运行状况检查,因此它可能会在该容器中进行实时跟踪(shell?存储该过程的 docker 配置文件?)
  • 如果确实重要,我如何在不暴露该信息的情况下执行健康检查?我必须直接使用这些秘密,但是我无法弄清楚如何在 docker-compose文件中使用这些秘密......

想法?解决方法?

额外细节:

  • 我目前正在检查数据库是否已从使用它的(烧瓶)容器中启动。例如,flask 服务检查是否可以 ping …

docker docker-secrets health-check

28
推荐指数
2
解决办法
5万
查看次数

Docker撰写 - 秘密不允许使用其他属性机密

docker-compose --version docker-compose version 1.11.1,build 7c5d5e4

我已将秘密'my_secret_data'添加到我的群集群中:

我的撰写文件的开头如下:

version: "3.1"
secrets:
  my_secret_data:
    external: true
services:
  master:
    image: jenkins-master
    secrets:
     - my_secret_data
    ports:
     - "8080:8080"
     - "50000:50000" 
Run Code Online (Sandbox Code Playgroud)

'docker stack deploy'不断给出错误:

秘密不允许额外的财产秘密

我跟着你如何使用docker-compose v3.1管理秘密值?据我所知,并安装了正确的版本,但不断收到上述错误.任何帮助非常感谢.

docker-compose docker-secrets

13
推荐指数
2
解决办法
6109
查看次数

docker stack:从秘密设置环境变量

我试图从秘密设置密码,但它没有拿起它.Docker Server版本为17.06.2-ce.我用下面的命令来设置秘密:

echo "abcd" | docker secret create password -
Run Code Online (Sandbox Code Playgroud)

我的docker compose yml文件看起来像这样

version: '3.1'
...
 build:
  context: ./test
  dockerfile: Dockerfile
environment:
  user_name: admin
  eureka_password: /run/secrets/password
secrets:
  - password
Run Code Online (Sandbox Code Playgroud)

我也有root的秘密标签:

secrets:
  password:
     external: true
Run Code Online (Sandbox Code Playgroud)

当我在环境中对密码进行硬编码时,它可以正常工作,但是当我尝试通过秘密时它不会接收.我试着把作曲版本改为3.2,但没有运气.任何指针都非常感谢!

docker-compose docker-secrets

12
推荐指数
2
解决办法
5665
查看次数

码头工人组成秘密无群

我不想将docker secrets与swarm一起使用,我发现这样做是可行的。基本上,docker只是将/ run / secrets挂载到docker容器中,但是当我进入新建的docker容器并echo $POSTGRES_PASSWORD_FILE获取我的秘密文件的路径时。

root@94a0f092eeb1:/# echo $POSTGRES_PASSWORD_FILE
/run/secrets/db_password
Run Code Online (Sandbox Code Playgroud)

这是我的docker-compose.yml档案

version: '3.1'
services:
    postgres:
        image: postgres:9.4
        container_name: postgres
        environment:
            POSTGRES_USER: "db_user"
            POSTGRES_PASSWORD_FILE: /run/secrets/db_password
            POSTGRES_DB: "my_db"
        secrets:
          - db_password
        volumes:
            - ./postgres:/var/lib/postgresql/data
        expose:
            - 5432
secrets:
   db_password:
     file: ./POSTGRES_PASSWORD.txt
Run Code Online (Sandbox Code Playgroud)

我的密码设置正确/文件有问题吗?

docker docker-compose docker-secrets

12
推荐指数
1
解决办法
3061
查看次数

如何远程连接docker swarm?

是否可以从我的本地mac在云托管的docker swarm集群上执行命令?如果有,怎么样?

我想执行命令,例如从我的本地执行docker swarm:

docker create secret my-secret <address to local file>
docker service create --name x --secrets my-secret image
Run Code Online (Sandbox Code Playgroud)

docker docker-swarm docker-swarm-mode docker-secrets

10
推荐指数
2
解决办法
7957
查看次数

如何使用 Docker 与 Kaniko 构建 Secret

语境

我们当前的构建系统在 docker 容器(Docker in Docker)内构建 docker 镜像。我们的许多 Docker 构建都需要凭据才能从私有工件存储库中提取。

我们已经使用 docker Secrets 处理了这个问题。将秘密传递给 docker build 命令,并在 Dockerfile 中,在需要的地方引用 RUN 命令中的秘密。这意味着我们正在使用 docker buildkit。 本文对此进行了解释。

我们正在迁移到不同的构建系统(GitLab),并且管理员已在 Docker 中禁用 Docker(安全原因),因此我们将迁移到Kaniko进行 docker 构建。

问题

Kaniko 似乎不像 docker 那样支持秘密。(没有命令行选项可以通过 Kaniko 执行器传递秘密)。

docker 构建所需的凭据存储在 GitLab 变量中。对于 DinD,您只需将这些变量作为秘密添加到 docker 构建中:

DOCKER_BUILDKIT=1 docker build . \
   --secret=type=env,id=USERNAME \
   --secret=type=env,id=PASSWORD \
Run Code Online (Sandbox Code Playgroud)

然后在 docker 中,使用秘密:

RUN --mount=type=secret,id=USERNAME --mount=type=secret,id=PASSWORD \
   USER=$(cat /run/secrets/USERNAME) \
    PASS=$(cat /run/secrets/PASSWORD) \
     ./scriptThatUsesTheseEnvVarCredentialsToPullArtifacts
...rest of build..
Run Code Online (Sandbox Code Playgroud)

如果没有 kaniko 执行器的 --secret 标志,我不确定如何利用 …

gitlab-ci docker-secrets docker-in-docker kaniko docker-buildkit

9
推荐指数
1
解决办法
4324
查看次数

使用 --from-file 而非 filename 时如何设置 kubernetes 密钥名称?

--from-file使用文件名以外的文件名时,有没有办法设置 kubernetes 密钥名称?

secrets.json我在容器中使用了一堆不同的配置文件。但是,为了组织我的文件,它们都没有secrets.json在我的主机上命名。例如secrets.dev.jsonsecrets.test.json. 我的应用程序只知道读入secrets.json.

当我使用 创建秘密时kubectl create secret generic my-app-secrets --from-file=secrets.dev.json,这会导致密钥名称为secrets.dev.json,而不是secrets.json

我将我的秘密内容作为文件安装(这是从 Docker swarm 迁移而来的遗留物)。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-deployment
spec:
  template:
    spec:
      volumes:
      - name: my-secret
        secret:
          secretName: my-app-secrets
      containers:
        - name: my-app
          volumeMounts:
            - name: my-secret
              mountPath: "/run/secrets/secrets.json"
              subPath: "secrets.json"
Run Code Online (Sandbox Code Playgroud)

因为它secrets.json不作为键存在,因为它使用了文件名 ( secrets.dev.json),所以它最终会变成一个目录。我最终得到了这个安装路径:/run/secrets/secrets.json/secrets.dev.json

我希望能够将密钥名称设置为secrets.json而不是使用secrets.dev.json.

kubernetes docker-secrets kubernetes-secrets

8
推荐指数
1
解决办法
3094
查看次数

如何处理 application.properties 文件中的 Docker-Secrets

如何将 Docker 机密(/run/secrets 中的文件/数据)注入到 application.properties 文件中?使用环境变量安全吗?

java spring docker spring-boot docker-secrets

8
推荐指数
2
解决办法
5179
查看次数

为什么Docker Secrets比环境变量更安全?

我正在阅读Docker Secrets,并继续阅读Docker的人故意选择将秘密存储在文件中,/run/secrets而不是使用环境变量.但无处我就一直能够找到一个解释,为什么.

所以我问:为什么使用Docker Secrets机制比将环境变量注入我的容器(via -e或a --env-file)更安全?

security environment-variables docker docker-secrets

7
推荐指数
1
解决办法
1676
查看次数