读取所有用户权限的 GCP 命令

GCP Command to Read All User's Permissions

有没有办法在 GCP 中列出用户的所有权限?

我知道有这个命令:

gcloud projects get-iam-policy "project-ID"

但我只能看到我在 IAM 控制台中设置的 IAM 角色。例如,我没有看到 IAM 角色

BigQuery Data Viewer

我已在 BigQuery 页面的数据集上为用户设置。

当我们考虑用户的权限时,认为存在某种表示 "User X has all THESE permissions" 的主 table 是错误的。相反,我们需要重新定位我们的思维,从不同的维度思考。想一想您想保护的 事物 (资源),然后我们可以说 "This resource (Z) allows user X to perform Y".

在 GCP 中,我们也不分配权限,而是分配作为权限集合的角色。

回到您的问题,这意味着我们无法列出用户的所有权限,因为用户没有 "have" 权限,而是用户拥有与资源相关的角色。

想象一下您的文件系统上有一个名为 "A" 的文件,用户 X 可以读取但不能写入。现在想象一下你的文件系统上有一个名为 "B" 的文件,用户 X 可以写但不能读。我们不能正确地说用户 X 同时具有 "read" 和 "write" 权限。虽然有些文件用户可以读取,有些文件用户可以写入,但不能说用户可以读取和写入所有文件。

并得出结论...对于任何给定的资源集,您可以询问该资源哪些用户对该资源具有哪些角色。

我们有一个 API 可用于确定用户是否可以对给定资源执行命名操作...请参阅:Testing permissions

您可以通过使用标志“--flatten', '--format', and '--filter”调整 gcloud projects get-iam-policy 的输出来列出与用户或服务帐户关联的角色:

gcloud projects get-iam-policy <YOUR GCP PROJECT>  \
--flatten="bindings[].members" \
--format="table(bindings.role)" \
--filter="bindings.members:<THE USER OR SERVICE ACCOUNT>"

在我的测试场景中输出如下:

ROLE
roles/bigquery.dataViewer
roles/owner

in GCP is there a way to list all permissions of an user?

在 Google Cloud Platform 中,没有一个命令可以执行此操作。通过角色的权限分配给资源。可以为组织、文件夹、项目、数据库、存储对象、KMS 密钥等分配 IAM 权限。您必须扫描(检查 IAM 权限)每个资源以确定 IAM 成员帐户拥有的总权限集。

这些功能在 Google 云授权、安全和审计方面既是优点也是缺点。如果理解得当,这些功能将非常强大。

您可以使用它在组织下的 IAM 策略中搜索 "foo@bar.com":

gcloud beta asset search-all-iam-policies --scope=organizations/123 --query="policy:foo@bar.com" | egrep "resource:|role:|user:foo"

您可以将范围更改为项目或文件夹。

文档:https://cloud.google.com/asset-inventory/docs/searching-iam-policies

虽然它没有涵盖所有政策:https://cloud.google.com/asset-inventory/docs/supported-asset-types#searchable_asset_types

更多细节可以在另一个post中找到:

我创建了这个小脚本。它提供了详细信息,例如成员 ID、分配给它的角色和项目名称

for list in `gcloud projects list | awk 'NR>1 {print }'`; do gcloud projects get-iam-policy $list --flatten="bindings[].members" --format="table(bindings.members,bindings.role,$list)"; done;