このトピックでは、アプリケーションをサービス アカウントとして認証する方法について説明します。一般的な認証シナリオや方法など、Google Cloud APIs への認証に関する一般的な情報については、認証の概要をご覧ください。サービス アカウントの詳細については、Identity and Access Management のドキュメントでサービス アカウントをご覧ください。
認証情報の自動検出
アプリケーションが Google Cloud 環境内で実行されていて、その環境にサービス アカウントが接続されている場合、アプリケーションはそのサービス アカウントの認証情報を取得できます。その後、アプリケーションはこの認証情報を使用して Google Cloud APIs を呼び出すことができます。
Compute Engine、Google Kubernetes Engine、App Engine、Cloud Run、Cloud Functions など、さまざまな Google Cloud サービスのリソースにサービス アカウントを接続できます。これは、認証情報を手動で提供するよりも便利で安全なため、この方法をおすすめします。
また、アプリケーションには Google Cloud クライアント ライブラリを使用することをおすすめします。Google Cloud クライアント ライブラリでは、アプリケーションのデフォルト認証情報(ADC)というライブラリを使用して、サービス アカウントの認証情報を自動的に検索します。サービス アカウントの認証情報は次の順序で検索されます。
環境変数
GOOGLE_APPLICATION_CREDENTIALS
が設定されている場合、ADC では、変数が示すサービス アカウント キーまたは構成ファイルを使用します。環境変数
GOOGLE_APPLICATION_CREDENTIALS
が設定されていない場合、ADC はコードを実行しているリソースに関連付けられているサービス アカウントを使用します。このサービス アカウントは、Compute Engine、Google Kubernetes Engine、App Engine、Cloud Run、Cloud Functions により提供されるデフォルトのサービス アカウントの場合があります。また、作成したユーザー管理のサービス アカウントの場合もあります。
ADC が上に示したいずれの認証情報も使用できない場合は、エラーが発生します。
次のサンプルコードは、アプリケーション コードで ADC ライブラリを使用する方法を示しています。このサンプルを実行するには、Cloud Storage クライアント ライブラリをインストールする必要があります。
C#
Go
Java
Node.js
PHP
Python
Ruby
認証情報を手動で提供する
サービス アカウントが接続されていない環境(オンプレミスや他のクラウド プロバイダなど)でアプリケーションを実行する場合は、Workload Identity 連携を使用する必要があります。
Workload Identity 連携を使用できない場合は、サービス アカウントと 1 つ以上のサービス アカウント キーを作成する必要があります。サービス アカウント キーは、サービス アカウントに関連付けられた認証情報です。作成したサービス アカウント キーをアプリケーションに手動で渡します。
サービス アカウント キーを管理するためのベスト プラクティスを必ず確認してください。
サービス アカウントを作成する
サービス アカウントがない場合は、次の手順で作成します。
Console
サービス アカウントを作成します。
-
Google Cloud コンソールで [サービス アカウントの作成] ページに移動します。
[サービス アカウントの作成] に移動 - プロジェクトを選択します。
-
[サービス アカウント名] フィールドに名前を入力します。Google Cloud コンソールでは、この名前に基づいて [サービス アカウント ID] フィールドに値が設定されます。
[サービス アカウントの説明] フィールドに説明を入力します。例:
Service account for quickstart
- [作成して続行] をクリックします。
-
プロジェクトへのアクセス権を付与するには、サービス アカウントに Project > Owner ロールを付与します。
ロールを付与するには、[ロールを選択] リストで [Project > Owner] を選択します。
- [続行] をクリックします。
-
[完了] をクリックして、サービス アカウントの作成を完了します。
ブラウザ ウィンドウは閉じないでください。次のステップでこれを使用します。
サービス アカウント キーを作成します。
- Google Cloud コンソールで、作成したサービス アカウントのメールアドレスをクリックします。
- [キー] をクリックします。
- [鍵を追加]、[新しい鍵を作成] の順にクリックします。
- [作成] をクリックします。JSON キーファイルがパソコンにダウンロードされます。
- [閉じる] をクリックします。
gcloud
認証を設定します。
-
サービス アカウントを作成します。
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAME
をサービス アカウントの名前に置き換えます。 -
サービス アカウントに
roles/owner
IAM ロールを付与します。gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/owner
次のように置き換えます。
SERVICE_ACCOUNT_NAME
: サービス アカウントの名前PROJECT_ID
: サービス アカウントを作成したプロジェクト ID
-
鍵ファイルを生成します。
gcloud iam service-accounts keys create FILE_NAME.json --iam-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
次のように置き換えます。
FILE_NAME
: 鍵ファイルの名前SERVICE_ACCOUNT_NAME
: サービス アカウントの名前PROJECT_ID
: サービス アカウントを作成したプロジェクト ID
環境変数を使用して認証情報を提供する
環境変数 GOOGLE_APPLICATION_CREDENTIALS
を設定して、アプリケーション コードに認証情報を指定します。この変数は、現在のシェル セッションにのみ適用されます。この変数を新しいシェル セッションに適用する場合は、シェル起動ファイル(~/.bashrc
ファイルや ~/.profile
ファイルなど)で変数を設定します。
Linux または macOS
export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
"
KEY_PATH
をサービス アカウント キーが含まれる JSON ファイルのパスに置き換えます。
例:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
PowerShell の場合:
$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
"
KEY_PATH
をサービス アカウント キーが含まれる JSON ファイルのパスに置き換えます。
例:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
コマンド プロンプトの場合:
set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH
KEY_PATH
をサービス アカウント キーが含まれる JSON ファイルのパスに置き換えます。
この手順を完了すると、上記のセクションで説明したように、認証情報が自動的に検出されます。必要なコードが少なく、さまざまな環境にコードを移植できるため、ADC の使用をおすすめします。
コードを使用して認証情報を提供する
次の例に示すように、サービス アカウント ファイルを明示的に参照するコードを使用することもできます。以下のサンプルを実行するには、Cloud Storage クライアント ライブラリをインストールする必要があります。
C#
Go
Java
Node.js
PHP
Python
Ruby
API エラーのトラブルシューティング
API リクエストが失敗した場合のトラブルシューティング方法について詳しくは、Cloud APIs のエラーをご覧ください。
次のステップ
- サービス アカウントを管理するためのベスト プラクティスを確認する。
- サービス アカウントを保護するためのベスト プラクティスの詳細を確認する
- Google Cloud API に対する認証について学習する
- エンドユーザーとして認証する方法を学習する
- API キーの使用方法について学習する
使ってみる
Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
無料で開始