使用しているプリンシパルがタスクを実行するために必要な権限を持っていない場合、または開発環境でサービス アカウントを使用する場合は、サービス アカウントの権限借用を使用できます。
サービス アカウントの権限借用を使用するには、認証されたプリンシパル(ユーザー アカウントまたはサービス アカウント)から始めて、ユースケースに必要な権限を持つサービス アカウントの有効期間の短い認証情報をリクエストします。認証されたプリンシパルには、サービス アカウントの権限を借用するために必要な権限が付与されている必要があります。
サービス アカウントの権限借用には事前に認証された ID が必要です。また、権限借用を使用して作成された認証情報は保持されないため、サービス アカウント キーよりも安全です。これに対し、サービス アカウント キーによる認証では事前の認証は必要ありませんが、永続的な鍵が漏洩した場合は、リスクの高い認証情報となります。
サービス アカウントの権限借用の詳細については、サービス アカウントの権限借用をご覧ください。
始める前に
サービス アカウントの権限借用を使用する前に、必要な API を有効にし、必要なロールが付与されていることを確認する必要があります。
API を有効にする
サービス アカウントの権限を借用するには、プロジェクトで Service Account Credentials API を有効にする必要があります。
必要なロール
サービス アカウントの権限を借用するために必要な権限をプリンシパルに持たせるには、サービス アカウントに対するサービス アカウント トークン作成者(roles/iam.serviceAccountTokenCreator
)の IAM ロールをプリンシパルに付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
この事前定義ロールには、サービス アカウントの権限を借用するために必要な iam.serviceAccounts.getAccessToken
権限が含まれています。
管理者は、カスタムロールや他の事前定義ロールを使用して、この権限をプリンシパルに付与することもできます。
自身で作成したプロジェクトで作業している場合でも、プリンシパルにこれらのロールを付与する必要があります。
権限借用に必要なロールの詳細については、サービス アカウントの認証に必要なロールをご覧ください。
サービス アカウントの権限借用は次の方法で使用できます。
gcloud CLI を使用する
gcloud CLI では、サービス アカウントの権限借用を簡単に使用できます。この方法は、gcloud CLI でサービス アカウントを使用して Google Cloud リソースまたはサービスにアクセスする必要がある場合に適しています。
特定の gcloud CLI コマンドでサービス アカウントの権限を借用できます。また、すべてのコマンドで自動的に権限借用を使用するように gcloud CLI を設定することもできます。
特定の gcloud CLI コマンドに権限借用を使用する
特定の gcloud CLI コマンドで権限借用を使用するには、--impersonate-service-account
フラグを使用します。たとえば、次のコマンドは、指定したサービス アカウントから提供された ID とアクセス権を使用して、ストレージ バケットを一覧表示します。
gcloud storage buckets list --impersonate-service-account=SERVICE_ACCT_EMAIL
このフラグを使用すると、gcloud CLI は、指定されたサービス アカウントの有効期間の短い認証情報をリクエストし、API に対する認証とアクセスの承認に使用します。gcloud CLI(通常はユーザー アカウント)にログインするプリンシパルには、サービス アカウントに必要な権限が必要です。
gcloud CLI で権限借用をデフォルトで使用する
デフォルトでサービス アカウントによって提供される ID とアクセス権を使用するように gcloud CLI を設定するには、gcloud CLI config コマンドを使用します。
gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL
この構成プロパティを設定すると、gcloud CLI は、指定されたサービス アカウントの有効期間の短い認証情報をリクエストし、API に対する認証と各コマンドによるリソースへのアクセスの承認に使用します。gcloud CLI にログインしているプリンシパルには、サービス アカウントに必要な権限が必要です。
クライアント ライブラリを使用するためのアプリケーションのデフォルト認証情報を設定する
サービス アカウントの権限借用を使用して、ローカルのアプリケーションのデフォルト認証情報(ADC)ファイルを設定できます。権限借用をサポートするクライアント ライブラリは、これらの認証情報を自動的に使用できます。権限借用を使用して作成されたローカル ADC ファイルは、次の言語でサポートされています。
- C#
- Go
- Java
- Node.js
- Python
サービス アカウントの権限借用を使用して、ローカル ADC ファイルを作成します。
gcloud auth application-default login --impersonate-service-account SERVICE_ACCT_EMAIL
これで、サポートされている言語でクライアント ライブラリを使用できます。ローカル ADC ファイルをユーザー認証情報で設定した後と同じ方法で使用できます。認証ライブラリによって認証情報が自動的に検索されます。詳細については、クライアント ライブラリを使用するための認証をご覧ください。
有効期間の短い認証情報を生成して管理する
どちらの方法でもユースケースに対応できない場合は、有効期間の短いトークンを生成して管理する必要があります。たとえば、有効期間の短い別のタイプの認証情報(アクセス トークン以外)が必要な場合や、本番環境で権限借用を使用する必要がある場合は、この方法を使用します。
有効期間の短いトークンの生成については、有効期間の短いサービス アカウント認証情報を作成するをご覧ください。
次のステップ
- ADC が認証情報を検出する仕組みを確認する。
- 認証方法を確認する。