このドキュメントでは、IAM 拒否ポリシーと組織のポリシーの制約を使用して、組織またはフォルダ内で Autokey を使用する方法を制御する方法について説明します。これらのガードレールは組織レベルのロールでのみ変更できるため、フォルダまたはプロジェクト レベルでオーナーロールまたは管理者ロールを持つプリンシパルによってオーバーライドすることはできません。
次のユースケースがサポートされています。
- Autokey で鍵を作成する必要があります。すべての鍵が Autokey で作成されるように、プリンシパルが手動で鍵を作成できないようにブロック できます。Autokey が有効になっていないリソースでは、鍵を作成できません。
- Autokey を制限して、 専用プロジェクトの鍵ストレージまたは同じプロジェクトの鍵ストレージのみを許可します。
- Autokey を完全にブロックします。これにより、すべての鍵が手動で作成されます。
IAM と組織のポリシー
IAM と組織のポリシーの両方で、組織で Cloud KMS Autokey を使用する方法を制御するガードレールを設定できます。
IAM は、どのリソースに対して誰がどのアクションを実行できるかを制御します。IAM を使用して、組織内で Autokey を有効にして使用できるプリンシパルを制限できます。
組織のポリシーは、作成できるリソースとその構成方法を制御します。カスタムの組織のポリシーを使用して、Autokey を有効にできる場所と 方法を制限できます。
IAM と組織のポリシーを組み合わせて使用すると、Autokey を有効にして使用できるユーザー、場所、方法を制御する堅牢なガードレール システムを作成できます。
始める前に
Autokey の使用を制御するために必要な権限を取得するには、組織に対して次の IAM ロールを付与するよう管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。
IAM 拒否ポリシーを使用して Autokey を制御する
IAM 拒否ポリシーを使用すると、どのアクションをどのプリンシパルが実行できるかをトップダウンで制御できます。リソースに設定された拒否ポリシーは、IAM ロールの付与や子リソースに設定された拒否ポリシーによってオーバーライドできません。 プリンシパルは、付与されているロールに権限が含まれていても、拒否された権限を必要とするアクションを完了できません。
IAM 拒否ポリシーを作成する方法については、リソースへのアクセスを 拒否するをご覧ください。
次の表に、IAM 拒否ポリシーのユースケースの例を示します。これには、組織で Autokey を制御するために拒否できる権限と、各権限を拒否した場合の効果が含まれます。
カスタムの組織のポリシーの制約を使用して Autokey を制御する
カスタムの組織のポリシーの制約を使用すると、Autokey を構成できる場所と方法をボトムアップで制御できます。制約は、子リソースに適用される制約によってオーバーライドできます。ただし、制約を変更するには組織レベルの権限が必要なため、フォルダレベルまたはプロジェクト レベルの権限を持つプリンシパルは制約をオーバーライドできません。制約が適用されている間、プリンシパルは、必要な権限を持っていても、禁止されているアクションを完了できません。
組織でカスタム制約を適用する方法については、Cloud KMS にカスタムの組織のポリシー制約を作成するをご覧ください。
ここで説明するカスタムの組織のポリシーの制約は、 他の CMEK 組織のポリシーと組み合わせることができます。
Autokey モードを制限する
AutokeyConfig リソースの作成を条件付きでブロックすることで、Autokey の機能を制限できます。次の制約定義のサンプルでは、keyProjectResolutionMode に基づいて AutokeyConfig リソースの作成または更新を禁止しています。
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictAutokeyKeyStorage
resourceTypes:
- cloudkms.googleapis.com/AutokeyConfig
methodTypes:
- CREATE
- UPDATE
condition: "resource.keyProjectResolutionMode == 'KEY_PROJECT_RESOLUTION_MODE')"
actionType: DENY
displayName: Restrict Autokey key storage mode
description: >
Prevent creation or update of AutokeyConfig resources with
`KEY_PROJECT_RESOLUTION_MODE` key resolution mode.
KEY_PROJECT_RESOLUTION_MODE は、ブロックする keyProjectResolutionMode に置き換えます。たとえば、組織内のユーザーがプロジェクトで同じプロジェクトの鍵ストレージを使用できないようにするには、この値を RESOURCE_PROJECT に設定します。
フォルダでの Autokey 構成の作成を禁止する
カスタムの組織のポリシーを使用して、すべての AutokeyConfig リソースの作成をブロックすることで、フォルダ内で Autokey を有効にできないようにできます。
次の制約定義のサンプルでは、名前付きフォルダ内での AutokeyConfig リソースの作成を禁止しています。この制約が適用されている間も、既存の構成は変更できます。
name: organizations/ORGANIZATION_ID/customConstraints/custom.noNewAutokeyConfigFolder
resourceTypes:
- cloudkms.googleapis.com/AutokeyConfig
methodTypes:
- CREATE
condition: "resource.name == 'folders/FOLDER_ID/autokeyConfig'"
actionType: DENY
displayName: Prohibit Autokey within FOLDER_ID
description: >
Prevent creation of new AutokeyConfig resources within
folders/FOLDER_ID.
次のように置き換えます。
ORGANIZATION_ID: 組織の識別子。FOLDER_IDは、Autokey をブロックするフォルダの識別子に置き換えます。
組織内での Autokey 構成の作成を禁止する
カスタムの組織のポリシーを使用して、すべての AutokeyConfig リソースの作成をブロックすることで、組織全体で Autokey を有効にできないようにできます。
次の制約定義のサンプルでは、組織全体での AutokeyConfig リソースの作成を禁止しています。この制約が適用されている間も、既存の構成は変更できます。
name: organizations/ORGANIZATION_ID/customConstraints/custom.noNewAutokeyConfigOrg
resourceTypes:
- cloudkms.googleapis.com/AutokeyConfig
methodTypes:
- CREATE
condition: "resource.name.endsWith('/autokeyConfig')"
actionType: DENY
displayName: Prohibit Autokey within ORGANIZATION_ID
description: >
Prevent creation of new AutokeyConfig resources within organization
ORGANIZATION_ID.
ORGANIZATION_ID は組織の識別子に置き換えます。
フォルダでの Autokey 構成の変更を禁止する
カスタムの組織のポリシーを使用して、すべての AutokeyConfig リソースの作成または更新をブロックすることで、フォルダ内で Autokey 構成を変更できないようにできます。
次の制約定義のサンプルでは、名前付きフォルダ内での AutokeyConfig リソースの作成または更新を禁止しています。
name: organizations/ORGANIZATION_ID/customConstraints/custom.noChangeAutokeyConfigFolder
resourceTypes:
- cloudkms.googleapis.com/AutokeyConfig
methodTypes:
- CREATE
- UPDATE
condition: "resource.name == 'folders/FOLDER_ID/autokeyConfig'"
actionType: DENY
displayName: Prohibit Autokey within FOLDER_ID
description: >
Prevent creation or update of AutokeyConfig resources within
folders/FOLDER_ID.
次のように置き換えます。
ORGANIZATION_ID: 組織の識別子。FOLDER_IDは、Autokey をブロックするフォルダの識別子に置き換えます。
組織内での Autokey 構成の変更を禁止する
カスタムの組織のポリシーを使用して、すべての AutokeyConfig リソースの作成または更新をブロックすることで、組織内のどこでも Autokey 構成を変更できないようにできます。
次の制約定義のサンプルでは、組織全体での AutokeyConfig リソースの作成または更新を禁止しています。
name: organizations/ORGANIZATION_ID/customConstraints/custom.noChangeAutokeyConfigOrg
resourceTypes:
- cloudkms.googleapis.com/AutokeyConfig
methodTypes:
- CREATE
- UPDATE
condition: condition: "resource.name.endsWith('/autokeyConfig')"
actionType: DENY
displayName: Prohibit Autokey within ORGANIZATION_ID
description: >
Prevent creation or update of AutokeyConfig resources within
ORGANIZATION_ID.
ORGANIZATION_ID は組織の識別子に置き換えます。
DISABLED Autokey 構成のみを許可する
次の制約定義のサンプルでは、keyProjectResolutionMode が明示的に DISABLED に設定されていない限り、組織全体で AutokeyConfig リソースを作成または更新することを禁止しています。
name: organizations/ORGANIZATION_ID/customConstraints/custom.onlyDisabledAutokeyConfig
resourceTypes:
- cloudkms.googleapis.com/AutokeyConfig
methodTypes:
- CREATE
- UPDATE
condition: "resource.keyProjectResolutionMode=='DISABLED'"
actionType: ALLOW
displayName: Prohibit Autokey within the organization
description: >
Prevent creation or update of `AutokeyConfig` resources within
organization ORGANIZATION_ID unless the `keyProjectResolutionMode`
is `DISABLED`.
プロジェクト レベルの Autokey 構成を禁止する
次の制約定義のサンプルでは、フォルダレベルの構成をブロックせずに、プロジェクトで AutokeyConfig
リソースを作成または更新することを禁止しています。この制約が適用されている間、以前に存在していたプロジェクト レベルの
AutokeyConfig リソースは有効なままですが、他のすべてのプロジェクトは親フォルダから AutokeyConfig
を継承する必要があります。
name: organizations/ORGANIZATION_ID/customConstraints/custom.noAutokeyConfigProject
resourceTypes:
- cloudkms.googleapis.com/AutokeyConfig
methodTypes:
- CREATE
- UPDATE
condition: "resource.name.startsWith('projects/')"
actionType: DENY
displayName: Block project-level Autokey within the organization
description: >
Prevent creation or update of `AutokeyConfig` resources on projects within
organization ORGANIZATION_ID. Existing project-level AutokeyConfig
resources remain in effect, but all other projects must inherit the
AutokeyConfig from their parent folder.
サンプル ユースケース
以降のセクションでは、IAM 拒否ポリシー、カスタムの組織のポリシー、標準の組織のポリシーを組み合わせた例を示します。
Autokey で鍵を作成する必要があります。
フォルダ内で Autokey を使用して CMEK を必須にする場合は、IAM アクセス制御と CMEK の組織のポリシーを組み合わせることで実現できます。 これを行うには、Cloud KMS サービス エージェント以外のプリンシパルから鍵の作成権限を削除し、Autokey 鍵プロジェクトを使用して、すべてのリソースが CMEK で保護されるようにする必要があります。
フォルダ内で Autokey の使用を適用するには、次の手順に沿って操作します。
IAM 拒否ポリシーを適用して、鍵プロジェクトでの手動での鍵の作成をブロックします。拒否ポリシーで、Cloud KMS サービス エージェントを除くすべてのプリンシパルに対して
cloudkms.cryptoKeys.create権限を拒否します。フォルダで専用プロジェクトの鍵ストレージを使用する場合は、専用の鍵プロジェクトに拒否ポリシーを適用します。フォルダで同じプロジェクトの鍵ストレージを使用する場合は、リソース プロジェクトに拒否ポリシーを適用します。鍵を手動で作成できない場合、これらのプロジェクトで作成できるのは Autokey で作成された鍵のみです。
constraints/gcp.restrictNonCmekServices制約を適用して、フォルダ内で新しく作成されたリソースを CMEK で保護する必要があります。この制約の詳細(制約をサポートするサービスのリスト など)については、 CMEK 保護を必須にするをご覧ください。
constraints/gcp.restrictCmekCryptoKeyProjects制約を適用して、CMEK に使用する鍵は、専用の鍵プロジェクトまたは同じプロジェクトの鍵ストレージが有効になっているプロジェクトから取得する必要があります。この制約の詳細(制約をサポートするサービスのリストなど)については、CMEK 用の Cloud KMS 鍵の使用を制限するをご覧ください。
Autokey を完全に禁止する
組織またはフォルダ内で Autokey の使用を完全にブロックする場合は、IAM 拒否ポリシーまたはカスタムの組織のポリシーの制約を使用します。多層防御の場合は、両方を一緒に使用できます。
組織またはフォルダ内で Autokey を完全にブロックするには、次の手順に沿って操作します。
組織または フォルダ内のどこかで Autokey がすでに有効になっている場合は、まず Autokey を無効にします。
IAM 拒否ポリシーを適用して、ユーザーが Autokey を構成できないようにします。拒否ポリシーで、すべてのプリンシパルに対して
cloudkms.autokeyConfigs.update権限を拒否します。Autokey がすべての場所で無効になり、プリンシパルがAutokeyConfigリソースを変更できなくなると、Autokey は完全に無効になります。省略可: 上記の手順で、Autokey を有効にすることを禁止できます。ただし、別のレイヤの保証が必要な場合は、 カスタムの組織のポリシーの制約を適用して、Autokey が
AutokeyConfig無効になっているリソースのみを許可することもできます。
ここで説明する IAM 拒否ポリシーとカスタムの組織のポリシーの制約の両方を適用すると、プリンシパルは、これらのガードレールの両方をキャンセルまたは更新しない限り、リソースで Autokey を有効にできません。
次のステップ
- CMEK の組織のポリシーを確認する。
- IAM 拒否ポリシーの詳細を確認する。
- 組織ポリシー サービスの詳細を確認する。
- カスタムの組織ポリシーの制約について確認する。