我计划为名为"athenadata162〃;。我希望只有2个办公室IP地址和当前帐户中的athena用户可以访问这个bucket。我想知道这项政策是否写得正确以达到目的。它是基于博客文章:
https://aws.amazon.com/blogs/security/how-to-define-least-privileged-permissions-for-actions-called-by-aws-services/
我不知道如何正确设置这个部分。。。
"Principal": {
"AWS": "arn:aws:iam::111122223333:role/BizMetricsQuery"
},
以下是我尝试过的:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::testme1623/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"1.2.3.4/32",
"5.6.7.8/32"
], "aws:CalledVia": "athena.amazonaws.com"
}
}
}
]
}
如果我不使用NotIpAddress的第二个Condition语句,那么IP地址将正确地列为白色,但Athena无法访问文件。
当您使用Athena运行查询时,访问S3的是Athena服务,S3/IAM将看到其IP,而不是客户端的。你能做的最好的事情可能是用aws:CalledVia
限制对bucket的访问,就像你所做的那样,并在Athena级别应用IP限制,例如athena:StartQueryExecution
——当然,这不是一回事。
您还可以在假定角色策略上设置IP限制,然后将对存储桶的访问限制为仅限于该角色。在运行查询之前,用户将被要求扮演该角色,并且只能从指定的IP号码中扮演该角色。