このページでは、サービス アカウントの公開鍵をアップロードする方法について説明します。公開鍵をアップロードすると、鍵ペアの秘密鍵を使用してサービス アカウントとして認証できます。
始める前に
Enable the IAM API.
サービス アカウント認証情報について理解する。
必要なロール
サービス アカウント キーのアップロードに必要な権限を取得するには、プロジェクトまたは鍵を管理するサービス アカウントに対してサービス アカウント キー管理者(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
ファイルをアップロードできます。
コンソール
- Google Cloud コンソールで [サービス アカウント] ページに移動します。
残りの手順は Google Cloud コンソールに自動的に表示されます。
- プロジェクトを選択します。
- [サービス アカウント] ページで、キーをアップロードするサービス アカウントのメールアドレスをクリックします。
- [キー] タブをクリックします。
- [鍵を追加] プルダウン メニューをクリックして、[既存の鍵をアップロード] を選択します。
- [参照] をクリックし、公開鍵ファイルを見つけて選択します。または、[既存の鍵を貼り付け] ボックスに公開鍵の内容をコピーして貼り付けることもできます。
- [アップロード] をクリックします。
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 分を差し上げます。
無料で開始