使用 S3 Access Grants 管理访问权限
要遵守最低权限原则,您可以根据应用程序、角色、组或组织单位来定义对 Amazon S3 数据的精细访问权限。根据访问模式的规模和复杂性,可以使用各种方法实现对 Amazon S3 中的数据的精细访问。
对于 AWS Identity and Access Management(IAM)主体来说,通过定义 IAM 权限策略和 S3 存储桶策略,可以最轻松地管理对 Amazon S3 中的少量和中等数量数据集的访问。只要必要的策略符合 S3 存储桶策略的策略大小限制(20 KB)和 IAM 策略的策略大小限制(5 KB),并且在每个账户允许的 IAM 主体数量内,此策略就将适用。
随着数据集和使用场景不断增多,您可能需要更多的策略空间。为策略语句提供更多空间的一种方法是,使用 S3 接入点作为 S3 存储桶的附加端点,因为每个接入点均可拥有自己的策略。您可以定义非常精细的访问控制模式,因为每个账户在每个 AWS 区域内可以拥有数千个接入点,每个接入点的策略大小最多 20 KB。尽管 S3 接入点增加了可用的策略空间,但它需要通过一种机制让客户端发现正确数据集的正确接入点。
第三种方法是实施 IAM 会话代理模式,在该模式中,您可以实施访问决策逻辑并为每个访问会话动态生成短期 IAM 会话凭证。虽然 IAM 会话代理方法支持任意动态权限模式并能有效扩展,但您必须构建访问模式逻辑。
您可以使用 S3 Access Grants 来管理对 Amazon S3 数据的访问权限,而不是使用上述方法。S3 Access Grants 提供了一个简化模型,用于按前缀、存储桶或对象定义对 Amazon S3 中数据的访问权限。此外,可以使用 S3 Access Grants 向 IAM 主体授予访问权限,并直接向公司目录中的用户或组授予访问权限。
通常,可以通过将用户和组映射到数据集来定义对 Amazon S3 中数据的权限。可以使用 S3 Access Grants 定义 S3 前缀与 Amazon S3 存储桶和对象中的用户与角色的直接访问映射。借助 S3 Access Grants 中的简化访问方案,可以按 S3 前缀向 IAM 主体授予只读、只写或读写访问权限,并直接向公司目录中的用户或组授予只读、只写或读写访问权限。借助这些 S3 Access Grants 功能,应用程序可以代表其当前经过身份验证的用户向 Amazon S3 请求数据。
将 S3 Access Grants 与 AWS IAM Identity Center 的可信身份传播功能集成后,应用程序可以直接代表经过身份验证的公司目录用户向 AWS 服务(包括 S3 Access Grants)发出请求。应用程序不再需要先将用户映射到 IAM 主体。此外,由于最终用户身份将一直传播到 Amazon S3,因此简化了审核哪个用户访问了哪个 S3 对象的过程。您不再需要重构不同的用户和 IAM 会话之间的关系。在将 S3 Access Grants 与 IAM Identity Center 可信身份传播结合使用时,Amazon S3 的每个 AWS CloudTrail 数据事件均包含对代表其访问数据的最终用户的直接引用。
有关 S3 Access Grants 的更多信息,请参阅以下主题。