Google Cloud 提供兩項機構政策限制,可在整個機構中設定金鑰版本銷毀政策:
constraints/cloudkms.minimumDestroyScheduledDuration用於為機構內的新金鑰設定預定銷毀時間的最低長度。constraints/cloudkms.disableBeforeDestroy:用於要求金鑰版本必須先停用,才能安排銷毀。
事前準備
本頁的操作說明假設您已熟悉使用限制,並具備必要資源和角色。
必要資源
如要完成本頁的步驟,您必須具備下列資源:
- 機構。
- 選用:機構內的資料夾或專案資源。
必要的角色
如要取得管理機構政策所需的權限,請要求管理員為您授予機構的機構政策管理員 (roles/orgpolicy.policyAdmin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色具備管理機構政策所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要管理組織政策,您必須具備下列權限:
-
orgpolicy.constraints.list -
orgpolicy.policies.create -
orgpolicy.policies.delete -
orgpolicy.policies.list -
orgpolicy.policies.update -
orgpolicy.policy.get -
orgpolicy.policy.set
要求最短的「已排定刪除時間」
「每個金鑰的最短刪除排程時長」限制 (constraints/cloudkms.minimumDestroyScheduledDuration) 用於為新金鑰的「預定刪除」時長設定最短長度。這項限制會覆寫專案、資料夾或機構層級的最低預定銷毀時間。這項限制可降低意外毀損仍需使用的金鑰的機率。您可以將這項限制設為較高的值,確保您有時間在金鑰遭到不可逆的破壞前採取防範措施。
如果非預期的金鑰銷毀行為會造成更大損害,請為這項限制使用較高的值,例如受資料保留規定約束的生產資料。如果非預期的金鑰毀損不會造成太大危害 (例如開發或測試環境),請針對這項限制使用較低的值。您也可以使用較低的值,以便及時加密清除。不過,由於這是最小值,這項限制無法確保新金鑰的預定刪除日數較短。
如要設定預定銷毀的最低時間長度,請按照下列步驟操作:
使用
describe指令取得機構資源的現行政策。這項指令會傳回直接套用至這項資源的政策:gcloud org-policies describe \ constraints/cloudkms.minimumDestroyScheduledDuration \ --organization=ORGANIZATION_ID將
ORGANIZATION_ID替換為機構資源的唯一 ID。機構 ID 的格式為十進位數字,開頭不得為零。您也可以分別使用
--folder或--project標記,以及資料夾 ID 或專案 ID,查看資料夾或專案的組織政策。如果目前有機構政策,回應會傳回該政策。輸出結果會與下列內容相似:
name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration spec: etag: COTP+KYGELiCmsoB inheritFromParent: true rules: - values: allowedValues: - in:7d updateTime: '2023-08-17T14:00:04.424051Z'如果未設定政策,
describe指令會傳回NOT_FOUND錯誤:ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.使用
set-policy指令設定機構的政策。這項指令會覆寫目前附加至資源的任何政策。建立暫存檔案
/tmp/policy.yaml來儲存政策:name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration spec: rules: - values: allowedValues: - in:MINIMUM_DURATION更改下列內容:
ORGANIZATION_ID:機構的數值 ID。MINIMUM_DURATION:這個機構中金鑰的「已安排刪除」狀態最短持續時間 (以天為單位)。必須是下列其中一個值:7d、15d、30d、60d、90d或120d。
執行
set-policy指令:gcloud org-policies set-policy /tmp/policy.yaml
使用
describe --effective查看目前生效的政策。這個指令會傳回機構政策,因為系統會在資源階層的這一點評估政策,並納入沿用政策。gcloud org-policies describe \ constraints/cloudkms.minimumDestroyScheduledDuration --effective \ --organization=ORGANIZATION_ID輸出結果會與下列內容相似:
name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration spec: rules: - values: allowedValues: - 30d - 15d - 90d - 60d - 7d - 120d由於這項機構政策是在機構層級設定,因此所有允許沿用的子項資源都會繼承這項政策。
必須先停用金鑰才能銷毀
「將金鑰刪除限制為已停用的金鑰」限制 (constraints/cloudkms.disableBeforeDestroy) 可讓您要求先停用金鑰,才能排定刪除金鑰的時間。建議您先停用金鑰再銷毀,因為這樣有助於確認金鑰未在使用中。您可以將這項限制與仔細的身分與存取權管理政策結合,建立多步驟的銷毀程序,需要多個角色合作才能完成。
如要使用這項限制建立多步驟銷毀程序,請確保沒有任何使用者同時具備 cloudkms.cryptoKeyVersions.update 和 cloudkms.cryptoKeyVersions.destroy 權限。這個應用情境需要使用自訂角色。
如要規定金鑰必須處於「已停用」狀態,才能安排銷毀金鑰,請按照下列步驟操作:
gcloud
使用
describe指令取得機構資源的現行政策。這項指令會傳回直接套用至這項資源的政策:gcloud org-policies describe \ constraints/cloudkms.disableBeforeDestroy \ --organization=ORGANIZATION_ID將
ORGANIZATION_ID替換為機構資源的唯一 ID。機構 ID 的格式為十進位數字,開頭不得為零。您也可以分別使用
--folder或--project標記,以及資料夾 ID 或專案 ID,查看資料夾或專案的組織政策。如果目前有機構政策,回應會傳回該政策。輸出內容類似如下:
name: organizations/ORGANIZATION_ID/policies/cloudkms.disableBeforeDestroy spec: etag: CPvY+KYGENDwgxA= rules: - enforce: true updateTime: '2023-08-17T14:19:39.033618Z'如果未設定政策,
describe指令會傳回NOT_FOUND錯誤:ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.使用
set-policy指令設定機構的政策。這項指令會覆寫已附加至資源的任何政策。建立暫存檔案
/tmp/policy.yaml來儲存政策:name: organizations/ORGANIZATION_ID/policies/cloudkms.disableBeforeDestroy spec: rules: - enforce: true將
ORGANIZATION_ID替換為機構資源的唯一 ID。執行
set-policy指令:gcloud org-policies set-policy /tmp/policy.yaml
使用
describe --effective查看目前生效的政策。這個指令會傳回機構政策,因為系統會在資源階層的這一點評估政策,並納入沿用政策。gcloud org-policies describe \ constraints/cloudkms.disableBeforeDestroy --effective \ --organization=ORGANIZATION_ID輸出結果會與下列內容相似:
name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration spec: rules: - enforce: true由於這項機構政策是在機構層級設定,因此所有允許沿用的子項資源都會繼承這項政策。