Google Cloud 提供了两个组织政策限制条件,用于在整个组织内设置密钥版本销毁政策:
constraints/cloudkms.minimumDestroyScheduledDuration用于为组织内的新密钥设置安排销毁的最短时长。constraints/cloudkms.disableBeforeDestroy用于要求密钥版本在安排销毁之前必须已停用。
准备工作
本页上的说明假定您熟悉如何使用限制条件,并且拥有所需的资源和角色。
所需的资源
如需完成本页上的步骤,您必须拥有以下资源:
- 组织。
- 可选:组织内的文件夹或项目资源。
所需的角色
如需获得管理组织政策所需的权限,请让您的管理员为您授予组织的Organization Policy Administrator (roles/orgpolicy.policyAdmin) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色可提供管理组织政策所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
管理组织政策需要以下权限:
-
orgpolicy.constraints.list -
orgpolicy.policies.create -
orgpolicy.policies.delete -
orgpolicy.policies.list -
orgpolicy.policies.update -
orgpolicy.policy.get -
orgpolicy.policy.set
要求安排销毁的最短时长
每个密钥的最短预定销毁时长 限制条件 (constraints/cloudkms.minimumDestroyScheduledDuration)
用于为新密钥设置安排销毁的最短时长。 此限制条件会替换项目、文件夹或组织级层的安排销毁的最短时长。
此限制条件可降低意外销毁仍需要的密钥的可能性。您可以将此限制条件设置为更高的值,以确保您有时间在密钥销毁变得不可逆转之前阻止其销毁。
如果不需要的密钥销毁会造成更大的损害(例如对于受数据保留要求约束的生产数据),请为此限制条件使用更高的值。如果不需要的密钥销毁造成的损害较小(例如对于开发或测试环境),请为此限制条件使用较低的值。您还可以使用较低的值来允许及时进行密码销毁。 不过,作为 最小值,此限制条件无法确保新密钥的 安排销毁时长较短。
如需要求安排销毁的最短时长 ,请按以下步骤操作:
使用
describe命令获取组织资源的当前政策。此命令返回直接应用于此资源的政策:gcloud org-policies describe \ constraints/cloudkms.minimumDestroyScheduledDuration \ --organization=ORGANIZATION_ID将
ORGANIZATION_ID替换为组织资源的唯一标识符。组织 ID 采用十进制数字的格式,不能以零开头。您还可以使用
--folder或--project标志以及 文件夹 ID 或 项目 ID,查看文件夹或项目的组织政策。响应会返回当前的组织政策(如果存在)。输出类似于以下内容:
name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration spec: etag: COTP+KYGELiCmsoB inheritFromParent: true rules: - values: allowedValues: - in:7d updateTime: '2023-08-17T14:00:04.424051Z'如果未设置政策,
describe命令会返回NOT_FOUND错误:ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.使用
set-policy命令针对组织设置政策。此命令会覆盖当前附加至该资源的所有政策。创建临时文件
/tmp/policy.yaml以存储政策:name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration spec: rules: - values: allowedValues: - in:MINIMUM_DURATION替换以下内容:
ORGANIZATION_ID:您的组织的数字 ID。MINIMUM_DURATION:此组织中密钥的安排销毁状态的最短时长(以天为单位)。 必须是以下值之一:7d、15d、30d、60d、90d或120d。
运行
set-policy命令:gcloud org-policies set-policy /tmp/policy.yaml
使用
describe --effective查看当前的有效政策。 此命令会返回组织政策,因为此时它是在包含继承政策的资源层次结构中进行评估。gcloud org-policies describe \ constraints/cloudkms.minimumDestroyScheduledDuration --effective \ --organization=ORGANIZATION_ID输出类似于以下内容:
name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration spec: rules: - values: allowedValues: - 30d - 15d - 90d - 60d - 7d - 120d由于该组织政策在组织层级设置,因此允许 继承的所有子资源都将继承该政策。
要求在销毁密钥之前先停用密钥
借助将密钥销毁限制为已停用的密钥 限制条件 (constraints/cloudkms.disableBeforeDestroy),您可以要求密钥在安排销毁之前必须已停用。
在销毁密钥之前停用密钥是一种推荐的最佳实践,因为这有助于您验证密钥是否正在使用。您可以将此限制条件与仔细的 Identity and Access Management 政策相结合,以创建需要多个角色协作的多步骤销毁流程。
如需使用此限制条件创建多步骤销毁流程,请确保没有任何用户同时拥有 cloudkms.cryptoKeyVersions.update 和 cloudkms.cryptoKeyVersions.destroy 权限。此用例要求您使用
自定义角色。
如需要求密钥在安排销毁之前处于已停用状态 ,请按以下步骤操作:
gcloud
使用
describe命令获取组织资源的当前政策。此命令返回直接应用于此资源的政策:gcloud org-policies describe \ constraints/cloudkms.disableBeforeDestroy \ --organization=ORGANIZATION_ID将
ORGANIZATION_ID替换为组织资源的唯一标识符。组织 ID 采用十进制数字的格式,不能以零开头。您还可以使用
--folder或--project标志以及文件夹 ID 或项目 ID,查看文件夹或项目的组织政策。响应会返回当前的组织政策(如果存在)。输出类似于以下内容:
name: organizations/ORGANIZATION_ID/policies/cloudkms.disableBeforeDestroy spec: etag: CPvY+KYGENDwgxA= rules: - enforce: true updateTime: '2023-08-17T14:19:39.033618Z'如果未设置政策,
describe命令会返回NOT_FOUND错误:ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.使用
set-policy命令针对组织设置政策。此命令会覆盖已附加至该资源的所有政策。创建临时文件
/tmp/policy.yaml以存储政策:name: organizations/ORGANIZATION_ID/policies/cloudkms.disableBeforeDestroy spec: rules: - enforce: true将
ORGANIZATION_ID替换为组织资源的唯一标识符。运行
set-policy命令:gcloud org-policies set-policy /tmp/policy.yaml
使用
describe --effective查看当前的有效政策。 此命令会返回组织政策,因为此时它是在包含继承政策的资源层次结构中进行评估。gcloud org-policies describe \ constraints/cloudkms.disableBeforeDestroy --effective \ --organization=ORGANIZATION_ID输出类似于以下内容:
name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration spec: rules: - enforce: true