このドキュメントでは、IAM 拒否ポリシーと組織のポリシーの制約を使用して、組織またはフォルダ内での Autokey の使用方法を制御する方法について説明します。これらのガードレールはどちらも組織レベルのロールでのみ変更できるため、フォルダまたはプロジェクト レベルでオーナーロールまたは管理者ロールを持つプリンシパルによってオーバーライドすることはできません。
次のユースケースがサポートされています。
- Autokey によって鍵を作成する必要があります。プリンシパルが鍵を手動で作成できないようにブロックして、すべての鍵が Autokey によって作成されるようにできます。Autokey が有効になっていないリソースでは、鍵をまったく作成できません。
- Autokey を制限して、専用プロジェクトの鍵ストレージのみ、または同じプロジェクトの鍵ストレージのみを許可します。
- Autokey を完全にブロックする。これにより、すべての鍵が手動で作成されます。
IAM と組織のポリシー
IAM と組織のポリシーの両方で、組織内で Cloud KMS Autokey を使用する方法を制御するガードレールを設定できます。
IAM は、どのリソースに対してどのユーザーがどのアクションを実行できるかを制御します。IAM を使用して、組織内で Autokey を有効にして使用できるプリンシパルを制限できます。
組織のポリシーは、作成できるリソースとその構成方法を制御します。カスタム組織ポリシーを使用して、Autokey を有効にできる場所と方法を制限できます。
IAM と組織のポリシーを組み合わせて使用すると、Autokey を有効にして使用できるユーザーと、そのユーザーが Autokey を使用できる場所を制御する堅牢なガードレール システムを作成できます。
始める前に
Autokey の使用を制御するために必要な権限を取得するには、組織に対する次の IAM ロールを付与するよう管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
IAM 拒否ポリシーを使用して Autokey を制御する
IAM 拒否ポリシーは、どのプリンシパルがどのアクションを実行できるかをトップダウンで制御します。リソースに設定された拒否ポリシーは、IAM ロールの付与や子リソースに設定された拒否ポリシーでオーバーライドできません。プリンシパルは、権限が拒否されたアクションを完了できません。たとえ、その権限がプリンシパルが持つロールに含まれていても同様です。
IAM 拒否ポリシーを作成する方法については、リソースへのアクセスを拒否するをご覧ください。
次の表に、IAM 拒否ポリシーのユースケースの例を示します。これには、組織内の Autokey を制御するために拒否できる権限と、各権限を拒否した場合の影響が含まれます。
カスタム組織ポリシーの制約を使用して Autokey を制御する
カスタムの組織のポリシーの制約により、Autokey を構成できる場所と方法をボトムアップで制御できます。制約は、子リソースに適用される制約によってオーバーライドできます。ただし、制約を変更するには組織レベルの権限が必要なため、フォルダレベルまたはプロジェクト レベルの権限を持つプリンシパルは制約をオーバーライドできません。制約が適用されている場合、プリンシパルは禁止されているアクションを完了できません。たとえ、そのアクションを実行するために必要な権限を持っていても、完了できません。
組織でカスタム制約を適用する方法については、Cloud KMS にカスタムの組織のポリシー制約を作成するをご覧ください。
ここで説明するカスタム組織のポリシーの制約は、他の CMEK 組織のポリシーと組み合わせることができます。
自動キーモードを制限する
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 をブロックするフォルダの ID に置き換えます。
組織内での 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 をブロックするフォルダの ID に置き換えます。
組織内での 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 拒否ポリシーの詳細を確認する。
- 組織ポリシー サービスの詳細を学習する。
- カスタムの組織ポリシーの制約について学習する。