限制用户选择数据库的访问

Restrict access to users from selecting a database

如何使用 athena 工作组来限制用户对特定数据库的访问?

例如我有一个用户 "readonly" 不应该能够 运行 select 查询默认数据库。这可能吗?

限制用户查询table的方法是使用IAM权限。遗憾的是,Athena 中的权限模型比独立数据仓库或 RDBMS 中的权限模型更复杂,因为 Athena 是更大生态系统的一部分,该生态系统还包括 S3 和 Glue。

没有 运行ning SELECT 的特定权限。您可以通过控制是否允许用户执行 athena:StartQueryExecution 操作来限制用户进行 运行 查询,但您无法控制他们 运行.[=16= 的查询类型]

相反,您需要考虑访问数据和访问目录。

要限制读取,您需要限制用户访问 S3 上的数据。即使用户被允许 运行 一个 SELECT 查询,如果他们没有 运行 s3:ListObjects3:GetObject 的权限,他们也会得到一个错误table 前缀中的对象。

您还可以限制用户对目录对象的访问,即数据库和 tables – 但这并不限制他们对数据本身的访问,更多地将其视为对创建的限制,更新和删除数据库和 tables。即使有办法限制用户可以在目录中看到哪些数据库和 tables,如果他们有权读取数据,他们可以直接从 S3 读取数据并跳过 Athena。

您可以在此处找到有关如何控制对目录对象的访问的文档:https://docs.aws.amazon.com/athena/latest/ug/fine-grained-access-to-glue-resources.html

Athena 中的工作组不能用于控制对数据或目录的访问。