Google Cloud には、組織全体で鍵バージョンの破棄ポリシーを設定するための 2 つの組織のポリシーの制約が用意されています。
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 は 10 進数で表示され、先頭にゼロを付けることはできません。--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
)を使用すると、鍵の破棄をスケジュールする前に鍵を無効にする必要があります。鍵を破棄する前に無効にすることをおすすめします。これにより、確実に鍵が使用されていない状態にできます。この制約を慎重な Identity and Access Management ポリシーと組み合わせることで、複数のロールの協力を必要とするマルチステップの破棄プロセスを作成できます。
この制約を使用してマルチステップの破棄プロセスを作成するには、cloudkms.cryptoKeyVersions.update
権限と cloudkms.cryptoKeyVersions.destroy
権限の両方を付与されているユーザーがいないことをご確認ください。このユースケースでは、カスタムロールを使用する必要があります。
鍵の破棄をスケジュールする前に、鍵が無効な状態であることを要求するには、次の操作を行います。
gcloud
describe
コマンドを使用して、組織リソースに関する現在のポリシーを取得します。このコマンドを実行すると、このリソースに直接適用されたポリシーが返されます。gcloud org-policies describe \ constraints/cloudkms.disableBeforeDestroy \ --organization=ORGANIZATION_ID
ORGANIZATION_ID
は、組織リソースの固有識別子に置き換えます。組織 ID は 10 進数で表示され、先頭にゼロを付けることはできません。--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
は、組織リソースの固有識別子に置き換えます。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
この組織ポリシーは組織レベルで設定されているため、継承が許可されているすべての子リソースで継承されます。
次のステップ
- 詳しくは、鍵バージョンの状態をご覧ください。
- 鍵バージョンの破棄と復元。