使用 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 金鑰設定金鑰存取理由,您可以在建立金鑰時將金鑰存取政策做為參數納入,也可以在建立金鑰後更新金鑰政策。
建立新的金鑰和政策
控制台
前往 Google Cloud 控制台的「金鑰管理」頁面。
按一下要建立金鑰的金鑰環名稱。
按一下 [Create key] (建立金鑰)。
在「金鑰名稱」中,輸入金鑰的名稱。
「防護等級」,選取「軟體」或「HSM」。
視需要繼續選取設定。
在「其他設定」下方,選取「設定金鑰存取理由政策」,然後選取「允許的理由」。
在「Justification reasons」(正當理由) 部分,選取「Customer-initiated access」(客戶發起的存取要求)、「Google-initiated system operation」(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 控制台的「金鑰管理」頁面。
按一下您建立金鑰的金鑰環名稱。
找出要更新金鑰存取依據政策的金鑰,然後按一下該金鑰的名稱。
按一下「編輯金鑰存取依據政策」。
執行下列其中一個步驟:
如要停用金鑰的金鑰存取依據政策,請取消勾選「設定金鑰存取依據政策」核取方塊。
如要變更允許的理由,請按一下「理由」方塊,然後視需要選取或清除原因代碼。「客戶發起的存取要求」和「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" ] } }
取得金鑰的金鑰存取依據政策
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" ] } }
後續步驟
- 您也可以設定預設的金鑰存取依據政策 (預覽版)。