我有这个存储桶策略,它可以正常运行。唯一的问题是它不允许雅典娜查询。如何将其修改为所有雅典娜?
# result of `dput(GL)`
GL <- structure(list(well = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L), .Label = c("101", "684"), class = "factor"), year = structure(c(1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("1994", "1995", "1996"
), class = "factor"), month = structure(c(3L, 2L, 4L, 1L, 3L,
2L, 4L, 1L, 3L, 2L, 4L, 1L, 3L, 2L, 4L, 1L, 3L, 2L, 4L, 1L, 3L,
2L, 4L, 1L), .Label = c("Apr", "Feb", "Jan", "Mar"), class = "factor"),
value = structure(c(3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L), .Label = c("8.12",
"8.21", "8.53", "8.62"), class = "factor"), area = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("H", "R"), class = "factor")), row.names = c(NA,
-24L), class = "data.frame")
我知道此链接...
https://docs.aws.amazon.com/athena/latest/ug/managed-policies.html
但不确定如何将其与当前政策合并。
答案 0 :(得分:1)
雅典娜不支持限制或允许访问Amazon S3 基于aws:SourceIp条件键的资源。
每个AWS Athena文档在这里: https://docs.aws.amazon.com/athena/latest/ug/s3-permissions.html
答案 1 :(得分:0)
您有一个存储桶策略,该策略的作用域范围为该存储桶,并且适用于试图对该存储桶进行操作的任何用户或角色。您引用的链接是关于用户和角色策略的,仅适用于特定用户。当用户或角色在存储桶上进行操作时,其策略与存储桶策略的组合将决定允许他们执行的操作。
用户或角色策略与存储桶策略的组合不是联合,而是更像是交叉点。我的意思是,如果用户或角色策略未授予“ s3:GetObject
”,则存储桶策略授予该操作并不重要。用户或角色策略和都必须授予它。考虑到委托人的情况实际上甚至更加复杂-但是您的存储桶策略适用于每个人,因此情况并非如此。
您说您的政策有效,但不允许来自雅典娜的查询。的确如此,因为这是存储桶策略,因此它不授予任何用户或角色任何东西,它只是指定允许用户或角色执行的操作(如果允许他们访问存储桶)。此外,您的政策只是否认。明确拒绝并不意味着允许其他所有内容,仅意味着即使其他内容允许您的策略中提到的内容,您的策略也会推翻该规则(在这种情况下:即使用户或角色策略允许s3:GetObject
如果源IP与所提到的其中一个匹配,则会拒绝该操作-我想这是您的意图。
您用于运行Athena查询的用户或角色必须具有以下权限:
您链接到的托管策略将帮助1-3,但您必须编写4。执行查询时,IAM将评估1-4以及存储桶策略,以查看是否允许用户或角色运行查询。
答案 2 :(得分:0)
是正确的。您的存储桶策略说:如果传入请求不是来自这些IP地址之一,则不要让任何人对此S3存储桶做任何事情。
因此,即使允许允许访问存储桶的某人正在运行Athena查询,上述策略也会阻止它们,因为Athena不会进入这些IP地址之一。
为避免这种情况,您应该找到允许人们访问的任何策略,并将IP地址限制置于那些策略上,以便他们说出“允许这些人访问存储桶,但仅如果它们来自这些IP地址之一”。这样,它纯粹是Allow
策略,而不是Allow
和Deny
。
然后,Allow
对正在运行Athena查询的用户进行存储桶访问,但不按IP地址限制它们(因为Athena请求不会来自您的IP地址范围)。