2017-05-31 12 views
1

Google Cloudサービスアカウントの秘密鍵を生成してダウンロードするコードを作成しています。IAMサービスアカウントの鍵とGoogle資格情報ファイル

IAM APIを使用すると、create a service accountにアクセスできました。generate a keyへの呼び出しが機能しているようです。私は

{ 
    "privateKeyType": "TYPE_GOOGLE_CREDENTIALS_FILE", 
    "privateKeyData": "random-key-stringkajdkjakjfke", ... 
} 

のように、IAM API create key pageに記載されているように、私はJSONレスポンスとしてこのファイルをダウンロードしたバックサービスアカウントキーを取得し、それを使用して認証しようとしています:

gcloud auth activate-service-account --key-file=service-account-key-file.json 

は、残念ながら、私はエラーを取得します The .json key file is not in a valid format.

を述べ、私はGoogleクラウドコンソールの流れかかわら行くと(IAM &管理 - >サービスアカウント - > ... - >キー作成 - >作成します)私が見えダウンロードJSONファイルを取得しますlike

{ 
    "type": "service_account", 
    "private_key": "----BEGIN-PRIVATE-KEY-----", 
    "auth_uri": "https://gaiastaging.corp.google.com/o/oauth2/auth", 
} 

このファイルは、IAM APIからの応答とはまったく異なります。私のエラーを説明する!残念ながら、このフォーマットはどこにも記述されていないようです。それは一部で簡潔に言及したdocs。 Google Credentialsファイルですか?

IAM応答ファイル/ JSONを取得して、2番目の資格ファイルに変換したいと考えています。私はそれを変換するいくつかのコードを記述しようとしましたが、私が理解していない"auth_provider_x509_cert_url"のようないくつかのフィールドがあります。

ファイルを変換するのは間違ったアプローチですか?より一般的には:

ファイルを生成してgcloudで認証するにはどうすればよいですか?

上記の両方のファイルをどのように記述/区別する必要がありますか?それぞれのタイプのファイルはなぜ有用なのですか?二つのファイルについて

答えて

1

、Googleの資格情報をファイルとサービスアカウント認証情報ファイルは同じものです - 彼らは私がGoogleクラウドコンソールのページからダウンロードしたファイルの2種類の両方です。彼らのページには素晴らしい公式ドキュメントはありませんが、多くの人が参考にしています。おそらくApplication Default Credentialsです。

IAM create呼び出しからのJSON応答 - これはAPI呼び出しに対する単なる応答です。アプリケーションコードで解析する以外には役に立ちません。

、Googleの資格情報ファイルを生成するには:作成IAMにJSONレスポンスでは

を、フィールドprivateKeyDataがあります。このフィールドは実際にはには、Google資格情報ファイルがすべて含まれています。これはちょうどbase64文字列としてエンコードされています。

:で(Linux上)私はちょうど

<a href="data:attachment/json;base64;charset=utf-8,THAT-LONG-privateKeyData-base64-string-here" download="service-account-key.json"> 
    Download key 
</a> 

としてHTMLからファイルをダウンロードまたはあなたはそれがすぐにすべての情報が含まれていることを確認したい場合は、コピーがファイルgoogle-credentialsにbase64でprivateKeyDataフィールドを貼り付け、それをデコード

base64 -d google-credentials 

私はその後

gcloud auth activate-service-account --key-file=google-credentials.json 

を実行することができたと

を得ました
Activated service account credentials for: [[email protected]] 
+0

ありがとうございます。これは知っておいて嬉しいです。 –

関連する問題