【问题标题】:Query validation for Amazon Athena using AWS SDK使用 AWS 开发工具包对 Amazon Athena 进行查询验证
【发布时间】:2021-11-17 10:57:53
【问题描述】:

我正在使用 AWS 开发工具包使用 Java 执行 Amazon Athena 查询,我想做的是有一些方法来确保只执行 SELECT 查询。这是为了确保不执行 DROP 或 INSERT 等查询。那么有什么方法可以使用 AWS 开发工具包执行此检查,而无需使用任何其他依赖项?

我正在考虑在 Athena 中使用 EXPLAIN 查询(​​Presto EXPLAIN 查询)来确定我们正在执行哪种查询,但我不太清楚如何读取 EXPLAIN 查询的响应。

关于阅读 EXPLAIN 查询响应或我可以使用的任何其他替代方法的任何建议都会很棒。谢谢

【问题讨论】:

  • 听起来您需要使用只能使用 SELECT 的 IAM 配置文件?

标签: sql amazon-web-services aws-sdk amazon-athena presto


【解决方案1】:

您可以使用 IAM 策略控制 Athena 中的权限。 Athena 使用 Glue 数据目录来存储有关表的元数据。控制谁可以创建和删除表的 IAM 操作属于 Glue,因为当您运行 DROP TABLE foo 之类的查询时,这是在幕后使用的 API。

如果您创建的策略不包括创建或删除表和分区的权限,则使用该策略的用户将无法运行导致创建或删除表或添加或删除分区的查询。

换句话说,只允许glue:GetTableglue:GetPartitions 等操作,不允许glue:DeleteTableglue:DeletePartiton 等操作。

任何需要此类权限的查询都会返回错误。

【讨论】:

  • 哦,好吧,这真的很有意义。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-14
  • 2016-01-23
  • 2016-11-21
  • 2015-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多