如何阻止继承权限组访问GCP中的敏感存储桶?
解决GCP存储桶权限继承问题的方案
方法1:启用Bucket Policy Only(推荐)
这个模式会让sensitive-bucket完全忽略组织、文件夹、项目层级的IAM权限继承,仅遵循自身的IAM策略配置。这样你只需给目标组添加只读权限,所有上层继承的权限都会被屏蔽。
- 启用Bucket Policy Only:
gcloud storage buckets update gs://sensitive-bucket --bpo-enabled - 为目标组添加存储对象只读权限:
gcloud storage buckets add-iam-policy-binding gs://sensitive-bucket \ --member="group:你的目标组邮箱@example.com" \ --role="roles/storage.objectViewer"
注意:启用后所有上层继承的权限都会失效,务必确认存储桶的IAM策略包含所有需要合法访问的主体(比如桶的创建者、运维账号等)。
方法2:使用IAM Deny Policies(灵活控制)
如果不想完全切断继承,而是针对特定继承组拒绝权限,可以在存储桶层级创建Deny规则——Deny规则优先级高于所有Allow权限(包括继承的),能直接阻止指定组的访问。
- 创建拒绝规则,阻止指定组的存储访问权限:
若要彻底拒绝这些组的所有存储相关权限,可替换权限为角色:gcloud iam policies create gs://sensitive-bucket \ --deny-rule="deny-inherited-groups-access" \ --deny-all="storage.objects.get,storage.objects.list" \ --members="group:org-group@example.com,group:其他需要阻止的组@example.com"gcloud iam policies create gs://sensitive-bucket \ --deny-rule="deny-all-storage-access" \ --deny-all="roles/storage.admin,roles/storage.objectAdmin,roles/storage.objectViewer" \ --members="group:org-group@example.com,group:其他需要阻止的组@example.com" - 为目标组添加允许的只读权限:
gcloud storage buckets add-iam-policy-binding gs://sensitive-bucket \ --member="group:你的目标组邮箱@example.com" \ --role="roles/storage.objectViewer"
验证配置
可以通过以下命令确认配置生效:
- 检查Bucket Policy Only状态:
gcloud storage buckets describe gs://sensitive-bucket --format="value(bucketPolicyOnly.enabled)" - 查看存储桶的IAM绑定:
gcloud storage buckets get-iam-policy gs://sensitive-bucket - 模拟测试权限(用继承组内的用户尝试访问):
配置正确的话,该命令会返回权限不足的错误。gcloud storage objects get gs://sensitive-bucket/test-file.txt --impersonate-user="继承组内的用户邮箱@example.com"
内容的提问来源于stack exchange,提问作者throwawaythecoal
相关产品推荐
相关产品推荐

