将 Key Access Justifications 与 Cloud KMS 和 Cloud HSM 搭配使用
本页面介绍了如何为 Assured Workloads 的日本数据边界配置 Cloud KMS 或 Cloud HSM 的 Key Access Justifications。
在为日本区域创建新的 Assured Workloads 文件夹的过程中,您可以选择为加密密钥创建新项目和密钥环。Cloud KMS 和 Cloud HSM 密钥可以添加到此密钥环,您还可以配置 Key Access Justifications 政策来控制对每个密钥的访问权限。
准备工作
- 将 Key Access Justifications 与 Cloud KMS 和 Cloud HSM 密钥搭配使用的功能仅适用于 Assured Workloads 中的日本数据边界。
- 确保您的管理员已授予您所需的 Identity and Access Management (IAM) 角色之一,以便您创建和管理 Key Access Justifications 政策以及 Cloud KMS 和 Cloud HSM 密钥本身。
必需的 IAM 权限
如需获得创建和管理 Cloud KMS 和 Cloud HSM 密钥及其 Key Access Justifications 政策所需的权限,请让您的管理员为您授予包含密钥环的项目的 Cloud KMS Admin (roles/cloudkms.admin
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含创建和管理 Cloud KMS 和 Cloud HSM 密钥及其 Key Access Justifications 政策所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
您需要具备以下权限才能创建和管理 Cloud KMS 和 Cloud HSM 密钥及其 Key Access Justifications 政策:
-
cloudkms.cryptoKeys.create
-
cloudkms.cryptoKeys.update
-
cloudkms.cryptoKeys.get
配置具有 Key Access Justifications 的密钥
如需使用 Cloud KMS 或 Cloud HSM 密钥配置 Key Access Justifications,您可以在创建密钥时将密钥访问政策作为参数添加,也可以在创建密钥后使用相应政策更新密钥。
创建新密钥和政策
控制台
在 Google Cloud 控制台中,前往密钥管理页面。
点击您要在其中创建密钥的密钥环的名称。
点击创建密钥。
在密钥名称部分,输入密钥的名称。
保护级别,选择软件或 HSM。
根据需要继续选择设置。
在其他设置下,选择设置密钥访问正当理由政策,然后选择允许的正当理由。
对于理由,请选择客户发起的访问、Google 发起的系统操作以及您要允许的任何其他原因代码。客户发起的访问和 Google 发起的系统操作对于正常运行至关重要。
点击创建。
REST
使用 cryptoKeys.create
方法创建新密钥和政策:
POST https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME
在请求中,替换以下占位值:
- PROJECT_ID:包含您要向其添加密钥的密钥环的项目 ID,例如
919698201234
。 - LOCATION:密钥环的位置,例如
asia-northeast1
。 - KEY_RING:您在创建 Assured Workloads 文件夹的密钥管理项目和密钥环时指定的密钥环的名称。
- KEY_NAME:要创建的 HSM 密钥的名称,例如
my-hsm-key
。
请求正文:
{ "purpose": "PURPOSE", "versionTemplate": { "protectionLevel": "PROTECTION_LEVEL", "algorithm": "ALGORITHM" }, "keyAccessJustificationsPolicy": { "allowedAccessReasons": [ ALLOWED_ACCESS_REASONS ] } }
在请求正文中,替换以下占位值:
- PURPOSE:密钥的用途。如需查看不同的密钥用途列表,请参阅密钥用途,例如
ENCRYPT_DECRYPT
。 - PROTECTION_LEVEL:密钥的保护级别,例如
SOFTWARE
或HSM
。 - ALGORITHM:要使用的加密算法。如需查看可用算法的列表,请参阅 Cloud KMS 算法,例如
GOOGLE_SYMMETRIC_ENCRYPTION
。 - ALLOWED_ACCESS_REASONS:用于定义访问加密密钥时允许的零个或多个理由代码的密钥访问理由政策,例如
["CUSTOMER_INITIATED_ACCESS", "GOOGLE_INITIATED_SYSTEM_OPERATION"]
。
以下示例请求和请求正文创建了一个 Cloud HSM 密钥,该密钥仅允许出于少数原因提供访问正当理由:
POST https://cloudkms.googleapis.com/v1/projects/919698201234/locations/asia-northeast1/keyRings/my-key-ring/cryptoKeys?crypto_key_id=my-hsm-key
{ "purpose": "ENCRYPT_DECRYPT", "versionTemplate": { "protectionLevel": "HSM", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION" }, "keyAccessJustificationsPolicy": { "allowedAccessReasons": [ "CUSTOMER_INITIATED_ACCESS", "GOOGLE_INITIATED_SYSTEM_OPERATION" ] } }
更新现有密钥的政策
控制台
在 Google Cloud 控制台中,前往密钥管理页面。
点击您创建密钥的密钥环的名称。
点击要为其更新“Key Access Justifications”政策的密钥的名称。
点击修改 Key Access Justifications 政策。
执行下列其中一项操作:
如需停用密钥的 Key Access Justifications 政策,请清除设置 Key Access Justifications 政策复选框。
如需更改允许的理由原因,请点击理由原因框,然后根据需要选择或清除原因代码。客户发起的访问和 Google 发起的系统操作对于正常运行至关重要。
如需拒绝所有理由代码,请选择拒绝所有理由代码(不推荐)。这样可以防止密钥被使用,即使密钥已启用且请求者拥有所需的权限也是如此。
点击保存。
REST
使用 cryptoKeys.patch
方法更新 Cloud KMS 中的现有密钥:
PATCH https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME?update_mask=keyAccessJustificationsPolicy
在请求中,替换以下占位值:
- PROJECT_ID:包含密钥的密钥环的项目的项目 ID,例如
919698201234
。 - LOCATION:密钥环的位置,例如
asia-northeast1
。 - KEY_RING:您在创建 Assured Workloads 文件夹的密钥管理项目和密钥环时指定的密钥环的名称。
- KEY_NAME:要更新的密钥的名称。
请求正文:
{ "purpose": "PURPOSE", "versionTemplate": { "protectionLevel": "PROTECTION_LEVEL", "algorithm": "ALGORITHM" }, "keyAccessJustificationsPolicy": { "allowedAccessReasons": [ ALLOWED_ACCESS_REASONS ] } }
在请求正文中,替换以下占位值:
- PURPOSE:密钥的用途。如需查看不同的密钥用途列表,请参阅密钥用途,例如
ENCRYPT_DECRYPT
。 - PROTECTION_LEVEL:密钥的保护级别,例如
SOFTWARE
或HSM
。 - ALGORITHM:要使用的加密算法。如需查看可用算法的列表,请参阅 Cloud KMS 算法,例如
GOOGLE_SYMMETRIC_ENCRYPTION
。 - ALLOWED_ACCESS_REASONS:用于定义访问加密密钥时允许的零个或多个理由代码的密钥访问理由政策,例如
["CUSTOMER_INITIATED_ACCESS", "GOOGLE_INITIATED_SYSTEM_OPERATION"]
。
以下示例请求和请求正文仅允许出于以下几个原因提供访问权限正当理由:
PATCH https://cloudkms.googleapis.com/v1/projects/919698201234/locations/asia-northeast1/keyRings/my-key-ring/cryptoKeys/my-hsm-key?keyAccessJustificationsPolicy
{ "purpose": "ENCRYPT_DECRYPT", "versionTemplate": { "protectionLevel": "HSM", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION" }, "keyAccessJustificationsPolicy": { "allowedAccessReasons": [ "CUSTOMER_INITIATED_ACCESS", "GOOGLE_INITIATED_SYSTEM_OPERATION" ] } }
获取密钥的 Key Access Justifications 政策
REST
使用 cryptoKeys.get
方法获取 Cloud KMS 中现有密钥的元数据:
GET https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
在请求参数中,将以下占位值替换为您自己的值:
- PROJECT_ID:包含密钥的密钥环的项目 ID,例如
919698201234
。 - LOCATION:密钥环的位置,例如
asia-northeast1
。 - KEY_RING:您在创建 Assured Workloads 文件夹的密钥管理项目和密钥环时指定的密钥环的名称,例如
my-key-ring
。 - KEY_NAME:您要获取的密钥的名称。
以下示例请求用于获取 Cloud KMS 中某个密钥的元数据:
GET https://cloudkms.googleapis.com/v1/projects/919698201234/locations/asia-northeast1/keyRings/my-key-ring/cryptoKeys/my-hsm-key
响应正文包含有关您的密钥的元数据,包括 keyAccessJustificationsPolicy
。例如:
{ "purpose": "ENCRYPT_DECRYPT", "versionTemplate": { "protectionLevel": "HSM", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION" }, "keyAccessJustificationsPolicy": { "allowedAccessReasons": [ "CUSTOMER_INITIATED_ACCESS", "GOOGLE_INITIATED_SYSTEM_OPERATION" ] } }