【问题标题】:Basic auth for Curl command into the secret of openshiftCurl 命令的基本身份验证进入 openshift 的秘密
【发布时间】:2017-08-15 16:46:50
【问题描述】:

我有一个 Apache Web 服务器,它有一个基本身份验证保护的 URL,例如。

www.example.com/protected/

在我构建映像时,在 Openshift 中的 Dockerfile 中,我有下载文件的 curl 命令。现在,当使用基本身份验证时,带有基本身份验证的 curl 命令看起来像这样

curl -u 用户名:密码http://www.example.com/protected/

问题是我不想让 Dockerfile 中的用户名:密码暴露。相反,我想在 Openshift/Kubernetes 密钥中隐藏凭据

通常用于秘密定义的 openshift yaml 文件在开始时看起来像这样

kind: Secret
  apiVersion: v1
    metadata:
     name: secret-name
    data:

问题:如何为基本身份验证凭据添加创建适当的机密文件,然后如何从 Dockerfile 中引用它?

【问题讨论】:

    标签: docker openshift kubernetes openshift-origin openshift-enterprise


    【解决方案1】:

    查看build secrets 并阅读how they work with Docker strategy

    要将此密钥与curl 命令一起使用,我建议将-K 选项与密钥路径结合使用。

    【讨论】:

      【解决方案2】:

      最终创建了这个秘密(yaml 格式)。 .curl-secret 文件中的数据应该是 base64 编码的,它正在 Dockerfile 中的 curl 命令中解码(进一步向下)。

      apiVersion: v1
      data:
        .curl-secret: <YOUR_SECRET_HERE>
      kind: Secret
      metadata:
        creationTimestamp: null
        name: curl-secret
      type: Opaque
      

      然后在构建配置中添加对机密的引用。

        source:
          type: Git
          git:
            uri: 'https://GITHUB.URL'
            ref: master
          secrets:
            - secret:
                name: curl-secret
      

      然后在 Dockerfile 我复制这个文件,使用它然后删除它。

      COPY .curl-secret /tmp
      curl -u $(cat /tmp/.curl-secret) -s -o /output.file
      rm /tmp/.curl-secret
      

      【讨论】:

      • 不幸的是,这种方法并不安全,因为当您使用 COPY 时,docker 会创建一个单独的层,其中包含您的秘密文件。所以,有效的秘密文件仍然存在,以后可能会暴露。
      猜你喜欢
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-31
      • 2018-09-03
      • 2021-06-02
      相关资源
      最近更新 更多