gcloud CLI を使用すると、デベロッパーは、サービス アカウント(ロボット アカウント)で認証するために秘密鍵を使用できます。このページでは、Google Cloud のサービス アカウントの p12 鍵を作成して使用する方法について説明します。
pyca/cryptography をインストールする
pyca/cryptography ライブラリ(バージョン >= 2.5
)を使用すると、 ツールでサービス アカウントを識別する p12 形式の鍵ファイルをデコードできます。pyca/cryptography には暗号ルーチンが含まれているため、gcloud CLI では配布されません。
システムに pip
(Python パッケージ インデックスのコマンドライン インターフェース)がインストールされている場合は、pyca/cryptography
をインストールして、次のコマンドを実行します。
詳細については、インストール手順をご覧ください。
python -m pip install cryptography
CLOUDSDK_PYTHON_SITEPACKAGES=1
pyca/cryptography をインストールしたら、CLOUDSDK_PYTHON_SITEPACKAGES
環境変数を 1
に設定する必要があります。この環境変数を設定すると、gcloud CLI に、追加するライブラリを独自の google-cloud-sdk/lib
ディレクトリの外から探すように指示します。通常は、CLOUDSDK_PYTHON_SITEPACKAGES=1
の設定によって問題が起こることはありませんが、問題が起こった場合は設定を元に戻してください。
サービス アカウントを作成する
新しいサービス アカウントを作成して p12 鍵ファイルをダウンロードするには、サービス アカウント キーの作成の手順に従います。
この鍵ファイルは秘密扱いにする必要があります。第三者に見られないように適切な対策を講じてください。Unix 系のシステムでは、次のコマンドを使用すると、リモート接続している他のユーザー(root 以外のユーザー)にファイルが表示されなくなります。
chmod 0600 YOUR_KEY_FILE.p12
gcloud CLI でサービス アカウントを使用する
サービス アカウントの認証情報を有効にするには、gcloud auth activate-service-account
を使用します。
gcloud CLI でサービス アカウントを使用するには、gcloud auth activate-service-account
を実行します。その際、必須の --key-file
フラグを使用して鍵ファイルのパスを渡し、位置引数としてアカウントを指定します。
アカウントには、Google Cloud コンソールに表示されるサービス アカウントのメールアドレスを使用する必要があります。ただし、ここで指定するアカウントは検証されるわけではなく、いずれのアカウントを使用しているかがわかるようになるだけです。
gcloud auth activate-service-account --key-file ~/mykeys/my_key_file.p12 my_service_account@developer.gserviceaccount.com Activated service account credentials for my_service_account@developer.gserviceaccount.com.
警告: gcloud auth activate-service-account
を実行すると、秘密鍵のコピーが作成されて、$HOME/.config/gcloud/legacy_credentials/my_service_account@developer.gserviceaccount.com/private_key.p12
と $HOME/.config/gcloud/credentials.db
に保存されます。秘密鍵のコピーは、0600
権限(自分以外は読み取りも書き込みもできない)で作成されます。$HOME/.config/gcloud
に保存されているすべての内容がすでに秘密扱いになっている必要があります。gcloud CLI によって保存されている認証データを信頼できる方法で確実に削除するには、$HOME/.config/gcloud
を削除する必要があります。Google Cloud コンソールからダウンロードした鍵ファイルの安全は、ユーザーが確保する必要があります。疑わしい場合は、Google Cloud コンソールで鍵を取り消してください。
サービス アカウントが有効になると、認証情報の一覧で確認できるようになります。
gcloud auth list Credentialed Accounts ACTIVE ACCOUNT * my_service_account@developer.gserviceaccount.com To set the active account, run: $ gcloud config set account my_service_account@developer.gserviceaccount.com