1

我有一个存储桶策略(如下所列),当从特定 VPC 以外的任何地方访问时,它应该防止访问 S3 存储桶。我在 VPC 中启动了一个 EC2 实例,测试并确认 S3 访问工作正常。现在,当我通过 Web 控制台访问同一个 S3 存储桶时,我收到“错误 - 访问被拒绝”消息。

这是否意味着在通过 Web 控制台与 S3 交互时,请求上下文中也存在 aws:SourceVpc 条件键?

我的假设是它存在于请求上下文中,否则策略声明将失败,因此该声明的“效果”不适用,因为没有“Ifexists”添加到 StringNotEquals - 问这个问题,因为我无法在AWS 文档。即使在将“Ifexists”添加到 StringNotEquals 之后,结果也是一样的 - 有人可以确认吗?

{
    "Version": "2012-10-17",
    "Id": "Policy1589385141624",
    "Statement": [
        {
            "Sid": "Access-to-specific-VPC-only",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::abhxy12bst3",
                "arn:aws:s3:::abhxy12bst3/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:sourceVpc": "vpc-0xy915sdfedb5667"
                }
            }
        }
    ]
}
4

2 回答 2

2

这将适用于与 S3 交互的所有请求。控制台只是在 AWS API 之上提供了一个 GUI。

于 2020-05-16T16:27:38.773 回答
2

是的你是对的。我测试了以下存储桶策略,来自 AWS S3 控制台的操作被拒绝。

{
    "Version": "2012-10-17",
    "Id": "Policy1589385141624",
    "Statement": [
        {
            "Sid": "Access-to-specific-VPC-only",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::abhxy12bst3",
                "arn:aws:s3:::abhxy12bst3/*"
            ],
            "Condition": {
                "StringLike": {
                    "aws:sourceVpc": "vpc-30*"
                }
            }
        }
    ]
}

这意味着请求中肯定存在一些 vpc id。每个帐户可能相同,也可能不同。

于 2020-05-16T22:58:53.203 回答