Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 AWS S3阻止源IP地址不工作的bucket策略_Amazon S3 - Fatal编程技术网

Amazon s3 AWS S3阻止源IP地址不工作的bucket策略

Amazon s3 AWS S3阻止源IP地址不工作的bucket策略,amazon-s3,Amazon S3,我知道这个问题已经被问过好几次了,我已经阅读了一些关于这个问题的文档和例子。但我仍然无法让它工作 我想阻止从一个特定IP地址访问我的S3存储桶,并允许所有其他IP地址。我不想阻止属于IAM角色的实例,因此我正在为此使用NotIpAddress条件。以下是我在我的桶上应用的策略: { "Version": "2012-10-17", "Id": "Policy1486984747194", "Statement": [ { "Sid"

我知道这个问题已经被问过好几次了,我已经阅读了一些关于这个问题的文档和例子。但我仍然无法让它工作

我想阻止从一个特定IP地址访问我的S3存储桶,并允许所有其他IP地址。我不想阻止属于IAM角色的实例,因此我正在为此使用NotIpAddress条件。以下是我在我的桶上应用的策略:

{
    "Version": "2012-10-17",
    "Id": "Policy1486984747194",
    "Statement": [
        {
            "Sid": "AllowAllExceptOneIP",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my-test-bucket",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "52.38.90.46"
                }
            }
        }
    ]
}
但这项政策不起作用。我可以从这台机器上传文件到我的bucket,我正在使用s3-curl.pl临时上传我的文件


有人能帮我找出这里出了什么问题吗。谢谢。

要阻止特定IP对S3存储桶的所有操作,策略需要为该IP提供单独的拒绝效果声明,示例:

{
    "Version": "2012-10-17",
    "Id": "Policy1487062767078",
    "Statement": [
        {
            "Sid": "AllowAll",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-test-bucket",
                "arn:aws:s3:::my-test-bucket/*"
            ]
        },
        {
            "Sid": "DenyIP",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-test-bucket",
                "arn:aws:s3:::my-test-bucket/*"
            ],
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "52.38.90.46"
                }
            }
        }
    ]
}
可以根据需要阻止的内容更改操作和资源


非常感谢@SergeyKovalev为我提供此解决方案。

要阻止特定IP对S3存储桶的所有操作,策略需要为该IP提供单独的拒绝效果声明,示例:

{
    "Version": "2012-10-17",
    "Id": "Policy1487062767078",
    "Statement": [
        {
            "Sid": "AllowAll",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-test-bucket",
                "arn:aws:s3:::my-test-bucket/*"
            ]
        },
        {
            "Sid": "DenyIP",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-test-bucket",
                "arn:aws:s3:::my-test-bucket/*"
            ],
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "52.38.90.46"
                }
            }
        }
    ]
}
可以根据需要阻止的内容更改操作和资源


非常感谢@SergeyKovalev为我提供此解决方案。

这并没有明确否认IP。如果您有一个公共ACL,默认情况下将允许所有IP。为该IP创建另一个具有
Deny
效果的语句。@SergeyKovalev,谢谢,你能帮我吗。我尝试了
{“Version”:“2012-10-17”,“Id”:“Policy1486984747194”,“Statement”:[{“Sid”:“AllowAll”,“Effect”:“Allow”,“Principal”:{“AWS”:“*”},“Action”:“s3:”,“Resource”:“arn:AWS:s3:::my test bucket”},{“Sid”:“DenyOneIP”,“Effect”:“Deny”,“Principal”:{“AWS”:“*”,“Action”:“s3:*”,“资源”:“arn:aws:s3:::我的测试桶”,“条件”:{“IpAddress”:{“aws:SourceIp:“52.38.90.46”}}}}}}}}}}}
但这也不起作用。我发现我做错了什么。就像@Sergeykovalv提到的,我们需要创建另一个具有拒绝效果的语句。因为我拒绝了资源”:“arn:aws:s3:::我的测试桶“而不是arn:aws:s3:::我的测试bucket/*,我可以上传文件,只有bucket列表被该IP阻止。这并没有明确否认该IP。如果您有一个公共ACL,默认情况下将允许所有IP。为该IP创建另一个具有
Deny
效果的语句。@SergeyKovalev,谢谢,你能帮我吗。我尝试了
{“Version”:“2012-10-17”,“Id”:“Policy1486984747194”,“Statement”:[{“Sid”:“AllowAll”,“Effect”:“Allow”,“Principal”:{“AWS”:“*”},“Action”:“s3:”,“Resource”:“arn:AWS:s3:::my test bucket”},{“Sid”:“DenyOneIP”,“Effect”:“Deny”,“Principal”:{“AWS”:“*”,“Action”:“s3:*”,“资源”:“arn:aws:s3:::我的测试桶”,“条件”:{“IpAddress”:{“aws:SourceIp:“52.38.90.46”}}}}}}}}}}}
但这也不起作用。我发现我做错了什么。就像@Sergeykovalv提到的,我们需要创建另一个具有拒绝效果的语句。因为我拒绝了资源”:“arn:aws:s3:::我的测试bucket”而不是arn:aws:s3:::我的测试bucket/*,我能够上载文件,只有bucket列表被阻止从该IP。使用NotIpAddress更改最后一个条件:“条件”:{“NotIpAddress”:{“aws:SourceIp”:“52.38.90.46”}使用NotIpAddress更改最后一个条件:“条件”:{“NotIpAddress”:{“aws:SourceIp”:“52.38.90.46”}