【问题标题】:k8s secret rotation with SQL serverk8s 与 SQL 服务器的秘密轮换
【发布时间】:2020-02-02 01:23:38
【问题描述】:

是否可以进行 SQL Server 秘密轮换?

场景:

  • CI/CD 管道和 SQL Server 的掌舵图

    • 包括秘密、持久卷、持久卷声明、部署(持久卷是 NFS 是我的例子,而 k8s 是裸机,如果它甚至重要的话)
  • 一段时间后,我可能想升级 SQL server 版本,最好通过 CI/CD 管道

我对此进行了一些尝试,效果很好,但我面临的问题是,当我进行部署时,SQL Server 会根据初始密码创建一些包含 SA 密码的 sys-DB:s。

apiVersion: v1
kind: Secret
metadata:
  name: {{ .Values.name }}-secret
type: Opaque
data:
  sapassword: {{ randAlphaNum 64 | b64enc | quote }}

现在假设我想重新部署或进行版本升级(甚至是电源故障、损坏的节点或其他任何情况),
sys-DB:s 被映射到持久存储并将被重新映射。

但是,SA 密码“x”在重新映射的 sys-DB 中,而新生成的秘密 SA 密码是“y”。用户/consumer-pods 密码(Code First 生成的数据库的连接字符串)是否不同?

有什么想法吗?还是我不应该在数据库机密中生成密码?

【问题讨论】:

  • 您使用的是哪个数据库?
  • @Nick mssql express 2019-CU1-ubuntu-16.04

标签: sql-server kubernetes kubernetes-secrets


【解决方案1】:

我一直站在你的立场上,最终从 helm 图表中删除了秘密,并在部署中进行了更改,以将秘密作为环境变量从我在 helm 图表之外创建的 k8s 秘密中注入。

我能想到的其他选择是使用外部秘密管理器在运行时动态地向 pod 注入秘密 -> https://banzaicloud.com/blog/inject-secrets-into-pods-vault/

【讨论】:

  • 好吧,对我来说,选项 B 是从掌舵图中删除 secret 并将其存储在版本控制之外。我们不必选择使用 hashcorp 或其他外部密钥库。
猜你喜欢
  • 2021-10-26
  • 2021-02-19
  • 1970-01-01
  • 2020-08-16
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多