通过 Cloud HSM 配置密钥访问理由

本页面介绍了如何将 Key Access Justifications 与 Cloud HSM 搭配使用,为 Assured Workloads 的日本区域控制措施软件包配置密钥访问正当理由。

为日本区域创建新的 Assured Workloads 文件夹的步骤中,您可以选择为加密密钥创建新项目和密钥环。Cloud HSM 密钥可以添加到此密钥环,您还可以配置 Key Access Justifications 政策来控制对每个密钥的访问权限。

准备工作

  • 只有在 Assured Workloads 中使用“日本区域”控制软件包时,才能将 Key Access Justifications 与 Cloud HSM 密钥搭配使用。
  • 确保您的管理员已授予您所需的 Identity and Access Management (IAM) 角色之一,以便您创建和管理 Key Access Justifications 政策以及 Cloud HSM 密钥本身。

必需的 IAM 权限

如需获得创建和管理 Cloud HSM 密钥及其 Key Access Justifications 政策所需的权限,请让您的管理员为您授予包含密钥环的项目的 Cloud KMS Admin (roles/cloudkms.admin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含创建和管理 Cloud HSM 密钥及其 Key Access Justifications 政策所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

您需要具备以下权限,才能创建和管理 Cloud HSM 密钥及其 Key Access Justifications 政策:

  • cloudkms.cryptoKeys.create
  • cloudkms.cryptoKeys.update
  • cloudkms.cryptoKeys.get

您也可以使用自定义角色或其他预定义角色来获取这些权限。

配置具有 Key Access Justifications 的 Cloud HSM 密钥

如需使用 Cloud HSM 密钥配置 Key Access Justifications,您可以在创建密钥时将密钥访问权限政策作为参数添加,也可以在创建密钥后使用该政策更新密钥。

创建新密钥和政策

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:密钥环的位置,例如 us-west1
  • KEY_RING:您在创建 Assured Workloads 文件夹的密钥管理项目和密钥环时指定的密钥环的名称,例如 my-key-ring
  • KEY_NAME:要创建的 HSM 密钥的名称,例如 my-hsm-key

请求正文:

{
  "purpose": "PURPOSE",
  "versionTemplate": {
    "protectionLevel": "HSM",
    "algorithm": "ALGORITHM"
  },
  "keyAccessJustificationsPolicy": {
    "allowedAccessReasons": [
      ALLOWED_ACCESS_REASONS
    ]
  }
}

在请求正文中,替换以下占位值:

  • PURPOSE:密钥的用途。如需查看不同的密钥用途列表,请参阅密钥用途,例如 ENCRYPT_DECRYPT
  • ALGORITHM:要使用的加密算法。如需查看可用算法的列表,请参阅 Cloud KMS 算法,例如 GOOGLE_SYMMETRIC_ENCRYPTION
  • ALLOWED_ACCESS_REASONS:用于定义访问加密密钥时允许的零个或多个理由代码的密钥访问理由政策,例如 ["CUSTOMER_INITIATED_ACCESS", "GOOGLE_INITIATED_SYSTEM_OPERATION"]

以下示例请求和请求正文仅允许出于以下几个原因提供访问权限正当理由:

POST https://cloudkms.googleapis.com/v1/projects/919698201234/locations/us-west1/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"
    ]
  }
}

更新现有密钥的政策

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:密钥环的位置,例如 us-west1
  • KEY_RING:您在创建 Assured Workloads 文件夹的密钥管理项目和密钥环时指定的密钥环的名称,例如 my-key-ring
  • KEY_NAME:要更新的 HSM 密钥的名称,例如 my-hsm-key

请求正文:

{
  "purpose": "PURPOSE",
  "versionTemplate": {
    "protectionLevel": "HSM",
    "algorithm": "ALGORITHM"
  },
  "keyAccessJustificationsPolicy": {
    "allowedAccessReasons": [
      ALLOWED_ACCESS_REASONS
    ]
  }
}

在请求正文中,替换以下占位值:

  • PURPOSE:密钥的用途。如需查看不同的密钥用途列表,请参阅密钥用途,例如 ENCRYPT_DECRYPT
  • 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/us-west1/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:密钥环的位置,例如 us-west1
  • KEY_RING:您在创建 Assured Workloads 文件夹的密钥管理项目和密钥环时指定的密钥环的名称,例如 my-key-ring
  • KEY_NAME:要获取的 HSM 密钥的名称,例如 my-hsm-key

以下示例请求用于获取 Cloud KMS 中某个密钥的元数据:

GET https://cloudkms.googleapis.com/v1/projects/919698201234/locations/us-west1/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"
    ]
  }
}

后续步骤