0

我正在 Google Kubernetes 集群中运行一个应用程序。其中的一个 pod 需要访问外部管理的数据库(谷歌云 SQL),并且到目前为止已经有一个硬编码密码用于测试目的。是时候转向更安全的解决方案了,所以生成的密码现在在我的 Google Secrets Manager 中,并且已经替换了我数据库中的用户密码。

对我来说,允许 pod 访问数据库的最有效但最安全的方法是什么?

我的部署过程如下:

  1. 推送到源代码库的源代码更改
  2. 更改触发 Cloud Build
  3. Cloud Build 构建、标记和推送映像。
  4. Cloud Build 将新的映像版本提交到源代码库
  5. 对 Kubernetes 基本清单的更改会触发 Cloud Build
  6. Cloud Build 使用 Kustomize 生成新的 Kubernetes 清单并将其推送到我的 GKE
4

1 回答 1

1

可能有一些选项可以避免密码通过您提到的某些系统(特别是 Cloud Build 和 Kustomize)。

我认为最安全的方法是使用此处描述的配置:https ://cloud.google.com/sql/docs/mysql/connect-kubernetes-engine这样您就可以完全避免密码并依赖 IAM 控件.

如果此设置对您不起作用 - 是否可以使用 GKE 应用程序中的工作负载身份直接访问 Secret Manager API?这将允许您的工作负载直接通过 IAM 控件访问 Secret Manager。https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity

如果您的应用无法修改为对 Secret Manager 进行 API 调用,那么还有一个 CSI 驱动程序,以便您可以使用文件系统或环境变量:https ://github.com/GoogleCloudPlatform/secrets-store-csi-driver -提供者-gcp

于 2021-04-26T13:14:22.490 回答