服务账号密钥是私钥,可让您以服务账号身份进行身份验证。密钥变换是指将现有密钥替换为新密钥,然后使已替换的密钥失效的过程。我们建议您定期变换您管理的所有密钥,包括服务账号密钥。
变换服务账号密钥有助于降低因密钥泄露或被盗而造成的风险。如果密钥被泄露,不法分子可能需要数天或数周的时间才能发现密钥。如果您定期变换您的服务账号密钥,那么当不法分子获得泄露的密钥时,这些密钥很有可能已经失效。
如果您怀疑服务账号密钥已遭到破解,那么制定服务账号密钥变换流程也有助于您快速采取行动。
变换密钥的频率
我们建议您至少每 90 天变换一次密钥,以降低密钥泄露所带来的风险。
如果您认为某个服务账号密钥已遭到泄露,我们建议您立即变换该密钥。
密钥变换流程
如需变换服务账号密钥,请执行以下操作:
- 确定需要变换的服务账号密钥。
- 为同一服务账号创建新密钥。
- 将所有应用中的现有密钥替换为新密钥。
- 停用已替换的密钥,并监控应用以确认应用按预期运行。
- 删除已替换的服务账号密钥。
您可以使用集中式 Secret 管理服务或自定义通知系统来完成这些步骤。
集中式 Secret 管理服务
许多集中式 Secret 管理服务(例如 HashiCorp Vault)都提供自动 Secret 变换功能。您可以使用这些服务来存储和变换服务账号密钥。
我们不建议使用基于云的密文管理服务(例如 Azure KeyVault 和 AWS Secret Manager)来存储和变换服务账号密钥。这是因为,如需访问这些存储的密文,您的应用需要拥有云服务提供商可以识别的身份。如果您的应用已具有云服务提供商可以识别的身份,则可以使用该身份进行身份验证,而无需使用服务账号密钥。
自定义通知系统
另一种服务账号密钥变换方法是创建一个系统,在需要变换密钥时发送通知。例如,您可以创建一个系统,在检测到创建时间超过 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 中搜索资源,请参阅搜索资源。确定需要变换的密钥后,您可以向相应团队发送通知。
当用户收到变换密钥的通知时,应执行以下操作:
服务账号密钥即将过期
我们不建议将很快就会过期的服务账号密钥用于密钥变换。这是因为,如果很快就会过期的密钥未正确变换,则可能会导致服务中断。如需详细了解很快就会过期的服务账号密钥的使用场景,请参阅用户管理的密钥的过期时间。