问题标签 [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 回答
10890 浏览

google-cloud-platform - GCP Deployment Manager: 403 does not have storage.buckets.get access

I am trying to create a bucket using Deployment manager but when I want to create the deployment, I get the following error:

If I understand it correctly, the deployment manager uses a service account (as described in the message) to actually create all my resources. I've checked IAM and made sure that the service role (myprojectid@cloudservices.gserviceaccount.com) does have access as "Editor" and even added "Storage Admin" (which includes storage.buckets.get) to be extra sure. However, I still get the same error message.

Am I assigning the permissions to the wrong IAM user / what am I doing wrong?


command used:

my deployment template:

bucket.jinja

posts.yml

0 投票
2 回答
9261 浏览

google-cloud-platform - 在 Docker Container 内的 Container OS 上访问 Google Cloud 服务帐户凭据

在 Google Cloud Compute 上使用容器优化操作系统(COS),从 Docker 容器中访问 VM 项目默认服务帐户凭据的最佳方法是什么?

如果凭据在 VM 上,那么 Docker 可以挂载这些凭据。通常凭证会在 中.config/gcloud/,并使用docker run -v ~/.config/gcloud:~/.config/gcloud image. 目前尚不清楚容器操作系统中是否以及在何处提供此类凭据,特别是因为缺少gcloud.

如果凭证在 VM 上且可挂载失败,选项似乎包括:

  1. 将凭证放入容器元数据/环境变量中;
  2. 为服务帐户创建一个.json凭据文件,然后
    1. 上传到虚拟机,然后挂载;或者
    2. 添加.json到容器中;
  3. 运行一个 Docker 容器(例如cloud-sdk-docker),它获取凭据并通过例如共享挂载分区与主机共享它们。理想情况下,这将与gcloud auth activate-service-account

是否有规范或最佳实践方法为 Docker 容器提供 VM 项目的服务帐户凭据?

谷歌云已经有一个安全策略模型,这是理想的模型:项目中的虚拟机应该具有服务帐户提供的访问权限。为避免复杂性和错误配置或事故的可能性,正确的解决方案将采用这种现有的安全模型,即不涉及创建、下载、分发和维护凭证文件。

感觉这将是一个需要用 COS、Docker 和 Kubernetes 解决的常规问题,所以我认为我错过了一些简单的东西——但是从文档中我看不出解决方案。

编辑——注意set-service-account API——这个问题可以简化为“你如何在容器操作系统中使用 set-service-account API?” 如果不可能(因为 Container OS 缺少gcloudgsutil),我认为应该注意这一点,以便 VM 用户可以做出相应的计划。

编辑对于接下来的人来说:

为了复制这个问题,我使用了:

问题确实是在 API 中为 VM 实例设置的范围,特别datastore是默认帐户的 API 被禁用(在 VM 的云 API 访问范围标题下)。可以找到范围和必要的datastore行,如下所示:

请注意,服务帐户本身有权访问数据存储(因此通常可以使用服务密钥的 json 凭证密钥访问数据存储)。服务帐户权限受 VM 范围的限制。

0 投票
1 回答
833 浏览

node.js - Dialogflow 节点 SDK 权限失败 (dialogflow.sessions.detectIntent)

我遇到了 Node DialogFlow API 集成的问题。

尽管我已遵循所有可能的文档,但我没有必要的权限来调用 API。

这是我来自 Dialogflow 管理员的代理服务帐户:

DialogFlow 服务帐户 然后是服务帐户角色:

服务帐号授权

“Client de l'API Dialogflow”角色详细信息,我们可以在其中看到“dialogflow.sessions.detectIntent”:

DialogFlow API 授权

最后,下载Service Account对应的JSON文件后出现Node报错:

节点错误

我错过了什么吗?

我试图生成其他 JSON 文件,创建其他服务帐户,但没有任何效果......

Node脚本很简单,只是从官方教程中粘贴过来的:

谢谢 !

0 投票
2 回答
2394 浏览

google-compute-engine - 如何在需要时将存储库从 Source Repositories 克隆到 Compute Engine 以手动提取它

在我的本地 macOS 上,以下命令运行良好:

(虽然我不确定它是否有效,因为之前我遵循了该~/.gitcookies程序)

但是当我在 CE 上这样做时:

在 IAM 选项卡中,我看到此服务帐户具有“对所有资源的编辑权限”,但它没有帮助。即使我添加角色源存储库读+写。

UPD:我也找不到.clone角色选项卡中的角色:

在此处输入图像描述

但它可能包含在.get,所以Reader我已经尝试过:

在此处输入图像描述

UPD2:sudo /usr/local/share/google/google-cloud-sdk/bin/gcloud components update没有帮助。

我现在想象的唯一两个选择是编辑

在此处输入图像描述

(这是我在互联网上发现的唯一一个似乎是解决方案的东西,但该博客文章是用某种东方语言编写的,所以我不确定)但它需要 VM 停止,这是不可接受的。

或者伪造另一个服务帐户,但我不确定在gcloudCLI 中切换它不会破坏该机器上运行的其他应用程序。或者也许我在克隆 repo 时只能使用它一次,它会坚持下去?

0 投票
3 回答
5513 浏览

google-compute-engine - 具有计算实例管理员权限的 GCE 服务帐户

我已经使用具有以下角色的服务帐户设置了一个名为在 Google Compute 引擎上运行 cronjobs 的计算实例: Custom Compute Image User + Deletion rights Compute Admin Compute Instance Admin (beta) Kubernetes Engine Developer Logs Writer Logs Viewer Pub/Sub Editor Source Repository Reader Storage Admin 不幸的是,当我 ssh 进入这个 cronjob 运行器实例然后运行时:

我收到以下错误:

用户无权访问服务帐户 {NAME_OF_SERVICE_ACCOUNT}。用户:{NAME_OF_SERVICE_ACCOUNT}。请项目所有者授予您服务帐号的 iam.serviceAccountUser 角色。

除了计算实例管理员之外,我还需要能够使用我的实例创建实例吗?

进一步说明:(1)当我尝试不指定--service-account错误时,除了我的用户无权访问的服务帐户是默认的'51958873628-compute@developer.gserviceaccount.com'之外,错误是相同的。(2) 添加/删除 sudo 不会改变任何东西

0 投票
1 回答
521 浏览

google-cloud-platform - 从 Java 访问 Bigquery IAM

我想从 java api 授予新用户 bigquery.user 访问权限。但不知何故无法从提供的文档中做到。关于 API 调用的内容不多。有人可以指出我正确的方向。

到目前为止,我正在使用以下代码:

执行后我收到以下错误:线程“main”com.google.api.client.googleapis.json.GoogleJsonResponseException:400 Bad Request {“code”:400,“errors”:[{“domain”:“ global", "message" : "资源层次结构中不存在角色 (projects/dazzling-byway-184414/roles/bigquery.users)。", "reason" : "badRequest" } ], "message" : "Role (projects/dazzling-byway-184414/roles/bigquery.users) 在资源的层次结构中不存在。", "status" : "INVALID_ARGUMENT" }

是否有任何特定的传递请求格式?

0 投票
3 回答
8262 浏览

google-cloud-platform - Google Cloud Platform IAM,我没有收到会员邀请邮件

我的合作伙伴将我添加为 GCP 项目的成员,具有计算机引擎管理员角色,但我没有收到任何邀请电子邮件。我们已经检查了垃圾邮件文件夹。我也尝试过

https://console.cloud.google.com/invitation?project=PROJECT_NAME&account=EMAIL&memberEmail=EMAIL

但它给了我这个错误:

在此处输入图像描述

0 投票
1 回答
814 浏览

docker - Google Container Registry Per Image ACL

我们的平台内有结构,如果可能的话,需要在单个和/或仅几个项目中包含大量私有图像。此外,我们在很大程度上是一家 GCP 商店,并希望留在 Google 环境中。

目前 - 据我了解 - GCR ACL 结构需要附加到服务帐户(在本例中)的 storage.objects.get 和 storage.objects.list 权限(或 objectViewer 角色)才能访问 GCR。这通常不是问题,我们在使用 gsutil 为容器注册表启用项目级别的读取访问方面没有任何直接问题。以下是我们为实现一般访问所做的工作流示例。但是,它并没有实现我们对每个图像访问受限服务帐户的目标。


使用 exproj 代替使用的项目名称,构建、标记并推送到 GCR 中的简单 Docker 映像。

这为我们提供了 ex_proj 项目中的 hello_example 存储库。我们创建一个服务帐户并授予它读取存储桶的权限。

然后允许我们通过密钥使用 Docker 登录。

然后按预期从注册表中拉下图像


但是,出于我们的目的,我们不希望服务帐户可以访问每个项目的整个注册表,而是只能访问上面确定的 hello_example。在我使用 gsutil 的测试中,我无法定义特定的基于每个图像的 ACL,但是,我想知道我是否只是遗漏了一些东西。

在这一切的宏伟计划中,我们希望达到以下模型:

  • AccountA 在 ExampleProj 中创建了 ImageA:TagA
  • 生成 ServiceAccountA
  • ACL 为 ServiceAccountA 设置为仅访问 ExampleProj/ImageA 及其下的所有标签
  • ServiceAccountA JSON 提供给 AccountA
  • AccountA 现在只能访问 ExampleProj/ImageA,AccountB 不能访问 AccountA 的 ExampleProj/ImageA

虽然我们可以为每个项目的每个账户进行容器注册,但需要在每个账户中跟踪项目以及在大量使用期间受 GCP 项目限制的突发奇想的扩展潜力令人担忧。

除了上述之外,我也愿意接受任何可以实现这一目标的想法或结构!


编辑

感谢 jonjohnson 的回复!我按照与 blob 读取有关的推荐行编写了一个快速而肮脏的脚本。我仍在努力验证它是否成功,但是,我确实想声明我们确实控制了何时发生推送,因此跟踪结果不像在其他情况下那样脆弱。

这是我作为清单 -> 摘要权限修改的示例放在一起的脚本。

虽然这确实设置了适当的权限,但我看到对 Docker 的实际身份验证存在相当多的脆弱性,并且在未识别 Docker 登录方面有所下降。

这是否与您所指的 Jonjohnson 一致?本质上允许基于与该图像/标签关联的清单/层访问每个服务帐户的每个 blob?

谢谢!

0 投票
1 回答
223 浏览

google-app-engine - 权限 IAM 意外删除

我从谷歌应用引擎中的项目中删除了我的权限,现在我无法访问我的项目的更多功能,该项目仍然在线,但我无法再访问,我点击的所有内容都返回我不允许

0 投票
1 回答
527 浏览

google-cloud-platform - Google 云合规性检查(最佳做法)

我一直在寻找一些检查以确保我们公司的谷歌云配置正确。以下是我想通过一些 API 以编程方式检查的几个案例。我想知道可以使用哪些 API 来实现这一点。

  1. 需要检查是否启用了 Cloud SQL 审计。
  2. 与网络部分一样,您不应允许从全球互联网进入您的数据库。为您的数据库创建授权网络时,不允许使用 0.0.0.0 或 /0。同样,MySQL 不应允许 root 用户从 0.0.0.0 连接。
  3. 使用 Cloud 审核日志定期审核对您的 IAM 政策的更改。
  4. 确保在所有 VPC 中启用 VPC 流日志记录。
  5. 确保没有安全组允许从 0.0.0.0/0 进入端口 22。
  6. 获取启用数据访问日志的服务列表。

此外,如果有一个众所周知的 Gcloud 安全实践列表,例如 CIS(适用于 AWS 和 Azure),那就太好了。