Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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 web services 具有限制访问s3存储桶中文件夹的策略的角色被忽略_Amazon Web Services_Amazon S3_Amazon Ec2_Amazon Iam - Fatal编程技术网

Amazon web services 具有限制访问s3存储桶中文件夹的策略的角色被忽略

Amazon web services 具有限制访问s3存储桶中文件夹的策略的角色被忽略,amazon-web-services,amazon-s3,amazon-ec2,amazon-iam,Amazon Web Services,Amazon S3,Amazon Ec2,Amazon Iam,我已将此策略(称为“备份”)分配给一个角色(称为“同步”): 在将包含备份策略的同步角色分配给实例之前,该实例无法访问bucket中的资源。这是意料之中的 将实例分配给同步角色后,该实例可以访问策略中指定文件夹中的对象。这是意料之中的 但是,出乎意料的是,实例现在也可以访问bucket中的所有对象,无论它们在哪个文件夹中。这就像政策中的限制被忽略了一样 bucket不授予公众访问权限 更新 问题似乎与我制定的桶策略有关: { "Version": "

我已将此策略(称为“备份”)分配给一个角色(称为“同步”):

  • 在将包含备份策略的同步角色分配给实例之前,该实例无法访问bucket中的资源。这是意料之中的

  • 将实例分配给同步角色后,该实例可以访问策略中指定文件夹中的对象。这是意料之中的

  • 但是,出乎意料的是,实例现在也可以访问bucket中的所有对象,无论它们在哪个文件夹中。这就像政策中的限制被忽略了一样

  • bucket不授予公众访问权限

    更新

    问题似乎与我制定的桶策略有关:

    
    {
        "Version": "2012-10-17",
        "Id": "Policy1607462323232",
        "Statement": [
            {
                "Sid": "Stmt1",
                "Effect": "Allow",
                "Principal": "*",
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject",
                    "s3:ListBucket"
                ],
                "Resource": [
                    "arn:aws:s3:::My_Bucket",
                    "arn:aws:s3:::My_Bucket/*"
                ],
                "Condition": {
                    "StringEquals": {
                        "aws:SourceVpce": "vpce-aaaaadddddfffff"
                    }
                }
            }
        ]
    

    “可以访问对象”是什么意思?他们可以只列出对象,还是也可以获取和放置对象?您能否确认添加此策略是情况1和情况3之间的唯一变化?听起来确实有些奇怪。在使用此策略将实例添加到角色后,该实例可以在命令行上获取/放置并与整个aws s3 bucket同步。将角色添加到实例是唯一的更改。我通过使用“Get/PutObject”操作删除第二条语句来修改策略,它仍然允许我下载对象并将其上载到bucket中的任何文件夹。超级奇怪。你是说策略现在只授予ListBucket,但实例仍然可以获取/放置对象?实例是否可能使用保存在实例上的凭据(在
    ~/.aws/credentials
    中)而不是IAM角色?它必须从某处获取权限。只要请求来自VPC端点,Bucket策略就向任何人授予List/Get/Put。这是可添加的,因此如果IAM角色或bucket策略授予该权限,则实例将能够访问该bucket。
    
    {
        "Version": "2012-10-17",
        "Id": "Policy1607462323232",
        "Statement": [
            {
                "Sid": "Stmt1",
                "Effect": "Allow",
                "Principal": "*",
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject",
                    "s3:ListBucket"
                ],
                "Resource": [
                    "arn:aws:s3:::My_Bucket",
                    "arn:aws:s3:::My_Bucket/*"
                ],
                "Condition": {
                    "StringEquals": {
                        "aws:SourceVpce": "vpce-aaaaadddddfffff"
                    }
                }
            }
        ]