【问题标题】:Is there a way to impersonate a service account with the cloudsql_proxy executable?有没有办法用 cloudsql_proxy 可执行文件模拟服务帐户?
【发布时间】:2021-11-01 01:59:54
【问题描述】:

https://github.com/GoogleCloudPlatform/cloudsql-proxy

我发现这可以通过使用以下命令设置模拟系统范围来实现:gcloud config set auth/impersonate_service_account <MY_SERVICE_ACCOUNT>

代理 exe 似乎读取了 gcloud 配置。

但这真的很笨重。我想启动代理并指定要模拟的特定用户,而无需在系统范围内更改它。另外,我不会求助于生成不会过期的 json 密钥——我想使用模拟。

许多 Gcloud 命令现在支持对此进行特定开关,但代理 exe 不支持。请参阅此 GitHub 问题(谷歌没有回复):https://github.com/GoogleCloudPlatform/cloudsql-proxy/issues/417

我可以运行gcloud auth print-access-token --impersonate-service-account=<MY_SERVICE_ACCOUNT> 并设置一个代理 exe 将获取的环境变量或其他什么吗?

除了提到 gcloud 之外,我在代码中找不到任何内容:https://github.com/GoogleCloudPlatform/cloudsql-proxy/blob/eca37935e7cd54efcd612c170e46f45c1d8e3556/cmd/cloud_sql_proxy/cloud_sql_proxy.go#L160

  • 本地安装gcloud命令行工具时 机器 “活动帐户”用于身份验证。运行“gcloud auth list”查看 哪些帐户安装在您的本地计算机上,以及 'gcloud config list account' 查看活动帐户。

这很有趣,因为在运行 auth/impersonate_service_account gcloud config list account 时并没有说明任何内容。

有没有办法让 Gcloud 在每个会话的基础上进行模拟?

编辑:只是为了跟进,根据答案 --token 完全有效,所以现在我可以使用 IAM 身份验证和模拟 gsa 同时运行代理:

# start proxy with IAM login as a GSA with a cloud sql service account setup
./cloud_sql_proxy \
    -enable_iam_login \
    -dir=/var/run/cloudsql \
    -instances=project_id:region:instance_name \
    --token=$(gcloud auth print-access-token --impersonate-service-account='my-gsa@myco.iam.gserviceaccount.com')

# now can auth through proxy as cloud sql federated user 
psql "sslmode=disable \
    host='/var/run/cloudsql/project_id:region:instance_name' \
    user=my-gsa@myco.iam dbname=mydb"

【问题讨论】:

    标签: google-cloud-platform gcloud google-cloud-sql cloud-sql-proxy


    【解决方案1】:

    我用--token 参数发现了这个技巧

    cloud_sql_proxy --instances=<instanceName>=tcp:3306 \
      --token=$(gcloud auth print-access-token --impersonate-service-account=<service account>)
    

    【讨论】:

    • 是的,完美!我也在我的帖子中添加了关于 iam auth 的注释
    • @red888 - 如果您担心使用凭证文件,那么此解决方案将有效,但更加不安全。 CLI 将凭据存储在众所周知的位置。此外,CLI auth 应用程序默认登录凭据是 user account 凭据。您应该只使用具有 Cloud SQL 身份验证代理的服务帐号(配额限制)。不要在生产系统上预先授权 CLI,例如登录会话后,撤销凭据。在此设置中,黑客不仅可以玩弄用户凭据,而且还可以冒充其他凭据。
    猜你喜欢
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    相关资源
    最近更新 更多