服务账号密钥是私钥,可让您以服务账号身份进行身份验证。密钥变换是指将现有密钥替换为新密钥,然后使已替换的密钥失效的过程。我们建议您定期变换您管理的所有密钥,包括服务账号密钥。
变换服务账号密钥有助于降低因密钥泄露或被盗而造成的风险。如果密钥被泄露,不法分子可能需要数天或数周的时间才能发现密钥。如果您定期变换您的服务账号密钥,那么当不法分子获得泄露的密钥时,这些密钥很有可能已经失效。
如果您怀疑服务账号密钥已遭到破解,那么制定服务账号密钥变换流程也有助于您快速采取行动。
变换密钥的频率
我们建议您至少每 90 天变换一次密钥,以降低密钥泄露所带来的风险。
如果您认为某个服务账号密钥已遭到泄露,我们建议您立即变换该密钥。
密钥变换流程
如需变换服务账号密钥,请执行以下操作:
- 确定需要变换的服务账号密钥。
- 为同一服务账号创建新密钥。
- 将所有应用中的现有密钥替换为新密钥。
- 停用已替换的密钥,并监控应用以确认应用按预期运行。
- 删除已替换的服务账号密钥。
您可以使用集中式 Secret 管理服务或自定义通知系统来完成这些步骤。
集中式 Secret 管理服务
许多集中式 Secret 管理服务(例如 HashiCorp Vault)都提供自动 Secret 变换功能。您可以使用这些服务来存储和变换服务账号密钥。
我们不建议使用 Google Cloud的 Secret Manager 来存储和变换服务账号密钥。这是因为,如需访问 Secret Manager 密钥,您的应用需要拥有Google Cloud 可以识别的身份。如果您的应用已具有 Google Cloud 可以识别的身份,则可以使用该身份向 Google Cloud 进行身份验证,而无需使用服务账号密钥。其他基于云的 Secret 管理服务(例如 Azure KeyVault 和 AWS Secret Manager)也适用相同的概念。如果应用已具有这些云服务提供商可以识别的身份,则可以使用该身份向 Google Cloud 进行身份验证,而无需使用服务账号密钥。
自定义通知系统
另一种服务账号密钥变换方法是创建一个系统,在需要变换密钥时发送通知。例如,您可以创建一个系统,在检测到创建时间超过 90 天的密钥时发送提醒。
首先,您需要确定需要变换的密钥。如需识别这些密钥,我们建议您使用 Cloud Asset Inventory 搜索在特定时间之前创建的所有服务账号密钥。
例如,以下命令会列出在 ID 为 123456789012
的组织中在 2023-03-10 00:00:00 UTC
之前创建的所有服务账号密钥:
gcloud asset search-all-resources \ --scope="organizations/123456789012" \ --query="createTime < 2023-03-10" \ --asset-types="iam.googleapis.com/ServiceAccountKey" \ --order-by="createTime"
如需详细了解如何在 Cloud Asset Inventory 中搜索资源,请参阅搜索资源。确定需要变换的密钥后,您可以向相应团队发送通知。
当用户收到变换密钥的通知时,应执行以下操作:
服务账号密钥即将过期
我们不建议将很快就会过期的服务账号密钥用于密钥变换。这是因为,如果很快就会过期的密钥未正确变换,则可能会导致服务中断。如需详细了解很快就会过期的服务账号密钥的使用场景,请参阅用户管理的密钥的过期时间。