通过 Secret Manager 进行 GCP 服务帐户密钥轮换

GCP service account key rotation through secret manager

我在 GCP 中有一个服务帐户,我将其密钥保存在 Secret Manager 中。

有没有办法为该秘密持有服务帐户密钥设置计划的秘密轮换,这样 Pub/Sub 将是 GCP 密钥,而不是由我管理? GCP 是否提供此类托管 Pub/Sub 服务?

没有为此内置的功能,但 Google 建议使用 Keyrotator 等工具来保证服务帐户密钥的安全。
您还可以使用 Cloud SDK 编写自己的脚本来创建新密钥、获取它并在 Secrets Manager 中更新它:

# create the key
gcloud iam service-accounts keys create key-file \
    --iam-account=sa-name@project-id.iam.gserviceaccount.com

# obtain new key
gcloud beta iam service-accounts keys get-public-key KEY_ID \
    --iam-account=SA_NAME --output-file=FILENAME

#update the secret in secrets manager
gcloud secrets update secret-id \
    --update-labels=key=value

# remove the old one
gcloud iam service-accounts keys disable key-id \
    --iam-account=sa-name@project-id.iam.gserviceaccount.com

这当然是一个简化的代码,您可以在此处找到有关这些命令的更多信息 - 1, 2
这样的脚本可以是 运行 周期性的,例如在 GCE 实例上使用 crontab 或 Cloud Scheduler.