web-dev-qa-db-ja.com

サーバー上のgcloudでGOOGLE_APPLICATION_CREDENTIALSを使用する方法

GCE外のサービスアカウントでgcloudコマンドラインを非対話的に使用する最も簡単な方法は何ですか?クレデンシャルファイルでファイルシステムを散らかさないでください。これはgcloud auth activate-service-account --key-file=...が行うことです。

サービスアカウントでgcloudを使用する多くのユースケースがあります。たとえば、サーバーで、アプリケーションを実行する前に、GOOGLE_APPLICATION_CREDENTIALSが正しく設定され、必要な権限があることをテストしたいと思います。または、gcloudコマンドラインでいくつかのチェックを実行するいくつかのセットアップスクリプトまたはcronスクリプトを実行したいと思います。

Google Cloudライブラリ(例 pythonJava )は自動的に環境変数GOOGLE_APPLICATION_CREDENTIALSを使用してGoogle Cloudへの認証を行います。しかし、残念ながら、このコマンドラインはgcloudに影響を与えないようです。ファイルシステムをそのままにしてgcloudを使用するクリーンな方法は何ですか?

$ GOOGLE_APPLICATION_CREDENTIALS=/etc/my-service-account-4b4b6e63aaed.json gcloud alpha pubsub topics publish testtopic hello
ERROR: (gcloud.alpha.pubsub.topics.publish) You do not currently have an active account selected.
Please run:

  $ gcloud auth login

to obtain new credentials, or if you have already logged in with a
different account:

  $ gcloud config set account ACCOUNT

to select an already authenticated account to use.
11
yonran

gcloudは通常、GOOGLE_APPLICATION_CREDENTIALS環境変数を使用しません。 gcloud auth application-default [login|revoke|print-access-token...]でこれらのアプリケーションのデフォルト認証情報を簡単に設定できるコマンドがいくつかあります。

デフォルトでは、gcloudはその構成を$ {HOME} /。config/gcloudに保存します。 CLOUDSDK_CONFIG環境変数を設定することにより、その場所を上書きすることが可能です。

また、ほとんどの設定をオーバーライドして、(面倒ではありますが)gcloud config set ...gcloud auth activate-service-accountを使用して事前設定する必要がないようにすることもできます。設定ごとに環境変数を指定できます。

たとえば、サービスアカウントキーファイルを使用しようとした同等のコマンドは次のようになります。

$ CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=/etc/my-service-account-4b4b6e63aaed.json \
    gcloud alpha pubsub topics publish testtopic hello

これは、アクセストークンをキャッシュする必要があるため、CLOUDSDK_CONFIGに資格情報をキャッシュするため、呼び出しのたびに更新する必要がないことに注意してください。

あなたのユースケースでは、私の見解では最良のオプションは

  1. CLOUDSDK_CONFIGを一時ディレクトリに設定します
  2. gcloud auth activate-service-account --key-file=...
  3. ... gcloudを使用して作業を行います...
  4. Temp CLOUDSDK_CONFIGディレクトリを削除します。
20
cherba

1)GCP IAMでServiceAccountを作成します。 [新しい秘密鍵の提供]チェックボックスをオンにし、ファイルタイプとしてJSONを選択します。

2)JSONファイルをサーバーにダウンロードし、次のように入力します:gcloud auth activate-service-account --key-file serviceaccount.json

3)gcloud auth listを実行して、認証情報が適用されたことを確認します。

1
Shane Ramey

--accountオプション?お気に入り

$gcloud --account="foo" ...

参照

「できれば資格情報ファイルでファイルシステムを散らかさないこと」については、それが可能かどうかはわかりません。

1
Donald Duck