您可以控制哪些用户有权访问您的 Cloud Storage 存储桶和对象及其访问权限级别。
在统一访问权限和精细控制访问权限之间进行选择
在创建存储桶时,您应决定是要使用统一访问权限还是精细控制访问权限来应用权限。
统一(推荐):统一存储桶级访问权限可让您仅需要使用 Identity and Access Management (IAM) 来管理权限。IAM 将权限应用于存储桶中包含的所有对象或者应用于具有通用名称前缀的对象组。IAM 还允许您使用在使用 ACL 时无法使用的功能,例如代管式文件夹、IAM Conditions、网域限定共享和员工身份联合。
精细控制:精细控制选项可让您将 IAM 和访问控制列表 (ACL) 一起使用来管理权限。ACL 是 Cloud Storage 的旧版访问权限控制系统,专为与 Amazon S3 交互操作而设计。ACL 还允许您按对象指定访问权限。
由于精细的访问权限要求您在两个不同的访问权限控制系统之间进行协调,因此意外暴露数据的可能性增加,审核谁有权访问资源变得更加复杂。特别是,如果您的对象包含敏感数据(例如个人身份信息),我们建议您将这些数据存储在启用了统一存储桶级访问权限的存储桶中。
将 IAM 权限与 ACL 搭配使用
在 Cloud Storage 中,您可以通过以下两个系统向用户授予存储桶和对象的访问权限:IAM 和访问控制列表 (ACL)。这两个系统是并行运行的;为了让用户能够访问 Cloud Storage 资源,您只需通过其中一个系统授予用户权限。例如,如果您的存储桶的 IAM 政策仅允许少数用户读取存储桶中的对象数据,但该存储桶中的一个 ACL 使得某个对象可供公开读取,那么系统便会公开该对象。
在大多数情况下,建议使用 IAM 来控制对资源的访问。IAM 可控制整个 Google Cloud 中的权限,并允许您在存储桶级和项目级授予权限。对于任何应用于存储桶中多个对象的权限,您都应该使用 IAM 来控制,以降低意外泄露的风险。如需专门使用 IAM,请启用统一存储桶级访问权限,以禁止对所有 Cloud Storage 资源使用 ACL。
ACL 仅控制 Cloud Storage 资源的权限,并且提供的权限选项数量有限,但允许您根据单个对象授予权限。您很可能希望在以下使用场景中使用 ACL:
- 自定义对存储桶中单个对象的访问权限。
- 从 Amazon S3 迁移数据。
其他访问权限控制选项
除了 IAM 和 ACL 之外,您还可以使用以下工具来帮助您控制对资源的访问:
签名网址(查询字符串身份验证)
使用签名网址,通过您生成的网址授予对象的限时读取或写入权限。任何共享该网址的用户都可以在您指定的时间段内访问对象(无论他们是否拥有用户账号)。
除了 IAM 和 ACL 之外,您还可以使用签名网址。例如,您可以仅使用 IAM 向少数人授予对存储桶的访问权限,然后创建签名网址以允许其他人访问该存储桶内的特定资源。
了解如何创建签名网址:
签名政策文档
使用签名政策文档指定可以上传到存储桶的内容。相比签名网址,政策文档可进一步控制上传内容的大小、类型和其他特征,并且网站所有者可以使用政策文档来允许访问者将文件上传到 Cloud Storage 中。
除 IAM 和 ACL 之外,您还可以使用签名政策文档。例如,您可以使用 IAM,允许组织中的用户上传任何对象,然后创建签名政策文档以允许网站访问者仅上传符合特定条件的对象。
Firebase 安全规则
使用 Firebase 安全规则,通过适用于 Cloud Storage 的 Firebase SDK,为移动应用和 Web 应用提供基于特性的精确访问控制。例如,您可以指定哪些用户能够上传或下载对象、对象的大小上限或对象可下载的时间。
禁止公开访问
使用阻止公开访问来限制对您的存储桶和对象的公开访问。启用禁止公开访问后,通过 allUsers
和 allAuthenticatedUsers
获得访问权限的用户将被禁止访问数据。
凭据访问边界
使用凭据访问边界来缩小 OAuth 2.0 访问令牌可用的权限范围。首先,定义一个凭据访问边界以指定令牌可以访问的存储桶以及该存储桶上可用权限的上限。然后您可以创建 OAuth 2.0 访问令牌,并将其替换为遵循凭据访问边界的新访问令牌。
后续步骤
- 了解如何使用 IAM 权限。
- 参阅特定于 Cloud Storage 的 IAM 权限和角色
- 查看涉及设置存储桶和对象 ACL 的共享和协作情景示例。
- 了解如何让公共互联网上的所有人都可以访问您的数据。
- 详细了解何时使用签名网址。