Amazon web services 允许VPC时拒绝AWS S3 bucket访问

Amazon web services 允许VPC时拒绝AWS S3 bucket访问,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我已使用桶策略设置了S3桶,如下所示: { "Version": "2012-10-17", "Id": "NginxProxy", "Statement": [ { "Sid": "AllowByVpc", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::test/*", "Co

我已使用桶策略设置了S3桶,如下所示:

{
"Version": "2012-10-17",
"Id": "NginxProxy",
"Statement": [
    {
        "Sid": "AllowByVpc",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::test/*",
        "Condition": {
            "StringEquals": {
                "aws:sourceVpc": "vpc-cf53cba8"
            }
        }
    },
    {
        "Sid": "DenyByVpc",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::test/*",
        "Condition": {
            "NotIpAddress": {
                "aws:SourceIp": [
                    "185.24.222.124"
                ]
            },
            "StringNotEquals": {
                "aws:sourceVpc": "vpc-cf53cba8"
            }
        }
    }
]
}

当我尝试command
curl-k-v--key-client.key--cert-client.crt-T abc.jpg时http://test.s3.us-east-1.amazonaws.com/abc.jpg
在同一VPC(VPC-cf53cba8)下的EC2实例上,我被拒绝访问


不幸的是,我不知道该关注什么。有什么想法吗?

我已经解决了这个问题,为S3添加了一个VPC端点-

好,但是当我设置公共访问时,curl请求正确地上传了一个文件。那又怎样?不知道你的问题是什么。如果您使用curl,那么您正在向S3发出未经验证的请求,并且需要公共访问。如果要限制对特定VPC的访问,请在sourceVpc上使用经过身份验证的访问和带有允许条件(或在非sourceVpc上带有拒绝条件)的bucket策略。但以前的bucket策略允许我在同一VPC下的EC2实例上执行此操作。我认为“Principal”:“*”表示任何未经验证的访问。我认为(但不是100%确定)这里的问题是您通过公共互联网访问S3。这意味着您的S3策略没有看到有关AWS网络的任何信息。为S3添加VPC端点。然后,您的EC2实例将使用AWS专用网络与S3通信。Bucket策略不会接受该请求,因为它与任何VPC无关,它只是来自客户端的请求(如浏览器请求),而不是来自AWS服务、SDK或CLI的请求。