对 Amazon S3 的访问权限
您可以使用基于身份的策略、存储桶资源策略、访问点策略或上述内容的任意组合授予对 Amazon S3 位置的访问权限。当参与者与 Athena 交互时,其权限会通过 Athena 传递,以确定 Athena 可以访问的内容。这意味着用户必须具有 Amazon S3 存储桶的访问权限,才能使用 Athena 进行查询。
每当您使用 IAM policy 时,请确保遵循 IAM 最佳实践。有关更多信息,请参阅《IAM 用户指南》中的 IAM 安全最佳实践。
当您在策略中配置 aws:SourceIp
时,Athena 将使用您指定的 IP 地址访问 Amazon S3 存储桶。您无法根据 aws:SourceVpc
或 aws:SourceVpce
条件键限制或允许对 Amazon S3 资源的访问。
Amazon S3 访问点和访问点别名
如果您在 Amazon S3 存储桶中拥有共享数据集,则维护单个存储桶策略以管理数百个使用案例的访问权限可能会非常困难。
Amazon S3 存储桶访问点有助于解决此问题。一个存储桶可以有多个访问点,每个访问点都有一个策略,能够以不同方式控制对存储桶的访问。
对于您创建的每个访问点,Amazon S3 都会生成一个代表访问点的别名。由于别名采用 Amazon S3 存储桶名称格式,因此您可以在 Athena 中 CREATE TABLE
语句的 LOCATION
子句中使用别名。然后,Athena 对存储桶的访问由别名所代表的访问点策略控制。
有关更多信息,请参阅《Amazon S3 用户指南》中的 Amazon S3 中的表位置 和使用访问点。
使用 CalledVia 下文键
为了增加安全性,您可以使用 aws:CalledVia 全局条件上下文键。aws:CalledVia
键包含链中代表主体发出请求的每个服务的有序列表。通过为 aws:CalledVia
上下文键指定 Athena 服务主体名称 athena.amazonaws.com
,您可以将请求限制为仅从 Athena 发出的请求。有关更多信息,请参阅将 Athena 与 CalledVia 上下文键结合使用。
其他资源
有关如何授予 Amazon S3 访问权限的详细信息和示例,请参阅以下资源:
-
《Amazon S3 用户指南》中的 示例演练:管理访问。
-
Amazon 知识中心中的如何提供对 Amazon S3 存储桶中对象的跨账户访问权限?
。