【发布时间】: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