red*_*888 4 google-cloud-sql google-cloud-platform gcloud cloud-sql-proxy
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"
Run Code Online (Sandbox Code Playgroud)
--token我用参数发现了这个技巧
cloud_sql_proxy --instances=<instanceName>=tcp:3306 \
--token=$(gcloud auth print-access-token --impersonate-service-account=<service account>)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2056 次 |
| 最近记录: |