如何为一群将具有多个字段的用户设置机密?

时间:2018-09-28 15:04:04

标签: kubernetes kubernetes-secrets

library(tidyverse)
d <- as_tibble(iris)
vt <- tibble(old_varname=c('Sepal.Length','Petal.Length'),
             new_varname=c('a','b'))
d_new_names <- d %>% rename(!!set_names(vt$old_varname, vt$new_varname))
head(d_new_names)

然后我可以像这样包含它们:

apiVersion: v1
kind: Secret
metadata:
  name: john-secret
data:
  USERNAME: abc=
  PASSWORD: def=

apiVersion: v1
kind: Secret
metadata:
  name: jane-secret
data:
  USERNAME: ghi=
  PASSWORD: jkl=

并在{。{1}}等Node.js应用中使用它们。

这可行,但是是否有一种更清洁/更轻松的方法来为一群拥有多个字段的用户设置机密?我想如果说100个用户x 5个字段,那会很混乱。

1 个答案:

答案 0 :(得分:3)

您可以mount the secret as a volume。从链接的Kubernetes文档改编示例:

apiVersion: v1
kind: Pod
metadata:
  name: secret-test-pod
spec:
  containers:
    - name: test-container
      image: nginx
      volumeMounts:
          - name: john-secret
            mountPath: /etc/john-secret
  volumes:
    - name: secret-volume
      secret:
        secretName: john-secret

如果您有很多秘密,则需要将它们全部安装到pod规范中。这本身就是一个可维护性问题。

我认为没有任何实际阻止您使用结构化的数据对象(例如JSON或YAML文件)作为密钥的值。将其作为卷安装在一起可以合理地工作。

如果您确实有很多秘密-许多“用户”每个人都有很多值-那么对这些秘密进行某种外部存储可能是一个更好的主意。如果它们只是用户名和密码,通常在数据库中存储密码的单向哈希(这也使它们无需重新部署系统即可更新)。像Hashicorp的Vault之类的工具可能管理起来很复杂,但是优先考虑此内容的实际安全性,并且您可以更严格地控​​制谁可以访问实际机密。