使用 AWS 开发工具包对 Amazon Athena 进行查询验证
Query validation for Amazon Athena using AWS SDK
我正在使用 AWS SDK 通过 Java 执行 Amazon Athena 查询,我想做的是通过某种方式确保仅执行 SELECT 查询。这是为了确保不执行 DROP 或 INSERT 等查询。那么有什么方法可以使用 AWS SDK 执行此检查而无需使用任何其他依赖项?
我正在考虑在 Athena 中使用 EXPLAIN 查询(Presto EXPLAIN 查询)来识别我们正在执行的查询类型,但我不太确定如何读取 EXPLAIN 查询的响应。
关于阅读 EXPLAIN 查询响应或我可以使用的任何其他替代方法的任何建议都很棒。谢谢
您使用 IAM 策略控制 Athena 中的权限。 Athena 使用 Glue Data Catalog 来存储有关表的元数据。管理允许谁创建和删除表的 IAM 操作属于 Glue,因为当您 运行 像 DROP TABLE foo
.[=15= 这样的查询时,这是在幕后使用的 API ]
如果您创建的策略不包含创建或删除表和分区的权限,则使用该策略的用户将无法 运行 导致创建或删除表或分区的查询添加或删除。
换句话说,只允许 glue:GetTable
、glue:GetPartitions
和 等操作,而不是 glue:DeleteTable
和 [=14] 等操作=].
任何需要此类权限的查询都会return出错。
我正在使用 AWS SDK 通过 Java 执行 Amazon Athena 查询,我想做的是通过某种方式确保仅执行 SELECT 查询。这是为了确保不执行 DROP 或 INSERT 等查询。那么有什么方法可以使用 AWS SDK 执行此检查而无需使用任何其他依赖项?
我正在考虑在 Athena 中使用 EXPLAIN 查询(Presto EXPLAIN 查询)来识别我们正在执行的查询类型,但我不太确定如何读取 EXPLAIN 查询的响应。
关于阅读 EXPLAIN 查询响应或我可以使用的任何其他替代方法的任何建议都很棒。谢谢
您使用 IAM 策略控制 Athena 中的权限。 Athena 使用 Glue Data Catalog 来存储有关表的元数据。管理允许谁创建和删除表的 IAM 操作属于 Glue,因为当您 运行 像 DROP TABLE foo
.[=15= 这样的查询时,这是在幕后使用的 API ]
如果您创建的策略不包含创建或删除表和分区的权限,则使用该策略的用户将无法 运行 导致创建或删除表或分区的查询添加或删除。
换句话说,只允许 glue:GetTable
、glue:GetPartitions
和 等操作,而不是 glue:DeleteTable
和 [=14] 等操作=].
任何需要此类权限的查询都会return出错。