问题标签 [google-iam]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2782 浏览

google-api - IAM 服务帐户密钥与 Google 凭据文件

我正在编写代码来为 Google Cloud 服务帐户生成和下载私钥。

使用 IAM API,我能够创建一个服务帐户,并且我生成密钥的调用似乎正在工作。我取回了IAM API 创建密钥页面中描述的服务帐户密钥,例如

我将此文件下载为 JSON 响应并尝试对其进行身份验证:

不幸的是,我收到一条错误消息 The .json key file is not in a valid format.

当我通过 Google Cloud Console 流程(IAM 和管理员 -> 服务帐户 -> ... -> 创建密钥 -> 创建)时,我得到一个下载的 JSON 文件,看起来像

此文件看起来与 IAM API 的响应完全不同。解释我的错误!不幸的是,这种格式似乎没有在任何地方描述。在一些文档中简要提到了它。它是 Google 凭据文件吗?

我想获取 IAM 响应文件/JSON 并将其转换为第二个凭证文件。我已经尝试编写一些代码来转换它,但是有些字段"auth_provider_x509_cert_url"我不明白。

也许转换文件也是错误的方法?更普遍:

如何生成文件,然后使用它通过 gcloud 进行身份验证?

我应该如何描述/区分上述两个文件?为什么每种类型的文件都有用?

0 投票
2 回答
6940 浏览

google-cloud-platform - IAM 角色到没有管理员权限的 SSH 到 VM

背景

要在 Google Compute Engine 中通过 ssh 连接到 VM 实例,我需要向用户提供 instanceAdmin 角色,从而为用户提供管理员控制权,这有时可能是一个安全问题。

询问

Google Compute Engine 是否提供任何 IAM 角色,这将允许用户通过 SSH 连接到实例,在其上运行程序但没有管理员访问权限(不向用户提供 instanceAdmin 角色)?

0 投票
1 回答
2745 浏览

java - 如何在不下载 Google Cloud Java SDK(不在 App Engine 上)的情况下验证服务帐户

我正在尝试使用 Google Cloud SDK 在 Java 中以编程方式创建服务帐户密钥,用于未在 App/Compute 引擎上运行的应用程序。这个问题与我的类似,但它在 App 引擎上运行,所以我不能使用与它使用来自 App Engine API 的类相同的代码。

相关代码如下。我的问题是 AppIdentityCredential 是 AppEngine API 的一部分,因此不能在这里使用。我可以作为参数传入什么?new Builder() 方法中的第三个参数接受一个HttpRequestInitializer,但我不明白我应该传入这个接口的什么实现。感谢任何帮助。

0 投票
2 回答
488 浏览

google-cloud-platform - 如何在不让某人成为 Google Cloud Platform 上的项目所有者的情况下授予他们设置权限的权限?

我们正在尝试授予谷歌云平台用户帐户权限以更改其自己的权限以及它创建的服务帐户的权限/角色。目前,用户帐户仅具有其所在项目的默认编辑权限。本质上,我们希望给它所有者帐户除了查看或修改帐单信息之外的所有权限。这可能吗?

我们看过这个视频,但服务帐户上不再存在角色选择下拉菜单。当尝试编辑服务帐户权限以尝试授予它roles/storage.admin权限时,我收到此通知:

在此处输入图像描述

项目所有者还尝试将存储管理员角色添加到服务帐户,但角色并未像视频中那样显示。他的屏幕上显示的只有这些选项:

在此处输入图像描述

我有两个问题:

  1. 我们如何让我的 google 帐户权限来处理我自己的角色和权限以及服务帐户的角色?

  2. 向服务帐号添加角色的当前流程是什么?谷歌的文档和视频似乎都不是最新的。

0 投票
1 回答
163 浏览

google-app-engine - 用于管理 Google Cloud Platform API 的 IAM 角色

我们最近在 Google Cloud Platform 上建立了一个帐户,因此我们可以在我们的项目中使用一些 API,我们没有使用任何其他方面(除了 Billing 和 IAM)。

我们有一位用户是该项目的所有者,但希望分配我们的 DevOps 人员权限来管理 API 和密钥以在实时部署中使用。

我尝试了各种角色,甚至尝试设置仅具有所需权限的自定义角色,但是我终其一生都无法确定需要什么权限。通过反复试验,我设法让他启用 API,但创建 API 密钥仍然遥不可及。显然,我可以将他设置为项目编辑,但这也可以启用其他所有内容,因此范围太广。

谁能给我一个正确的角色和权限列表的链接(据我所知, https: //cloud.google.com/iam/docs/understanding-roles#predefined_roles 没有提到 API 密钥)甚至告诉我启用 API 和为所述 API 创建/编辑密钥所需的最低权限。

提前致谢。

0 投票
1 回答
181 浏览

google-bigquery - Google ML Engine - 由于异常而无法记录客观指标

我正在通过超参数调整在 Google ML Engine 上运行 TensorFlow 应用程序,并且遇到了一些奇怪的身份验证问题。

我的数据和权限设置

我的培训师代码支持两种获取模型输入数据的方式:

  1. 从 BigQuery 获取表。
  2. .csv从文件中读取。

对于我的 IAM 权限,我设置了两个成员:

  1. 我的用户帐户:

    • 分配给以下 IAM 角色:
      1. 项目负责人 ( roles/owner)
      2. BigQuery 管理员 ( roles/bigquery.admin)
    • 我使用时会自动创建凭据gcloud auth application-default login
  2. 服务帐号:

    • 分配给以下 IAM 角色:
      1. BigQuery 管理员 ( roles/bigquery.admin)
      2. 存储管理员 ( roles/storage.admin)
      3. 发布订阅管理员 ( roles/pubsub.admin)
    • .json当我在 Google Cloud Platform 界面中创建凭据时,凭据已下载到文件中。

问题

当我使用我的用户帐户凭据在 Google ML 引擎上运行我的培训师代码并从.csv文件中读取时,一切正常。

但是,如果我尝试从 BigQuery 获取数据,则会收到以下错误:

这就是我创建服务帐户的原因,但服务帐户有一组单独的问题。使用服务帐户时,我可以从.csv文件和 BigQuery 中读取数据,但在这两种情况下,每次试用结束时都会出现以下错误:

这不会导致作业失败,但会阻止记录客观指标,因此超参数调整不会提供任何有用的输出。

问题

我不确定为什么当我的 IAM 成员被分配到我很确定是正确的角色时,我会收到这些权限错误。

当我在本地运行时,我的培训师代码在所有情况下都有效(尽管在本地运行时显然没有使用 PubSub),所以我相当确定这不是代码中的错误。

有什么建议么?

笔记

有一次,我的服务帐户在尝试访问 BigQuery 时遇到了与我的用户帐户相同的错误。我偶然发现的解决方案很奇怪。我决定从我的服务帐户中删除所有角色并再次添加它们,这解决了该成员的 BigQuery 权限问题。

0 投票
1 回答
330 浏览

google-cloud-platform - 为数百名用户单独访问 Google Cloud Storage

我计划在一个 Google Cloud Platform 项目中运行数百个网站(使用 GKE)。他们每个人都将使用两个 Google Cloud Storage 存储桶来存储其资产。

我计划为每个网站创建一项服务,以便仅授予对其各自存储桶的访问权限。但是,每个项目有 100 个服务帐户的限制,显然无法提高。

如何确保每个网站只能访问允许查看的存储桶(或存储桶中的子路径)?

0 投票
1 回答
1456 浏览

kubernetes - Google Cloud Container Engine (GKE) 上的 IAM 和 RBAC 冲突

语境

通过 Google Cloud IAM 功能管理对 Google Cloud (GKE) kubernetes 集群的访问;

  1. 管理员邀请新用户(使用他们的 google 帐户/登录名)并为他们分配一个角色。

    下面的示例角色是“Container Engine Viewer”,它将允许用户访问 Kubernetes 集群并运行所有“查看”操作。

  2. 用户可以gcloud auth login在他们的本地机器上使用 ,然后gcloud container clusters get-credentials向 Google IAM 进行身份验证,并让该gcloud工具将它们写出一个 kubernetes 配置文件,准备好使用集群。

  3. 然后用户可以使用它kubectl来访问集群。在上面的例子中,读取工作......写入/更改不;都好!

问题

GKE kubernetes 集群的 IAM 角色非常简单,“管理员、读/写、读”。

为了对 Kubernetes 集群进行更细粒度的控制,应该在集群内使用 Kubernetes RBAC ,允许我将用户限制为单个命名空间、单个 API 端点、单个操作等。

但是,没有为用户指定 IAM 角色;用户无法对集群进行身份验证(RBAC 是授权,而不是身份验证)。

然而,我可以设置的最低权限 IAM 角色是“容器引擎查看器”,因此无论我使用 Kubernetes RBAC 实施的限制如何,我的所有用户仍然具有完全读取权限。

问题

有没有人找到一种方法来确保 GKE 中的所有权限都来自 RBAC,基本上取消来自 IAM 的权限?

0 投票
1 回答
435 浏览

python-2.7 - 使用服务帐户访问 google cloud spanner 数据库列表

我们在谷歌云控制台上创建了云扳手实例和数据库。

以下我们正在执行的代码片段。

在上面的代码片段中 self.service 是对象 googleapiclinet 库构建对象。

在使用服务帐户 ID 执行上述代码片段时,我们遇到了异常。

参考文档cloud spanner IAM

0 投票
0 回答
234 浏览

google-compute-engine - GCE 实例未从服务帐户获得权限

我正在尝试使用服务帐户从 GCE 实例设置对 Cloud Storage 存储桶的读/写访问权限,但没有获得权限。我做了以下事情:

  • 创建服务帐户,比如说“my-sa”
  • 创建了一个存储桶,比如说“我的存储桶”
  • 在我的项目的 IAM 控制台中,将角色“云存储管理员”分配给服务帐户
  • 通过控制台创建了一个新的 GCE 实例,分配给服务帐户“my-sa”。然后访问范围自动设置为云平台
  • 使用 gcloud compute ssh 作为我的用户(项目所有者)连接到实例
  • 运行 gsutil ls gs://my-bucket

预期行为:获取存储桶中的项目列表

观察到的行为

gsutil 需要大约 5 秒的时间思考,然后给出: AccessDeniedException: 403 my-sa@my-project.iam.gserviceaccount.com 没有 storage.objects.list 对存储桶 my-bucket 的访问权限。

我尝试过的事情:

  • 实例上的 gcloud auth list 确实显示了服务帐户,并将其显示为处于活动状态
  • 我已向服务帐户添加了更多权限(最多为项目所有者),没有任何区别
  • 我也不能使用实例的其他权限。当我将 Compute Engine Admin 角色授予服务帐户时,我无法从实例运行 gcloud 计算实例列表
  • 我已删除 .gsutil 目录以确保清除缓存
  • 使用默认的 Compute Engine 服务帐户,我可以列出存储桶,但不能写入(如预期的那样)。当我从控制台添加 Cloud Storage 读/写访问范围时,我也可以写

我真的不知道如何调试这个了,所以任何帮助都会非常感激