使用 Cloud KMS 和 Cloud HSM 設定金鑰存取理由

本頁說明如何透過 Cloud KMS 或 Cloud HSM,為 Assured Workloads 的日本資料邊界設定金鑰存取依據。

為日本區域建立新的 Assured Workloads 資料夾時,您可以選擇為加密金鑰建立新的專案和金鑰環。您可以將 Cloud KMS 和 Cloud HSM 金鑰新增至這個金鑰環,也可以設定金鑰存取理由政策,控管每個金鑰的存取權。

事前準備

  • 只有在 Assured Workloads 的日本資料邊界中,才能搭配 Cloud KMS 和 Cloud HSM 金鑰使用金鑰存取理由。
  • 請確認管理員已授予您其中一個必要的 Identity and Access Management (IAM) 角色,以便建立及管理金鑰存取理由政策,以及 Cloud KMS 和 Cloud HSM 金鑰本身。

必要 IAM 權限

如要取得建立及管理 Cloud KMS 和 Cloud HSM 金鑰,以及金鑰存取理由政策所需的權限,請要求管理員在含有金鑰環的專案中,授予您 Cloud KMS 管理員 (roles/cloudkms.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這個預先定義的角色具備建立及管理 Cloud KMS 和 Cloud HSM 金鑰,以及金鑰存取理由政策所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要建立及管理 Cloud KMS 和 Cloud HSM 金鑰,以及這些金鑰的「金鑰存取理由」政策,您必須具備下列權限:

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

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

設定具有金鑰存取依據的金鑰

如要使用 Cloud KMS 或 Cloud HSM 金鑰設定金鑰存取理由,您可以在建立金鑰時將金鑰存取政策做為參數納入,也可以在建立金鑰後更新金鑰政策。

建立新的金鑰和政策

控制台

  1. 前往 Google Cloud 控制台的「金鑰管理」頁面。

    前往金鑰管理頁面

  2. 按一下要建立金鑰的金鑰環名稱。

  3. 按一下 [Create key] (建立金鑰)

  4. 在「金鑰名稱」中,輸入金鑰的名稱。

  5. 「防護等級」,選取「軟體」或「HSM」

  6. 視需要繼續選取設定。

  7. 在「其他設定」下方,選取「設定金鑰存取理由政策」,然後選取「允許的理由」

  8. 在「Justification reasons」(正當理由) 部分,選取「Customer-initiated access」(客戶發起的存取要求)、「Google-initiated system operation」(Google 發起的系統作業),以及您要允許的任何其他原因代碼。「客戶發起的存取要求」和「Google 發起的系統作業」都是正常運作的必要條件。

  9. 點選「建立」

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:金鑰的防護等級,例如 SOFTWAREHSM
  • 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"
    ]
  }
}

更新現有金鑰的政策

控制台

  1. 前往 Google Cloud 控制台的「金鑰管理」頁面。

    前往金鑰管理頁面

  2. 按一下您建立金鑰的金鑰環名稱。

  3. 找出要更新金鑰存取依據政策的金鑰,然後按一下該金鑰的名稱。

  4. 按一下「編輯金鑰存取依據政策」

  5. 執行下列其中一個步驟:

    • 如要停用金鑰的金鑰存取依據政策,請取消勾選「設定金鑰存取依據政策」核取方塊。

    • 如要變更允許的理由,請按一下「理由」方塊,然後視需要選取或清除原因代碼。「客戶發起的存取要求」和「Google 發起的系統作業」都必須允許,服務才能正常運作。

    • 如要拒絕所有原因代碼,請選取「拒絕所有原因代碼 (不建議)」。即使金鑰已啟用,且要求者具備必要權限,系統也不會使用該金鑰。

  6. 按一下 [儲存]

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:金鑰的防護等級,例如 SOFTWAREHSM
  • 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"
    ]
  }
}

取得金鑰的金鑰存取依據政策

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"
    ]
  }
}

後續步驟