Разрешить доступ многим учетным записям к подмножествам корзины S3

У меня есть ведро S3, в котором есть каталог (префикс) для каждого пользователя, я хочу предоставить каждому пользователю (другим учетным записям AWS) доступ только к их объектам, я также хочу использовать оплату запрашивающей стороной для всех переводов. Некоторые идеи:

1. Используйте политику сегментов

Я не проверял это, но думаю, что это можно было бы сделать, прикрепив политику, подобную этой, для каждой учетной записи:

      {
  "Sid": "id1",
  "Action": "s3:ListBucket",
  "Effect": "Allow",
  "Resource": "arn:aws:s3:::my-bucket",
  "Principal": "arn:aws:iam::123:role/external-role-1",
  "Condition": {"StringEquals":{"s3:prefix":["user-1/"],"s3:delimiter":["/"]}}
},
{
  "Sid": "id2",
  "Action": "s3:GetObject",
  "Effect": "Allow",
  "Resource": "arn:aws:s3:::my-bucket/user-1/*",
  "Principal": "arn:aws:iam::123:role/external-role-1"
}

Здесь, могут получить доступ к своим объектам и перечислить их каталог через их , определенные в их аккаунте. Единственная проблема с этим подходом заключается в том, что эти 2 блока имеют размер около 500 байт, а ограничение политики корзины составляет 20 КБ, поэтому мы можем разместить не более 40 пользователей в корзине.

2. Создайте роль для каждого пользователя в моей учетной записи и разрешите внешнему пользователю взять ее на себя.

Это позволяет избежать описанной выше проблемы, поскольку JSON распределяется между многими ролями IAM. Проблема с этим подходом заключается в том, что он не платит заявителю.

Когда запрашивающая сторона принимает на себя роль AWS Identity and Access Management (IAM) перед отправкой запроса, плата за запрос взимается с аккаунта, которому принадлежит эта роль.

https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html

3. Используйте Object ACL или теги для управления доступом к объекту.

Это может удвоить емкость по сравнению с № 1, избегая политика, но политика для каждого пользователя по-прежнему требуется.

Ни один из них не полностью удовлетворяет тому, чего я пытаюсь достичь, есть ли лучший способ? Есть ли способ создать политику IAM для каждого пользователя, а затем прикрепить ее к их внешней роли IAM?

0 ответов

Другие вопросы по тегам