У меня есть 3 отдельные учетные записи AWS:
- Учетная запись 1 - владелец корзины с политикой, изложенной ниже
- Учетная запись 2 - помещает объекты в корзину и устанавливает ACL для каждойобъект для "bucket-owner-full-control"
- Учетная запись 3 - загрузка объектов из корзины
У меня проблема в том, что когда объект загружается в корзинуон принадлежит Учетной записи 2, в результате чего Учетная запись 3 не может загрузить объект.
Если я загружаю объект через Учетную запись 1, Учетная запись 3 может получить к нему доступ, как и ожидалось.Похоже, что ACL каким-то образом неожиданно влияет на разрешения.
У меня есть несколько учетных записей, которые действуют так же, как учетная запись 3, и поэтому я хочу полностью исключить использование ACL и просто контролировать доступ через политику.
Политика сегмента:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::Account3:root"
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::my-magic-bucket"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::Account3:root"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-magic-bucket/*"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::Account2:root"
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket",
"s3:GetBucketAcl"
],
"Resource": "arn:aws:s3:::my-magic-bucket"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::Account2:root"
},
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:GetObjectAcl",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::my-magic-bucket/*"
}
]
}
Это может быть реплицировано с помощью следующих команд интерфейса командной строки AWS:
aws s3api put-object --bucket account-1-bucket --key files/asset.txt --body ./asset.txt --profile account-2
aws s3api put-object-acl --acl bucket-owner-full-control --bucket account-1-bucket --key files/asset.txt --profile account-2
aws s3api get-object --bucket account-1-bucket --key files/asset.txt ./asset.tmp --profile account-3
Я также пытался установить ACL во времявызов put-object, но с той же проблемой.