このページでは、Google Cloud コンソール、Google Cloud CLI、Identity and Access Management API、Google Cloud クライアント ライブラリのいずれかを使用して、サービス アカウント キーを作成または削除する方法について説明します。
始める前に
Enable the IAM API.
認証を設定する。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
C#
ローカル開発環境でこのページの .NET サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。
C++
ローカル開発環境でこのページの C++ サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。
Go
ローカル開発環境でこのページの Go サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。
Java
ローカル開発環境でこのページの Java サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。
Python
ローカル開発環境でこのページの Python サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
サービス アカウント認証情報について理解する。
必要なロール
サービス アカウント キーの作成と削除に必要な権限を取得するため、プロジェクトまたは鍵を管理するサービス アカウントに対するサービス アカウント キー管理者(
roles/iam.serviceAccountKeyAdmin
)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
詳しくは、サービス アカウントのロールをご覧ください。
組織のポリシーの構成によっては、キーを作成する前に、プロジェクトでサービス アカウント キーの作成を許可する必要がある場合もあります。
プロジェクトでサービス アカウント キーを作成できるようにするために必要な権限を取得するには、組織に対する次の IAM ロールを付与するよう管理者に依頼してください。
- 組織ポリシー管理者(
roles/orgpolicy.policyAdmin
) - 組織閲覧者(
roles/resourcemanager.organizationViewer
) - タグ管理者(
roles/resourcemanager.tagAdmin
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、プロジェクトでサービス アカウント キーを作成できるようにするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
プロジェクトでサービス アカウント キーを作成できるようにするには、次の権限が必要です。
-
orgpolicy.constraints.list
-
orgpolicy.customConstraints.create
-
orgpolicy.customConstraints.delete
-
orgpolicy.customConstraints.get
-
orgpolicy.customConstraints.list
-
orgpolicy.customConstraints.update
-
orgpolicy.policies.create
-
orgpolicy.policies.delete
-
orgpolicy.policies.list
-
orgpolicy.policies.update
-
orgpolicy.policy.get
-
orgpolicy.policy.set
-
resourcemanager.organizations.get
-
resourcemanager.projects.listTagBindings
-
resourcemanager.projects.listEffectiveTags
-
resourcemanager.tagKeys.get
-
resourcemanager.tagKeys.list
-
resourcemanager.tagValues.list
-
resourcemanager.tagValues.get
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
サービス アカウント キーの作成を許可する
サービス アカウント キーを作成する前に、プロジェクトに
iam.disableServiceAccountKeyCreation
組織のポリシー制約が適用されていないことを確認してください。この制約がプロジェクトに適用されている場合、そのプロジェクトでサービス アカウント キーを作成することはできません。ほとんどのプロジェクトにこの制約を適用し、サービス アカウント キーが本当に必要なプロジェクトのみを除外することをおすすめします。その他の認証方法の詳細については、ユースケースに適した認証方法を選択するをご覧ください。
プロジェクトを
iam.disableServiceAccountKeyCreation
組織のポリシー制約から除外するには、組織のポリシー管理者に次の操作を依頼します。-
組織レベルで、プロジェクトまたはフォルダを組織のポリシーから除外するかどうかを定義するために、タグキーとタグ値を作成します。キー
disableServiceAccountKeyCreation
と値enforced
、not_enforced
を使用してタグを作成することをおすすめします。タグキーとタグ値の作成方法については、新しいタグの作成と定義をご覧ください。
-
disableServiceAccountKeyCreation
タグを組織に適用し、その値をenforced
に設定します。組織内のすべてのプロジェクトまたはフォルダは、別のタグ値で上書きされない限り、このタグ値を継承します。リソースにタグを適用する方法については、リソースへのタグの適用をご覧ください。
-
組織のポリシーから除外するプロジェクトまたはフォルダごとに
disableServiceAccountKeyCreation
タグを付けて、その値をnot_enforced
に設定します。この方法でプロジェクトまたはフォルダにタグ値を設定すると、組織から継承されたタグ値がオーバーライドされます。 -
除外リソースに制約が適用されないように、サービス アカウント キーの作成を禁止する組織のポリシーを作成または更新します。このポリシーには、次のルールが必要です。
-
disableServiceAccountKeyCreation: not_enforced
タグの付いたリソースに適用されないようにiam.disableServiceAccountKeyCreation
制約を構成します。このルールの条件は次のようになります。resource.matchTag(\"ORGANIZATION_ID/disableServiceAccountKeyCreation\", \"not_enforced\")
- 他のすべてのリソースに適用されるように
iam.disableServiceAccountKeyCreation
制約を構成します。
タグ条件を使用して組織のポリシーを作成する方法については、タグを使用した組織のポリシーの設定をご覧ください。
-
サービス アカウント キーを作成する
他のプラットフォームやオンプレミスなど、Google Cloud の外部でサービス アカウントを使用するには、最初にサービス アカウントの ID を設定する必要があります。公開鍵 / 秘密鍵ペアを使用すると、これを安全に設定できます。サービス アカウント キーを作成すると、公開部分は Google Cloud に保存され、非公開の部分は自分だけが使用できます。公開鍵 / 秘密鍵のペアの詳細については、サービス アカウント キーをご覧ください。
サービス アカウント キーは、Google Cloud コンソール、gcloud CLI、
serviceAccounts.keys.create()
メソッド、いずれかのクライアント ライブラリを使用して作成できます。サービス アカウントには最大 10 個の鍵を設定できます。デフォルトでは、サービス アカウント キーに有効期限はありません。組織のポリシーの制約を使用して、サービス アカウント キーの有効期間を指定できます。詳細については、ユーザーが管理する鍵の有効期限をご覧ください。
以下の例で、
SA_NAME
はサービス アカウントの名前、PROJECT_ID
は Google Cloud プロジェクトの ID です。SA_NAME@PROJECT_ID.iam.gserviceaccount.com
文字列は、Google Cloud コンソールの [サービス アカウント] ページから取得できます。コンソール
- Google Cloud コンソールで、[サービス アカウント] ページに移動します。
残りの手順は、Google Cloud コンソールに表示されます。
- プロジェクトを選択します。
- キーを作成するサービス アカウントのメールアドレスをクリックします。
- [
キー ] タブをクリックします。 tab. - [鍵を追加] プルダウン メニューをクリックして、[新しい鍵を作成] を選択します。
- 鍵のタイプとして [JSON] を選択し、[作成] をクリックします。
[作成] をクリックすると、サービス アカウント キーファイルがダウンロードされます。鍵ファイルをダウンロードした後、再度ダウンロードすることはできません。
ダウンロードされる鍵の形式は次のとおりです。ここで
PRIVATE_KEY
は公開鍵 / 秘密鍵ペアの非公開部分です。{ "type": "service_account", "project_id": "PROJECT_ID", "private_key_id": "KEY_ID", "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n", "client_email": "SERVICE_ACCOUNT_EMAIL", "client_id": "CLIENT_ID", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL" }
鍵ファイルは、サービス アカウントとしての認証で使用できるため、安全な場所に保管してください。このファイルは任意の場所に移動できます。名前の変更も可能です。
サービス アカウント キー ファイルを使用すると、アプリケーションをサービス アカウントとして認証できます。
gcloud
gcloud iam service-accounts keys create
コマンドを実行して、サービス アカウント キーを作成します。次の値を置き換えます。
KEY_FILE
: 秘密鍵の新しい出力ファイルのパス(例:~/sa-private-key.json
)。SA_NAME
: 鍵を作成するサービス アカウントの名前。PROJECT_ID
: Google Cloud プロジェクト ID。
gcloud iam service-accounts keys create KEY_FILE \ --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
出力:
created key [e44da1202f82f8f4bdd9d92bc412d1d8a837fa83] of type [json] as [/usr/home/username/KEY_FILE] for [SA_NAME@PROJECT_ID.iam.gserviceaccount.com]
これで、マシンにサービス アカウント キーファイルがダウンロードされました。鍵ファイルをダウンロードした後、再度ダウンロードすることはできません。
ダウンロードされる鍵の形式は次のとおりです。ここで
PRIVATE_KEY
は公開鍵 / 秘密鍵ペアの非公開部分です。{ "type": "service_account", "project_id": "PROJECT_ID", "private_key_id": "KEY_ID", "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n", "client_email": "SERVICE_ACCOUNT_EMAIL", "client_id": "CLIENT_ID", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL" }
鍵ファイルは、サービス アカウントとしての認証で使用できるため、安全な場所に保管してください。このファイルは任意の場所に移動できます。名前の変更も可能です。
サービス アカウント キー ファイルを使用すると、アプリケーションをサービス アカウントとして認証できます。
C++
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM C++ API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
C#
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM C# API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Go
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Go API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Java
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Python
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
REST
projects.serviceAccounts.keys.create
メソッドは、サービス アカウントのキーを作成します。リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID
: Google Cloud プロジェクト IDプロジェクト ID は英数字からなる文字列です(例:my-project
)。SA_NAME
: 鍵を作成するサービス アカウントの名前。KEY_ALGORITHM
: 省略可。鍵に使用する鍵アルゴリズム。デフォルトは、2,048 ビットの RSA 鍵です(変更されることがあります)。使用できるすべての値のリストについては、ServiceAccountKeyAlgorithm
リファレンスをご覧ください。
HTTP メソッドと URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys
リクエストの本文(JSON):
{ "keyAlgorithm": "KEY_ALGORITHM" }
リクエストを送信するには、次のいずれかのオプションを展開します。
レスポンスにはサービス アカウント キーが含まれています。返される鍵の形式は次のとおりです。ここで
ENCODED_PRIVATE_KEY
は、公開鍵 / 秘密鍵ペアの非公開部分であり、Base64 でエンコードされています。{ "name": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID", "privateKeyType": "TYPE_GOOGLE_CREDENTIALS_FILE", "privateKeyData": "ENCODED_PRIVATE_KEY", "validAfterTime": "DATE", "validBeforeTime": "DATE", "keyAlgorithm": "KEY_ALG_RSA_2048" }
サービス アカウントとして認証するために使用する鍵ファイルを作成するには、秘密鍵データをデコードし、ファイルに保存します。
Linux
次のコマンドを実行します。
echo 'ENCODED_PRIVATE_KEY' | base64 --decode > PATH
PATH
は、鍵を保存するファイルのパスで置き換えます。ファイル拡張子に.json
を使用します。macOS
次のコマンドを実行します。
echo 'ENCODED_PRIVATE_KEY' | base64 --decode > PATH
PATH
は、鍵を保存するファイルのパスで置き換えます。ファイル拡張子に.json
を使用します。PowerShell
エンコードされた秘密鍵データ(
ENCODED_PRIVATE_KEY
)をファイルに保存します。certutil
を使用して、ファイルをデコードします。certutil -decode ENCODED_FILE DECODED_FILE
次の値を置き換えます。
ENCODED_FILE
: エンコードされた秘密鍵データを含むファイルのパス。DECODED_FILE
: 鍵を保存するファイルのパス。ファイル拡張子に.json
を使用します。
鍵データは、サービス アカウントとしての認証で使用されるため、安全な場所に保管してください。
サービス アカウント キー ファイルを使用すると、アプリケーションをサービス アカウントとして認証できます。
サービス アカウント キーを削除する
サービス アカウント キーを完全に削除すると、そのキーを使用して Google API で認証できなくなります。
キーの削除を取り消すことはできません。キーを削除する前にキーを無効にして、そのキーが不要になるまで待つことをおすすめします。その後、キーを削除できます。
サービス アカウント キーを定期的にローテーションすることをおすすめします。サービス アカウント キーのローテーションの詳細については、サービス アカウント キーのローテーションをご覧ください。
コンソール
- Google Cloud コンソールで、[サービス アカウント] ページに移動します。
残りの手順は、Google Cloud コンソールに表示されます。
- プロジェクトを選択します。
- [サービス アカウント] ページで、キーを削除するサービス アカウントのメールアドレスをクリックします。
- [キー] タブをクリックします。
- キーの一覧で、削除するキーの [削除] をクリックします。
gcloud
gcloud iam service-accounts keys delete
コマンドを実行して、サービス アカウント キーを削除します。次の値を置き換えます。
KEY_ID
: 削除する鍵の ID。鍵の ID を確認するには、サービス アカウントのすべての鍵を一覧表示し、削除する鍵を特定して、その ID をコピーします。SA_NAME
: 鍵が属するサービス アカウントの名前。PROJECT_ID
: Google Cloud プロジェクト ID。
gcloud iam service-accounts keys delete KEY_ID \ --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
出力:
Deleted key [KEY_ID] for service account [SA_NAME@PROJECT_ID.iam.gserviceaccount.com]
C++
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM C++ API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
C#
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM C# API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Go
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Go API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Java
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Python
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
REST
projects.serviceAccounts.keys.delete
メソッドはサービス アカウント キーを削除します。リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID
: Google Cloud プロジェクト IDプロジェクト ID は英数字からなる文字列です(例:my-project
)。SA_NAME
: キーを削除するサービス アカウントの名前。KEY_ID
: 削除するキーの ID。 キーの ID を確認するには、サービス アカウントのすべてのキーを一覧表示して、削除するキーを特定し、name
の末尾にある ID をコピーします。keys/
より後のすべての部分がキーの一意の ID になります。
HTTP メソッドと URL:
DELETE https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys/KEY_ID
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ }
次のステップ
- サービス アカウント キーの一覧表示と取得の方法を確認する。
- 独自の公開サービス アカウント キーをアップロードする方法を確認する。
- サービス アカウント キーの管理に関するベスト プラクティスを理解する。
- サービス アカウント キーによる認証の代替手段を確認する。
使ってみる
Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
無料で開始特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-05 UTC。