我可以在 GCP 的哪个位置看到因缺少权限而被拒绝的 API 请求?
Where in GCP can I see rejected API requests due to lacking permissions?
我的问题在技术上与上下文无关,但为了清楚起见,我介绍了它。
# export GOOGLE_APPLICATION_CREDENTIALS="/home/raffael/repos/dask/playground-310111-1d035231463d.json"
from dask_cloudprovider.gcp import GCPCluster
cluster = GCPCluster(
projectid="project_id",
n_workers=1,
source_image="projects/ubuntu-os-cloud/global/images/ubuntu-minimal-1804-bionic-v20210325",
zone="europe-west1-b",
)
我想使用上述服务帐户和代码创建一个 Dask 集群。
如果我将项目所有者角色附加到该 SA - 它会起作用。
如果我将“仅”计算管理员角色附加到该 SA - 它会失败。
为了完整起见,我列出了错误消息,但它并没有说明应该创建的 Scheduler 实例不存在。
Launching cluster with the following configuration:
Source Image: projects/ubuntu-os-cloud/global/images/ubuntu-minimal-1804-bionic-v20210325
Docker Image: daskdev/dask:latest
Machine Type: n1-standard-1
Filesytsem Size: 50
Disk Type: pd-standard
N-GPU Type:
Zone: europe-west1-b
Creating scheduler instance
Failed to find running VMI...
{'id': 'projects/project_id/zones/europe-west1-b/instances', 'selfLink': 'https://www.googleapis.com/compute/v1/projects/project_id/zones/europe-west1-b/instances', 'kind': 'compute#instanceList'}
Traceback (most recent call last):
File "gcp_cluster.py", line 9, in <module>
cluster = GCPCluster(
File "/home/raffael/miniconda3/envs/dask/lib/python3.8/site-packages/dask_cloudprovider/gcp/instances.py", line 603, in __init__
super().__init__(debug=debug, **kwargs)
[...]
File "/home/raffael/miniconda3/envs/dask/lib/python3.8/site-packages/dask_cloudprovider/gcp/instances.py", line 209, in create_vm
while await self.update_status() != "RUNNING":
File "/home/raffael/miniconda3/envs/dask/lib/python3.8/site-packages/dask_cloudprovider/gcp/instances.py", line 255, in update_status
raise Exception(f"Missing Instance {self.name}")
Exception: Missing Instance dask-9645b903-scheduler
所以,最大的问题是 - 缺少什么权限?
在操作日志记录中,我发现了以下与失败相关的错误,但我不确定它是否告诉我使用了什么服务以及需要什么权限。
@type
和 logName
说了一些关于“审计”的事情,所以我在 all of Project Owner permissions 中用 Ctrl-F 键输入了“审计”,发现它是一个“有前途的”候选人 container.auditSinks.* 但添加这些并不能解决问题。
我想无论如何它都是 bs - 但我不确定 @type
和 logName
指的是什么所以我试了一下。
回到我的问题 - GCP 是否告诉我什么地方 API 调用因缺少权限而被拒绝?
(当然 - 如果你碰巧知道 permissions/roles 我需要补充什么 - 那会很棒)
尝试在项目级别将此角色授予您的 SA roles/iam.serviceAccountUser
,这将允许此 SA 模拟项目中的其他 SA,包括用于 Compute Engine 的任何 SA。如您所见,文档中提到了当您授予 Compute Admin, role that you still need to assign the SA User role at project or SA level as described here
如果这不起作用,请分享您是否正在使用此 Dask 集群的一些教程或手册,或者重现此步骤并找到此场景的解决方案的步骤。
我的问题在技术上与上下文无关,但为了清楚起见,我介绍了它。
# export GOOGLE_APPLICATION_CREDENTIALS="/home/raffael/repos/dask/playground-310111-1d035231463d.json"
from dask_cloudprovider.gcp import GCPCluster
cluster = GCPCluster(
projectid="project_id",
n_workers=1,
source_image="projects/ubuntu-os-cloud/global/images/ubuntu-minimal-1804-bionic-v20210325",
zone="europe-west1-b",
)
我想使用上述服务帐户和代码创建一个 Dask 集群。
如果我将项目所有者角色附加到该 SA - 它会起作用。 如果我将“仅”计算管理员角色附加到该 SA - 它会失败。
为了完整起见,我列出了错误消息,但它并没有说明应该创建的 Scheduler 实例不存在。
Launching cluster with the following configuration:
Source Image: projects/ubuntu-os-cloud/global/images/ubuntu-minimal-1804-bionic-v20210325
Docker Image: daskdev/dask:latest
Machine Type: n1-standard-1
Filesytsem Size: 50
Disk Type: pd-standard
N-GPU Type:
Zone: europe-west1-b
Creating scheduler instance
Failed to find running VMI...
{'id': 'projects/project_id/zones/europe-west1-b/instances', 'selfLink': 'https://www.googleapis.com/compute/v1/projects/project_id/zones/europe-west1-b/instances', 'kind': 'compute#instanceList'}
Traceback (most recent call last):
File "gcp_cluster.py", line 9, in <module>
cluster = GCPCluster(
File "/home/raffael/miniconda3/envs/dask/lib/python3.8/site-packages/dask_cloudprovider/gcp/instances.py", line 603, in __init__
super().__init__(debug=debug, **kwargs)
[...]
File "/home/raffael/miniconda3/envs/dask/lib/python3.8/site-packages/dask_cloudprovider/gcp/instances.py", line 209, in create_vm
while await self.update_status() != "RUNNING":
File "/home/raffael/miniconda3/envs/dask/lib/python3.8/site-packages/dask_cloudprovider/gcp/instances.py", line 255, in update_status
raise Exception(f"Missing Instance {self.name}")
Exception: Missing Instance dask-9645b903-scheduler
所以,最大的问题是 - 缺少什么权限?
在操作日志记录中,我发现了以下与失败相关的错误,但我不确定它是否告诉我使用了什么服务以及需要什么权限。
@type
和 logName
说了一些关于“审计”的事情,所以我在 all of Project Owner permissions 中用 Ctrl-F 键输入了“审计”,发现它是一个“有前途的”候选人 container.auditSinks.* 但添加这些并不能解决问题。
我想无论如何它都是 bs - 但我不确定 @type
和 logName
指的是什么所以我试了一下。
回到我的问题 - GCP 是否告诉我什么地方 API 调用因缺少权限而被拒绝?
(当然 - 如果你碰巧知道 permissions/roles 我需要补充什么 - 那会很棒)
尝试在项目级别将此角色授予您的 SA roles/iam.serviceAccountUser
,这将允许此 SA 模拟项目中的其他 SA,包括用于 Compute Engine 的任何 SA。如您所见,文档中提到了当您授予 Compute Admin, role that you still need to assign the SA User role at project or SA level as described here
如果这不起作用,请分享您是否正在使用此 Dask 集群的一些教程或手册,或者重现此步骤并找到此场景的解决方案的步骤。