创建 GCP Dataproc 集群时出错:'compute.projects.get' 的权限被拒绝
Error when creating GCP Dataproc cluster: permission denied for 'compute.projects.get'
我正在尝试通过 Cloud SDK 使用服务帐户创建 Dataproc 集群。它抛出 compute.projects.get 被拒绝的错误。服务帐户具有计算查看者访问权限、计算实例管理员访问权限和数据处理编辑访问权限。无法理解为什么会出现此错误。在 IAM 策略疑难解答程序中,我检查了 dataproc.cluster.create
已分配给服务帐户
命令是:
gcloud dataproc clusters create cluster-dqm01 \
--region europe-west-2 \
--zone europe-west2-b \
--subnet dataproc-standalone-paasonly-europe-west2 \
--master-machine-typne n1-standard-4 \
--master-boot-disk-size 500 \
--num-workers 2 \
--worker-machine-type n1-standard-4 \
--worker-boot-disk-size 500 \
--image-version 1.3-deb9 \
--project xxxxxx \
--service-account xxxx.iam.gserviceaccount.com
ERROR: (gcloud.dataproc.clusters.create) PERMISSION_DENIED: Required 'compute.projects.get' permission for 'projects/xxxxxx'
该项目是正确的,因为我尝试从控制台创建时遇到相同的错误,从控制台向 运行 使用服务帐户生成了 gcloud 命令。这是第一次为项目创建 dataproc 集群
如果您已将各种权限分配给使用 --service-account
指定的同一服务帐户,问题是您可能打算改为指定 --impersonate-service-account。
这里有三个相关的身份:
- 发出 CreateCluster 命令的身份 - 这通常是一个人的身份,但如果您使用
--impersonate-service-account
或 运行 来自另一个 GCE VM 内部的命令进行自动化操作,它可能本身就是一个服务帐户。
- "Control plane" 身份 - 这是 Dataproc 后端服务用来实际创建 VM 的身份
- "Data plane" 身份 - 这是 Dataproc 工作器在处理数据时的行为。
通常,#1 和#2 需要各种 "compute" 权限和一些最小的 GCS 权限。 #3 通常只需要 GCS 和可选的 BigQuery、CloudSQL、Bigtable 等权限,具体取决于您实际处理的内容。
有关这些身份的更深入解释,请参阅 https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals。
它还列出了预先存在的精选角色,使这一切变得简单(通常,"default" 项目设置将自动拥有正确的角色,因此您不必担心)。基本上,"human identity" 或您与 --impersonate-service-account
一起使用的服务帐户需要 Dataproc Editor
或 Project Editor
角色,"control plane identity" 需要 Dataproc Service Agent
,并且 "data plane identity" 需要 Dataproc Worker
.
我正在尝试通过 Cloud SDK 使用服务帐户创建 Dataproc 集群。它抛出 compute.projects.get 被拒绝的错误。服务帐户具有计算查看者访问权限、计算实例管理员访问权限和数据处理编辑访问权限。无法理解为什么会出现此错误。在 IAM 策略疑难解答程序中,我检查了 dataproc.cluster.create
已分配给服务帐户
命令是:
gcloud dataproc clusters create cluster-dqm01 \
--region europe-west-2 \
--zone europe-west2-b \
--subnet dataproc-standalone-paasonly-europe-west2 \
--master-machine-typne n1-standard-4 \
--master-boot-disk-size 500 \
--num-workers 2 \
--worker-machine-type n1-standard-4 \
--worker-boot-disk-size 500 \
--image-version 1.3-deb9 \
--project xxxxxx \
--service-account xxxx.iam.gserviceaccount.com
ERROR: (gcloud.dataproc.clusters.create) PERMISSION_DENIED: Required 'compute.projects.get' permission for 'projects/xxxxxx'
该项目是正确的,因为我尝试从控制台创建时遇到相同的错误,从控制台向 运行 使用服务帐户生成了 gcloud 命令。这是第一次为项目创建 dataproc 集群
如果您已将各种权限分配给使用 --service-account
指定的同一服务帐户,问题是您可能打算改为指定 --impersonate-service-account。
这里有三个相关的身份:
- 发出 CreateCluster 命令的身份 - 这通常是一个人的身份,但如果您使用
--impersonate-service-account
或 运行 来自另一个 GCE VM 内部的命令进行自动化操作,它可能本身就是一个服务帐户。 - "Control plane" 身份 - 这是 Dataproc 后端服务用来实际创建 VM 的身份
- "Data plane" 身份 - 这是 Dataproc 工作器在处理数据时的行为。
通常,#1 和#2 需要各种 "compute" 权限和一些最小的 GCS 权限。 #3 通常只需要 GCS 和可选的 BigQuery、CloudSQL、Bigtable 等权限,具体取决于您实际处理的内容。
有关这些身份的更深入解释,请参阅 https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals。
它还列出了预先存在的精选角色,使这一切变得简单(通常,"default" 项目设置将自动拥有正确的角色,因此您不必担心)。基本上,"human identity" 或您与 --impersonate-service-account
一起使用的服务帐户需要 Dataproc Editor
或 Project Editor
角色,"control plane identity" 需要 Dataproc Service Agent
,并且 "data plane identity" 需要 Dataproc Worker
.