このページでは、1 つのサービス アカウントに対するプリンシパルのアクセス権を付与、変更、取り消す方法について説明します。プロジェクト、フォルダまたは組織内のすべてのサービス アカウントに対するプリンシパルのアクセス権を管理するには、プロジェクト、フォルダまたは組織レベルでプリンシパルの管理を行います。
Identity and Access Management(IAM)では、許可ポリシー(IAM ポリシー)によってアクセス権が管理されます。許可ポリシーは Google Cloud リソースに接続されます。各許可ポリシーには、ユーザーやサービス アカウントなどの 1 つ以上のプリンシパルを IAM ロールに関連付けるロール バインディングのコレクションが含まれています。ロール バインディングは、許可ポリシーが接続されているリソースと、そのリソースのすべての子孫の両方のプリンシパルに、指定されたロールを付与します。許可ポリシーの詳細については、許可ポリシーについてをご覧ください。
サービス アカウントは、他のプリンシパルに自身へのアクセス権を付与できるリソースであり、他のリソースへのアクセス権を付与されることができるプリンシパルでもあります。このページでは、サービス アカウントをリソースとして扱い、他のプリンシパルにアクセス権を付与する方法について説明します。サービス アカウントに他のリソースへのアクセス権を付与する方法については、次のガイドをご覧ください。
- サービス アカウントにプロジェクト、フォルダ、組織へのアクセス権を付与するには、プロジェクト、フォルダ、組織へのアクセスの管理をご覧ください。
- サービス アカウントに他のリソースへのアクセス権を付与するには、他のリソースへのアクセスの管理をご覧ください。
このページでは、Google Cloud コンソール、Google Cloud CLI、REST API を使用してサービス アカウントへのアクセス権を管理する方法を説明します。アクセスの管理は IAM クライアント ライブラリでも行うことができます。
始める前に
Enable the IAM API.
サービス アカウントについて学習する。
必要なロール
サービス アカウントへのアクセスの管理に必要な権限を取得するため、サービス アカウントまたはサービス アカウントを所有するプロジェクトに対するサービス アカウント管理者(roles/iam.serviceAccountAdmin
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
この事前定義ロールには、サービス アカウントへのアクセスの管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
サービス アカウントへのアクセスを管理するには、次の権限が必要です。
-
iam.serviceAccounts.get
-
iam.serviceAccounts.list
-
iam.serviceAccounts.getIamPolicy
-
iam.serviceAccounts.setIamPolicy
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
現在のアクセス権を表示する
次のセクションでは、Google Cloud コンソール、gcloud CLI、REST API を使用して、サービス アカウントにアクセスできるユーザーを確認する方法について説明します。IAM クライアント ライブラリを使用してサービス アカウントの許可ポリシーを取得し、アクセス権を確認することもできます。
コンソール
Google Cloud コンソールで、[サービス アカウント] ページに移動します。
プロジェクトを選択します。
サービス アカウントのメールアドレスをクリックします。
[権限] タブに移動します。[このサービス アカウントにアクセスできるプリンシパル] セクションに、このサービス アカウントのロールを付与されたプリンシパルがすべて表示されます。
このリストには、親リソースに付与されたロールのアクセス権を持つプリンシパルが含まれます。ポリシー継承の詳細については、ポリシーの継承とリソース階層をご覧ください。
省略可: サービス エージェントに付与されたロールを表示するには、[Google 提供のロール付与を含みます] チェックボックスをオンにします。
gcloud
サービス アカウントにアクセスできるユーザーを確認するには、サービス アカウントの許可ポリシーを取得します。許可ポリシーの解釈方法については、許可ポリシーについてをご覧ください。
サービス アカウントの許可ポリシーを取得するには、サービス アカウントを指定して get-iam-policy
コマンドを実行します。
gcloud iam service-accounts get-iam-policy SA_ID --format=FORMAT > PATH
次の値を指定します。
SA_ID
: サービス アカウントの ID。これは、サービス アカウントのメールアドレス(SA_NAME@PROJECT_ID.iam.gserviceaccount.com
の形式)か、サービス アカウントの一意の数値 ID のいずれかです。FORMAT
: ポリシーの形式。json
またはyaml
を使用します。PATH
: ポリシーの新しい出力ファイルのパス。
たとえば、次のコマンドはサービス アカウント my-service-account
のポリシーを取得し、これを JSON 形式でホーム ディレクトリに保存します。
gcloud iam service-accounts get-iam-policy my-service-account --format json > ~/policy.json
REST
サービス アカウントにアクセスできるユーザーを確認するには、サービス アカウントの許可ポリシーを取得します。許可ポリシーの解釈方法については、許可ポリシーについてをご覧ください。
serviceAccounts.getIamPolicy
メソッドで、サービス アカウントの許可ポリシーを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID
: Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例:my-project
)。SA_ID
: サービス アカウントの ID。これは、サービス アカウントのメールアドレス(SA_NAME@PROJECT_ID.iam.gserviceaccount.com
の形式)、またはサービス アカウントの一意の数値 ID のいずれかです。POLICY_VERSION
: 返されるポリシー バージョン。リクエストでは、最新のポリシー バージョン(ポリシー バージョン 3)を指定する必要があります。詳細については、ポリシーの取得時にポリシー バージョンを指定するをご覧ください。
HTTP メソッドと URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:getIamPolicy
リクエストの本文(JSON):
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
リクエストを送信するには、次のいずれかのオプションを開きます。
レスポンスには、サービス アカウントの許可ポリシーが含まれます。次に例を示します。
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
単一ロールの付与または取り消し
Google Cloud コンソールまたは gcloud CLI では、サービス アカウントの許可ポリシーを直接編集することなく、1 つのプリンシパルに対して 1 つのロールを付与または取り消すことができます。一般的なタイプのプリンシパルには、Google アカウント、サービス アカウント、Google グループ、ドメインがあります。プリンシパル タイプのリストについては、ID 関連のコンセプトをご覧ください。
通常、ポリシーの変更は 2 分以内に有効になります。ただし、システム全体に変更が反映されるまでに 7 分以上かかることがあります。
最も適切な事前定義ロールを特定する必要がある場合は、事前定義ロールを選択するをご覧ください。
単一ロールの付与
プリンシパルに 1 つのロールを付与する方法は次のとおりです。
コンソール
Google Cloud コンソールで、[サービス アカウント] ページに移動します。
プロジェクトを選択します。
サービス アカウントのメールアドレスをクリックします。
[権限] タブに移動して、[このサービス アカウントにアクセスできるプリンシパル] セクションを探します。
ロールを付与するプリンシパルを選択します。
サービス アカウントに他のロールがあるプリンシパルにロールを付与するには、プリンシパルを含む行を見つけて、その行で
「プリンシパルを編集します」をクリックし、[ 別のロールを追加] をクリックします。サービス エージェントにロールを付与するには、[Google 提供のロール付与を含みます] チェックボックスをオンにして、メールアドレスを表示します。
サービス アカウントに対する既存のロールがないプリンシパルにロールを付与するには、[
アクセスを許可] をクリックし、プリンシパルのメールアドレスまたは識別子を入力します。
付与するロールをプルダウン リストから選択します。最善のセキュリティを得るため、プリンシパルが必要とする権限のみを含むロールを選択してください。
(省略可)ロールに条件を追加します。
[保存] をクリックします。プリンシパルにサービス アカウントのロールが付与されます。
gcloud
プリンシパルにロールをすばやく付与するには、add-iam-policy-binding
コマンドを実行します。
gcloud iam service-accounts add-iam-policy-binding SA_ID \ --member=PRINCIPAL --role=ROLE_NAME \ --condition=CONDITION
次の値を指定します。
SA_ID
: サービス アカウントの ID。これは、サービス アカウントのメールアドレス(SA_NAME@PROJECT_ID.iam.gserviceaccount.com
の形式)か、サービス アカウントの一意の数値 ID のいずれかです。PRINCIPAL
: プリンシパルまたはメンバーの識別子。通常、PRINCIPAL-TYPE:ID
の形式で指定します。例:user:my-user@example.com
PRINCIPAL
に使用できる値の一覧については、ポリシー バインディングのリファレンスをご覧ください。プリンシパル タイプが
user
の場合、識別子に含まれるドメイン名は Google Workspace ドメインまたは Cloud Identity ドメインである必要があります。Cloud Identity ドメインの設定方法については、Cloud Identity の概要をご覧ください。ROLE_NAME
: 付与するロールの名前。次のいずれかの形式で指定してください。- 事前定義ロール:
roles/SERVICE.IDENTIFIER
- プロジェクト レベルのカスタムロール:
projects/PROJECT_ID/roles/IDENTIFIER
- 組織レベルのカスタムロール:
organizations/ORG_ID/roles/IDENTIFIER
事前定義ロールのリストについては、ロールについてをご覧ください。
- 事前定義ロール:
CONDITION
: 省略可。ロール バインディングに追加する条件。条件の詳細については、条件の概要をご覧ください。
たとえば、サービス アカウント ユーザーのロールをサービス アカウント my-service-account@my-project.iam.gserviceaccount.com
のユーザー my-user@example.com
に付与するには、次のコマンドを実行します。
gcloud iam service-accounts add-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \ --member=user:my-user@example.com --role=roles/iam.serviceAccountUser
単一ロールの取り消し
プリンシパルの 1 つのロールを取り消すには、次の手順を行います。
コンソール
Google Cloud コンソールで、[サービス アカウント] ページに移動します。
プロジェクトを選択します。
サービス アカウントのメールアドレスをクリックします。
[権限] タブに移動して、[このサービス アカウントにアクセスできるプリンシパル] セクションを探します。
アクセス権を取り消すプリンシパルのメールアドレスが含まれる行を探します。その行の [
プリンシパルを編集します] をクリックします。取り消すロールの [削除]
ボタンをクリックし、[保存] をクリックします。
gcloud
ユーザーのロールをすばやく取り消すには、remove-iam-policy-binding
コマンドを実行します。
gcloud iam service-accounts remove-iam-policy-binding SA_ID \ --member=PRINCIPAL --role=ROLE_NAME
次の値を指定します。
SA_ID
: サービス アカウントの ID。これは、サービス アカウントのメールアドレス(SA_NAME@PROJECT_ID.iam.gserviceaccount.com
の形式)か、サービス アカウントの一意の数値 ID のいずれかです。PRINCIPAL
: プリンシパルまたはメンバーの識別子。通常、PRINCIPAL-TYPE:ID
の形式で指定します。例:user:my-user@example.com
PRINCIPAL
に使用できる値の一覧については、ポリシー バインディングのリファレンスをご覧ください。プリンシパル タイプが
user
の場合、識別子に含まれるドメイン名は Google Workspace ドメインまたは Cloud Identity ドメインである必要があります。Cloud Identity ドメインの設定方法については、Cloud Identity の概要をご覧ください。ROLE_NAME
: 取り消すロールの名前。次のいずれかの形式で指定してください。- 事前定義ロール:
roles/SERVICE.IDENTIFIER
- プロジェクト レベルのカスタムロール:
projects/PROJECT_ID/roles/IDENTIFIER
- 組織レベルのカスタムロール:
organizations/ORG_ID/roles/IDENTIFIER
事前定義ロールのリストについては、ロールについてをご覧ください。
- 事前定義ロール:
たとえば、サービス アカウント my-service-account@my-project.iam.gserviceaccount.com
のユーザー my-user@example.com
からサービス アカウント ユーザーのロールを取り消すには、次のコマンドを実行します。
gcloud iam service-accounts remove-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \ --member=user:my-user@example.com --role=roles/iam.serviceAccountUser
Google Cloud コンソールでの複数のロールの付与または取り消し
Google Cloud コンソールを使用して、1 つのプリンシパルに複数のロールを付与したり、ロールを取り消すことができます。
Google Cloud コンソールで、[サービス アカウント] ページに移動します。
プロジェクトを選択します。
サービス アカウントのメールアドレスをクリックします。
[権限] タブに移動して、[このサービス アカウントにアクセスできるプリンシパル] セクションを探します。
ロールを変更するプリンシパルを選択します。
サービス アカウントに対するロールを持っているプリンシパルのロールを変更するには、プリンシパルを含む行を見つけて、その行で
[プリンシパルを編集] をクリックして、 [別のロールを追加] をクリックします。サービス エージェントのロールを変更する場合は、[Google 提供のロール付与を含みます] チェックボックスをオンにして、メールアドレスを表示します。
サービス アカウントに対する既存のロールがないプリンシパルにロールを付与するには、[
アクセスを許可] をクリックし、プリンシパルのメールアドレスまたは識別子を入力します。
プリンシパルのロールを変更します。
- リソースに対する既存のロールのないプリンシパルにロールを付与するには、[ロールを選択] をクリックし、プルダウン リストから付与するロールを選択します。
- プリンシパルに追加のロールを付与するには、[別のロールを追加] をクリックして、プルダウン リストから付与するロールを選択します。
- プリンシパルのロールの 1 つを別のロールに置き換えるには、既存のロールをクリックして、プルダウン リストから付与する別のロールを選択します。
- プリンシパルのロールの 1 つを取り消すには、取り消すロールの [削除] ボタンをクリックします。
[保存] をクリックします。
プログラムでの複数のロールの付与または取り消し
複数のプリンシパルに対して複数のロールの付与や取り消しを行う場合など、大幅なアクセス権の変更を行うには、read-modify-write のパターンを使用して、サービス アカウントの許可ポリシーを更新します。
getIamPolicy()
を呼び出して、現在の許可ポリシーを読み取ります。- 許可ポリシーをテキスト エディタまたはプログラムで編集し、プリンシパルまたはロール バインディングの追加や削除を行います。
setIamPolicy()
を呼び出して、更新された許可ポリシーを作成します。
このセクションでは、gcloud CLI と REST API を使用して許可ポリシーを更新する方法について説明します。IAM クライアント ライブラリを使用して許可ポリシーを更新することもできます。
通常、ポリシーの変更は 2 分以内に有効になります。ただし、システム全体に変更が反映されるまでに 7 分以上かかることがあります。
現在の許可ポリシーを取得する
gcloud
サービス アカウントの許可ポリシーを取得するには、サービス アカウントを指定して get-iam-policy
コマンドを実行します。
gcloud iam service-accounts get-iam-policy SA_ID --format=FORMAT > PATH
次の値を指定します。
SA_ID
: サービス アカウントの ID。これは、サービス アカウントのメールアドレス(SA_NAME@PROJECT_ID.iam.gserviceaccount.com
の形式)か、サービス アカウントの一意の数値 ID のいずれかです。FORMAT
: 許可ポリシーの形式。json
またはyaml
を使用します。PATH
: 許可ポリシーの新しい出力ファイルのパス。
たとえば、次のコマンドはサービス アカウント my-service-account
の許可ポリシーを取得し、これを JSON 形式でホーム ディレクトリに保存します。
gcloud iam service-accounts get-iam-policy my-service-account --format json > ~/policy.json
REST
serviceAccounts.getIamPolicy
メソッドで、サービス アカウントの許可ポリシーを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID
: Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例:my-project
)。SA_ID
: サービス アカウントの ID。これは、サービス アカウントのメールアドレス(SA_NAME@PROJECT_ID.iam.gserviceaccount.com
の形式)、またはサービス アカウントの一意の数値 ID のいずれかです。POLICY_VERSION
: 返されるポリシー バージョン。リクエストでは、最新のポリシー バージョン(ポリシー バージョン 3)を指定する必要があります。詳細については、ポリシーの取得時にポリシー バージョンを指定するをご覧ください。
HTTP メソッドと URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:getIamPolicy
リクエストの本文(JSON):
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
リクエストを送信するには、次のいずれかのオプションを開きます。
レスポンスには、サービス アカウントの許可ポリシーが含まれます。次に例を示します。
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
レスポンスを適切なタイプ(json
または yaml
)のファイルに保存します。
Java
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
許可ポリシーを変更する
特定のユーザーに対するロールの付与または取り消しを行うには、プログラムまたはテキスト エディタを使用してサービス アカウントの許可ポリシーのローカルコピーを変更します。
他の変更を上書きしないため、許可ポリシーの 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_1
、PRINCIPAL_2
、...PRINCIPAL_N
: ロールを付与するプリンシパルの ID。通常、プリンシパル ID の形式は
PRINCIPAL-TYPE:ID
です。たとえば、user:my-user@example.com
のようにします。PRINCIPAL
に使用できる値の一覧については、ポリシー バインディングのリファレンスをご覧ください。プリンシパル タイプが
user
の場合、識別子に含まれるドメイン名は Google Workspace ドメインまたは Cloud Identity ドメインである必要があります。Cloud Identity ドメインの設定方法については、Cloud Identity の概要をご覧ください。CONDITIONS
: 省略可。アクセスが許可されるタイミングを指定する条件。
ロールを付与する
プリンシパルにロールを付与するには、許可ポリシーのロール バインディングを変更します。付与できるロールについては、ロールについてまたはサービス アカウントに対する付与可能なロールを表示をご覧ください。最も適切な事前定義ロールを特定する必要がある場合は、事前定義ロールを選択するをご覧ください。
必要に応じて、条件を使用して特定の要件が満たされた場合にのみロールを付与できます。
すでに許可ポリシーに含まれているロールを付与するには、既存のロール バインディングにプリンシパルを追加します。
gcloud
プリンシパルを既存のロール バインディングに追加して、許可ポリシーを編集します。この変更は、更新された許可ポリシーを設定するまで有効になりません。
たとえば、許可ポリシーに次のロール バインディングが含まれ、サービス アカウント ユーザーロール(roles/iam.serviceAccountUser
)が kai@example.com
に付与されているとします。
{
"role": "roles/iam.serviceAccountUser",
"members": [
"user:kai@example.com"
]
}
同じロールを raha@example.com
に付与するには、既存のロール バインディングに raha@example.com
を追加します。
{ "role": "roles/iam.serviceAccountUser", "members": [ "user:kai@example.com", "user:raha@example.com" ] }
REST
プリンシパルを既存のロール バインディングに追加して、許可ポリシーを編集します。この変更は、更新された許可ポリシーを設定するまで有効になりません。
たとえば、許可ポリシーに次のロール バインディングが含まれ、サービス アカウント ユーザーロール(roles/iam.serviceAccountUser
)が kai@example.com
に付与されているとします。
{
"role": "roles/iam.serviceAccountUser",
"members": [
"user:kai@example.com"
]
}
同じロールを raha@example.com
に付与するには、既存のロール バインディングに raha@example.com
を追加します。
{ "role": "roles/iam.serviceAccountUser", "members": [ "user:kai@example.com", "user:raha@example.com" ] }
まだ許可ポリシーに含まれていないロールを付与するには、新しいロール バインディングを追加します。
gcloud
プリンシパルにロールを付与する新しいロール バインディングを追加して、許可ポリシーを編集します。この変更は、更新された許可ポリシーを設定するまで有効になりません。
たとえば、サービス アカウント トークン作成者のロール(roles/iam.serviceAccountTokenCreator
)を raha@example.com
に付与するには、次のロール バインディングを許可ポリシーの bindings
配列に追加します。
{
"role": "roles/iam.serviceAccountTokenCreator",
"members": [
"user:raha@example.com"
]
}
REST
プリンシパルにロールを付与する新しいロール バインディングを追加して、許可ポリシーを編集します。この変更は、更新された許可ポリシーを設定するまで有効になりません。
たとえば、サービス アカウント トークン作成者のロール(roles/iam.serviceAccountTokenCreator
)を raha@example.com
に付与するには、次のロール バインディングを許可ポリシーの bindings
配列に追加します。
{
"role": "roles/iam.serviceAccountTokenCreator",
"members": [
"user:raha@example.com"
]
}
ロールを取り消す
ロールを取り消すには、ロール バインディングからプリンシパルを削除します。ロール バインディングに他のプリンシパルがない場合は、許可ポリシーからロール バインディング全体を削除します。
gcloud
プリンシパルまたはロール バインディング全体を削除して、許可ポリシーを編集します。この変更は、更新された許可ポリシーを設定するまで有効になりません。
たとえば、許可ポリシーに次のロール バインディングが含まれ、kai@example.com
と raha@example.com
にサービス アカウント ユーザーロール(roles/iam.serviceAccountUser
)が付与されているとします。
{
"role": "roles/iam.serviceAccountUser",
"members": [
"user:kai@example.com",
"user:raha@example.com"
]
}
kai@example.com
のロールを取り消すには、kai@example.com
をロール バインディングから削除します。
{
"role": "roles/iam.serviceAccountUser",
"members": [
"user:raha@example.com"
]
}
kai@example.com
と raha@example.com
の両方のロールを取り消すには、許可ポリシーからロール バインディングを削除します。
REST
プリンシパルまたはロール バインディング全体を削除して、許可ポリシーを編集します。この変更は、更新された許可ポリシーを設定するまで有効になりません。
たとえば、許可ポリシーに次のロール バインディングが含まれ、kai@example.com
と raha@example.com
にサービス アカウント ユーザーロール(roles/iam.serviceAccountUser
)が付与されているとします。
{
"role": "roles/iam.serviceAccountUser",
"members": [
"user:kai@example.com",
"user:raha@example.com"
]
}
kai@example.com
のロールを取り消すには、kai@example.com
をロール バインディングから削除します。
{
"role": "roles/iam.serviceAccountUser",
"members": [
"user:raha@example.com"
]
}
kai@example.com
と raha@example.com
の両方のロールを取り消すには、許可ポリシーからロール バインディングを削除します。
許可ポリシーを設定する
ロールを付与または取り消すように許可ポリシーを変更した後、setIamPolicy()
を呼び出して更新します。
gcloud
リソースの許可ポリシーを設定するには、サービス アカウントを指定して set-iam-policy
コマンドを実行します。
gcloud iam service-accounts set-iam-policy SA_ID PATH
次の値を指定します。
SA_ID
: サービス アカウントの ID。これは、サービス アカウントのメールアドレス(SA_NAME@PROJECT_ID.iam.gserviceaccount.com
の形式)か、サービス アカウントの一意の数値 ID のいずれかです。PATH
: 新しい許可ポリシーを含むファイルのパス。
レスポンスには、更新された許可ポリシーが含まれます。
たとえば、次のコマンドは、policy.json
に保存されている許可ポリシーをサービス アカウント my-service-account@my-project.iam.gserviceaccount.com
の許可ポリシーとして設定します。
gcloud iam service-accounts set-iam-policy my-service-account@my-project.iam.gserviceaccount.com \ ~/policy.json
REST
serviceAccounts.setIamPolicy
メソッドは、サービス アカウントに更新後の許可ポリシーを設定します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID
: Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例:my-project
)。SA_ID
: サービス アカウントの ID。これは、サービス アカウントのメールアドレス(SA_NAME@PROJECT_ID.iam.gserviceaccount.com
の形式)、またはサービス アカウントの一意の数値 ID のいずれかです。-
POLICY
: 設定するポリシーの JSON 表現。ポリシーの形式については、ポリシー リファレンスをご覧ください。たとえば、前の手順で示した許可ポリシーを設定するには、
policy
を次のコードに置き換えます。{ "version": 1, "etag": "BwUqLaVeua8=", "bindings": [ { "role": "roles/iam.serviceAccountUser", "members": [ "user:robin@example.com" ] }, { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
HTTP メソッドと URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:setIamPolicy
リクエストの本文(JSON):
{ "policy": POLICY }
リクエストを送信するには、次のいずれかのオプションを開きます。
レスポンスには、更新された許可ポリシーが含まれます。
Java
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
次のステップ
- プリンシパルがサービス アカウントとして認証できるようにするには、どのロールを付与するかを学習する。
- 最も適切な事前定義ロールを選択する方法を確認する。
- サービス アカウントの使用に関するベスト プラクティスで、サービス アカウントを安全に使用する方法を確認する。
- プロジェクト、フォルダ、組織へのアクセスを管理する方法を学習する。
- 他のリソースへのアクセスを管理する一般的な方法を学習する。
- 条件付きロール バインディングを使用して、プリンシパルのアクセス権を条件付きにする方法を確認する。
使ってみる
Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
無料で開始