本页面介绍了一些最佳实践,可帮助您管理使用 Cloud Deploy 部署到 Google Kubernetes Engine 或 GKE Enterprise 集群的应用的 Secret。
由于将应用 Secret 注入部署工件会带来安全风险,因此请避免在 Cloud Deploy 流水线中管理 Secret。
以这种方式使用的 Secret 应在 Cloud Deploy 的范围之外生成、管理和轮替。
此上下文中的 Secret 是指敏感数据,例如数据库凭据、API 密钥、证书或密码。
Kubernetes Secret
Kubernetes Secret 是用于在集群中(独立于 Pod)存储敏感数据(例如密码、OAuth 令牌和 SSH 密钥)的安全对象。Secret 类似于 ConfigMap,但用于保存机密数据。
由于 Kubernetes Secret 默认不安全,如果没有加密,则本文档中所述的方法不会使用它们。
管理用于 Cloud Deploy 的密钥
本部分介绍如何管理使用 Cloud Deploy 部署的应用的 Secret。
以下是使用 GKE 或 GKE Enterprise 管理 Secret 的两种方法:
Google Secret Manager
Secret Manager 是一项全代管式多区域 Google Cloud 服务,可安全存储 API 密钥、密码和其他敏感数据。
您可以使用客户端库和 Workload Identity 身份验证或者使用 Secrets Store CSI 驱动程序从集群访问 Secret Manager 中的 Secret。
如需将 Secret Manager 用于您的应用,请执行以下操作:
使用 SDK 从您的应用代码引用 Secret。
您可以使用环境变量(例如 Secret 版本)或应用环境(例如开发、暂存、生产)指定 Secret 的其他元数据。
如果特定功能的部署过程包括基础架构预配,请在部署应用之前使用 Secret Manager 创建或更新 Secret。
如需详细了解如何使用 Secret Manager 管理 Kubernetes Secret,请参阅将 Secret Manager 与其他产品搭配使用 。
Hashicorp Vault
Hashicorp Vault 是一种常用且广泛使用的 Secret 管理开源工具。Google Cloud 具有针对 Vault 以及其他 HAshicorp 工具(如 Terraform)的大量集成和支持。
您可以按如下方式在 Kubernetes 集群中配置 Vault:
通过 API 访问 Vault Secret,并使用 Workload Identity 进行身份验证。
使用 Vault Agent 容器将 Secret 注入 Kubernetes Pod。
使用 Vault CSI Provider 使用这些 Secret。