本页介绍了如何为 AlloyDB for PostgreSQL 创建、配置和应用客户管理的加密密钥 (CMEK)。
如需详细了解 CMEK,请参阅 CMEK 简介。
为 AlloyDB 创建和授权 CMEK 密钥
在 Cloud Key Management Service (Cloud KMS) 中创建一个密钥。AlloyDB 支持以下类型的密钥:
密钥必须与 AlloyDB 集群位于同一位置。例如,位于
us-west1
中的 AlloyDB 集群只能使用us-west1
中的密钥。如果您已在正确的位置具有 Cloud KMS 密钥,则可以跳过此步骤。
向 AlloyDB 授予对密钥的访问权限。
使用 Google Cloud CLI 创建并显示服务代理,或者如果该账号已存在,则显示该账号:
gcloud beta services identity create --service=alloydb.googleapis.com \ --project=PROJECT
gcloud services identity 命令会创建或获取 AlloyDB 可用于代表您访问 Cloud KMS 密钥的服务代理。
服务账号 ID 类似于电子邮件地址:
Service identity created: service-xxx@gcp-sa-alloydb.iam.gserviceaccount.com
将
cloudkms.cryptoKeyEncrypterDecrypter
角色授予服务账号:gcloud kms keys add-iam-policy-binding KEY \ --location REGION \ --keyring KEYRING \ --project=PROJECT \ --member serviceAccount:service-xxx@gcp-sa-alloydb.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
替换以下内容:
- KEY:密钥的 Cloud KMS ID
- REGION:密钥所在的区域,例如
us-central1
- PROJECT:密钥所属项目的 ID
- KEYRING:密钥的 Cloud KMS 密钥环的 ID
此角色可确保服务账号有权使用 Cloud KMS 密钥进行加密和解密。如需了解详情,请参阅 Cloud KMS 权限和角色。
创建使用 CMEK 加密的集群
创建新集群时,您可以选择是使用默认的 Google 管理的加密功能加密集群,还是改用 CMEK 密钥。如需了解详情,请参阅创建集群及其主实例。
查看集群的加密方法和 CMEK 密钥
控制台
集群页面的加密列会显示项目中每个集群是使用 Google 管理的加密还是 CMEK。
如需查看使用 CMEK 的集群的密钥详细信息,请点击资源名称列中的集群名称。后续详情页面的加密密钥字段包含该密钥的说明,包括指向其自己的 Cloud KMS 详情页面的链接。
gcloud
调用 gcloud alloydb clusters describe
命令:
gcloud alloydb clusters describe CLUSTER \
--project=PROJECT \
--region=REGION
替换以下内容:
- CLUSTER:要描述的集群的 ID
- PROJECT:集群项目的 ID
- REGION:集群所在的区域,例如
us-central1
输出包含 encryptionInfo
字段,其中包含集群加密的摘要。
对备份应用 CMEK
创建新备份时,您可以选择是使用默认的 Google 管理的加密方式进行加密,还是改用 CMEK 密钥。如需了解详情,请参阅创建按需备份或安排自动备份。
您还可以选择将 CMEK 密钥应用于从备份恢复时创建的集群,无论该备份的加密方法如何。如需了解详情,请参阅恢复集群。
查看备份的加密方法和 CMEK 密钥
控制台
备份页面的加密列会显示项目中每个集群是使用 Google 管理的加密还是 CMEK。
如需查看使用 CMEK 的备份的关键详细信息,请点击恢复。后续详情面板的加密密钥字段包含该密钥的说明,包括指向其自己的 Cloud KMS 详情页面的链接。
gcloud
调用 gcloud alloydb backups describe
命令:
gcloud alloydb backups describe CLUSTER \
--project=PROJECT \
--region=REGION
替换以下内容:
- CLUSTER:要描述的备份的 ID
- PROJECT:备份项目的 ID
- REGION:备份所在的区域,例如
us-central1
输出包含 encryptionInfo
字段,其中包含备份加密的摘要。
停用密钥
停用集群的 CMEK 密钥后,您将无法访问该集群的数据,除非您重新启用该密钥。
不过,停用密钥可能需要长达 3 小时才能传播到 AlloyDB 集群。如需停用密钥并立即禁止访问您的数据,请按以下步骤操作:
删除集群的主实例。这不会影响集群的数据。您可以在重新启用密钥后创建新的主实例,如以下部分所述。
启用密钥
如需启用密钥,请按以下步骤操作:
如果您在停用密钥之前删除了集群的主实例,请创建新的主实例。
启用密钥最长可能需要 3 小时才能传播到您的集群。一旦发生这种传播,您就可以访问集群的数据。
查看 Cloud KMS 密钥的审核日志
如需查看与特定 CMEK 密钥关联的审核日志,请按以下步骤操作:
确保针对您的项目中的 Cloud KMS API 启用日志记录。
转到 Google Cloud 控制台中的日志浏览器。
通过将以下行添加到查询构建器,将日志条目限制为 Cloud KMS 密钥:
resource.type="cloudkms_cryptokey" resource.labels.location="REGION" resource.labels.key_ring_id="KEYRING" resource.labels.crypto_key_id="KEY"
替换以下内容:
- REGION:密钥所在的区域,例如
us-central1
- KEYRING:密钥的 Cloud KMS 密钥环的 ID
- KEY:密钥的 Cloud KMS ID
- REGION:密钥所在的区域,例如
在正常操作下,系统会使用
INFO
严重程度记录加密和解密操作。当 AlloyDB 集群中的实例验证 {kms_name_short}} 密钥时(大约每 5 分钟一次),系统会记录这些条目。如果 AlloyDB 无法访问该密钥,则会将操作记录为
ERROR
。
查看 Cloud EKM 密钥的访问理由
如果您使用 Cloud EKM 密钥,则可以使用 Key Access Justifications 查看每个 Cloud EKM 请求的原因。此外,根据提供的理由,您可以自动批准或拒绝请求。如需了解详情,请参阅查看和处理理由。