权限和角色

KeyRings 和 CryptoKeys 是 Google Cloud Platform 中的资源,可以像其他任何资源一样用于设置 IAM 政策。无法针对单个 CryptoKeyVersions 上设置 IAM 政策。有关设置政策的示例,请参阅将 IAM 与Cloud KMS 搭配使用

所需权限

下表列出了调用者调用每种方法所必需的权限:

方法 所需权限
locations.list 无。
locations.get 无。
locations.keyRings.list 对所属的 Cloud 项目拥有 cloudkms.keyRings.list 权限。
locations.keyRings.get 对请求的 KeyRing 拥有 cloudkms.keyRings.get 权限。
locations.keyRings.create 对所属的 Cloud 项目拥有 cloudkms.keyRings.create 权限。
locations.keyRings.getIamPolicy 对请求的 KeyRing 拥有 cloudkms.keyRings.getIamPolicy 权限。
locations.keyRings.setIamPolicy 对请求的 KeyRing 拥有 cloudkms.keyRings.setIamPolicy 权限。
locations.keyRings.testIamPermissions 无。
locations.keyRings.cryptoKeys.list 对请求的 KeyRing 拥有 cloudkms.cryptoKeys.list 权限。
locations.keyRings.cryptoKeys.get 对请求的 CryptoKey 拥有 cloudkms.cryptoKeys.get 权限。
locations.keyRings.cryptoKeys.create 对所属的 KeyRing 拥有 cloudkms.cryptoKeys.create 权限。
locations.keyRings.cryptoKeys.encrypt 对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.useToEncrypt 权限。
locations.keyRings.cryptoKeys.decrypt 对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.useToDecrypt 权限。
locations.keyRings.cryptoKeys.patch 对请求的 CryptoKey 拥有 cloudkms.cryptoKeys.update 权限。
locations.keyRings.cryptoKeys.updatePrimaryVersion 对请求的 CryptoKey 拥有 cloudkms.cryptoKeys.update 权限。
locations.keyRings.cryptoKeys.getIamPolicy 对请求的 CryptoKey 拥有 cloudkms.cryptoKeys.getIamPolicy 权限。
locations.keyRings.cryptoKeys.setIamPolicy 对请求的 CryptoKey 拥有 cloudkms.cryptoKeys.setIamPolicy 权限。
locations.keyRings.cryptoKeys.testIamPermissions 无。
locations.keyRings.cryptoKeys.cryptoKeyVersions.list 对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.list 权限。
locations.keyRings.cryptoKeys.cryptoKeyVersions.get 对请求的 CryptoKeyVersion 拥有 cloudkms.cryptoKeyVersions.get 权限。
locations.keyRings.cryptoKeys.cryptoKeyVersions.create 对所属的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.create 权限。
locations.keyRings.cryptoKeys.cryptoKeyVersions.patch 对请求的 CryptoKeyVersion 拥有 cloudkms.cryptoKeyVersions.update 权限。
locations.keyRings.cryptoKeys.cryptoKeyVersions.destroy 对请求的 CryptoKeyVersion 拥有 cloudkms.cryptoKeyVersions.destroy 权限。
locations.keyRings.cryptoKeys.cryptoKeyVersions.restore 对请求的 CryptoKeyVersion 拥有 cloudkms.cryptoKeyVersions.restore 权限。
locations.keyRings.cryptoKeys.cryptoKeyVersions.asymmetricDecrypt测试版 对请求的 CryptoKeyVersion 拥有 cloudkms.cryptoKeyVersions.useToDecrypt 权限。
locations.keyRings.cryptoKeys.cryptoKeyVersions.asymmetricSign测试版 对请求的 CryptoKeyVersion 拥有 cloudkms.cryptoKeyVersions.useToSign 权限。
locations.keyRings.cryptoKeys.cryptoKeyVersions.getPublicKey测试版 对请求的 CryptoKeyVersion 拥有 cloudkms.cryptoKeyVersions.viewPublicKey 权限。

预定义角色

下表列出了 Cloud Key Management Service IAM 角色以及每个角色包含的所有权限的相应列表。请注意,每个权限都适用于特定的资源类型。

除了预定义角色管理员、加密者/解密者以及 Cloud KMS 专有的加密者和解密者以外,初始角色拥有者、编辑者和查看者也可以用于密钥。

预定义角色允许在有需要时进行职责分离。管理员角色用于管理密钥但不使用密钥,加密者或解密者角色用于可以使用密钥加密和解密数据但不管理数据的服务。

角色 具备的权限 适用的资源类型:
roles/cloudkms.admin
cloudkms.keyRings.setIamPolicy KeyRing
cloudkms.cryptoKeys.setIamPolicy CryptoKey
cloudkms.keyRings.create KeyRing
cloudkms.cryptoKeys.create CryptoKey
cloudkms.cryptoKeyVersions.create CryptoKeyVersion
cloudkms.cryptoKeys.update CryptoKey
cloudkms.cryptoKeyVersions.update CryptoKeyVersion
cloudkms.cryptoKeyVersions.destroy CryptoKeyVersion
cloudkms.cryptoKeyVersions.restore CryptoKeyVersion
cloudkms.keyRings.list KeyRing
cloudkms.cryptoKeys.list CryptoKey
cloudkms.cryptoKeyVersions.list CryptoKeyVersion
cloudkms.keyRings.get KeyRing
cloudkms.cryptoKeys.get CryptoKey
cloudkms.cryptoKeyVersions.get CryptoKeyVersion
cloudkms.keyRings.getIamPolicy KeyRing
cloudkms.cryptoKeys.getIamPolicy CryptoKey
roles/cloudkms.cryptoKeyEncrypterDecrypter
cloudkms.cryptoKeyVersions.useToEncrypt CryptoKeyVersion
cloudkms.cryptoKeyVersions.useToDecrypt CryptoKeyVersion
roles/cloudkms.cryptoKeyEncrypter cloudkms.cryptoKeyVersions.useToEncrypt CryptoKeyVersion
roles/cloudkms.cryptoKeyDecrypter cloudkms.cryptoKeyVersions.useToDecrypt CryptoKeyVersion
roles/cloudkms.publicKeyViewer测试版
cloudkms.cryptoKeyVersions.viewPublicKey CryptoKeyVersion
roles/cloudkms.signer测试版
cloudkms.cryptoKeyVersions.useToSign CryptoKeyVersion
roles/cloudkms.signerVerifier测试版
cloudkms.cryptoKeyVersions.useToSign CryptoKeyVersion
cloudkms.cryptoKeyVersions.viewPublicKey CryptoKeyVersion
roles/viewer
cloudkms.keyRings.list KeyRing
cloudkms.cryptoKeys.list CryptoKey
cloudkms.cryptoKeyVersions.list CryptoKeyVersion
cloudkms.keyRings.get KeyRing
cloudkms.cryptoKeys.get CryptoKey
cloudkms.cryptoKeyVersions.get CryptoKeyVersion
cloudkms.keyRings.getIamPolicy KeyRing
cloudkms.cryptoKeys.getIamPolicy CryptoKey
roles/editor
roles/viewer 的所有权限,以及:
cloudkms.keyRings.create KeyRing
cloudkms.cryptoKeys.create CryptoKey
cloudkms.cryptoKeyVersions.create CryptoKeyVersion
cloudkms.cryptoKeys.update CryptoKey
cloudkms.cryptoKeyVersions.update CryptoKeyVersion
roles/owner
roles/editor 的所有权限,以及:
cloudkms.cryptoKeyVersions.useToEncrypt CryptoKeyVersion
cloudkms.cryptoKeyVersions.useToDecrypt CryptoKeyVersion
cloudkms.cryptoKeyVersions.useToSign测试版 CryptoKeyVersion
cloudkms.cryptoKeyVersions.viewPublicKey测试版 CryptoKeyVersion
cloudkms.keyRings.setIamPolicy KeyRing
cloudkms.cryptoKeys.setIamPolicy CryptoKey
cloudkms.cryptoKeyVersions.destroy CryptoKeyVersion
cloudkms.cryptoKeyVersions.restore CryptoKeyVersion

请注意,roles/ownerroles/editorroles/viewer 也具有适用于其他 Google Cloud Platform 服务的权限。

自定义角色

Cloud IAM 还提供创建自定义角色的功能。您可以创建具有一项或多项权限的自定义 Cloud IAM 角色,然后将该自定义角色授予贵组织中的用户。自定义角色使您能够执行最小权限原则,并确保组织中的用户和服务帐号仅具有执行其预期职能所必不可少的权限。要了解如何创建自定义角色,请参阅创建和管理自定义角色

为便于您定义自定义角色,下面列出了常见用户流以及执行 Cloud KMS 操作所需的权限。此列表并不详尽。

用户流 所需权限
使用 API 时:
所需权限
使用 GCP Console
(见脚注 1):
创建一个 KeyRing 对所属项目拥有 cloudkms.keyRings.create 权限。 与所需的 API 权限相同
创建一个 CryptoKey 对所属的 KeyRing 拥有 cloudkms.cryptoKeys.create 权限 所需的 API 权限,以及:

对所属项目拥有 cloudkms.keyRings.list 权限。

创建一个 CryptoKeyVersion 对所属的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.create 权限 所需的 API 权限,以及:

对请求的 KeyRing 拥有 cloudkms.cryptoKeys.list 权限

对所属项目拥有 cloudkms.keyRings.list 权限。

启用 CryptoKeyVersion 对请求的 CryptoKeyVersion 拥有 cloudkms.cryptoKeyVersions.update 权限 所需的 API 权限,以及:

对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.list 权限

对请求的 KeyRing 拥有 cloudkms.cryptoKeys.list 权限

对所属项目拥有 cloudkms.keyRings.list 权限。

停用 CryptoKeyVersion 对请求的 CryptoKeyVersion 拥有 cloudkms.cryptoKeyVersions.update 权限 所需的 API 权限,以及:

对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.list 权限

对请求的 KeyRing 拥有 cloudkms.cryptoKeys.list 权限

对所属项目拥有 cloudkms.keyRings.list 权限。

销毁 CryptoKeyVersion 对请求的 CryptoKeyVersion 拥有 cloudkms.cryptoKeyVersions.destroy 权限 所需的 API 权限,以及:

对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.list 权限

对请求的 KeyRing 拥有 cloudkms.cryptoKeys.list 权限

对所属项目拥有 cloudkms.keyRings.list 权限。

恢复 CryptoKeyVersion 对请求的 CryptoKeyVersion 拥有 cloudkms.cryptoKeyVersions.restore 权限 所需的 API 权限,以及:

对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.list 权限

对请求的 KeyRing 拥有 cloudkms.cryptoKeys.list 权限

对所属项目拥有 cloudkms.keyRings.list 权限。

手动轮替 CryptoKey 对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.createcloudkms.cryptoKeys.update 权限 所需的 API 权限,以及:

对请求的 KeyRing 拥有 cloudkms.cryptoKeys.list 权限

对所属项目拥有 cloudkms.keyRings.list 权限。

设置 CryptoKey 的轮替周期 对请求的 CryptoKey 拥有 cloudkms.cryptoKeys.update 权限 所需的 API 权限,以及:

对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.list 权限

对请求的 KeyRing 拥有 cloudkms.cryptoKeys.list 权限

对所属项目拥有 cloudkms.keyRings.list 权限。

使用对称 CryptoKey 加密数据 对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.useToEncrypt 权限 GCP Console 中不支持。
使用对称 CryptoKey 解密数据 对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.useToDecrypt 权限 GCP Console 中不支持。
使用非对称 CryptoKey(测试版)创建签名 对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.useToSign 权限 GCP Console 中不支持。
使用非对称 CryptoKey(测试版)解密数据 对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.asymmetricDecrypt 权限 GCP Console 中不支持。
检索非对称 CryptoKey(测试版)的公共部分 对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.viewPublicKey 权限 所需的 API 权限,以及:

对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.list 权限

对请求的 CryptoKey 拥有 cloudkms.cryptoKeys.get 权限

对请求的 KeyRing 拥有 cloudkms.cryptoKeys.list 权限

对请求的 KeyRing 拥有 cloudkms.keyRings.get 权限

对所属项目拥有 cloudkms.keyRings.list 权限。

设置针对 KeyRing 的权限 对请求的 KeyRing 拥有 cloudkms.keyRings.setIamPolicy 权限。 所需的 API 权限,以及:

对请求的 KeyRing 拥有 cloudkms.keyRings.getIamPolicy 权限

设置针对 CryptoKey的权限 对请求的 CryptoKey 拥有 cloudkms.cryptoKeys.setIamPolicy 权限 所需的 API 权限,以及:

对请求的 CryptoKey 拥有 cloudkms.cryptoKeys.getIamPolicy 权限

使用 GCP Console 查看项目中的 KeyRing 对所属项目拥有 cloudkms.keyRings.list 权限。
使用 GCP Console 查看 KeyRing 中的 CryptoKeys 和 KeyRing 的元数据 对请求的 KeyRing 拥有 cloudkms.cryptoKeys.list 权限

对请求的 KeyRing 拥有 cloudkms.keyRings.get 权限

对所属项目拥有 cloudkms.keyRings.list 权限。

使用 GCP Console 查看 CryptoKey 中的 CryptoKeyVersions 和 CryptoKey 的元数据 对请求的 CryptoKey 拥有 cloudkms.cryptoKeyVersions.list 权限

对请求的 CryptoKey 拥有 cloudkms.cryptoKeys.get 权限

对请求的 KeyRing 拥有 cloudkms.cryptoKeys.list 权限

对请求的 KeyRing 拥有 cloudkms.keyRings.get 权限

对所属项目拥有 cloudkms.keyRings.list 权限。

1需要这些权限才能在界面中导航到资源页面。如果用户对该资源拥有足够的权限,还可以直接链接到特定资源(例如 KeyRing 或 CryptoKey)的页面。

检查权限

cloudkms.keyRings.testIamPermissionscloudkms.cryptoKeys.testIamPermissions 可以由任何身份运行,以测试他们对任何 Cloud KMS KeyRing 和 Cloud KMS CryptoKey 的权限。

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud KMS 文档