`gcloud` 和 ADC 凭证可以互换吗?

问题描述 投票:0回答:1

我最近正在积极使用

terraform
和 GCP。但为了
terraform
工作,我需要:

gcloud auth application-default login

对于

gcloud
(我偶尔需要执行
gcloud
命令):

gcloud auth login

这两种身份验证方式看起来非常相似。是否可以以某种方式将

application_default_credentials.json
转换为
credentials.db
或反之亦然?

google-cloud-platform gcloud
1个回答
0
投票

事实上他们是。

确保您同时完成了这两件事:

$ gcloud auth login
$ gcloud auth application-default login

$ gcloud auth login --update-adc

完成后,您有 2 个相关文件:

~/.config/gcloud/application_default_credentials.json  # ADC
~/.config/gcloud/credentials.db                        # gcloud

将它们复制到临时目录:

$ cd `mktemp -d`
$ cp ~/.config/gcloud/application_default_credentials.json \
     ~/.config/gcloud/credentials.db \
     .

credentials.db
创建
application_default_credentials.json
,反之亦然(用您的数据替换
EMAIL
PROJECT_ID
):

$ docker run --rm -itv "$PWD:/app" -w /app alpine:3.19 sh -euc "
    apk add sqlite jq
    sqlite3 credentials.db \"select value from credentials\" \
        | jq \"{client_id, client_secret, refresh_token, type}\" \
            > application_default_credentials2.json
    sqlite3 credentials2.db \"CREATE TABLE credentials (account_id TEXT PRIMARY KEY, value BLOB)\"
    sqlite3 credentials2.db \"INSERT INTO credentials (account_id, value) VALUES ('EMAIL', CAST(readfile('application_default_credentials.json') AS TEXT))\"
    # sqlite3 credentials2.db \"INSERT INTO credentials (account_id, value) VALUES ('EMAIL', '\`cat application_default_credentials.json\`')\"
"

然后尝试使用生成的文件(

credential2.db
application_default_credentials2.json
):

$ docker run -v "$PWD:/app" -w /app google/cloud-sdk:457.0.0-alpine sh -euc '
    cp application_default_credentials2.json \
       ~/.config/gcloud/application_default_credentials.json
    gcloud auth application-default print-access-token
'
$ docker run -v "$PWD:/app" -w /app google/cloud-sdk:457.0.0-alpine sh -euc '
    cp credentials2.db ~/.config/gcloud/credendials.db
    gcloud config set account EMAIL
    gcloud config set project PROJECT_ID
    gcloud auth print-access-token
    gcloud compute instances list
'

更多信息这里

© www.soinside.com 2019 - 2024. All rights reserved.