Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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 AWS S3:Can';t通过公共访问(通过非身份验证的方式)从bucket获取非自有对象_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services AWS S3:Can';t通过公共访问(通过非身份验证的方式)从bucket获取非自有对象

Amazon web services AWS S3:Can';t通过公共访问(通过非身份验证的方式)从bucket获取非自有对象,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,下面是的情况: 我有一个桶B。它属于帐户a_1 这个bucket对所有内容都有公共读访问权限(通过bucket策略和ACL。我将两者都放在这里只是为了尝试,没有结果) 只有在bucket owner完全控制ACL的情况下,此bucket才能通过帐户A_2写入 bucket配置为通过Cloudfront服务对象 -->当在S3控制台中浏览时,由A_2上传的文件可以正确地完全控制A_1 但是 -Cloudfront对A_2拥有的文件的访问被拒绝(在A_1拥有的文件上运行良好) -使用S3WebU

下面是的情况

  • 我有一个桶B。它属于帐户a_1
  • 这个bucket对所有内容都有公共读访问权限(通过bucket策略和ACL。我将两者都放在这里只是为了尝试,没有结果)
  • 只有在bucket owner完全控制ACL的情况下,此bucket才能通过帐户A_2写入
  • bucket配置为通过Cloudfront服务对象
-->当在S3控制台中浏览时,由A_2上传的文件可以正确地完全控制A_1

但是 -Cloudfront对A_2拥有的文件的访问被拒绝(在A_1拥有的文件上运行良好) -使用S3WebURL,我可以访问A_1拥有的文件(bucket上的公共ACL),但不能访问A_2拥有的文件

问题: 为什么bucket策略不适用于由一个拥有完全控制权的一个_2拥有的文件

注意 -我可以通过为我的cloudfront创建一个访问标识并要求A_2专门读取cloudfront规范帐户ID来“规避”这个问题,但这很麻烦


桶策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
        "Sid": "Grant read access to the world",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::my_bucket/*"
    },
    {
        "Sid": "Grant write access to other account user",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::8566072xxxxx:root"
        },
        "Action": [
            "s3:ListBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::my_bucket/*",
            "arn:aws:s3:::my_bucket"
        ]
    }
  ]
}

S3访问权限受三组概念上不同的测试的约束——IAM主体(用户或角色)、bucket和对象上下文

如果bucket和对象所有者相同,则可以在bucket策略中授予对对象的访问权限,该策略在bucket上下文中进行评估。如果所有者不同,则对象所有者必须使用对象ACL授予权限

https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-auth-workflow-object-operation.html

bucket owner完全控制
罐装ACL在历史上没有改变实际的对象所有权,它只赋予bucket owner使用用户和角色策略(而不是bucket策略)授予对象访问权限的能力

2020年,AWS引入了一项新功能,名为,该功能允许配置bucket,以便在对象创建期间使用ACL时,
bucket owner full control
的行为更加直观,并自动将对象所有权分配给bucket owner

这个问题是在引入该功能之前提出的,用户策略是可以在控制台中访问对象的原因


bucket策略可以显式拒绝对bucket所有者不拥有的对象的访问,但不能授予它们。

S3访问权限受三组概念上不同的测试的约束—IAM主体(用户或角色)、bucket和对象上下文

如果bucket和对象所有者相同,则可以在bucket策略中授予对对象的访问权限,该策略在bucket上下文中进行评估。如果所有者不同,则对象所有者必须使用对象ACL授予权限

https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-auth-workflow-object-operation.html

bucket owner完全控制
罐装ACL在历史上没有改变实际的对象所有权,它只赋予bucket owner使用用户和角色策略(而不是bucket策略)授予对象访问权限的能力

2020年,AWS引入了一项新功能,名为,该功能允许配置bucket,以便在对象创建期间使用ACL时,
bucket owner full control
的行为更加直观,并自动将对象所有权分配给bucket owner

这个问题是在引入该功能之前提出的,用户策略是可以在控制台中访问对象的原因


bucket策略可以显式拒绝对bucket所有者不拥有的对象的访问,但不能授予它们。

好的,我从来没有偶然发现过这一点文档。。。谢谢,非常感谢你,伙计!我也遇到了同样的情况,我脑子里有结论,但找不到实际的官方文件,谢谢你解决这个问题,以便
桶主完全控制权
将新对象的所有权转移给桶主,将桶的设置为“桶主首选”。@TylerW谢谢。更新。谢谢@Michael sqlbot。我完全错过了首选的所有者设置。非常接近于编写一个lambda函数来覆盖每个对象以更改所有者,这更容易:)好的,我从来没有偶然发现过这个特定的文档。。。谢谢,非常感谢你,伙计!我也遇到了同样的情况,我脑子里有结论,但找不到实际的官方文件,谢谢你解决这个问题,以便
桶主完全控制权
将新对象的所有权转移给桶主,将桶的设置为“桶主首选”。@TylerW谢谢。更新。谢谢@Michael sqlbot。我完全错过了首选的所有者设置。非常接近编写lambda函数来覆盖每个对象以更改所有者,这更容易:)