【发布时间】:2020-10-21 14:39:09
【问题描述】:
我正在限制对我的 VPC 端点的存储桶访问,我有一个存储桶说 test-bucket 在 Dev 帐户中,我添加了以下策略以使访问仅限于 VPC 端点:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Access From Dev, QA Account",
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::x:root",
"arn:aws:iam::y:root",
]
},
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::test-bucket",
"arn:aws:s3:::test-bucket/*"
],
"Condition": {
"StringNotEquals": {
"aws:sourceVpce": [
"vpce-1234",
"vpce-1235"
]
}
}
}
开发帐户中的所有实例都能够通过 wget 和 AWS CLI 访问对象,当我从 QA 帐户的实例访问时出现问题,我能够 wget 对象但无法通过 AWS 访问CLI,出现以下错误:
fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden
虽然我已经在 S3 存储桶策略中添加了与 QA 账户相关的 VPC Endpoint。
如果我从存储桶策略中删除拒绝和删除 VPC 终端节点规则的操作,那么我可以从 QA 账户实例进行访问,因为有为其定义的 IAM 角色。我的问题是,当我通过 VPC Endpoint 限制访问时,为什么我无法从 QA 帐户实例访问?
帐户来自同一地区。
【问题讨论】:
-
在这里尝试理解为合法。如果请求确实来自
vpce-1235,那么Condition是假的,因为StringNotEquals?因此,该政策甚至不适用。我对么?那么 QA 账户需要哪些角色才能访问存储桶呢?
标签: amazon-web-services amazon-s3