推奨事項を使用して最小権限を適用する

このページでは、Cloud IAM Recommender の概要について説明します。Cloud IAM Recommender は、メンバーが実際に必要な権限のみを持つようにすることで、最小権限の原則を徹底するのに役立ちます。

Cloud IAM Recommender の仕組み

Cloud IAM は、Recommender を使用してプロジェクト レベルのロールの付与を各メンバーが過去 90 日間に使用した権限と比較します。プロジェクト レベルのロールをメンバーに付与し、そのロールのすべての権限を使用しない場合、Cloud IAM Recommender は、ロールを取り消すことを提案します。必要に応じて、Cloud IAM Recommender は、代替えとして権限の低いロールも提案します。

また、Cloud IAM Recommender は、メンバーが過去 90 日間にこれらの権限を使用していなくても、機械学習を使用して将来的に必要となる権限を特定します。

Cloud IAM Recommender は、推奨事項を自動的に適用することはありません。そのため、それぞれの推奨事項を確認し、推奨を適用または却下する必要があります。

Cloud IAM Recommender は、プロジェクト レベルで作成され、少なくとも 90 日間存在したロール付与のみを評価します。次の項目は評価されません。

各メンバーが使用する権限

推奨事項を作成するため、Cloud IAM Recommender は、過去 90 日間に各メンバーが使用した権限を特定します。メンバーが権限を使用する方法はいくつかあります。

  • 権限が必要な API を呼び出し、直接的に使用する。

    たとえば、Cloud IAM REST API の roles.list メソッドには iam.roles.list 権限が必要です。roles.list メソッドを呼び出す場合は、iam.roles.list 権限を使用します。

  • Google Cloud リソースを利用するために、Google Cloud Console を使用して間接的に使用する。

    たとえば、Cloud Console では、Compute Engine 仮想マシン(VM)インスタンスを編集できます。これには、変更する設定に応じて異なる権限が必要です。ただし、Cloud Console には既存の設定も表示されるため、compute.instances.get 権限が必要です。

    そのため、Cloud Console で VM インスタンスを編集する場合は、compute.instances.get 権限を使用します。

機械学習

メンバーが仕事を遂行するために、過去 90 日間に使用されていない権限が必要になる場合があります。Cloud IAM Recommender は、メンバーが必要と思われる追加の権限を特定するために、機械学習モデルを使用します。

Cloud IAM Recommender の機械学習モデルは、複数のシグナルセットでトレーニングされます。

  • 観察された履歴の一般的な共起パターン: ユーザーが過去に A、B、C 権限を使用したという事実は、A、B、C がなんらかの形で関連している可能性があり、Google Cloud でタスクを実行するために必要なものであるという情報を提供します。機械学習モデルが適切な頻度でこのパターンを観察した場合、別のユーザーが A と B 権限を使用したときに、モデルはユーザーに C 権限も必要であることを推奨します。

  • ロールの定義にエンコードされたドメイン知識: Cloud IAM には、サービス固有のさまざまな定義済みのロールが多数用意されています。事前定義ロールに一連の権限が含まれている場合は、これらの権限を一緒に付与する必要があるということを強く示しています。

これらのシグナルに加えて、モデルは単語の分類表現を使用して、その権限がどの程度意味的に似ているかを計算します。意味的に類似した権限は、埋め込み後に互いに「類似」となり、一緒に付与される可能性が高くなります。たとえば、bigquery.datasets.getbigquery.tables.list は、埋め込み後に互いに非常に近くなります。

Cloud IAM Recommender の機械学習パイプラインで使用されるすべてのデータに k- 匿名化があり、これは匿名化されたデータセット内の個人は再識別できないことを意味します。このレベルの匿名化を実現するために、各権限の使用パターンに関連するユーザー ID などの個人情報(PII)をすべて破棄します。次に、Google Cloud 全体で頻繁に表示されない使用パターンをすべて破棄します。グローバル モデルは、この匿名化されたデータに基づいてトレーニングされます。

グローバル モデルは、フェデレーション ラーニング使用することで、組織ごとにさらにカスタマイズできます。これはデータをエクスポートせずに機械学習モデルをトレーニングする機械学習プロセスです。

監査ログ

提案を適用または拒否すると、Cloud IAM Recommender はログエントリを作成します。これらのエントリは Cloud IAM Recommender で表示、または Google Cloud Audit Logs で表示できます。

その他のタイプのアクセス制御

一部の Google Cloud サービスは、Cloud IAM とは別のアクセス制御を提供します。たとえば、Cloud Storage はアクセス制御リスト(ACL)を提供し、Google Kubernetes Engine(GKE)はロールベースのアクセス制御(RBAC)をサポートしています。

Cloud IAM Recommender は Cloud IAM アクセス制御のみを分析します。他のタイプのアクセス制御を使用する場合は、推奨事項を注意して確認し、そのアクセス制御がどのように Cloud IAM ポリシーに関連するのかを考慮してください。

ロールの推奨事項の例

次の例は、受け取る可能性がある推奨事項のタイプを示しています。

既存のロールを取り消す

ユーザー fuyo@example.com には、プロジェクトのカスタムロールが付与されています。このカスタムロールには、fuyo@example.com にサービス アカウントとして機能する権限を与える 1 つの権限「iam.serviceAccounts.actAs」が含まれています。ただし過去 90 日間、fuyo@example.com はそのプロジェクトでサービス アカウントとして機能していません。

したがって、Cloud IAM Recommender は、カスタムロールを fuyo@example.com から取り消すことを提案します。

既存のロールを置き換える

サービス アカウントに、プロジェクト オーナーのロール(roles/owner)が付与されています。この基本ロールには、2,500 を超える権限が含まれており、プロジェクトへのほぼ無制限のアクセスが許可されます。ただし、過去 90 日間、サービス アカウントは数百の権限のみしか使用していません。

したがって、Cloud IAM Recommender は、オーナーのロールを取り消し、過剰に付与された数千の許可を削除する他の 4 つのロールの組み合わせに置き換えることを提案します。

機械学習で提案された権限を追加する

サービス アカウントに、プロジェクトの編集者のロール(roles/editor)が付与されています。この基本ロールには、2,000 を超える権限が含まれており、プロジェクトへの広範なアクセス権が付与されます。ただし、過去 90 日間、サービス アカウントは 10 未満の権限しか使用していません。

Cloud IAM Recommender では、編集者のロールを取り消し、Cloud Storage バケット内のオブジェクトの完全な制御を許可するストレージ オブジェクト管理者のロール(storage.objectAdmin)に置き換えることを提案します。この変更により、過剰に付与された何千もの権限が削除されます。

このロールには、サービス アカウントが過去 90 日間に使用しなかったいくつかの権限が含まれます。ただし、Cloud IAM Recommender は機械学習を使用して、将来的にこれらの権限が必要になると予測しています。

Cloud IAM Recommender では、このような追加の権限を機械学習 アイコンを使用して識別しています。この例では、機械学習に基づいて resourcemanager.projects.get 権限が推奨されています。

必要な権限

このセクションでは、Cloud IAM Recommender を使用するために必要な Cloud IAM の権限について説明します。

おすすめの対処法を表示する

Cloud IAM Recommender の推奨事項を表示するには、表示しているプロジェクトに対して次の権限が必要です。

  • iam.roles.get
  • iam.roles.list
  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • resourcemanager.projects.getIamPolicy

最小限の権限の原則に従ってこれらの権限を取得するには、管理者に次の事前定義ロールを付与するよう依頼してください。

  • ロールの閲覧者(roles/iam.roleViewer
  • IAM Recommender の閲覧者(roles/recommender.iamViewerまたは IAM セキュリティ審査担当者(roles/iam.securityReviewer)のいずれか

また、管理者はカスタムロールや事前定義ロールなど、必要な権限を含む別のロールを付与することもできます。

推奨事項を適用、非表示にする

Cloud IAM Recommender の推奨事項を適用または非表示にするには、管理するプロジェクトに対して次の権限が必要です。

  • iam.roles.get
  • iam.roles.list
  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • recommender.iamPolicyRecommendations.update
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

最小限の権限の原則に従ってこれらの権限を取得するには、管理者に次の事前定義ロールを付与するよう依頼してください。

  • ロールの閲覧者(roles/iam.roleViewer
  • IAM Recommender の管理者(roles/recommender.iamAdmin
  • プロジェクト IAM 管理者(roles/resourcemanager.projectIamAdmin

また、管理者はカスタムロールや事前定義ロールなど、必要な権限を含む別のロールを付与することもできます。

次のステップ