Autokey の使用を管理する

このドキュメントでは、IAM 拒否ポリシーと組織のポリシーの制約を使用して、組織またはフォルダ内での Autokey の使用方法を制御する方法について説明します。これらのガードレールはどちらも組織レベルのロールでのみ変更できるため、フォルダまたはプロジェクト レベルでオーナーロールまたは管理者ロールを持つプリンシパルによってオーバーライドすることはできません。

次のユースケースがサポートされています。

IAM と組織のポリシー

IAM と組織のポリシーの両方で、組織内で Cloud KMS Autokey を使用する方法を制御するガードレールを設定できます。

IAM は、どのリソースに対してどのユーザーがどのアクションを実行できるかを制御します。IAM を使用して、組織内で Autokey を有効にして使用できるプリンシパルを制限できます。

組織のポリシーは、作成できるリソースとその構成方法を制御します。カスタム組織ポリシーを使用して、Autokey を有効にできる場所方法を制限できます。

IAM と組織のポリシーを組み合わせて使用すると、Autokey を有効にして使用できるユーザーと、そのユーザーが Autokey を使用できる場所を制御する堅牢なガードレール システムを作成できます。

始める前に

Autokey の使用を制御するために必要な権限を取得するには、組織に対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

IAM 拒否ポリシーを使用して Autokey を制御する

IAM 拒否ポリシーは、どのプリンシパルがどのアクションを実行できるかをトップダウンで制御します。リソースに設定された拒否ポリシーは、IAM ロールの付与や子リソースに設定された拒否ポリシーでオーバーライドできません。プリンシパルは、権限が拒否されたアクションを完了できません。たとえ、その権限がプリンシパルが持つロールに含まれていても同様です。

IAM 拒否ポリシーを作成する方法については、リソースへのアクセスを拒否するをご覧ください。

次の表に、IAM 拒否ポリシーのユースケースの例を示します。これには、組織内の Autokey を制御するために拒否できる権限と、各権限を拒否した場合の影響が含まれます。

ユースケース 却下された権限 プリンシパル 効果
Autokey の有効化を禁止する cloudkms.autokeyConfigs.update すべて 選択したプリンシパルは、新しい AutokeyConfig リソースを作成したり、既存のリソースを更新したりできません。既存の AutokeyConfig リソースは引き続き有効で、使用できます。
Autokey の使用を禁止する cloudkms.keyHandles.create すべて 選択したプリンシパルは新しい KeyHandle リソースを作成できないため、Autokey が有効になっている場合でも、Autokey を使用して新しい保護リソースを作成できません。
手動でのキー作成を禁止する cloudkms.cryptoKeys.create Cloud KMS サービス エージェント以外 選択したプリンシパルは新しいキーを作成できません。Cloud KMS サービス エージェントのみを除外する場合、新しい鍵を作成する唯一の方法は Autokey です。
Autokey 構成を変更できるのは IaC のみ cloudkms.autokeyConfigs.update Terraform 実行エージェントを除くすべて 選択したプリンシパルは、新しい AutokeyConfig リソースを作成したり、既存のリソースを更新したりできません。Terraform プリンシパルを除外すると、Autokey 構成は Infrastructure as Code(IaC)パイプラインによって制御されます。

カスタム組織ポリシーの制約を使用して 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 の使用を適用するには、次の手順に沿って操作します。

  1. IAM 拒否ポリシーを適用して、キー プロジェクトでの手動キー作成をブロックします。拒否ポリシーで、Cloud KMS サービス エージェントを除くすべてのプリンシパルに対して cloudkms.cryptoKeys.create 権限を拒否します。フォルダで専用プロジェクトの鍵ストレージを使用している場合は、専用鍵プロジェクトに拒否ポリシーを適用します。フォルダで同じプロジェクトの鍵ストレージを使用している場合は、リソース プロジェクトに拒否ポリシーを適用します。

    鍵を手動で作成できない場合、これらのプロジェクトで作成できるのは Autokey によって作成された鍵のみです。

  2. constraints/gcp.restrictNonCmekServices 制約を適用して、フォルダ内に新しく作成されたリソースを CMEK で保護する必要があります。

    この制約の詳細(制約をサポートするサービスのリストなど)については、CMEK 保護を必須にするをご覧ください。

  3. constraints/gcp.restrictCmekCryptoKeyProjects 制約を適用して、CMEK に使用する鍵が専用の鍵プロジェクトまたは同じプロジェクトの鍵ストレージが有効になっているプロジェクトの鍵になるようにします。この制約の詳細(制約をサポートするサービスのリストなど)については、CMEK での Cloud KMS 鍵の使用を制限するをご覧ください。

Autokey を完全に禁止する

組織またはフォルダ内で Autokey の使用を完全にブロックする場合は、IAM 拒否ポリシーまたはカスタム組織のポリシーの制約を使用します。多層保証の場合は、両方を一緒に使用できます。

組織またはフォルダ内で Autokey を完全にブロックするには、次の手順に沿って操作します。

  1. 組織またはフォルダのいずれかで Autokey がすでに有効になっている場合は、まず Autokey を無効にします

  2. IAM 拒否ポリシーを適用して、ユーザーが Autokey を構成できないようにします。拒否ポリシーで、すべてのプリンシパルに対して cloudkms.autokeyConfigs.update 権限を拒否します。Autokey がすべての場所で無効になっており、プリンシパルが AutokeyConfig リソースを変更できない場合、Autokey は完全に無効のままになります。

  3. 省略可: 上記の手順で、Autokey を有効にできないようにするのに十分です。ただし、別の保証レイヤが必要な場合は、カスタムの組織のポリシーの制約を適用して、Autokey が無効になっている AutokeyConfig リソースのみを許可することもできます。

ここで説明する IAM 拒否ポリシーとカスタム組織のポリシーの制約の両方を適用すると、これらのガードレールを両方とも取り消すか更新しない限り、どのプリンシパルもリソースで Autokey を有効にできません。

次のステップ