自动允许未经身份验证的用户云运行实例

al *_*kaj 1 google-cloud-run

您好,我正在开发一个解决方案,该解决方案使用其 REST API 和 OAuth 作为为此目的创建的服务帐户来创建服务并将其部署到 Google 云运行。

我坚持将创建的服务公开提供。

我无法从 API 中找到--allow-unauthenticatedgcloud相同的相应参数。

我发现的唯一方法是在我想要公开访问的每个服务上手动添加allUsersCloud Run Invoker 。但是,我希望该服务帐户中的所有服务都可以自动公开访问。

我想知道是否有更好的(更自动的)方法来实现这一点。

提前致谢。

gui*_*ere 5

首先,您不能仅使用一个命令来执行此操作。您必须部署该服务,然后向所有用户授予该服务的权限。CLI 可以方便地为您完成这两个步骤。

\n

不管怎样,当你遇到这样的问题时,有一个有用的技巧:--log-http在你的 gcloud 命令中添加。像这样,您将看到 CLI 执行的所有 HTTP API 调用。

\n

如果您在部署新的 Cloud Run 服务时执行此操作,您将有大量线路,并且在某个时刻,您将拥有以下内容

\n
==== request start ====\nuri: https://run.googleapis.com/v1/projects/gbl-imt-homerider-basguillaueb/locations/us-central1/services/predict2:setIamPolicy?alt=json\nmethod: POST\n== headers start ==\nb\'Authorization\': --- Token Redacted ---\nb\'X-Goog-User-Project\': b\'gbl-imt-homerider-basguillaueb\'\nb\'accept\': b\'application/json\'\nb\'accept-encoding\': b\'gzip, deflate\'\nb\'content-length\': b\'98\'\nb\'content-type\': b\'application/json\'\nb\'user-agent\': b\'google-cloud-sdk gcloud/299.0.0 command/gcloud.run.deploy invocation-id/61070d063a604fdda8e87ad63777e3ae environment/devshell environment-version/None interactive/True from-script/False python/3.7.3 term/screen (Linux 4.19.112+\n)\'\n== headers end ==\n\xe2\xa0\xb9 Deploying new service...\n{"policy": {"bindings": [{"members": ["allUsers"], "role": "roles/run.invoker"}], "etag": "ACAB"}}\n== body end ==\n  \xe2\xa0\xb9 Setting IAM Policy...\n---- response start ----\nstatus: 200\n-- headers start --\n-content-encoding: gzip\ncache-control: private\ncontent-length: 159\ncontent-type: application/json; charset=UTF-8\ndate: Wed, 08 Jul 2020 11:37:11 GMT\nserver: ESF\ntransfer-encoding: chunked\nvary: Origin, X-Origin, Referer\nx-content-type-options: nosniff\nx-frame-options: SAMEORIGIN\nx-xss-protection: 0\n-- headers end --\n-- body start --\n{\n  "version": 1,\n  "etag": "BwWp7IdZGHs=",\n  "bindings": [\n    {\n      "role": "roles/run.invoker",\n      "members": [\n        "allUsers"\n      ]\n    }\n  ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n

因此,这是一个为您执行 CLI 的附加 API 调用。您可以在这里找到 API 定义

\n

如果您想手动执行呼叫,您可以执行这样的请求

\n
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \\\n     -H "content-type: application/json" -X POST \\\n     -d \'{"policy": {"bindings": [{"members": ["allUsers"], "role": "roles/run.invoker"}]}}\' \\     \n     "https://run.googleapis.com/v1/projects/<PROJECT_ID>/locations/<REGION>/services/<SERVICE_NAME>:setIamPolicy"\n
Run Code Online (Sandbox Code Playgroud)\n