S3 存储桶策略不允许 Athena 执行查询
S3 bucket policy is not allowing Athena to perform query execution
我正在 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"
]
}
}
}
]
}
请注意,Athena 拥有访问上述存储桶的完全权限。我想使用 S3 存储桶策略来限制仅来自特定 IP 地址和 VPC 端点的访问。
但是,尽管请求是通过策略中提到的 VPC 端点路由的,但我得到了 access denied error
。
Amazon Athena 是一项 Internet-based 服务。它直接访问 Amazon S3并且不通过 Amazon VPC 连接。
如果您将存储桶限制为只能通过 VPC 端点访问,Amazon Athena 将无法访问它。
实际上有一个解决方案可以让你得到你所要求的。以下策略条件允许来自所有 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 限制对此有何影响,因为您无法判断 Athena 将来自哪些 IP。
我正在 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"
]
}
}
}
]
}
请注意,Athena 拥有访问上述存储桶的完全权限。我想使用 S3 存储桶策略来限制仅来自特定 IP 地址和 VPC 端点的访问。
但是,尽管请求是通过策略中提到的 VPC 端点路由的,但我得到了 access denied error
。
Amazon Athena 是一项 Internet-based 服务。它直接访问 Amazon S3并且不通过 Amazon VPC 连接。
如果您将存储桶限制为只能通过 VPC 端点访问,Amazon Athena 将无法访问它。
实际上有一个解决方案可以让你得到你所要求的。以下策略条件允许来自所有 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 限制对此有何影响,因为您无法判断 Athena 将来自哪些 IP。