2017-05-31 102 views
1

我正在編寫代碼以生成並下載Google Cloud服務帳戶的私鑰。IAM服務帳戶密鑰vs Google憑證文件

使用IAM API,我能夠create a service account,並且我呼叫generate a key似乎正在工作。我得到一個服務帳戶Key作爲對IAM API create key page描述,像

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

我下載此文件作爲一個JSON響應,我試圖用它來驗證:

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

不幸的是,我得到一個錯誤聲明 The .json key file is not in a valid format.

當我去雖然谷歌雲端控制檯流(IAM &管理 - >服務賬戶 - > - >創建密鑰 - >創建)我得到一個下載的JSON文件,看起來像

{ 
    "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並將其轉換爲第二個憑據文件。我試過編寫一些代碼來轉換它,但有一些字段,如"auth_provider_x509_cert_url",我不明白。

也許轉換文件也是錯誤的方法?更一般地說:

我該如何生成一個文件然後用它來驗證gcloud?

我應該如何描述/區分上述兩個文件?爲什麼每種類型的文件都有用?

回答

1

關於兩個文件:

一個谷歌認證檔案和服務帳戶憑據文件是相同的東西 - 他們都是第二類型的文件,我下載下來了谷歌雲端控制檯頁面。他們沒有很好的官方文檔頁面,但他們被引用了很多。可能還有應用程序默認憑證。

來自IAM創建調用的JSON響應 - 這只是對API調用的響應。除了使用應用程序代碼解析它之外,它沒有用。

要生成一個谷歌認證檔案:

在JSON響應IAM創建,有一個領域privateKeyData。該字段實際上包含整個Google Credentials文件,其中包含。它只是編碼爲base64字符串。我剛剛下載從HTML文件作爲

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

或者,如果你只是想確認,它很快包含了所有的信息,請將該Base64 privateKeyData場粘貼到文件google-credentials,並對其進行解碼(在Linux上):

base64 -d google-credentials 

當時我能夠運行

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

,並得到

Activated service account credentials for: [[email protected]] 
+0

謝謝,這是偉大的知道,並沒有在任何地方上線。 –

相關問題