本指南說明如何使用 Google Cloud CLI 建立、佈建及管理單一租戶 Cloud HSM 執行個體。建立及佈建執行個體後,您可以使用 Google Cloud 控制台、Cloud Key Management Service API、gcloud CLI 和用戶端程式庫,在執行個體中建立及使用金鑰。
建立及管理執行個體時,需要法定人數驗證。建立執行個體時,您會定義執行個體作業所需的法定人數成員核准次數。仲裁成員必須一律擁有至少這個數量的控制金鑰,才能維持執行個體的管理控制權。
事前準備
- 建立及維護執行個體時,請詳閱並套用單一租戶 Cloud HSM 最佳做法。
- 決定要從多少法定人數成員開始。 如果現有法定人數成員核准,之後可以新增其他法定人數成員。仲裁成員人數下限為三人。
- 決定提案需要多少法定人數成員核准。執行個體建立後,無法變更這組編號。仲裁成員必須隨時擁有這麼多控制金鑰,才能維護執行個體。法定人數下限為兩人。必要法定人數必須少於法定人數成員人數。
- 決定如何確保執行個體及時重新整理。
您必須監控執行個體的
disableDate,並在期限前提議、核准及執行執行個體重新整理作業,以免發生非預期的停機時間。 -
如要取得建立、管理及使用單一租戶 Cloud HSM 執行個體所需的權限,請要求管理員在專案或父項資源中,授予您下列 IAM 角色:
-
建立提案:
Cloud KMS 單一租戶 HSM 提案者 (
cloudkms.hsmSingleTenantProposer) -
核准提案:
Cloud KMS 單一租戶 HSM 仲裁員 (
cloudkms.hsmSingleTenantQuorumMember) -
執行提案:
Cloud KMS 單一租戶 HSM 執行者 (
cloudkms.hsmSingleTenantExecutor) -
建立金鑰:
Cloud KMS 單一租戶 HSM 金鑰建立者 (
roles/cloudkms.hsmSingleTenantKeyCreator)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
-
建立提案:
Cloud KMS 單一租戶 HSM 提案者 (
為每個法定人數成員產生一組 RSA-2048 金鑰組,用於雙重驗證 (2FA)。建議您使用實體權杖做為控制鍵。請按照貴機構的標準,在實體權杖上建立 RSA-2048 金鑰組。
為方便示範,本指南會使用 OpenSSL 建立三把軟體支援的 RSA-2048 金鑰:
openssl genrsa -out rsaprivate1.pem openssl genrsa -out rsaprivate2.pem openssl genrsa -out rsaprivate3.pem openssl rsa -in rsaprivate1.pem -out rsapub1.pem --pubout openssl rsa -in rsaprivate2.pem -out rsapub2.pem --pubout openssl rsa -in rsaprivate3.pem -out rsapub3.pem --pubout安全地儲存私密金鑰,您需要這項金鑰才能核准提案。請妥善保管公開金鑰,您需要這些金鑰才能建立單一租戶 Cloud HSM 執行個體。
選擇支援單一租戶 Cloud HSM 的 Cloud KMS 位置。如要找出相容的位置,請查看 Cloud KMS 位置頁面上的位置清單。在「HSM support」(HSM 支援) 篩選器中,選取「Supports single-tenant HSM」(支援單一租戶 HSM)。
建立及佈建執行個體
如要建立及佈建單一租戶 Cloud HSM 執行個體,請使用 gcloud CLI 建立執行個體資源、建立提案來註冊驗證金鑰,然後核准及執行提案。
建立執行個體
這個步驟必須由具備 Cloud KMS 單一租戶 HSM 提案者角色的執行個體管理員完成。
設定預設專案。
gcloud config set project PROJECT_ID將 PROJECT_ID 替換為專案 ID。
建立單一租戶 Cloud HSM 執行個體。
gcloud kms single-tenant-hsm create --location=LOCATION \ --total-approver-count=QUORUM_MEMBER_COUNT \ --single-tenant-hsm-instance-id=INSTANCE_ID更改下列內容:
LOCATION:要建立執行個體的位置,例如us-central1。QUORUM_MEMBER_COUNT:仲裁成員總數。這也是您先前建立的控制項金鑰數量。最小值為3。之後可透過法定人數核准新增其他金鑰。您必須至少有比必要法定人數多一位的法定人數成員,才能在遺失控制金鑰後復原。INSTANCE_ID:要用於執行個體的 ID,例如example-sthsm-instance。您可以省略--single-tenant-hsm-instance-id標記,讓 Cloud HSM 指派 UUID。
檢查執行個體的狀態。
gcloud kms single-tenant-hsm describe INSTANCE_ID \ --location=LOCATION更改下列內容:
INSTANCE_ID:執行個體的 ID。LOCATION:建立執行個體的位置。
如果狀態為
PENDING_TWO_FACTOR_AUTH_REGISTRATION,您可以佈建執行個體。通常需要 5 到 30 分鐘才能達到這個狀態。
佈建執行個體
-
使用
register_two_factor_auth_keys作業建立提案,註冊雙重驗證金鑰。 這個步驟需要 Cloud KMS 單一租戶 HSM 提案者角色。 與大多數提案不同,register_two_factor_auth_keys 提案需要所有法定人數成員簽署的驗證問題。gcloud kms single-tenant-hsm proposal create INSTANCE_ID
--single-tenant-hsm-instance-proposal-id PROPOSAL_ID
--location LOCATION
--operation-type register_two_factor_auth_keys
--required-approver-count MEMBERS_REQUIRED_FOR_APPROVAL
--two-factor-public-key-pems=PUBLIC_KEY_LIST更改下列內容:
INSTANCE_ID:執行個體的 ID。PROPOSAL_ID:您要用於這項提案的專屬 ID,例如set-up-2fa。LOCATION:建立執行個體的位置。MEMBERS_REQUIRED_FOR_APPROVAL:提案必須獲得法定人數的成員核准,作業才能執行。最小值為2。執行個體佈建完成後,無法變更這個值。仲裁成員必須一律有權存取至少這麼多控制項金鑰,才能保留執行個體的管理控制權。PUBLIC_KEY_LIST:以半形逗號分隔的清單,列出所有控制項金鑰的公開金鑰部分路徑,例如rsapub1.pem,rsapub2.pem,rsapub3.pem。這份清單中的公開金鑰數量必須與先前使用的QUORUM_MEMBER_COUNT值相符。
-
查看提案狀態,等待狀態變為
PENDING。gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
更改下列內容:
INSTANCE_ID:執行個體的 ID。PROPOSAL_ID提案的 ID,例如set-up-2fa。LOCATION:建立執行個體的位置。
狀態為
PENDING時,您就可以簽署挑戰。 -
從提案取得挑戰。 如要佈建新的單一租戶 Cloud HSM 執行個體,需要仲裁中所有成員簽署的驗證問題。
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
這項指令會傳回 JSON 格式的挑戰陣列。
-
針對每個金鑰,使用 `basenc --base64url -d` 解碼驗證問題,並使用對應的私密金鑰簽署。
echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
更改下列內容:
N:挑戰編號,例如第一次挑戰為1,第二次挑戰為2,依此類推。CHALLENGE_N:上一個步驟輸出內容中的驗證碼N。PRIVATE_KEY_N:私密金鑰編號N的路徑,例如第一個驗證的rsaprivate1.pem。
-
上傳簽署的挑戰,核准提案。你可以透過一個或多個指令上傳這些檔案。您必須具備 Cloud KMS 單一租戶 HSM 仲裁員角色,才能執行這個步驟。
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
將
SIGNED_QUORUM_CHALLENGE_LIST替換為以 JSON 格式編排的驗證陣列,其中每個清單項目都是元組,包含已簽署驗證的路徑和對應公開金鑰的路徑,例如[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')],可透過一個指令提交前兩個已簽署的驗證。上傳規定數量的簽署挑戰後,提案狀態會更新為
APPROVED。 -
提案獲准後,請使用
execute指令完成register_two_factor_auth_keys作業。這個步驟需要 Cloud KMS 單一租戶 HSM 執行者角色,且必須在提案建立後的 24 小時內完成。gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID
--single_tenant_hsm_instance INSTANCE_ID --location LOCATION這項長時間執行的作業會佈建使用者並建立備份。執行個體會在 20 到 30 分鐘後變成
ACTIVE。 執行個體
ACTIVE後,請查看執行個體詳細資料 ,瞭解disableDate:gcloud kms single-tenant-hsm describe INSTANCE_ID
--location=LOCATION請注意執行個體的
disableDate。您必須在此時間前完成refresh_single_tenant_hsm_instance作業,否則執行個體將遭到停用。
查看執行個體
具備下列任一角色的使用者,可以查看單一租戶 Cloud HSM 執行個體清單及其狀態:
- Cloud KMS 單一租戶 HSM 提案者
- Cloud KMS 單一租戶 HSM 仲裁員
- Cloud KMS 單一租戶 HSM 執行者
- Cloud KMS 檢視者
- Cloud KMS 管理員
請務必定期檢查執行個體狀態。執行個體必須定期重新整理,才能維持「有效」狀態。
您可以使用「有效」狀態的執行個體。如要在單一租戶 Cloud HSM 執行個體中建立或匯入金鑰,開發人員需要執行個體的資源 ID。資源 ID 的格式如下:
projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME
如要查看機構中的執行個體並找出資源 ID,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「KMS infrastructure」(KMS 基礎架構) 頁面。
在「單一租戶 HSM 執行個體」資訊卡上,按一下「查看」。「單一租戶 HSM 執行個體」頁面會顯示您有權查看的所有單一租戶 Cloud HSM 執行個體清單。
如要查看執行個體的詳細資料,請按一下執行個體的名稱。「單一租戶 HSM 執行個體詳細資料」頁面會顯示所選執行個體的詳細資料,包括執行個體的完整資源 ID,以及為該執行個體建立的提案清單。
選用:如要查看或下載與仲裁成員目前雙重驗證 (2FA) 金鑰相關聯的公開金鑰,請按一下「取得公開金鑰」。您可以比較公開金鑰與私密雙重驗證金鑰,確認哪些控制金鑰處於啟用狀態。
gcloud
使用 kms single-tenant-hsm list 方法查看現有執行個體清單。
gcloud kms single-tenant-hsm list projects/PROJECT_ID/locations/LOCATION
更改下列內容:
PROJECT_ID:您要查看單一租戶 Cloud HSM 執行個體的專案 ID。LOCATION:要查看單一租戶 Cloud HSM 執行個體的位置。
使用 kms single-tenant-hsm describe 方法查看現有執行個體的詳細資料。
gcloud kms single-tenant-hsm describe --location=LOCATION \ --singletenanthsminstance=INSTANCE_ID
更改下列內容:
LOCATION:要查看單一租戶 Cloud HSM 執行個體的位置。INSTANCE_ID:要查看詳細資料的執行個體。
使用執行個體
執行個體處於 ACTIVE 狀態時,您可以建立及使用金鑰。您可以在與使用中單一租戶 Cloud HSM 執行個體位於相同位置的任何金鑰環上,建立單一租戶 Cloud HSM 金鑰。
如要建立單一租戶 Cloud HSM 金鑰,除了 Cloud KMS 管理員角色外,還需要 Cloud KMS 單一租戶 HSM 金鑰建立者角色。
建立單一租戶 Cloud HSM 金鑰後,使用這些金鑰不需要特殊權限。
建立金鑰
建立單一租戶 Cloud HSM 金鑰時,您必須指定要建立金鑰的單一租戶 Cloud HSM 執行個體。否則,這個程序與建立任何其他金鑰類似。如需詳細操作說明,請參閱「建立金鑰」一節。
匯入金鑰
將金鑰內容匯入單一租戶 Cloud HSM 金鑰時,您必須指定要儲存金鑰內容的單一租戶 Cloud HSM 執行個體。否則,程序與匯入任何其他金鑰類似。如需詳細操作說明,請參閱「將金鑰版本匯入 Cloud Key Management Service」。
使用金鑰
建立金鑰後,使用單一租戶 Cloud HSM 金鑰的方式,與使用任何其他 Cloud HSM 金鑰相同。您不需要指定單一租戶 Cloud HSM 執行個體即可使用金鑰。
維護執行個體
執行個體佈建完成後,您有責任維護執行個體。您可以建立維護作業提案、取得法定人數的核准,然後執行核准的作業,藉此維護執行個體。一次只能有一個有效提案。如果選擇不繼續進行提案,就必須刪除有效提案或等待提案過期,才能提出其他作業。
您必須先重新整理執行個體,才能使用 disableDate。如要檢查執行個體的 disableDate,可以查看執行個體詳細資料。
查看執行個體提案
如要查看執行個體的提案,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「KMS infrastructure」(KMS 基礎架構) 頁面。
在「單一租戶 HSM 執行個體」資訊卡上,按一下「查看」。「單一租戶 HSM 執行個體」頁面會顯示您有權查看的所有單一租戶 Cloud HSM 執行個體清單。
找到要查看提案的執行個體,然後按一下執行個體的名稱。「單一租戶 HSM 執行個體詳細資料」頁面會顯示執行個體的詳細資料,包括為該執行個體建立的提案清單。
選用:如要篩選提案清單,請按一下「篩選」列 ,然後輸入篩選條件。舉例來說,您可以篩選清單,只查看待核准的提案,或只查看已順利完成的提案。
gcloud
-
使用
kms single-tenant-hsm proposal list方法查看現有提案清單。gcloud kms single-tenant-hsm proposal list --location=LOCATION \ --singletenanthsminstance=INSTANCE_ID
更改下列內容:
LOCATION:要查看單一租戶 Cloud HSM 執行個體的位置。INSTANCE_ID:要查看提案的單一租戶 Cloud HSM 執行個體 ID。
重新整理執行個體
您可以重新整理執行個體,確保執行個體維持在最新狀態,並避免發生非預期的停機時間。這項操作需要仲裁驗證。提案獲准後,這項作業大約需要 15 到 30 分鐘才能完成。
重新整理執行個體時,disableDate 會設為自重新整理時間起 120 天。
-
使用
refresh_single_tenant_hsm_instance作業類型建立提案,以重新整理執行個體。這個步驟需要 Cloud KMS 單一租戶 HSM 提案者角色。gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type refresh_single_tenant_hsm_instance
更改下列內容:
INSTANCE_ID:執行個體的 ID。LOCATION:您建立執行個體的位置。PROPOSAL_ID:您要用於這項提案的專屬 ID,例如refresh_instance。
-
查看提案狀態,等待狀態變為
PENDING。gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
更改下列內容:
INSTANCE_ID:執行個體的 ID。PROPOSAL_ID提案的 ID,例如refresh_instance。LOCATION:建立執行個體的位置。
狀態為
PENDING時,即可簽署挑戰。 -
從提案取得挑戰。
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
這項指令會傳回 JSON 格式的挑戰陣列。
-
針對上一個步驟傳回的每個驗證問題,使用
basenc --base64url -d解碼驗證問題,並以私密金鑰簽署。echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
更改下列內容:
N:挑戰編號,例如第一次挑戰為1,第二次挑戰為2,依此類推。CHALLENGE_N:上一個步驟輸出內容中的驗證碼N。PRIVATE_KEY_N:私密金鑰編號N的路徑,例如第一個驗證的rsaprivate1.pem。
-
上傳簽署的挑戰,核准提案。你可以透過一個或多個指令上傳這些檔案。您必須具備 Cloud KMS 單一租戶 HSM 仲裁員角色,才能執行這個步驟。
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
將
SIGNED_QUORUM_CHALLENGE_LIST替換為以 JSON 格式編排的驗證陣列,其中每個清單項目都是元組,包含已簽署驗證的路徑和對應公開金鑰的路徑,例如[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')],可透過一個指令提交前兩個已簽署的驗證。上傳規定數量的簽署挑戰後,提案狀態會更新為
APPROVED。 -
執行提案。 這個步驟需要 Cloud KMS 單一租戶 HSM 執行者角色,且必須在提案建立後的 24 小時內完成。
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
作業完成後,執行個體會維持 `ACTIVE` 狀態,且
disableDate會設為從重新整理時間起算的 120 天。
新增法定人數成員
您可以將仲裁成員新增至執行個體。這項操作需要仲裁驗證。提案獲得核准後,這項作業大約需要 15 到 30 分鐘才能完成。
為新仲裁成員產生新的 RSA-2048 金鑰組。請按照貴機構的標準,在實體權杖上建立 RSA-2048 金鑰組。
請妥善保管私密金鑰,您需要這項金鑰才能核准提案。 請記下公開金鑰,您需要使用這組金鑰,將新的法定人數成員新增至單一租戶 Cloud HSM 執行個體。
-
使用
add_quorum_member作業建立提案,將仲裁成員新增至執行個體。這個步驟需要 Cloud KMS 單一租戶 HSM 提案者角色。gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type add_quorum_member \ --two_factor_public_key_pem PATH_TO_PUBLIC_KEY
更改下列內容:
INSTANCE_ID:執行個體的 ID。LOCATION:您建立執行個體的位置。PROPOSAL_ID:您要用於這項提案的專屬 ID,例如add_quorum_member。PATH_TO_PUBLIC_KEY:新公開金鑰的路徑,例如rsapub4.pem。
-
查看提案狀態,等待狀態變為
PENDING。gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
更改下列內容:
INSTANCE_ID:執行個體的 ID。PROPOSAL_ID提案的 ID,例如add_quorum_member。LOCATION:建立執行個體的位置。
狀態為
PENDING時,您就可以簽署挑戰。 -
從提案取得挑戰。 如要新增法定人數成員,必須先取得現有法定人數成員的簽署驗證,以及新成員使用新金鑰簽署的驗證。
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](requiredActionQuorumParameters.requiredChallenges,requiredActionQuorumParameters.quorumChallenges)"
這項指令會傳回 JSON 格式的挑戰陣列。「
requiredActionQuorumParameters.requiredChallenges」欄位包含您要註冊新金鑰的驗證問題。requiredActionQuorumParameters.quorumChallenges欄位包含現有金鑰法定人數的挑戰。您必須簽署requiredActionQuorumParameters物件中的所有驗證問題。 -
針對上一個步驟傳回的每個驗證問題,使用
basenc --base64url -d解碼驗證問題,並以私密金鑰簽署。echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
更改下列內容:
N:挑戰編號,例如第一次挑戰為1,第二次挑戰為2,依此類推。CHALLENGE_N:上一個步驟輸出內容中的驗證碼N。PRIVATE_KEY_N:私密金鑰編號N的路徑,例如第一個驗證的rsaprivate1.pem。
-
上傳簽署的挑戰,核准提案。你可以透過一個或多個指令上傳這些檔案。您必須具備 Cloud KMS 單一租戶 HSM 仲裁員角色,才能執行這個步驟。
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST" \ --required-challenge-replies="SIGNED_REQUIRED_CHALLENGE_LIST"
更改下列內容:
SIGNED_QUORUM_CHALLENGE_LIST:以 JSON 格式呈現的挑戰陣列,使用已註冊的私密金鑰簽署,其中每個清單項目都是元組,包含已簽署挑戰的路徑和對應公開金鑰的路徑,例如[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')],可透過一個指令提交前兩項已簽署的挑戰。SIGNED_REQUIRED_CHALLENGE_LIST:JSON 格式的陣列,內含使用新私密金鑰簽署的驗證問題,其中唯一的清單項目是元組,內含已簽署驗證問題的路徑和對應公開金鑰的路徑,例如[('signed-challenge-newkey.txt','rsapub-newkey.pem')]。
上傳規定數量的簽署挑戰後,提案狀態會更新為
APPROVED。 -
執行提案。 這個步驟需要 Cloud KMS 單一租戶 HSM 執行者角色,且必須在提案建立後的 24 小時內完成。
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
作業完成後,新的法定人數成員就能參與挑戰,核准提案。您新增的公開金鑰現在會列在執行個體詳細資料的公開金鑰清單中。
移除法定人數成員
如果法定人數成員超過必要人數,可以從執行個體中移除法定人數成員。這項操作需要法定人數驗證。 提案獲得核准後,這項作業大約需要 15 到 30 分鐘才能完成。
-
使用
remove_quorum_member作業,建立從執行個體移除仲裁成員的提案。這個步驟需要 Cloud KMS 單一租戶 HSM 提案者角色。gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type remove_quorum_member \ --two_factor_public_key_pem PATH_TO_PUBLIC_KEY
更改下列內容:
INSTANCE_ID:執行個體的 ID。LOCATION:您建立執行個體的位置。PROPOSAL_ID:您要用於這項提案的專屬 ID,例如remove_quorum_member。PATH_TO_PUBLIC_KEY:要從執行個體中移除的公開金鑰路徑,例如rsapub3.pem。作業完成後,對應的私密金鑰就無法用於核准提案。
-
查看提案狀態,等待狀態變為
PENDING。gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
更改下列內容:
INSTANCE_ID:執行個體的 ID。PROPOSAL_ID提案的 ID,例如remove_quorum_member。LOCATION:建立執行個體的位置。
狀態為
PENDING時,即可簽署挑戰。 -
從提案取得挑戰。
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
這項指令會傳回 JSON 格式的挑戰陣列。
-
針對上一個步驟傳回的每個驗證問題,使用
basenc --base64url -d解碼驗證問題,並以私密金鑰簽署。echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
更改下列內容:
N:挑戰編號,例如第一次挑戰為1,第二次挑戰為2,依此類推。CHALLENGE_N:上一個步驟輸出內容中的驗證碼N。PRIVATE_KEY_N:私密金鑰編號N的路徑,例如第一個驗證的rsaprivate1.pem。
-
上傳簽署的挑戰,核准提案。你可以透過一個或多個指令上傳這些檔案。您必須具備 Cloud KMS 單一租戶 HSM 仲裁員角色,才能執行這個步驟。
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
將
SIGNED_QUORUM_CHALLENGE_LIST替換為以 JSON 格式編排的驗證陣列,其中每個清單項目都是元組,包含已簽署驗證的路徑和對應公開金鑰的路徑,例如[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')],可透過一個指令提交前兩個已簽署的驗證。上傳規定數量的簽署挑戰後,提案狀態會更新為
APPROVED。 -
執行提案。 這個步驟需要 Cloud KMS 單一租戶 HSM 執行者角色,且必須在提案建立後的 24 小時內完成。
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
作業完成後,遭移除的法定人數成員就無法再參與挑戰,以核准提案。您移除的公開金鑰不再列於執行個體詳細資料的公開金鑰清單中。
停用執行個體
您可以停用執行個體,暫時封鎖所有金鑰的存取權。這項作業需要法定人數驗證。提案獲得核准後,作業大約需要 15 到 30 分鐘才能完成。
執行個體停用後,儲存在該執行個體中的金鑰仍會顯示為 ACTIVE,但無法使用。如果嘗試使用已停用執行個體中的金鑰執行加密編譯作業,就會發生錯誤。
-
使用
disable_single_tenant_hsm_instance作業類型建立提案,停用執行個體。這個步驟需要 Cloud KMS 單一租戶 HSM 提案者角色。gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type disable_single_tenant_hsm_instance
更改下列內容:
INSTANCE_ID:執行個體的 ID。LOCATION:您建立執行個體的位置。PROPOSAL_ID:您要用於這項提案的專屬 ID,例如disable_instance。
-
查看提案狀態,等待狀態變為
PENDING。gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
更改下列內容:
INSTANCE_ID:執行個體的 ID。PROPOSAL_ID提案的 ID,例如disable_instance。LOCATION:建立執行個體的位置。
狀態為
PENDING時,即可簽署挑戰。 -
從提案取得挑戰。
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
這項指令會傳回 JSON 格式的挑戰陣列。
-
針對上一個步驟傳回的每個驗證問題,使用
basenc --base64url -d解碼驗證問題,並以私密金鑰簽署。echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
更改下列內容:
N:挑戰編號,例如第一次挑戰為1,第二次挑戰為2,依此類推。CHALLENGE_N:上一個步驟輸出內容中的驗證碼N。PRIVATE_KEY_N:私密金鑰編號N的路徑,例如第一個驗證的rsaprivate1.pem。
-
上傳簽署的挑戰,核准提案。你可以透過一個或多個指令上傳這些檔案。您必須具備 Cloud KMS 單一租戶 HSM 仲裁員角色,才能執行這個步驟。
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
將
SIGNED_QUORUM_CHALLENGE_LIST替換為以 JSON 格式編排的驗證陣列,其中每個清單項目都是元組,包含已簽署驗證的路徑和對應公開金鑰的路徑,例如[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')],可透過一個指令提交前兩個已簽署的驗證。上傳規定數量的簽署挑戰後,提案狀態會更新為
APPROVED。 -
執行提案。 這個步驟需要 Cloud KMS 單一租戶 HSM 執行者角色,且必須在提案建立後的 24 小時內完成。
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
作業完成後,執行個體會維持在
DISABLED狀態,且必須重新啟用才能使用。
啟用執行個體
您可以重新啟用 DISABLED 執行個體,還原對該執行個體及其金鑰的存取權。
這項操作需要仲裁驗證。提案獲准後,這項作業大約需要 15 到 30 分鐘才能完成。
-
使用
enable_single_tenant_hsm_instance作業類型建立提案,以啟用執行個體。這個步驟需要 Cloud KMS 單一租戶 HSM 提案者角色。gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type enable_single_tenant_hsm_instance
更改下列內容:
INSTANCE_ID:執行個體的 ID。LOCATION:您建立執行個體的位置。PROPOSAL_ID:您要用於這項提案的專屬 ID,例如enable_instance。
-
查看提案狀態,等待狀態變為
PENDING。gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
更改下列內容:
INSTANCE_ID:執行個體的 ID。PROPOSAL_ID提案的 ID,例如enable_instance。LOCATION:建立執行個體的位置。
狀態為
PENDING時,即可簽署挑戰。 -
從提案取得挑戰。
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
這項指令會傳回 JSON 格式的挑戰陣列。
-
針對上一個步驟傳回的每個驗證問題,使用
basenc --base64url -d解碼驗證問題,並以私密金鑰簽署。echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
更改下列內容:
N:挑戰編號,例如第一次挑戰為1,第二次挑戰為2,依此類推。CHALLENGE_N:上一個步驟輸出內容中的驗證碼N。PRIVATE_KEY_N:私密金鑰編號N的路徑,例如第一個驗證的rsaprivate1.pem。
-
上傳簽署的挑戰,核准提案。你可以透過一個或多個指令上傳這些檔案。您必須具備 Cloud KMS 單一租戶 HSM 仲裁員角色,才能執行這個步驟。
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
將
SIGNED_QUORUM_CHALLENGE_LIST替換為以 JSON 格式編排的驗證陣列,其中每個清單項目都是元組,包含已簽署驗證的路徑和對應公開金鑰的路徑,例如[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')],可透過一個指令提交前兩個已簽署的驗證。上傳規定數量的簽署挑戰後,提案狀態會更新為
APPROVED。 -
執行提案。 這個步驟需要 Cloud KMS 單一租戶 HSM 執行者角色,且必須在提案建立後的 24 小時內完成。
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
作業完成後,執行個體會返回 `ACTIVE` 狀態,且
disableDate會設為從重新整理時間起算的 120 天。
刪除執行個體
您可以刪除執行個體,永久銷毀執行個體和金鑰。這項作業需要法定人數驗證。提案獲得核准後,作業大約需要 15 到 30 分鐘才能完成。
執行個體刪除後,儲存在該執行個體中的金鑰仍會顯示為 ACTIVE,但無法使用。嘗試使用已刪除執行個體中的金鑰執行加密編譯作業會導致錯誤。
-
使用
delete_single_tenant_hsm_instance作業類型建立提案,刪除執行個體。這個步驟需要 Cloud KMS 單一租戶 HSM 提案者角色。gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type delete_single_tenant_hsm_instance
更改下列內容:
INSTANCE_ID:要刪除的執行個體 ID。LOCATION:您建立執行個體的位置。PROPOSAL_ID:您要用於這項提案的專屬 ID,例如delete_instance。
-
查看提案狀態,等待狀態變為
PENDING。gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
更改下列內容:
INSTANCE_ID:執行個體的 ID。PROPOSAL_ID提案的 ID,例如delete_instance。LOCATION:建立執行個體的位置。
狀態為
PENDING時,即可簽署挑戰。 -
從提案取得挑戰。
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
這項指令會傳回 JSON 格式的挑戰陣列。
-
針對上一個步驟傳回的每個驗證問題,使用
basenc --base64url -d解碼驗證問題,並以私密金鑰簽署。echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
更改下列內容:
N:挑戰編號,例如第一次挑戰為1,第二次挑戰為2,依此類推。CHALLENGE_N:上一個步驟輸出內容中的驗證碼N。PRIVATE_KEY_N:私密金鑰編號N的路徑,例如第一個驗證的rsaprivate1.pem。
-
上傳簽署的挑戰,核准提案。你可以透過一個或多個指令上傳這些檔案。您必須具備 Cloud KMS 單一租戶 HSM 仲裁員角色,才能執行這個步驟。
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
將
SIGNED_QUORUM_CHALLENGE_LIST替換為以 JSON 格式編排的驗證陣列,其中每個清單項目都是元組,包含已簽署驗證的路徑和對應公開金鑰的路徑,例如[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')],可透過一個指令提交前兩個已簽署的驗證。上傳規定數量的簽署挑戰後,提案狀態會更新為
APPROVED。 -
確認要刪除執行個體,並加密銷毀使用此執行個體建立的金鑰加密的所有資料,然後執行提案。這個步驟需要 Cloud KMS 單一租戶 HSM 執行者角色,且必須在提案建立後的 24 小時內完成。
警告:下列指令無法還原。可能會永久遺失資料。Google 無法協助您復原已刪除執行個體中的金鑰。gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
作業完成後,執行個體就會刪除。
刪除提案
如果決定不核准或執行提案,可以在提案到期前刪除。刪除待處理的提案後,您就無法核准該提案,但可以建立新的提案。刪除已核准的提案後,您就無法執行該作業。
-
使用
proposal delete指令刪除提案。您必須具備 Cloud KMS 單一租戶 HSM 提案者角色,才能執行這項操作。gcloud kms single-tenant-hsm proposal delete PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID
更改下列內容:
INSTANCE_ID:執行個體的 ID。LOCATION:您建立執行個體的位置。PROPOSAL_ID:要刪除提案的專屬 ID,例如proposal_to_delete。
後續步驟
- 進一步瞭解單一租戶 Cloud HSM。