Cloud IAM 役割提案機能ユーザーガイド(限定公開アルファ版)

このトピックでは、Cloud Identity and Access Management 役割提案機能の概要を説明し、組織内でのアクセス制御の変更の提案を表示、確認、適用する方法を解説します。

はじめに

Cloud IAM 役割提案機能は、付与されている権限とアクティブに使用されている権限を比較することで、セキュリティにおける最小権限の原則を徹底できるようユーザーをサポートします。付与されている役割の権限が過去 60 日間使用されていなければ、その役割の取り消しが提案されます。役割に含まれる権限の一部が過去 60 日間使用されていなければ、より限られた権限の役割を付与するよう提案されます。

次の 2 つの例を考えてみましょう。

  • Anita には当初、プロジェクトに対するプロジェクト編集者(roles/editor)の役割が付与されました。けれども過去 60 日間、彼女はプロジェクト内のどのリソースにもアクセスしていません。この場合、この役割バインディングを削除することが提案されます。

  • Brian には当初、プロジェクトに対する BigQuery データオーナー(roles/bigquery.dataOwner)の役割が付与されました。けれども過去 60 日間、彼が実行したのはデータセットからのデータ読み取り操作のみで、書き込み操作は一度も実行していません。この場合、BigQuery データオーナーの役割バインディングを、それよりも権限が限られている BigQuery データ閲覧者(roles/bigquery.dataViewer)の役割に置き換えることが提案されます。

前提条件

GCP 早期アクセス プログラムに参加されているお客様は、このアルファ版リリースに含まれる未公開の新機能をぜひお試しください。Google ではお客様のフィードバックを参考に機能を改善します。お客様にとっては、これらの新機能を使用し完全な形にしていく、世界で最初のデベロッパーの一員となる絶好の機会です。

これらの新機能はまだ公開されておらず、社外秘であるため、このプログラムに参加するには Trusted Tester 契約(TTA)に署名していただく必要があります。Trusted Tester 契約をご確認のうえ、Google フォームにご署名ください。

契約へのご署名後、Abhi Yadav までご連絡いただき、お客様の会社に関する情報をご提供ください。プログラムへの参加が承認されると、お客様の組織がホワイトリストに登録され、Cloud IAM 役割提案機能を使用できるようになります。

お客様の会社とプロジェクトがホワイトリストに登録されたら、Google Cloud Platform Console から Cloud Recommender API を有効にします。

限定公開アルファ版リリースの既知の制限事項

この限定公開アルファ版リリースには、次の既知の制限事項があります。

  • ユーザーのプロジェクト オーナー(roles/owner)の役割を取り消すよう提案された場合は、そのユーザーがプロジェクトに残っている最後のオーナーではないことをまず確認してください。
  • サポートされる役割は、基本の役割定義済み役割のみです。カスタムの役割条件付きバインディングは、評価や提案の対象とすることはできません。
  • 提案の対象となるのは、次の Cloud IAM ポリシー バインディングのみです。
  • 提案される役割に含まれる権限は、現在の役割に含まれる権限の一部のみです。提案される役割で新しい権限が追加されることはありません。

必要な権限と役割

Cloud IAM 提案を表示および更新するには、次の権限が必要です。

  • recommender.iam.get
  • recommender.iam.list
  • recommender.iam.update

提案を表示する役割としては、IAM 提案機能閲覧者(roles/recommender.iamViewer)または IAM セキュリティ審査担当者(roles/iam.securityReviewer)の役割を付与します。

提案を表示および変更する役割としては、IAM 提案機能管理者(roles/recommender.iamAdmin)の役割を付与します。

IAM 提案機能閲覧者と IAM 提案機能管理者の両方の役割は、プロジェクトのホワイトリストに追加する必要があります。このアルファ版リリースの申請をする際に、これらの役割を使用する予定であることをお知らせください。

プロジェクトの Cloud IAM ポリシーに変更を加えるには、resourcemanager.projects.setIamPolicy 権限が必要です。この権限が含まれる役割を付与するか、この権限を含めたカスタムの役割を作成する必要があります。

提案を表示または変更する役割としては、次の基本の役割のいずれかを付与することもできます。

  • オーナー(roles/owner
  • 編集者(roles/editor
  • 閲覧者(roles/viewer

Google Cloud Platform Console で役割提案を表示および適用する

GCP Console の [IAM] ページで、役割提案を簡単に表示、適用できます。

  1. GCP Console で [IAM] ページを開きます。

    [IAM] ページを開く

  2. [プロジェクトの選択] をクリックし、提案対象としてホワイトリストに登録済みのプロジェクトを選択して [開く] をクリックします。

  3. プロジェクト内のメンバーのリストで、[使用中の権限] 列を見つけます。この列には、付与されている権限の総数のうち、過去 60 日間に使用された権限の数が示されます。

    使用中の権限

    ページ上の各メンバーには、黄色い電球のアイコンか黒い疑問符のアイコンのいずれかが表示されます。黄色い電球のアイコンは、役割提案があることを示します。黒い疑問符のアイコンは、以下の状況で表示されます。

    • 提案がない。権限の付与をこれ以上最適化することはできません。
    • 権限が付与されてから 60 日以内である。
    • メンバーが Google 管理のサービス アカウントであるため、現在のところ提案の分析対象でない。
    • メンバーが Google グループであるため、現在のところ提案の分析対象でない。
  4. 付与されている権限のうちのほとんどまたはすべてが、過去 60 日間に使用されていない場合、役割の変更の提案を確認できることを示す黄色い電球アイコンが表示されます。提案には次の 2 種類があります。

    • 役割の付与を完全に削除する
    • 現在付与されている役割を、それよりも権限が限られた役割で置き換える

    黄色い電球のアイコンの横にあるテキストをクリックし、提案の内容を表示します。以下の例では、役割の付与を削除することが提案されています。

    役割削除の提案

  5. 提案された役割を削除するには、[適用] をクリックします。これにより、プロジェクトの Cloud IAM ポリシーで、メンバーから役割が削除されます。[閉じる] をクリックして、指定されたメンバーに対する提案を削除し、該当する役割が今後の提案で表示されないようにすることもできます。メンバーに対する他の役割の付与についての提案は、引き続き表示されます。提案を閉じる操作は毎回ログに記録されるため、閉じた後も元の提案内容を参照できます。

  6. 場合によっては、既存の役割を、それよりも権限が限られた役割で置き換えるよう提案されることがあります。たとえば以下の提案では、編集者の基本の役割をログ書き込みの役割に置き換えて、権限を 1,785 個減らした権限スコープにするよう提案しています。現在の役割を提案される役割で置き換えるには、[適用] をクリックします。

    役割置換の提案

    推奨される役割の置き換えには、過去 60 日間に使用されなかったものの、機械学習の分析によると今後必要になる可能性のある権限が含まれることがあります。そのような役割が提案される場合、保持された権限の横にプラス記号のアイコンが表示されます。

    追加権限とともに提案される役割の置き換え

推奨事項のログを表示する

提案が適用されると、その結果として実行されたアクションが推奨事項のログに記録されます。推奨事項のログを表示するには、次の手順に従います。

  1. GCP Console で [IAM] ページを開きます。

    [IAM] ページを開く

  2. [プロジェクトの選択] をクリックし、提案対象としてホワイトリストに登録済みのプロジェクトを選択して [開く] をクリックします。

  3. 上部のメニューで、[推奨事項のログ] をクリックします。

    推奨事項のログ

API を使用して役割提案を表示する

役割提案を表示するには、GCP Console だけでなく、REST API を使用することもできます。

GCP API を呼び出す際の認証の前提条件については、認証の概要をご覧ください。以下の手順では、このプロセスを理解していること、かつ、エンドユーザーの認証フローで OAuth クライアント認証情報を使用していることを前提としています。

例: oauth2l と curl コマンドライン ツールを使用する

次の例では、Google oauth2l コマンドライン ツールを使用して OAuth 2.0 アクセス トークンを取得し、そのトークンを使用して curl リクエストを実行します。

  1. 新しいターミナル ウィンドウで、クライアント シークレットと cloud-platform OAuth スコープを指定した次のコマンドを実行してアクセス トークンを取得します。

    $ oauth2l header --json client_secret.json cloud-platform
    
  2. このコマンドは、OAuth 2.0 署名なしトークンを格納した Authorization ヘッダーを返します。

    Authorization: Bearer ya29.GluoBnEj1...dq_DBF
    
    
  3. curl を使用して Recommender API を呼び出します。以下のスニペットのプレースホルダの値を、返されたアクセス トークンで置き換えてください。

    $ PROJECT_ID=<YOUR_PROJECT_ID>
    $ OAUTH_HEADER="Authorization: Bearer ya29.GluoBnEj1...dq_DBF"
    
    $ curl -H "$OAUTH_HEADER" https://recommender.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/global/recommenders/google.iam.policy.RoleRecommender/recommendations
    
  4. プロジェクトで適用もしくは却下されていない有効な役割提案がある場合、その提案が JSON レスポンスに格納されます。たとえば、次のレスポンスでは、編集者の基本の役割の権限が数か月使用されていないことから、この基本の役割をサービス アカウントから削除するよう提案しています。

    ...
    {
     "name": "projects/my-project-name/locations/global/recommenders/google.iam.policy.RoleRecommender/recommendations/41c522d3-96a2-4432-b761-9e32471d664a",
       "description": "This role has not been used since 2018-12-04.",
       "primaryImpact": {
         "category": "SECURITY"
       },
       "state": "ACTIVE",
       "content": {
         "justification": {
           "accessObservationEndTime": "2019-02-03T16:00:00-08:00",
           "accessObservationStartTime": "2018-12-04T16:00:00-08:00",
           "currentTotalPermissionsCount": "1602",
           "policyLastUpdateTime": "2018-12-04T21:09:59-08:00",
           "summary": "This role has not been used since 2018-12-04."
         },
         "operationGroups": [
           {
             "operations": [
               {
                 "action": "remove",
                 "resourceType": "google.cloud.resourcemanager.Project",
                 "resource": "//cloudresourcemanager.googleapis.com/projects/my-project-name",
                 "path": "/iamPolicy/bindings/*/members/*",
                 "pathFilter": {
                   "/iamPolicy/bindings/*/condition/expression": "",
                   "/iamPolicy/bindings/*/members/*": "serviceAccount:my-project-name.google.com@appspot.gserviceaccount.com",
                   "/iamPolicy/bindings/*/role": "roles/editor"
                 }
               }
             ]
           }
         ]
       },
       "stateInfo": {
         "state": "ACTIVE"
       },
       "lastRefreshTime": "2019-02-05T05:43:20Z"
     },
    ...
    
  5. 提案に対してアクションを行うには、指定されている resource の Cloud IAM ポリシーを更新します。詳細については、こちらのトピックをご覧ください。

トラブルシューティングとサポート

この機能のアルファ版リリースを使用中に問題が発生した場合は、policy-intelligence-feedback@google.com または Abhi Yadav にご連絡ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud IAM のドキュメント