3

我有部署到 Kubernetes 集群(使用 Google Cloud Kubernetes 托管)的 Pod。这些 pod 正在使用 some secret,它们是纯文本文件。我将秘密添加到yaml文件中并部署了部署。该应用程序运行良好。

现在,假设有人破坏了我的代码并以某种方式访问​​了我在容器上的所有文件。在这种情况下,攻击者可以找到该secrets目录并打印其中写入的所有秘密。这是一个纯文本。

问题:

为什么使用 kubernetes-secrets 而不是纯文本更安全?

4

2 回答 2

3

有不同级别的安全性,正如@Vishal Biyani 在评论中所说,听起来您正在寻找从像 Sealed Secrets 这样的项目中获得的安全级别。

正如您所说,开箱即用的机密不会在容器级别为您提供加密。但它确实通过 kubectl 和 kubernetes API 控制访问。例如,您可以使用基于角色的访问控制,以便特定用户可以看到秘密存在,而无需(通过 k8s API)查看其值是什么。

于 2018-07-24T11:48:18.250 回答
0

如果您可以使用命令而不是在 yaml 文件中创建秘密:例如:

kubectl create secret generic cloudsql-user-credentials --from-literal=username=[your user]--from-literal=password=[your pass]

您也可以将其阅读为

kubectl get secret  cloudsql-user-credentials -o yaml 

我还使用了 2 个级别的秘密,一个是 kubernetes:

  env:
    - name: SECRETS_USER
      valueFrom:
        secretKeyRef:
          name: cloudsql-user-credentials
          key: username

SECRETS_USER 是一个环境变量,我在 jasypt 上使用这个值

春天:数据源:密码:ENC($ {SECRETS_USER})

在应用程序启动时,您使用参数:-Djasypt.encryptor.password=encryptKeyCode

/.m2/repository/org/jasypt/jasypt/1.9.2/jasypt-1.9.2.jar  org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="encryptKeyCode" password=[pass user] algorithm=PBEWithMD5AndDES
于 2020-01-21T07:38:24.620 回答