サービス アカウントキーの作成と管理

このページでは、Google Cloud Identity and Access Management API、Google Cloud Platform Console、gcloud コマンドライン ツールを使用してサービス アカウント キーを作成し、管理する方法について説明します。

このガイドの前提条件

サービス アカウント キーの作成

Google Cloud Platform の外(他のプラットフォームまたはオンプレミス)でサービス アカウントを使用するには、サービス アカウントの ID を確立する必要があります。それには、公開鍵 / 秘密鍵のペアを使用します。

サービス アカウント キーを作成するには、serviceAccounts.keys.create() メソッド、GCP コンソール、または gcloud ツールを使用します。

サービス アカウント キーを作成すると、新しい公開鍵 / 秘密鍵のペアが生成され、マシンにダウンロードされます。これは秘密鍵の唯一のコピーとして機能します。この秘密鍵は、お客様の責任で安全に保管する必要があります。Google は、すべてのサービス アカウントのすべての公開鍵に誰でもアクセスできるようにしており、秘密鍵を使って作成された署名の検証に公開鍵を使用できます。公開鍵は次の URL で公開されています。

  • x.509 証明書: https://www.googleapis.com/service_accounts/v1/metadata/x509/[SERVICE_ACCOUNT]@[PROJECT_ID].iam.gserviceaccount.com
  • JSON ウェブキー(JWK): https://www.googleapis.com/service_accounts/v1/jwk/[SERVICE_ACCOUNT]@[PROJECT_ID].iam.gserviceaccount.com
  • RAW エンドポイント: https://www.googleapis.com/service_accounts/v1/metadata/raw/[SERVICE_ACCOUNT]@[PROJECT_ID].iam.gserviceaccount.com

ここで、[SERVICE_ACCOUNT] はサービス アカウント名、[PROJECT-ID] は Google Cloud Platform プロジェクトの ID です。[SERVICE_ACCOUNT]@[PROJECT_ID].iam.gserviceaccount.com 文字列は、Google Cloud Platform Console の [サービス アカウント] ページで取得できます。

サービス アカウントのメールアドレスをメモし、サービス アカウントの秘密鍵ファイルをアプリケーションからアクセス可能な場所に安全に保管してください。これらは、アプリケーションが認証 API 呼び出しを実行する際に必要となります。

privateKeyData は、JSON または P12 キー / 認証情報を base64 エンコードの文字列表現で返すことに注意してください。

gcloud


サービス アカウント キーを作成するには、以下のコマンドを実行します。

gcloud iam service-accounts keys create \
    ~/key.json \
    --iam-account my-sa-123@my-project-123.iam.gserviceaccount.com

このコマンドの出力は次のようになります。

created key [e44da1202f82f8f4bdd9d92bc412d1d8a837fa83] of type [json] as
[/usr/local/google/home/alice/key.json] for
[my-sa-123@my-project-123.iam.gserviceaccount.com]

API


リクエスト:

POST https://iam.googleapis.com/v1/{projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com/keys}

レスポンス:

{
    "name":"projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com/keys/90c48f61c65cd56224a12ab18e6ee9ca9c3aee7c",
    "privateKeyType": "GOOGLE_AUTH_FILE",
    "privateKeyData":"MIIJqAIB . . .",
    "validAfterTime": "2016-01-25T18:38:09.000Z"
}

CONSOLE


  1. GCP Console で [IAM と管理] ページを開きます。

    [IAM と管理] ページを開く

  2. プロジェクトを選択し、[続行] をクリックします。

  3. 左側のナビゲーション メニューで [サービス アカウント] をクリックします。

  4. キーを作成するサービス アカウントを見つけ、その行の丸が縦に並んだボタンをクリックして、[キーを作成] をクリックします。

  5. [キーのタイプ] を選択して、[作成] をクリックします。

サービス アカウント キーの一覧表示

サービス アカウントのサービス アカウント キーを一覧表示するには、serviceAccount.keys.list() メソッド、GCP Console、および gcloud ツールを使用します。

serviceAccount.keys.list() メソッドは、サービス アカウントとキーを監査したり、サービス アカウント管理用のカスタムツールを作成したりするために広く使用されています。

キーがどのプロジェクトに所属するかを確認するには、キーを JSON ファイルとしてダウンロードし、そのファイルの内容を確認します。

gcloud


サービス アカウント キーの一覧を表示するには、以下のコマンドを実行します。

gcloud iam service-accounts keys list \
    --iam-account my-sa-123@my-project-123.iam.gserviceaccount.com

このコマンドの出力は次のようになります。

KEY_ID CREATED_AT EXPIRES_AT
8e6e3936d7024646f8ceb39792006c07f4a9760c 2016-01-26T21:01:42.000Z 2026-01-23T21:01:42.000Z
937c98f870f5c8db970af527aa3c12fd88b1c20a 2016-01-26T20:55:40.000Z 2026-01-23T20:55:40.000Z

API


リクエスト:

POST https://iam.googleapis.com/v1/projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com/keys

レスポンス:

{
    "keys": [
    {
        "name": "projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com/keys/90c48f61c65cd56224a12ab18e6ee9ca9c3aee7c",
        "validAfterTime": "2016-01-25T18:38:09.000Z",
        "validBeforeTime": "2026-01-22T18:38:09.000Z"
    },
    {
        "name": "projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com/keys/e5e3800831ac1adc8a5849da7d827b4724b1fce8",
        "validAfterTime": "2016-01-25T13:43:27.000Z",
        "validBeforeTime": "2016-01-26T13:43:27.000Z"
    },
    {
        "name": "projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com/keys/b97699f042b8eee6a846f4f96259fbcd13e2682e",
        "validAfterTime": "2016-01-26T13:28:27.000Z",
        "validBeforeTime": "2016-01-27T13:28:27.000Z"
    }
    ]
}

CONSOLE


  1. GCP Console で [IAM と管理] ページを開きます。

    [IAM と管理] ページを開く

  2. プロジェクトを選択し、[続行] をクリックします。

  3. 左側のナビゲーション メニューで [サービス アカウント] をクリックします。すべてのサービス アカウントと対応するキーが一覧表示されます。

サービス アカウント キーの削除

サービス アカウント キーを削除するには、serviceAccount.keys.delete() メソッド、GCP Console、gcloud ツールを使用します。

サービス アカウント キーを削除すると、アプリケーションはそのキーを使用して Cloud Platform リソースにアクセスできなくなります。セキュリティの観点から推奨されるベスト プラクティスは、サービス アカウント キーを定期的にローテーションする方法です。キーをローテーションするには、新しいキーを作成し、新しいキーを使用するようにアプリケーションを切り替えてから、古いキーを削除します。serviceAccount.keys.create() メソッドと serviceAccount.keys.delete() メソッドを組み合わせて使用すると、ローテーションを自動化できます。

gcloud


サービス アカウント キーを削除するには、次のコマンドを実行します。

gcloud iam service-accounts keys delete \
    8e6e3936d7024646f8ceb39792006c07f4a9760c \
    --iam-account my-sa-123@my-project-123.iam.gserviceaccount.com

このコマンドの出力は次のようになります。

deleted key [8e6e3936d7024646f8ceb39792006c07f4a9760c] for service account [my-sa-123@my-project-123.iam.gserviceaccount.com]

API


リクエスト:

DELETE https://iam.googleapis.com/v1/{name=projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com/keys/e5e3800831ac1adc8a5849da7d827b4724b1fce8}

CONSOLE


  1. GCP Console で [IAM と管理] ページを開きます。

    [IAM と管理] ページを開く

  2. プロジェクトを選択し、[続行] をクリックします。

  3. 左側のナビゲーション メニューで [サービス アカウント] をクリックします。すべてのサービス アカウントと対応するキーが一覧表示されます。

  4. 削除するサービス アカウント キーの上にマウスポインタを移動します。削除アイコンをクリックしてキーを削除します。

フィードバックを送信...

Cloud Identity and Access Management のドキュメント