S3存储桶策略不允许Athena执行查询执行

时间:2019-05-20 14:38:28

标签: amazon-web-services amazon-s3 amazon-athena

我正在S3存储桶上执行Amazon Athena查询。我们称之为athena-bucket。今天,我有一个要求,以限制此存储桶超过VPC Enpoints。因此,我尝试了以下S3存储桶策略:

{
   "Version": "2012-10-17",
   "Statement": [

       {
           "Sid": "VPCe and SourceIP",
           "Effect": "Deny",
           "NotPrincipal": {
               "AWS": [
                   "arn:aws:iam::**********:user/user_admin",
                   "arn:aws:iam::**********:root",

               ]
           },
           "Action": "s3:*",
           "Resource": [
               "arn:aws:s3:::athena-bucket",
               "arn:aws:s3:::athena-bucket/abc/*"
           ],
           "Condition": {
               "StringNotEquals": {
                   "aws:sourceVpce": [
                       "vpce-XXXXxxxxe",
                       "vpce-xxxxxxxxxx",
                       "vpce-XXXXXXXXXXXXXX"
                   ]
               },
               "NotIpAddress": {
                   "aws:SourceIp": [
                       "publicip/32",
                       "publicip2/32"

                   ]
               }
           }
       }
   ]
}

请注意,雅典娜拥有访问上述存储桶的完全权限。我想使用S3存储桶策略来限制仅来自某些IP地址和VPC端点的访问。

但是,尽管请求是通过策略中提到的VPC端点进行路由的,但我仍然收到access denied error

2 个答案:

答案 0 :(得分:1)

Amazon Athena是一项基于Internet的服务。它直接访问Amazon S3 ,并且通过Amazon VPC连接。

如果您限制存储桶只能通过 VPC端点访问,则Amazon Athena将无法访问它。

答案 1 :(得分:0)

实际上,您可以找到一种解决方案来满足您的要求。以下策略条件允许来自您所有VPC端点 Athena的操作:

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Sid": "VPCe and SourceIP",
           "Effect": "Deny",
           "NotPrincipal": {
               "AWS": [
                   "arn:aws:iam::**********:user/user_admin",
                   "arn:aws:iam::**********:root",
               ]
           },
           "Action": "s3:*",
           "Resource": [
           "arn:aws:s3:::athena-bucket",
           "arn:aws:s3:::athena-bucket/abc/*"
           ],
           "Condition": {
               "ForAllValues:StringNotEquals": {
                   "aws:sourceVpce": [
                       "vpce-XXXXxxxxe",
                       "vpce-xxxxxxxxxx",
                       "vpce-XXXXXXXXXXXXXX"
                   ],
                   "aws:CalledVia": [ "athena.amazonaws.com" ]
               }
           }
       }
   ]
}

条件的“ ForAllValues”部分将此AND条件转换为OR。

由于无法确定雅典娜来自哪个IP,因此不确定如何使用IP限制。