AWS S3 - Политика не распространяется на объект, принадлежащий другому аккаунту - PullRequest
0 голосов
/ 29 мая 2019

У меня есть 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, но с той же проблемой.

...