Доступ к файлам кросс-аккаунта в AWS S3 - PullRequest
0 голосов
/ 24 сентября 2019

В настоящее время мое приложение настроено на использование AWS с учетной записью AWS Payments .

У нас есть новое требование для загрузки файла на S3, который находится в другой учетной записи Заказы AWS .

Я создал корзину S3 в учетной записи заказов AWS и добавил еще одну каноническую учетную запись использования AWS Платежи AWS .

С помощью своего приложения я могу загружать файлы в Заказы AWS .

Когда я вхожу в консоль с Заказами AWS Я не могу загрузить или просмотреть файл.Потому что был создан аккаунт Payments?Нужно ли добавлять политику ведра?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Ах старый кросс-аккаунт S3 поставил, не дав разрешения обратно владельцу корзины.Короче говоря, вы можете владеть ведром, но не иметь разрешения на файлы.Чтобы решить эту проблему, когда вы помещаете объект в учетную запись, вам нужно предоставить владельцу корзины доступ.

Документация по предоставление разрешений для разных учетных записей для размещения объектов, при этом владелец корзины по-прежнему имеет полный контроль.

Вы можете убедиться, что владелец корзины всегда имеет доступ, создав заявление об отказе для размещения с несколькими учетными записями, которое не предоставляет полного контроля владельцу.

Чтобы исправить уже поставленные объекты, изпользователь, который положил объекты

aws s3api put-object-acl --acle bucket-owner-full-control --bucket BUCKET --key KEY 
0 голосов
/ 24 сентября 2019

Чтобы решить эту проблему, необходимо создать пользователя IAM в Заказах AWS, который имеет доступ к AWS Payments S3 Bucket.Затем реплицируйте корзину S3 и запустите синхронизацию S3.

Разрешения IAM. Примерно так -

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name/*",
                "arn:aws:s3:::bucket-name"
            ]
        }
    ]
}

Затем добавьте это в политику корзины в Заказы AWS

{
            "Sid": "Permissions for AWS Payments account",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::AWS-Payments-Account-ID:root"
            },
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name",
                "arn:aws:s3:::bucket-name/*"
            ]
        }

Репликация кросс-счета S3 - https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-walkthrough-2.html

Синхронизация S3 - https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

МЕДВЕДЬ В РАЗМЕРЕ - Если родительское ведро не имеетразрешения на чтение / запись, дочерняя корзина будет копировать все, включая разрешения.Поэтому, прежде чем пытаться это сделать, убедитесь, что политика корзины AWS Payments, а затем внесите изменения.

Надеюсь, это поможет!:)

...