【问题标题】:How to allow Amazon S3 access from specific IPs如何允许从特定 IP 访问 Amazon S3
【发布时间】:2018-10-13 08:02:09
【问题描述】:

我正在尝试此策略以允许用户仅使用特定 IP (56.160.12.114) 来放置和列出对象访问权限,而其余所有用户都应该只有获取访问权限。但是这个政策对我不起作用:

{
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "IPDeny",
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my-wicked-awesome-bucket/*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "56.160.12.114/28"
                }
            }
        }
    ]
}

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    此政策规定:拒绝任何未使用此 IP 地址范围的人访问

    这很好,但您还需要一个允许 访问的策略,因为默认行为是拒绝。因此,您正在拒绝默认已经被拒绝的人。

    更好的方法是:

    • 默认拒绝访问(自动发生)
    • 允许基于 IP 的访问

    类似这样的:

    {
        "Id": "S3PolicyId1",
        "Statement": [
            {
                "Sid": "IPAllow",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "*"
                },
                "Action": "s3:*",
                "Resource": "arn:aws:s3:::my-wicked-awesome-bucket/*",
                "Condition": {
                    "IpAddress": {
                        "aws:SourceIp": "56.160.12.114/28"
                    }
                }
            }
        ]
    }
    

    但是请注意,这是授予s3:* 访问来自该 IP 地址范围(包括连接到该网络范围的任何系统)的任何系统。确保你没问题。

    更新:

    如果您只想授予用户放置和列出对象的能力,请使用:

    {
        "Id": "S3PolicyId1",
        "Statement": [
            {
                "Sid": "IPAllow",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "*"
                },
                "Action": [
                    "s3:PutObject",
                    "s3:ListBucket"
                ],
                "Resource": [
                    "arn:aws:s3:::jstack-b",
                    "arn:aws:s3:::jstack-b/*"
                ],
                "Condition": {
                    "IpAddress": {
                        "aws:SourceIp": "56.160.12.114/28"
                    }
                }
            }
        ]
    }
    

    【讨论】:

    • 嗨,约翰,感谢您的回复。我已附加给定策略并使用 ip 56.160.12.114 访问存储桶。但我可以删除该对象。我希望用户应该只放置和列出对象
    • 添加了策略。
    • 嗨,John 尝试了上述政策,但在保存政策时出错
    • 已更新。 ListObjects 不高兴,所以我改用ListBucket,按照AWS Bucket Policy Error: Policy has invalid action
    猜你喜欢
    • 2021-10-09
    • 2018-03-08
    • 1970-01-01
    • 2019-10-07
    • 2017-11-27
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    相关资源
    最近更新 更多