本主题介绍如何管理对 Cloud KMS 资源的访问权限。
概览
要管理对 Cloud KMS 资源(例如密钥和密钥环)的访问权限,您需要授予 Identity and Access Management (IAM) 角色。您可以授予或限制执行特定加密操作的权限,例如轮替密钥或加密数据。您可以针对以下资源授予 IAM 角色:
- 密钥
- 密钥环,由密钥环中的所有密钥继承
- Google Cloud 项目,由项目中的所有密钥继承
- Google Cloud 文件夹,由文件夹中所有项目中的所有密钥继承
- Google Cloud 组织,由组织中文件夹中的所有密钥继承
如需查看 Cloud KMS 操作以及 IAM 角色和权限的完整列表,请参阅权限和角色。如需查看 Cloud KMS 资源的完整列表以及这些资源之间的关系,请参阅 Cloud KMS 资源。
准备工作
要完成这些任务,您需要具备管理 Google Cloud 项目中的 Cloud KMS 资源的权限。Cloud KMS Admin 角色 (roles/cloudkms.admin
) 包含所需的权限。
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the required API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the required API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 创建资源,例如密钥环。
- 获取 创建的资源,例如密钥环、密钥和密钥版本。
只有具有 Owner (roles/owner
) 或 Cloud KMS Admin (roles/cloudkms.admin
) 角色的 IAM 主账号才能授予或撤消对 Cloud KMS 资源的访问权限。
针对资源授予角色
以下示例授予一个角色,该角色提供对 Cloud KMS 密钥的访问权限:
gcloud
如需在命令行上使用 Cloud KMS,请先安装或升级到最新版本的 Google Cloud CLI。
gcloud kms keys add-iam-policy-binding key \ --keyring key-ring \ --location location \ --member principal-type:principal-email \ --role roles/role
将 key 替换为密钥的名称。将 key-ring 替换为密钥所在的密钥环的名称。将 location 替换为密钥环的 Cloud KMS 位置。将 principal-type 和 principal-email 替换为类型 和主账号的电子邮件地址将 role 替换为 要添加的角色的名称。
C#
要运行此代码,请先设置 C# 开发环境并安装 Cloud KMS C# SDK。
Go
要运行此代码,请先设置 Go 开发环境并安装 Cloud KMS Go SDK。
Java
要运行此代码,请先设置 Java 开发环境并安装 Cloud KMS Java SDK。
Node.js
要运行此代码,请先设置 Node.js 开发环境并安装 Cloud KMS Node.js SDK。
PHP
要运行此代码,请先了解如何在 Google Cloud 上使用 PHP 并安装 Cloud KMS PHP SDK。
Python
要运行此代码,请先设置 Python 开发环境并安装 Cloud KMS Python SDK。
Ruby
要运行此代码,请先设置 Ruby 开发环境并安装 Cloud KMS Ruby SDK。
撤消对资源的访问权限
如需移除主账号对 Cloud KMS 密钥的访问权限,请执行以下操作:
gcloud
如需在命令行上使用 Cloud KMS,请先安装或升级到最新版本的 Google Cloud CLI。
gcloud kms keys remove-iam-policy-binding key \ --keyring key-ring \ --location location \ --member principal-type:principal-email \ --role roles/role-name
将 key 替换为密钥的名称。将 key-ring 替换为密钥所在的密钥环的名称。将 location 替换为密钥环的 Cloud KMS 位置。将 principal-type 和 principal-email 替换为类型 和主账号的电子邮件地址替换 role-name 替换为要移除的角色的名称。
如需了解所有标志和可能值,请使用 --help
标志运行命令。
C#
要运行此代码,请先设置 C# 开发环境并安装 Cloud KMS C# SDK。
Go
要运行此代码,请先设置 Go 开发环境并安装 Cloud KMS Go SDK。
Java
要运行此代码,请先设置 Java 开发环境并安装 Cloud KMS Java SDK。
Node.js
要运行此代码,请先设置 Node.js 开发环境并安装 Cloud KMS Node.js SDK。
PHP
要运行此代码,请先了解如何在 Google Cloud 上使用 PHP 并安装 Cloud KMS PHP SDK。
Python
要运行此代码,请先设置 Python 开发环境并安装 Cloud KMS Python SDK。
Ruby
要运行此代码,请先设置 Ruby 开发环境并安装 Cloud KMS Ruby SDK。
查看资源权限
如要查看 Cloud KMS 密钥的 IAM 政策,请执行以下操作:
gcloud
如需在命令行上使用 Cloud KMS,请先安装或升级到最新版本的 Google Cloud CLI。
gcloud kms keys get-iam-policy key \ --keyring key-ring \ --location location
将 key 替换为密钥的名称。将 key-ring 替换为密钥所在的密钥环的名称。将 location 替换为密钥环的 Cloud KMS 位置。
如需了解所有标志和可能值,请使用 --help
标志运行命令。
C#
要运行此代码,请先设置 C# 开发环境并安装 Cloud KMS C# SDK。
Go
要运行此代码,请先设置 Go 开发环境并安装 Cloud KMS Go SDK。
Java
要运行此代码,请先设置 Java 开发环境并安装 Cloud KMS Java SDK。
Node.js
要运行此代码,请先设置 Node.js 开发环境并安装 Cloud KMS Node.js SDK。
PHP
要运行此代码,请先了解如何在 Google Cloud 上使用 PHP 并安装 Cloud KMS PHP SDK。
Python
要运行此代码,请先设置 Python 开发环境并安装 Cloud KMS Python SDK。
Ruby
要运行此代码,请先设置 Ruby 开发环境并安装 Cloud KMS Ruby SDK。
最小权限原则
要遵循最小权限原则,请向资源层次结构中的最低对象授予最有限的权限集。
如需为主账号授予加密(但不解密)数据的权限,请授予对密钥的
roles/cloudkms.cryptoKeyEncrypter
角色。如需为主账号授予加密和解密数据的权限,请授予对密钥的
roles/cloudkms.cryptoKeyEncrypterDecrypter
角色。如需为主账号授予验证(但不签署)数据的权限,请授予密钥的
roles/cloudkms.publicKeyViewer
角色。如需为主账号授予签署和验证数据的权限,请授予密钥的
roles/cloudkms.signerVerifier
角色。如需为主账号授予管理密钥的权限,请授予密钥的
roles/cloudkms.admin
角色。
但并不仅限于此。如需了解权限和角色的完整列表,请参阅 Cloud KMS 权限和角色。
层次结构和继承
您可以在项目、密钥环、密钥、导入作业和其他 Cloud KMS 资源上指定政策绑定。
由于密钥属于密钥环,密钥环属于项目,因此在相应层次结构中具有特定角色或权限的主账号将继承对子资源的相同权限。也就是说,项目中具有 owner
角色的用户同时也是该项目中所有密钥环和密钥的 owner
。同样,如果用户被授予针对密钥环的 cloudkms.admin
角色,则他们对该密钥环中的密钥具有相关权限。
反过来却不成立。也就是说,对密钥具有权限但未被授予针对父密钥环权限的用户对该密钥环没有权限。
后续步骤
- 详细了解 Cloud KMS 中的权限和角色。
- 创建密钥。
- 加密和解密数据。