【发布时间】:2020-07-01 17:08:59
【问题描述】:
TL;DR - 我可以通过使用我的应用程序默认凭据 (ADC) 模拟服务帐户 (SA) 来向 AutoML API 进行身份验证,还是我必须实际使用 SA 身份验证?
在对已部署模型进行批量预测时,我希望能够使用 ADC 向 AutoML API 进行身份验证。这仅出于开发目的,不会为每个开发人员和数据科学家创建新的 SA。我知道 AutoML 需要 SA 进行身份验证,所以我想使用 --impersonate-service-account 标志或 auth/impersonate_service_account 设置。我已按照此 Medium 帖子中的说明进行操作,但仍然收到有关使用最终用户凭据的错误。所以我的问题是,我只是做错了什么,还是 AutoML 必须使用真正的 SA 身份验证而不进行模拟?
gcloud config list 的输出是 -
[auth]
impersonate_service_account = abcdefghijklmnop@my-project.iam.gserviceaccount.com
[compute]
region = us-east1
zone = us-east1-b
[core]
account = first.last@domain.com
disable_usage_reporting = False
project = my-project
Your active configuration is: [default]
这是 AutoML 返回的错误 -
google.api_core.exceptions.PermissionDenied: 403 您的应用程序已使用来自 Google Cloud SDK 或 Google Cloud Shell 的最终用户凭据进行身份验证,这些凭据不受 automl.googleapis.com 支持。我们建议在 gcloud 中配置 billing/quota_project 设置或通过 auth/impersonate_service_account 设置使用服务帐户。有关服务帐户以及如何在您的应用程序中使用它们的更多信息,请参阅https://cloud.google.com/docs/authentication/。
来自 AutoML 文档 -
服务帐户是 AutoML API 唯一可用的身份验证选项。
谢谢,
扎克
【问题讨论】:
-
阅读这篇关于模拟服务帐户的文章。 jhanley.com/google-cloud-improving-security-with-impersonation
-
@JohnHanley 感谢您的评论和文章。在阅读您的文章的过程中,以下命令警告我我正在使用模拟。这向我证实了 AutoML 需要 SA 并且模拟不起作用。感谢您抽出宝贵时间提供帮助。 gcloud 项目 get-iam-policy [PROJECT-ID] \ --flatten="bindings[].members" \ --format='table(bindings.role)' \ --filter="bindings.members:[ACCOUNT] "
-
警告并不意味着那个。 CLI 会提醒您正在使用模拟。
-
好的,如果是这样,那么为什么模拟对上述命令有效,但对 AutoML 无效?我使用相同的设置来执行两者。
标签: google-cloud-platform service-accounts google-cloud-automl automl