【问题标题】:Able to get some Amazon S3 objects but not all, getting 403 access denied error能够获取一些 Amazon S3 对象但不是全部,得到 403 access denied 错误
【发布时间】:2021-08-18 18:30:06
【问题描述】:

问题陈述:

账户 A 正在上传账户 B 的 Amazon S3 存储桶中的一些文件。我在账户 C 中并尝试访问账户 B Amazon S3 存储桶中的对象。我可以访问部分文件,但不是全部。

账户 A 正在上传这样的文件

this.s3Client.putObject(bucketName, key, new FileInputStream(content), metadata);
this.s3Client.setObjectAcl(bucketName,  key, CannedAccessControlList.BucketOwnerFullControl);

我只是拒绝访问某些文件而不是全部。 虽然我检查了存储桶策略和 lambda 策略。这对我来说似乎是正确的,因为我能够访问不是由账户 A 上传的其他对象,并且我觉得这个问题与对象权限有关,其中 s3 存储桶中的上传者具有独占访问权限。但正如我们在上面的代码中看到的,上传者将对象 acl 设置为BucketOwnerFullControl

所有文件都已设置为公开,而且我已授予对 ACL 下 Account C aws 帐户规范 ID 的访问权限。

ACL

Lambda 政策

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::ACCOUNT_B_BUCKET/*"

        }
    ]
}

存储桶政策

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Example permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::AWS_ACCOUNT_C:root"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::ACCOUNT_B_BUCKET/*"
        }
    ]
}

我在这方面花了很多时间,现在很沮丧。还请告诉我如何才能更快地调试这些类型的问题?

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda


    【解决方案1】:

    您能否检查 ACL 或转到 S3 控制台并选择所有文件并公开。这只是一个调试步骤。

    【讨论】:

    • 所有文件都已设置为公开,并且我已授予对帐户 B 中 ACL 下的帐户 C aws 帐户规范 ID 的访问权限
    • 如果你说的是对的,那么剩下的就是kms了。您是否在存储桶上设置了默认加密?
    猜你喜欢
    • 1970-01-01
    • 2013-07-26
    • 2017-07-27
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 2013-11-10
    相关资源
    最近更新 更多