他のリソースへのアクセス権を管理する

このページでは、許可ポリシーを受け入れるリソースへのアクセス権の付与、変更、取り消しの一般的なプロセスについて説明します。

Identity and Access Management(IAM)では、許可ポリシー(IAM ポリシー)によってアクセス権が付与されます。許可ポリシーは Google Cloud リソースに接続されます。各許可ポリシーには、ユーザーやサービス アカウントなどの 1 つ以上のプリンシパルを IAM ロールに関連付けるロール バインディングのコレクションが含まれています。ロール バインディングは、許可ポリシーが接続されているリソースと、そのリソースのすべての子孫の両方のプリンシパルに、指定されたロールを付与します。許可ポリシーの詳細については、許可ポリシーについてをご覧ください。

このページでは、Google Cloud Console、Google Cloud CLI、REST API を使用してリソースへのアクセス権を管理する方法について説明します。また、Google Cloud クライアント ライブラリを使用してアクセスを管理することもできます。

準備

許可ポリシーを受け入れるリソースタイプの一覧を確認します。

必要な権限

リソースへのアクセスを管理するには、リソースを取得する権限と、リソースの許可ポリシーを取得して設定する権限が必要です。これらの権限の形式は次のとおりです。ここで SERVICE はリソースを所有するサービスの名前、RESOURCE_TYPE はアクセスを管理するリソースタイプの名前です。

  • SERVICE.RESOURCE_TYPE.get
  • SERVICE.RESOURCE_TYPE.getIamPolicy
  • SERVICE.RESOURCE_TYPE.setIamPolicy

たとえば、Compute Engine インスタンスへのアクセスを管理するには、次の権限が必要です。

  • compute.instances.get
  • compute.instances.getIamPolicy
  • compute.instances.setIamPolicy

必要な権限を取得するには、管理者に依頼して、それらの権限を含む事前定義ロールまたはカスタムロールを取得してください。たとえば、管理者からセキュリティ管理者ロール(roles/iam.securityAdmin)が付与されると、ほとんどの Google Cloud リソースへのアクセスを管理できます。

現在のアクセス権を表示する

次のセクションでは、Google Cloud コンソール、gcloud CLI、REST API を使用して、リソースにアクセスできるユーザーを確認する方法について説明します。また、Google Cloud クライアント ライブラリを使用してリソースの許可ポリシーを取得し、アクセスを確認することもできます。

Console

  1. Google Cloud コンソールで、アクセス権を表示するリソースが一覧表示されているページに移動します。

    たとえば、Compute Engine インスタンスへのアクセスを管理するには、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. リソースに対するアクセス権を表示するリソースの横にあるチェックボックスをオンにします。

  3. 情報パネルが表示されていることを確認します。表示されていない場合は、[情報パネルを表示] をクリックします。情報パネルの [権限] タブに、そのリソースへのアクセス権を持つすべてのプリンシパルが表示されます。

    [継承された権限を表示] スイッチがオンになっている場合は、継承されたロールを持つプリンシパルがリストに表示されます。このプリンシパルには、リソース自体のロールではなく、親リソースのロールから継承したアクセス権が付与されています。ポリシー継承の詳細については、ポリシーの継承とリソース階層をご覧ください。

gcloud

リソースにアクセスできるユーザーを確認するには、リソースの許可ポリシーを取得します。許可ポリシーの解釈方法については、許可ポリシーについてをご覧ください。

リソースの許可ポリシーを取得するには、リソースの get-iam-policy コマンドを実行します。

コマンドの形式は、アクセスを管理するリソースタイプによって異なります。リソースの形式を確認する方法については、Google Cloud CLI リファレンスでリソースの get-iam-policy コマンドの説明をご覧ください。このリファレンスは、サービス別、リソース別の順に構成されています。たとえば、Compute Engine VM インスタンスの許可ポリシーを取得するには、gcloud compute instances get-iam-policy リファレンスに記載されている形式を使用します。

必要に応じて、次の引数をコマンドに追加し、形式を指定して結果をエクスポートします。

--format=FORMAT > PATH

次の値を指定します。

  • FORMAT: 必要とするポリシーの形式。json または yaml を使用します。
  • PATH: ポリシーの新しい出力ファイルのパス。

コマンドを実行すると、リソースの許可ポリシーがコンソールに出力されるか、指定したファイルにエクスポートされます。

REST

リソースにアクセスできるユーザーを確認するには、リソースの許可ポリシーを取得します。許可ポリシーの解釈方法については、許可ポリシーについてをご覧ください。

リソースの許可ポリシーを取得するには、リソースの getIamPolicy メソッドを使用します。

HTTP メソッド、URL、リクエスト本文は、アクセス権を確認するリソースによって異なります。こうした詳細を確認するには、リソースを所有するサービスの API リファレンスを見つけて、そのリソースの getIamPolicy メソッドのリファレンスを探します。たとえば、Compute Engine インスタンスの HTTP メソッド、URL、リクエスト本文は、instances.getIamPolicy のリファレンスに記載されています。

どのリソースの getIamPolicy メソッドのレスポンスにも、リソースの許可ポリシーが含まれます。

単一ロールの付与または取り消し

Google Cloud コンソールまたは gcloud CLI では、リソースの許可ポリシーを直接編集することなく、1 つのプリンシパルに対して 1 つのロールをすぐに付与または取り消すことができます。一般的なタイプのプリンシパルには、Google アカウント、サービス アカウント、Google グループ、ドメインがあります。プリンシパル タイプのリストについては、ID 関連のコンセプトをご覧ください。

通常、ポリシーの変更は 2 分以内に有効になります。ただし、システム全体に変更が反映されるまでに 7 分以上かかることがあります。

最も適切な事前定義ロールを特定する必要がある場合は、事前定義ロールを選択するをご覧ください。

単一ロールの付与

プリンシパルに 1 つのロールを付与する方法は次のとおりです。

Console

  1. Google Cloud コンソールで、アクセス権を表示するリソースが一覧表示されているページに移動します。

    たとえば、Compute Engine インスタンスへのアクセスを管理するには、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. リソースに対するアクセス権を管理するリソースの横にあるチェックボックスをオンにします。

  3. 情報パネルが表示されていることを確認します。表示されていない場合は、[情報パネルを表示] をクリックします。

  4. ロールを付与するプリンシパルを選択します。

    • リソースに対する他のロールをすでに持っているプリンシパルにロールを付与するには、プリンシパルを含む行を見つけて、その行で [プリンシパルを編集] をクリックし、[別のロールを追加] をクリックします。

    • リソースに対して他のロールを持たないプリンシパルにロールを付与するには、[ プリンシパルを追加] をクリックし、プリンシパルの ID(my-user@example.com など)を入力します。

  5. 付与するロールをプルダウン リストから選択します。最善のセキュリティを得るため、プリンシパルが必要とする権限のみを含むロールを選択してください。

  6. (省略可)ロールに条件を追加します。

  7. [保存] をクリックします。リソースのロールがプリンシパルに付与されます。

gcloud

プリンシパルにロールをすばやく付与するには、add-iam-policy-binding コマンドを実行します。

コマンドの形式は、アクセスを管理するリソースタイプによって異なります。リソースの形式を確認する方法については、Google Cloud CLI リファレンスでリソースの add-iam-policy-binding コマンドの説明をご覧ください。このリファレンスは、サービス別、リソース別の順に構成されています。たとえば、Compute Engine インスタンスに関連するロールをプリンシパルに付与するには、gcloud compute instances add-iam-policy- binding リファレンスに記載されている形式を使用します。

単一ロールの取り消し

プリンシパルの 1 つのロールを取り消すには、次の手順を行います。

Console

  1. Google Cloud コンソールで、アクセス権を取り消すリソースを一覧表示するページに移動します。

    たとえば、Compute Engine インスタンスへのアクセスを管理するには、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. リソースに対するアクセス権を管理するリソースの横にあるチェックボックスをオンにします。

  3. 情報パネルが表示されていることを確認します。表示されていない場合は、[情報パネルを表示] をクリックします。

  4. アクセス権を取り消すプリンシパルを含む行を探します。次に、その行の [ プリンシパルを編集します] をクリックします。

  5. 取り消すロールの [削除] ボタンをクリックし、[保存] をクリックします。

gcloud

プリンシパルのロールをすばやく取り消すには、remove-iam-policy-binding コマンドを実行します。

コマンドの形式は、アクセスを管理するリソースタイプによって異なります。リソースの形式を確認する方法については、Google Cloud CLI リファレンスでリソースの remove-iam-policy-binding コマンドの説明をご覧ください。このリファレンスは、サービス別、リソース別の順に構成されています。たとえば、Compute Engine インスタンスに関連するロールをプリンシパルに付与するには、gcloud compute instances remove-iam-policy-binding リファレンスに記載されている形式を使用します。

Google Cloud コンソールを使用した複数ロールの付与または取り消し

Google Cloud コンソールを使用して、1 つのプリンシパルに複数のロールを付与したり、ロールを取り消すことができます。

  1. Google Cloud コンソールで、アクセス権を確認したいリソースの一覧が表示されるページに移動します。

    たとえば、Compute Engine インスタンスへのアクセスを管理するには、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. アクセス権を管理するリソースの横にあるチェックボックスをオンにします。

  3. 情報パネルが表示されていない場合は、[情報パネルを表示] をクリックします。

  4. ロールを変更するプリンシパルを選択します。

    • リソースに対するロールをすでに持っているプリンシパルのロールを変更するには、プリンシパルを含む行を見つけて、その行で [プリンシパルを編集] をクリックし、 [別のロールを追加する] をクリックします。

    • リソースに対して既存のロールを持たないプリンシパルにロールを付与するには、 [プリンシパルを追加] をクリックし、プリンシパルの ID(my-user@example.com など)を入力します。

  5. プリンシパルのロールを変更します。

    • リソースに対する既存のロールのないプリンシパルにロールを付与するには、[ロールを選択] をクリックし、プルダウン リストから付与するロールを選択します。
    • プリンシパルに追加のロールを付与するには、[別のロールを追加] をクリックして、プルダウン リストから付与するロールを選択します。
    • プリンシパルのロールの一つを別のロールに置き換えるには、既存のロールをクリックし、プルダウン リストから付与する別のロールを選択します。
    • プリンシパルのロールの一つを取り消すには、取り消す各ロールの [削除] ボタンをクリックします。

    また、ロールへの条件の追加や、ロールの条件の変更ロールの条件の削除を行うことができます。

  6. [保存] をクリックします。

プログラムによる複数ロールの付与または取り消し

複数のプリンシパルに対する複数ロールの付与と取り消しを伴う大幅なアクセス権の変更を行うには、read-modify-write のパターンを使用して、リソースの許可ポリシーを更新します。

  1. getIamPolicy() を呼び出して、現在の許可ポリシーを読み取ります。
  2. 許可ポリシーをテキスト エディタまたはプログラムで編集し、プリンシパルまたはロール バインディングの追加や削除を行います。
  3. setIamPolicy() を呼び出して、更新された許可ポリシーを作成します。

このセクションでは、gcloud CLI と REST API を使用して許可ポリシーを更新する方法について説明します。許可ポリシーの更新は、Google Cloud クライアント ライブラリで行うこともできます。

通常、ポリシーの変更は 2 分以内に有効になります。ただし、システム全体に変更が反映されるまでに 7 分以上かかることがあります。

現在の許可ポリシーを取得する

gcloud

リソースの許可ポリシーを取得するには、リソースの get-iam-policy コマンドを実行します。

コマンドの形式は、アクセスを管理するリソースタイプによって異なります。リソースの形式を確認する方法については、Google Cloud CLI リファレンスでリソースの get-iam-policy コマンドの説明をご覧ください。このリファレンスは、サービス別、リソース別の順に構成されています。たとえば、Compute Engine VM インスタンスの許可ポリシーを取得するには、gcloud compute instances get-iam-policy リファレンスに記載されている形式を使用します。

必要に応じて、次の引数をコマンドに追加し、形式を指定して結果をエクスポートします。

--format=FORMAT > PATH

次の値を指定します。

  • FORMAT: 許可ポリシーの形式。json または yaml を使用します。
  • PATH: 許可ポリシーの新しい出力ファイルのパス。

コマンドを実行すると、リソースの許可ポリシーがコンソールに出力されるか、指定したファイルにエクスポートされます。

REST

リソースの許可ポリシーを取得するには、リソースの getIamPolicy メソッドを使用します。

HTTP メソッド、URL、リクエスト本文は、アクセス権を確認するリソースによって異なります。詳細を確認する方法については、リソースを所有するサービスの API リファレンスで、そのリソースの getIamPolicy メソッドの説明をご覧ください。たとえば、Compute Engine VM インスタンスの HTTP メソッド、URL、リクエスト本文は、instances.getIamPolicy のリファレンスに記載されています。

どのリソースの getIamPolicy メソッドのレスポンスにも、リソースの許可ポリシーが含まれます。レスポンスを適切なタイプ(json または yaml)のファイルに保存します。

許可ポリシーを変更する

ロールの付与または取り消しを反映するには、プログラムまたはテキスト エディタを使用して、リソースの許可ポリシーのローカルコピーを変更します。

他の変更を上書きしないため、許可ポリシーの etag フィールドは編集または削除しないでください。etag フィールドは、許可ポリシーの現在の状態を示します。更新した許可ポリシーを設定すると、IAM ではリクエスト内の etag 値と既存の etag を比較し、値が一致する場合にのみ許可ポリシーを書き込みます。

許可ポリシーで付与するロールを編集するには、許可ポリシーのロール バインディングを編集する必要があります。ロール バインディングの形式は次のとおりです。

{
  "role": "ROLE_NAME",
  "members": [
    "PRINCIPAL_1",
    "PRINCIPAL_2",
    ...
    "PRINCIPAL_N"
  ],
  "conditions:" {
    CONDITIONS
  }
}

プレースホルダの値は次のとおりです。

  • ROLE_NAME: 付与するロールの名前。次のいずれかの形式で指定してください。

    • 事前定義ロール: roles/SERVICE.IDENTIFIER
    • プロジェクト レベルのカスタムロール: projects/PROJECT_ID/roles/IDENTIFIER
    • 組織レベルのカスタムロール: organizations/ORG_ID/roles/IDENTIFIER

    事前定義された役割のリストについては、役割についてをご覧ください。

  • PRINCIPAL_1PRINCIPAL_2...PRINCIPAL_N: ロールを付与するプリンシパルの ID。

    通常、プリンシパル識別子は、PRINCIPAL-TYPE:ID の形式になります。例: user:my-user@example.comPRINCIPAL に使用できる値の一覧については、プリンシパル識別子をご覧ください。

    プリンシパル タイプが user の場合、識別子に含まれるドメイン名は Google Workspace ドメインまたは Cloud Identity ドメインである必要があります。Cloud Identity ドメインの設定方法については、Cloud Identity の概要をご覧ください。

  • CONDITIONS: 省略可。アクセスが許可されるタイミングを指定する条件

ロールを付与する

プリンシパルにロールを付与するには、許可ポリシーのロール バインディングを変更します。付与できるロールについては、ロールについてまたはリソースに対して付与可能なロールの表示をご覧ください。最も適切な事前定義ロールを特定する必要がある場合は、事前定義ロールを選択するをご覧ください。

必要に応じて、条件を使用して特定の要件が満たされた場合にのみロールを付与できます。

すでに許可ポリシーに含まれているロールを付与するには、既存のロール バインディングにプリンシパルを追加します。

gcloud

プリンシパルを既存のロール バインディングに追加して、許可ポリシーを編集します。この変更は、更新された許可ポリシーを設定するまで有効になりません。

たとえば、許可ポリシーに、Compute インスタンス管理者ロール(roles/compute.instanceAdmin)を Kai に付与する次のロール バインディングが含まれているとします。

{
  "role": "roles/compute.instanceAdmin",
  "members": [
    "user:kai@example.com"
  ]
}

同じロールを Raha に付与するには、Raha のプリンシパル ID を既存のロール バインディングに追加します。

{
  "role": "roles/compute.instanceAdmin",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

REST

プリンシパルを既存のロール バインディングに追加して、許可ポリシーを編集します。この変更は、更新された許可ポリシーを設定するまで有効になりません。

たとえば、許可ポリシーに、Compute インスタンス管理者ロール(roles/compute.instanceAdmin)を Kai に付与する次のロール バインディングが含まれているとします。

{
  "role": "roles/compute.instanceAdmin",
  "members": [
    "user:kai@example.com"
  ]
}

同じロールを Raha に付与するには、Raha のプリンシパル ID を既存のロール バインディングに追加します。

{
  "role": "roles/compute.instanceAdmin",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

まだ許可ポリシーに含まれていないロールを付与するには、新しいロール バインディングを追加します。

gcloud

プリンシパルにロールを付与する新しいロール バインディングを追加して、許可ポリシーを編集します。この変更は、更新された許可ポリシーを設定するまで有効になりません。

たとえば、Compute ロードバランサ管理者のロール(roles/compute.loadBalancerAdmin)を Raha に付与するには、許可ポリシーの bindings 配列に次のロール バインディングを追加します。

{
  "role": "roles/compute.loadBalancerAdmin",
  "members": [
    "user:raha@example.com"
  ]
}

REST

プリンシパルにロールを付与する新しいロール バインディングを追加して、許可ポリシーを編集します。この変更は、更新された許可ポリシーを設定するまで有効になりません。

たとえば、Compute ロードバランサ管理者のロール(roles/compute.loadBalancerAdmin)を Raha に付与するには、許可ポリシーの bindings 配列に次のロール バインディングを追加します。

{
  "role": "roles/compute.loadBalancerAdmin",
  "members": [
    "user:raha@example.com"
  ]
}

ロールを取り消す

ロールを取り消すには、ロール バインディングからプリンシパルを削除します。ロール バインディングに他のプリンシパルがない場合は、ロール バインディング全体を削除します。

gcloud

get-iam-policy コマンドで返された JSON または YAML 許可ポリシーを編集して、ロールを取り消します。この変更は、更新された許可ポリシーを設定するまで有効になりません。

プリンシパルのロールを取り消すには、許可ポリシーの bindings 配列から目的のプリンシパルまたはバインディングを削除します。

REST

get-iam-policy コマンドで返された JSON または YAML 許可ポリシーを編集して、ロールを取り消します。この変更は、更新された許可ポリシーを設定するまで有効になりません。

プリンシパルのロールを取り消すには、許可ポリシーの bindings 配列から目的のプリンシパルまたはバインディングを削除します。

許可ポリシーを設定する

必要なロールを付与または取り消すように許可ポリシーを変更した後、setIamPolicy() を呼び出して更新します。

gcloud

リソースの許可ポリシーを設定するには、リソースの set-iam-policy コマンドを実行します。

コマンドの形式は、アクセスを管理するリソースタイプによって異なります。リソースの形式を確認する方法については、Google Cloud CLI リファレンスでリソースの set-iam-policy コマンドの説明をご覧ください。このリファレンスは、サービス別、リソース別の順に構成されています。たとえば、Compute Engine VM インスタンスの許可ポリシーを取得するには、gcloud compute instances set-iam-policy リファレンスに記載されている形式を使用します。

どのリソースの set-iam-policy コマンドのレスポンスにも、更新されたリソースの許可ポリシーが含まれます。

REST

リソースの許可ポリシーを設定するには、リソースの setIamPolicy メソッドを使用します。

HTTP メソッド、URL、リクエスト本文は、アクセス権を確認するリソースによって異なります。詳細を確認する方法については、リソースを所有するサービスの API リファレンスで、そのリソースの setIamPolicy メソッドの説明をご覧ください。たとえば、Compute Engine VM インスタンスの HTTP メソッド、URL、リクエスト本文は、instances.setIamPolicy のリファレンスに記載されています。

どのリソースの setIamPolicy メソッドのレスポンスにも、更新されたリソースの許可ポリシーが含まれます。

次のステップ

使ってみる

Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。

無料で開始