Policy Simulator

Policy Simulator では、変更を commit する前に IAM ポリシーの変更がメンバーのアクセス権にどのように影響するかを確認できます。Policy Simulator を使用して、変更を行うことによりメンバーが必要なアクセス権を失わないようにできます。

Policy Simulator の仕組み

Policy Simulator を使用すると、ポリシーの変更がユーザーに与える影響を判断できます。これは、現在のポリシーと提案されたポリシーでの権限を比較するだけではありません。それよりも、アクセスログを使用して、権限の変更が実際にユーザーに与える影響について焦点を当てています。

IAM ポリシーの変更がメンバーのアクセス権にどのように影響するかを調べるために、Policy Simulator は、提案されたポリシーと現在のポリシーにおいて異なる結果となる、過去 90 日間のアクセス試行を特定します。その後、その結果がアクセス権の変更のリストとしてレポートされます。

IAM ポリシーの変更をシミュレートする場合は、テストする変更について提案されたポリシーを指定します。提案されたポリシーは、IAM ポリシーを受け入れるリソースに指定できます。

シミュレーションを実行すると、Policy Simulator は次の処理を実行します。

  1. 過去 90 日間のサポートされるリソースタイプのアクセスログを取得します。これらのログを収集する場所は、IAM ポリシーをシミュレーションしているリソースによって異なります。

    • プロジェクトまたは組織のポリシーをシミュレートしている場合、Policy Simulator はそのプロジェクトまたは組織のアクセスログを取得します。
    • 別のリソースタイプのポリシーをシミュレートする場合、Policy Simulator はそのリソースの親プロジェクトまたは組織のアクセスログを取得します。
    • 複数のリソースのポリシーを一度にシミュレートする場合、Policy Simulator は、リソースに最も近い共通のプロジェクトまたは組織のアクセスログを取得します。

    親リソースが 90 日間存在していない場合、Policy Simulator は、リソースが作成されてからのすべてのアクセス試行を取得します。

  2. 現在の IAM ポリシーを使用してアクセスログに記録されたアクセス試行を再評価(リプレイ)し、継承ポリシーと子孫リソースに設定されたポリシーを考慮に入れます。

    現在のポリシーでアクセス試行をリプレイすると、Policy Simulator は提案されたポリシーによって生じたアクセス権の変更のみをレポートし、過去 90 日間に行った他のポリシーの修正によって生じた変更はレポートしません。

  3. 提案された IAM ポリシーを使用して、再度アクセス試行をリプレイし、継承されたポリシーと、子孫リソースに設定されたポリシーをもう一度考慮に入れます。

  4. 2 つのリプレイの結果を比較し、違いをレポートします。これにより、提案された変更がメンバーのアクセス権にどのように影響するかが示されます。

例: ポリシーの変更のテスト

ユーザーの組織閲覧者ロール(roles/resourcemanager.organizationViewer)を削除し、Policy Simulator を使用してこの変更がユーザーのアクセスに影響しないことを確認するとします。

Cloud Console、REST API、または gcloud コマンドライン ツールを使用して、ポリシー変更をシミュレートします。

シミュレーションを開始すると、Policy Simulator は次の処理を行います。

  • 過去 90 日間の組織のアクセスログを取得します。
  • ユーザーが編集者のロールを持つ組織の現在のポリシーを使用して、アクセス試行をリプレイします。
  • ユーザーが App Engine 管理者ロールを持つ、提案されたポリシーを使用して再度アクセス試行をリプレイします。
  • 2 つのリプレイの結果を比較し、違いをレポートします。

その結果をレビューして、提案された変更がユーザーのアクセスにどのように影響するかを理解できます。

例: ポリシー継承

次の構造の組織内のフォルダ Engineering に対する IAM ポリシーの変更をシミュレートする場合を考えてみます。

組織構造の例

Engineering には親リソースである組織 example.com があり、そこから IAM ポリシーを継承することにご注意ください。また、独自の IAM ポリシー(example-prodexample-devexample-test)を持つことができる 3 つの子プロジェクトもあります。

提案するポリシーを指定し、シミュレーションを実行します。シミュレーションを開始すると、Policy Simulator は次の処理を行います。

  • 過去 90 日間のすべての関連ログを取得します。Engineering はフォルダであるため、Policy Simulator は親組織 example.com からログを取得します。
  • フォルダの現在のポリシー、example.com から継承されたポリシー、子プロジェクトのポリシーを使用して、アクセス試行をリプレイします。
  • 提案されたポリシー、example.com から継承されたポリシー、子プロジェクトのポリシーを使用して、再度それぞれのアクセス試行をリプレイします。
  • リプレイの結果を比較し、違いをレポートします。

その結果をレビューして、提案された変更がユーザーのアクセスにどのように影響するかを理解できます。

Policy Simulator の結果を確認する

Policy Simulator は、提案されたポリシー変更の影響を、アクセス権の変更のリストとしてレポートします。アクセス権の変更とは、提案されたポリシーでは現在のポリシーとは異なる結果となる過去 90 日間のアクセス試行を表します。

Policy Simulator は、シミュレーション中に発生したエラーも一覧表示します。これにより、シミュレーションにおいて可能性のあるギャップを特定できます。

アクセス権の変更には、次に挙げる複数の方法があります。

アクセス権の変更 詳細
アクセス権が取り消されました メンバーは現在のポリシーでアクセス可能ですが、提案された変更の後にアクセスできなくなりました。
アクセス権が取り消された可能性があります

この結果が発生する理由として以下のことが考えられます。

  • メンバーは現在のポリシーでアクセス可能ですが、提案されたポリシーの下でのアクセス権が不明です。
  • 現在のポリシーでのメンバーのアクセス権は不明ですが、提案された変更の後はアクセスできなくなります。
アクセス権が付与されました メンバーは現在のポリシーではアクセスできず、提案された変更の後にアクセス可能になります。
アクセス権が付与された可能性があります

この結果が発生する理由として以下のことが考えられます。

  • メンバーは現在のポリシーではアクセスが許可されていませんが、提案された変更後のアクセス権は不明です。
  • 現在のポリシーでのメンバーのアクセス権は不明ですが、提案された変更後にアクセスが許可されます。
アクセス権が不明 現在のポリシーと提案されたポリシーの両方におけるメンバーのアクセス権は不明であり、提案された変更がメンバーのアクセス権に影響を及ぼす可能性があります。
エラー シミュレーション中にエラーが発生しました。

不明な結果

アクセス結果が不明の場合、Policy Simulator では、アクセス試行を完全に評価するための情報が不足していたことを意味します。

結果が不明な場合は、次のような理由が考えられます。

  • ロール情報が拒否されました: シミュレーションを実行しているメンバーに、シミュレートされている 1 つ以上のロールの詳細を表示する権限がありませんでした。
  • ポリシーにアクセスできません: シミュレーションを実行しているメンバーに、シミュレーションに関係する 1 つ以上のリソースの IAM ポリシーを取得する権限がありませんでした。
  • メンバー情報が拒否されました: シミュレーションを実行しているメンバーに、シミュレートされたポリシーに含まれる 1 つ以上のグループのメンバーを表示する権限がありませんでした。
  • サポートされていない条件: テスト対象のポリシーに条件付きロール バインディングがあります。Policy Simulator は条件をサポートしていないため、バインディングを評価できませんでした。

アクセス結果が不明な場合は、Policy Simulator の結果で、不明であった理由がレポートされます。また、Policy Simulator によってアクセスや評価ができなかった特定のロール、ポリシー、メンバーシップ情報、条件がレポートされます。

エラー

Policy Simulator では、シミュレーション中に発生したエラーもレポートされます。シミュレーションで発生する可能性のあるギャップを理解するために、これらのエラーを確認することが重要です。

Policy Simulator のレポートでは、以下のようなさまざまなタイプのエラーが報告される可能性があります。

  • オペレーション エラー: シミュレーションを実行できなかった場合に発生します。

    プロジェクトまたは組織でログが多すぎるため、シミュレーションを実行できなかったことを示すエラー メッセージが表示された場合は、そのリソースでシミュレーションを実行できません。

    他の理由でこのエラーが発生した場合は、もう一度シミュレーションを実行してみてください。それでもシミュレーションを実行できない場合は、policy-simulator-feedback@google.com までお問い合わせください。

  • リプレイエラー: 1 回のアクセス試行のリプレイが失敗したため、Policy Simulator は、アクセス試行の結果が提案されたポリシーに基づいて変更されるかどうかを判定できませんでした。

  • サポートされていないリソースタイプのエラー: 提案されたポリシーが、Policy Simulator がシミュレーションできないサポートされていないリソースタイプに関連する権限に影響しています。Policy Simulator では、シミュレーション結果にこれらの権限が一覧表示されるため、シミュレーションができなかった権限がわかります。

最大ログリプレイ サイズ

シミュレーションでリプレイできるアクセスログの最大数は 1,000 件です。過去 90 日間にプロジェクトまたは組織で 1,000 件を超えるアクセスログがある場合、シミュレーションは失敗します。

Policy Simulator がどのアクセスログを取得するかを決定する方法については、このページの Policy Simulator の仕組みをご覧ください。

リソースタイプのサポートレベル

Policy Simulator では、シミュレーション内のすべてのリソースタイプはサポートされていません。これは、シミュレーション可能な権限の変更に影響します。

サポートされるリソースタイプ

Policy Simulator は、次のリソースタイプのみをサポートしています。

サービス サポートされるリソースタイプ
Cloud Storage
  • buckets
Pub/Sub
  • snapshots
  • subscriptions
  • topics
Cloud SQL
  • backupRuns
  • databases
  • instances
  • sslCerts
  • users
Cloud Spanner
  • backups
  • backupOperations
  • databases
  • databaseOperations
  • instanceConfigs
  • instanceOperations
  • instances
  • sessions
Resource Manager
  • folders
  • organizations
  • projects
Compute Engine
  • instances

サポートされていないリソースタイプ

サポートされていないリソースタイプとは、Policy Simulator がアクセスログを取得できないリソースタイプです。Policy Simulator がリソースに対するアクセスログを取得できない場合、提案されたポリシーがこれらのアクセス試行にどのように影響するかを評価できません。

提案されたポリシー変更でサポートされていないリソースタイプの権限が使用されている場合、Policy Simulator ではシミュレーションの結果にそれらの権限が一覧表示されます。これにより、シミュレートできなかった権限がわかります。たとえば、Policy Simulator は AI Platform モデルをサポートしていません。したがって、提案されたポリシーで aiplatform.models.list 権限を含むロールが削除されると、そのシミュレーションの結果により、aiplatform.models.list 権限をシミュレートできなかったことがわかります。

次のステップ