如何在 Google Cloud Platform 中限制服务帐号的权限?

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

如何将服务帐户限制为地点自动完成(Google 地图 API)等?

我发现 GCP 权限确实令人困惑,我想知道是否可以按照我想要的方式配置它们。为了进行解释,我将使用 AWS 作为示例。假设我想授予服务帐户从 S3 读取/获取对象的权限。

在 AWS 上的一个简单场景中,我可以创建一个没有权限的新服务帐户,选择相关服务或 API,然后选中代表我想要允许的特定操作的复选框。例如,我可以选择“阅读”操作。我可以通过指定存储桶名称等条件来进一步限制此权限。此设置可确保服务帐户拥有最低限度的必要权限。

permission selection in AWS

现在,在 GCP 中,我创建了一个空的服务帐户,并希望授予其访问 Google 地图自动完成 API 的权限。为此,我必须分配一个角色。正确的?在查看了现有角色列表后,我发现了一个名为“Maps API Viewer”的角色,它听起来过于宽泛,但与我所需要的(地址自动完成)有些相关。我分配了这个角色并尝试了 API,但没有成功。 GCP 告诉我,我还需要分配 Roles/serviceusage.serviceUsageConsumer 角色。一旦我分配了该角色,API 就开始工作了。但是,此角色似乎授予了过多的访问权限。事实上,我什至从服务帐户中删除了“Maps API Viewer”角色,并且自动完成的 API 请求仍然有效。

让我们尝试创建一个自定义角色。在列出所有可能的权限(大概)的对话框中,我找不到与地点或地图自动完成相关的任何内容。相反,它建议“市场”或“地图查看器 API”的权限。这让我很困惑。

permission selection in GCP 1st example

[permission selection in GCP 2nd example3

我希望可以仅授予对 Google 地图自动完成 API 的必要读取访问权限,而不授予其他任何权限。我的这个期望错了吗?

gcloud google-iam
1个回答
0
投票

这很令人困惑。

Google 已将其公共(!)服务分为由 IAM 控制的服务和非 IAM 控制的服务。

这并不总是显而易见的,但 IAM 概述 包括“Google Cloud 的身份和访问管理 (IAM) 系统”,这是关键。 Google 的云 (!) 服务使用 IAM,而非云服务则不使用。

令人困惑的是,所有 Google 服务当然都是基于云的,但从这个意义上说,“云”是指以前的云平台和 Google Cloud 所涵盖的服务子集。

Maps 属于非 IAM。

服务帐户是 Google(不仅仅是云)身份,因此,与用户帐户(例如 Gmail)、群组等一样,可以用作 Google 服务中的身份。

但是,由于地图不是(云)IAM 的一部分,因此您无法使用 IAM 限制对地图资源|方法的访问。

相反,您必须退回到 OAuth 范围,它适用于所有 Google 服务,但粒度较小。

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