サービス アカウント キーをアップロードする

このページでは、サービス アカウントの公開鍵をアップロードする方法について説明します。公開鍵をアップロードすると、鍵ペアの秘密鍵を使用してサービス アカウントとして認証できます。

始める前に

必要なロール

サービス アカウント キーのアップロードに必要な権限を取得するには、プロジェクトまたは鍵を管理するサービス アカウントに対してサービス アカウント キー管理者roles/iam.serviceAccountKeyAdmin)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセスの管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

詳しくは、サービス アカウントのロールをご覧ください。

IAM の基本ロールには、サービス アカウント キーを管理するための権限も含まれています。本番環境では基本ロールを付与すべきではありません。基本ロールは、開発環境またはテスト環境で付与してください。

サービス アカウントの公開鍵をアップロードする

ユーザーが管理する鍵ペアの公開鍵の部分をアップロードして、サービス アカウントに関連付けることができます。公開鍵をアップロードすると、鍵ペアの秘密鍵をサービス アカウント キーとして使用できます。

アップロードする鍵は、X.509 v3 証明書でラップされ、base64 でエンコードされた RSA 公開鍵である必要があります。OpenSSL などのツールを使用して、この形式の鍵と証明書を生成できます。

X.509 証明書に個人情報を含めないでください。一般的なサブジェクトを使用してください。また、省略可能な属性は追加しないでください。証明書は一般公開されています。証明書に含まれる個人情報は、証明書を取得するすべての人に開示されます。詳しくは、アップロードされる X.509 証明書に機密情報を含めないをご覧ください。

たとえば、次のコマンドは 2,048 ビットの RSA 鍵ペアを生成し、公開鍵を 365 日間有効な自己署名証明書にラップします。

openssl req -x509 -nodes -newkey rsa:2048 -days 365 \
    -keyout /path/to/private_key.pem \
    -out /path/to/public_key.pem \
    -subj "/CN=unused"

その後、サービス アカウントの公開鍵として public_key.pem ファイルをアップロードできます。

コンソール

  1. Google Cloud コンソールで [サービス アカウント] ページに移動します。

    [サービス アカウント] に移動

    残りの手順は Google Cloud コンソールに自動的に表示されます。

  2. プロジェクトを選択します。
  3. [サービス アカウント] ページで、キーをアップロードするサービス アカウントのメールアドレスをクリックします。
  4. [キー] タブをクリックします。
  5. [鍵を追加] プルダウン メニューをクリックして、[既存の鍵をアップロード] を選択します。
  6. [参照] をクリックし、公開鍵ファイルを見つけて選択します。または、[既存の鍵を貼り付け] ボックスに公開鍵の内容をコピーして貼り付けることもできます。
  7. [アップロード] をクリックします。

gcloud

gcloud iam service-accounts keys upload コマンドを実行して、サービス アカウント キーに署名するための公開鍵をアップロードします。

次の値を置き換えます。

  • KEY_FILE: アップロードする鍵データを含むファイルのパス(./public_key.pem など)。
  • SA_NAME: 鍵をアップロードするサービス アカウントの名前。
  • PROJECT_ID: Google Cloud プロジェクト ID。
gcloud iam service-accounts keys upload KEY_FILE \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

アップロードした鍵の固有識別子が出力されます。

Name: projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0

コマンドが成功したかどうかを確認するには、gcloud iam service-accounts keys list コマンドを実行します。

gcloud iam service-accounts keys list \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

次のように、出力にはキーの作成後に返された固有識別子が含まれます。

KEY_ID CREATED_AT EXPIRES_AT DISABLED
c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0 2019-06-26T21:01:42Z 9999-12-31T23:59:59Z  

REST

projects.serviceAccounts.keys.upload メソッドは、ユーザーが管理する鍵ペアから公開鍵をアップロードし、この鍵をサービス アカウントに追加します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。
  • SA_NAME: 鍵を関連付けるサービス アカウントの名前。
  • PUBLIC_KEY_DATA: 鍵ペアの公開鍵データ。X.509 v3 証明書でラップされた RSA 公開鍵である必要があります。最初の行(-----BEGIN CERTIFICATE-----)と最後の行(-----END CERTIFICATE-----)を含め、公開鍵データを base64 でエンコードします。

HTTP メソッドと URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys:upload

リクエストの本文(JSON):

{
  "publicKeyData": "PUBLIC_KEY_DATA"
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0",
  "validAfterTime": "2020-05-17T19:31:19Z",
  "validBeforeTime": "2021-05-17T19:31:19Z",
  "keyAlgorithm": "KEY_ALG_RSA_2048",
  "keyOrigin": "USER_PROVIDED",
  "keyType": "USER_MANAGED"
}

公開鍵のアップロードを無効にする

プロジェクトのキーのアップロードを無効にする方法については、サービス アカウント キーのアップロードを制限するをご覧ください。

次のステップ

使ってみる

Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。

無料で開始