ロールを作成してサービス エージェントに付与する

Google Cloudでは、Google Cloud サービスを有効にして使用すると、プロジェクト レベル、フォルダレベル、組織レベルのサービス エージェントが自動的に作成されます。これらのサービス エージェントには、ユーザーに代わってリソースを作成してアクセスできるロールが自動的に付与されることもあります。

サービスを利用する前に、必要に応じて、プロジェクト レベル、フォルダレベル、組織レベルのサービス エージェントを作成するように Google Cloud にリクエストすることもできます。サービス エージェントの作成を Google Cloud にリクエストすると、サービスを使用する前にサービス エージェントにロールを付与できます。サービス エージェントがまだ作成されていない場合は、ロールをサービス エージェントに付与できません。

このオプションは、次のいずれかの方法で許可ポリシーを管理する場合に便利です。

  • Terraform などの宣言型フレームワーク。Terraform 構成にサービス エージェントのロールが含まれていない場合、構成を適用するときに、これらのロールが取り消されます。サービス エージェントを作成して Terraform 構成でロールを付与することで、それらのロールが取り消されないようにします。
  • コードとしてのポリシー。現在の許可ポリシーのコピーをコード リポジトリに格納します。 Google Cloud がサービス エージェントに自動的にロールを付与した場合、これらのロールは実際の許可ポリシーには存在しますが、格納された許可ポリシーのコピーには存在しません。この不整合を解決するときに、これらのロールを誤って取り消してしまう可能性があります。サービス エージェントを作成してロールを付与することで、コード リポジトリと実際の許可ポリシーの間の不整合を防ぐことができます。

サービス エージェントの作成をトリガーしたら、サービス エージェントに自動的に付与されるロールをサービス エージェントに付与する必要があります。そうしないと、一部のサービスが正しく機能しない可能性があります。これは、ユーザーのリクエストで作成されたサービス エージェントにはロールが自動的に付与されないためです。

始める前に

  • Enable the Resource Manager API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  • サービス エージェントについて理解する。

必要なロール

サービス エージェントの作成をトリガーするために、IAM 権限は必要ありません。ただし、このページの他のタスクには特定の IAM 権限が必要です。

  • 使用可能なサービスとそのエンドポイントを一覧表示するために必要な権限を取得するには、使用可能なサービスを一覧取得するプロジェクト、フォルダ、または組織に対する Service Usage 閲覧者roles/serviceusage.serviceUsageViewer)の IAM ロールを付与するように管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

    この事前定義ロールには、使用可能なサービスとそのエンドポイントを一覧表示するために必要な serviceusage.services.list 権限が含まれています。

    カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。

  • サービス エージェントにアクセス権を付与するために必要な権限を取得するには、アクセス権を付与するプロジェクト、フォルダ、または組織に対する次の IAM ロールを付与するように管理者へ依頼します。

    • サービス エージェントにプロジェクトへのアクセス権を付与する: プロジェクト IAM 管理者roles/resourcemanager.projectIamAdmin
    • サービス エージェントにフォルダへのアクセス権を付与する: フォルダ管理者roles/resourcemanager.folderAdmin
    • サービス エージェントにプロジェクト、フォルダ、組織へのアクセス権を付与する: 組織管理者roles/resourcemanager.organizationAdmin

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

    これらの事前定義ロールには、サービス エージェントにアクセス権を付与するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

    必要な権限

    サービス エージェントにアクセス権を付与するには、次の権限が必要です。

    • サービス エージェントにプロジェクトへのアクセス権を付与する:
      • resourcemanager.projects.getIamPolicy
      • resourcemanager.projects.setIamPolicy
    • サービス エージェントにフォルダへのアクセス権を付与する:
      • resourcemanager.folders.getIamPolicy
      • resourcemanager.folders.setIamPolicy
    • サービス エージェントに組織へのアクセス権を付与する:
      • resourcemanager.organizations.getIamPolicy
      • resourcemanager.organizations.setIamPolicy

    カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

作成するサービス エージェントを特定する

Google Cloud に作成をリクエストする必要のあるプロジェクト レベル、フォルダレベル、組織レベルのサービス エージェントを確認するには、次の操作を行います。

  1. 使用するサービスとそれらの API エンドポイントのリストを作成します。使用可能なサービスとそのエンドポイントを表示するには、次のいずれかの方法を使用します。

    コンソール

    Google Cloud コンソールの [API ライブラリ] ページに移動します。

    [API ライブラリ] に移動

    API エンドポイントは、[詳細] セクションに記載されているサービス名です。

    gcloud

    gcloud services list コマンドは、プロジェクトで使用可能なサービスを一覧表示します。

    後述のコマンドデータを使用する前に、次のように置き換えます。

    • EXPRESSION: 省略可。結果をフィルタリングする式。たとえば、次の式は、名前に googleapis.com を含み、sandbox を含まないすべてのサービスをフィルタリングします。

      name ~ googleapis.com AND name !~ sandbox

      フィルタ式の一覧については、gcloud topic filters をご覧ください。

    • LIMIT: 省略可。リストに表示する結果の最大数。デフォルトは unlimited です。

    次のコマンドを実行します。

    Linux、macOS、Cloud Shell

    gcloud services list --available --filter='EXPRESSION' --limit=LIMIT

    Windows(PowerShell)

    gcloud services list --available --filter='EXPRESSION' --limit=LIMIT

    Windows(cmd.exe)

    gcloud services list --available --filter='EXPRESSION' --limit=LIMIT

    レスポンスには、使用可能なすべてのサービスの名前とタイトルが含まれます。API エンドポイントは NAME フィールドの値です。

    REST

    Service Usage API の services.list メソッドは、プロジェクトで使用可能なすべてのサービスを一覧表示します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • RESOURCE_TYPE: 使用可能なサービスを一覧表示するリソースのタイプ。projectsfolders、または organizations を使用します。
    • RESOURCE_ID: 使用可能なサービスを一覧取得する Google Cloudプロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
    • PAGE_SIZE: 省略可。レスポンスに含めるサービスの数。デフォルト値は 50、最大値は 200 です。サービスの数がページサイズより大きい場合、レスポンスには結果の次のページを取得するために使用できるページ設定トークンが含まれます。
    • NEXT_PAGE_TOKEN: 省略可。以前のレスポンスでこのメソッドから返されたページ設定トークン。指定すると、前のリクエストが終了した時点からサービスの一覧表示が開始します。

    HTTP メソッドと URL:

    GET https://serviceusage.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/services?pageSize=PAGE_SIZE&pageToken=NEXT_PAGE_TOKEN

    リクエストを送信するには、次のいずれかのオプションを展開します。