适用于 Cloud Storage 的 IAM 角色

预定义角色

下表介绍了与 Cloud Storage 相关联的 Identity and Access Management (IAM) 角色,并列出了每个角色中包含的权限。除非另有说明,否则这些角色既可以应用于项目、存储桶,也可以应用于托管文件夹。

如需了解如何控制对存储桶的访问权限,请参阅使用 IAM 权限。如需了解如何控制对托管文件夹的访问权限,请参阅对托管文件夹使用 IAM

角色 说明 权限
Storage Object Creator (roles/storage.objectCreator) 允许用户创建对象、文件夹和受管理的文件夹。 不提供查看、删除或替换对象的权限。 不提供在对象更新请求中获取对象访问控制列表 (ACL) 或设置对象 ACL 的权限。 orgpolicy.policy.get1
resourcemanager.projects.get2
resourcemanager.projects.list2
storage.objects.create
storage.folders.create
storage.managedFolders.create
storage.multipartUploads.create
storage.multipartUploads.abort
storage.multipartUploads.listParts
Storage Object Viewer (roles/storage.objectViewer) 授予查看对象及其元数据(不包括 ACL)的权限。

还可以列出存储桶中的对象、文件夹和托管文件夹。

resourcemanager.projects.get2
resourcemanager.projects.list2
storage.folders.get
storage.folders.list
storage.managedFolders.get
storage.managedFolders.list
storage.objects.get
storage.objects.list
Storage Object User (roles/storage.objectUser) 授予创建、查看、列出、更新和删除对象、文件夹和托管文件夹及其元数据的权限。不提供获取或设置 ACL 或 IAM 政策的权限。 orgpolicy.policy.get1
resourcemanager.projects.get2
resourcemanager.projects.list2
storage.folders.*
storage.managedFolders.create
storage.managedFolders.delete
storage.managedFolders.list
storage.managedFolders.get
storage.multipartUploads.*
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
storage.objects.restore
storage.objects.update
Storage Object Admin (roles/storage.objectAdmin) 授予对对象和文件夹的完全控制权,包括列出、创建、查看、重命名和删除对象和文件夹以及设置对象 ACL。此外,还授予创建、删除、获取和列出托管文件夹的权限。 orgpolicy.policy.get1
resourcemanager.projects.get2
resourcemanager.projects.list2
storage.folders.*
storage.managedFolders.create
storage.managedFolders.delete
storage.managedFolders.get
storage.managedFolders.list
storage.objects.*
storage.multipartUploads.*
Storage Folder Admin (roles/storage.folderAdmin) 授予对象、文件夹和托管文件夹的完全控制权,包括列出、创建、查看、删除和管理 IAM 权限。 orgpolicy.policy.get1
resourcemanager.projects.get2
resourcemanager.projects.list2
storage.folders.*
storage.managedFolders.*
storage.multipartUploads.*
storage.objects.*
Storage HMAC Key Admin (roles/storage.hmacKeyAdmin) 对项目中 HMAC 密钥的完全控制权。此角色只能应用于项目。 orgpolicy.policy.get1
storage.hmacKeys.*
Storage Admin (roles/storage.admin) 授予对存储桶、文件夹、托管式文件夹和对象的完全控制权,包括获取和设置对象 ACL 或 IAM 政策。还可授予对长时间运行的操作的完全控制权。

将该角色应用于单个存储桶时,仅可以控制指定的存储桶以及该存储桶中的托管式文件夹、对象和长时间运行的操作。

firebase.projects.get
orgpolicy.policy.get1
resourcemanager.projects.get2
resourcemanager.projects.list2
storage.buckets.*
storage.bucketOperations.*
storage.folders.*
storage.managedFolders.*
storage.objects.*
storage.multipartUploads.*
Storage Insights Admin (roles/storageinsights.admin) 授予对存储空间分析库存报告和配置的完全控制权限。 cloudresourcemanager.projects.get
cloudresourcemanager.projects.list
storageinsights.reportConfigs.*
storageinsights.reportDetails.*
Storage Insights Viewer (roles/storageinsights.viewer) 授予对存储空间分析商库存报告和配置的只读权限。 cloudresourcemanager.projects.get
cloudresourcemanager.projects.list
storageinsights.reportConfigs.list
storageinsights.reportConfigs.get
storageinsights.reportDetails.list
storageinsights.reportDetails.get
Storage Insights Collector Service (roles/storage.insightsCollectorService) 授予对资产清单报告中对象元数据的读取权限。 resourcemanager.projects.get
resourcemanager.projects.list
storage.buckets.getObjectInsights
storage.buckets.get

1 orgpolicy.policy.get 权限允许主账号了解项目需遵守的组织政策限制条件。 此权限当前仅在项目级或更高级层授予角色时有效。

2 如需详细了解 resourcemanager.projects.* 权限,请参阅使用 IAM 对项目进行访问权限控制

基本角色

基本角色指在引入 IAM 之前就已存在的角色。这些角色具有独特的特征:

  • 您只能针对整个项目授予基本角色,不能针对项目中的各存储分区。与您为项目授予的其他角色一样,基本角色适用于项目中的所有存储分区和对象。

  • 基本角色包含本部分中未介绍的其他 Google Cloud 服务的额外权限。请参阅基本角色,了解基本角色授予的权限的一般性论述。

  • 每个基本角色都有一个便利值,您可以通过这些角色使用基本角色,将其视为组。以这种方式使用时,任何具有基本角色的主账号都将被视为组的成员。根据便利值所具有的访问权限,组中的每个人都将获得额外的资源访问权限。

    • 在为存储分区授予角色时,可以使用便利值。

    • 在对象上设置 ACL 时,可以使用便利值。

  • 基本角色本身并不提供其名称所暗示的对 Cloud Storage 资源的所有访问权限。相反,它们本身提供一部分预期访问权限,而通过使用预期值提供其余的预期访问权限。由于与任何其他 IAM 主账号一样,用户可以手动添加或移除便利值,因此可以撤消主账号可能期望具有的访问权限。

    便利值通常会导致具有基本角色的主账号获得额外的访问权限,如需了解这方面的探讨,请参阅可修改的行为

固有权限

下表介绍始终与各基本角色关联的 Cloud Storage 权限。

角色 说明 Cloud Storage 权限
Viewer (roles/viewer) 授予以下权限:列出项目中的存储桶;列出时查看存储桶元数据(不包括 ACL);列出和获取项目中的 HMAC 密钥。 storage.buckets.list
storage.hmacKeys.get
storage.hmacKeys.list
Editor (roles/editor) 授予以下权限:创建、列出和删除项目中的存储桶;列出时查看存储桶元数据(不包括 ACL);控制项目中的 HMAC 密钥。 storage.buckets.create
storage.buckets.delete
storage.buckets.list
storage.hmacKeys.*
Owner (roles/owner)

授予以下权限:创建、列出和删除项目中的存储桶;列出时查看存储桶元数据(不包括 ACL);创建、删除和列出标记绑定;控制项目中的 HMAC 密钥。

在 Google Cloud 中,具有此角色的主账号通常可以执行管理任务,例如,更改主账号在项目中的角色或更改结算功能。

storage.buckets.create
storage.buckets.delete
storage.buckets.list
storage.buckets.createTagBinding
storage.buckets.deleteTagBinding
storage.buckets.listEffectiveTags
storage.buckets.listTagBindings
storage.hmacKeys.*

可修改的行为

由于便利值,被授予基本角色的主账号通常拥有对项目的存储桶和对象的额外访问权限。创建存储桶后,系统会为便利值授予某些存储桶级层访问权限,但您稍后可以修改存储桶 IAM 政策和对象 ACL 来移除或更改访问权限。

创建启用了统一存储桶级访问权限的存储桶时,系统会通过便利值授予以下访问权限:

  • 被授予 roles/viewer 的主账号获得存储桶的 roles/storage.legacyBucketReaderroles/storage.legacyObjectReader 角色。

  • 被授予 roles/editor 的主账号获得存储桶的 roles/storage.legacyBucketOwnerroles/storage.legacyObjectOwner 角色。

  • 被授予 roles/owner 的主账号获得存储桶的 roles/storage.legacyBucketOwnerroles/storage.legacyObjectOwner 角色。

创建未启用统一存储桶级访问权限的存储桶时,系统会通过便利值授予以下访问权限:

  • 被授予 roles/viewer 的主账号拥有存储桶的 roles/storage.legacyBucketReader 角色。

  • 被授予 roles/editor 的主账号拥有存储桶的 roles/storage.legacyBucketOwner 角色。

  • 被授予 roles/owner 的主账号拥有存储桶的 roles/storage.legacyBucketOwner 角色。

  • 此外,存储桶具有默认对象访问控制列表 (ACL)。此默认 ACL 通常应用于存储桶中的新对象,并且通常授予对便利值的其他访问权限。

预定义的旧版角色

下表列出了与访问控制列表 (ACL) 权限具有同等效果的 IAM 角色。您只能针对各存储分区而不能针对项目授予旧版角色

角色 说明 权限
Storage Legacy Object Reader (roles/storage.legacyObjectReader) 授予查看对象及其元数据(不包括 ACL)的权限。 storage.objects.get
Storage Legacy Object Owner (roles/storage.legacyObjectOwner) 授予查看和修改对象及其元数据(包括 ACL)的权限。 storage.objects.get
storage.objects.update
storage.objects.setRetention
storage.objects.overrideUnlockedRetention
storage.objects.setIamPolicy
storage.objects.getIamPolicy
Storage Legacy Bucket Reader (roles/storage.legacyBucketReader) 授予列出存储分区的内容并读取存储分区元数据(不包括 IAM 政策)的权限。此外,还授予在列出对象和托管文件夹时读取对象元数据(不包括 IAM 政策)的权限。

对于此角色的使用也反映在存储桶的 ACL 中。如需了解详情,请参阅 IAM 与 ACL 的关系

storage.buckets.get
storage.objects.list
storage.managedFolders.get
storage.managedFolders.list
storage.multipartUploads.list
Storage Legacy Bucket Writer (roles/storage.legacyBucketWriter) 授予创建、替换、列出和删除对象和托管文件夹的权限;创建具有保留配置的对象的权限;在列出时读取对象和托管文件夹元数据(不包括 IAM 政策)的权限;并读取存储桶元数据(不包括 IAM 政策)的权限。

对于此角色的使用也反映在存储桶的 ACL 中。如需了解详情,请参阅 IAM 与 ACL 的关系

storage.buckets.get
storage.objects.list
storage.objects.create
storage.objects.delete
storage.objects.restore
storage.objects.setRetention
storage.managedFolders.create
storage.managedFolders.delete
storage.managedFolders.get
storage.managedFolders.list
storage.multipartUploads.*
Storage Legacy Bucket Owner (roles/storage.legacyBucketOwner) 授予以下权限:创建、替换、列出和删除对象及托管式文件夹;创建具有保留配置的对象;创建、删除和列出标记绑定;列出时读取对象元数据(不包括 IAM 政策);列出时读取托管式文件夹元数据(包括 IAM 政策);读取和修改存储桶元数据(包括 IAM 政策);管理长时间运行的操作。

对于此角色的使用也反映在存储分区的 ACL 中。如需了解详情,请参阅 IAM 与 ACL 的关系

storage.buckets.get
storage.buckets.createTagBinding
storage.buckets.deleteTagBinding
storage.buckets.listEffectiveTags
storage.buckets.listTagBindings
storage.buckets.update
storage.buckets.enableObjectRetention
storage.buckets.restore
storage.buckets.setIamPolicy
storage.buckets.getIamPolicy
storage.bucketOperations.*
storage.managedFolders.*
storage.objects.list
storage.objects.create
storage.objects.delete
storage.objects.restore
storage.objects.setRetention
storage.multipartUploads.*

自定义角色

您可能希望定义自己的角色,其中包含您指定的组权限组。为此,IAM 提供了自定义角色

后续步骤