Я пытаюсь использовать 'aws s3 sync' на awscli между двумя учетными записями.
Учетная запись A, моя. Учетная запись B, принадлежащая третьей стороне.
Учетная запись B предоставила пользователю: jon on account A разрешение на ведро через предположение роли: acceptDevOps.
Джон предполагает, что acceptDevOps имеет доступ к корзине на учетной записи B. Но теперь я нужно синхронизировать с корзиной обратно в учетной записи A.
Мне отказано в доступе. Возможно, из-за того, что роль, которую взял на себя Джон, не имеет разрешений на ведро обратно в моей учетной записи.
Как мне это сделать?
Есть ли документация по этой конкретной ситуации?
По сути, вам необходимо создать политику, разрешающую доступ к сегменту S3 на вашей стороне и роли, и привязать эту политику к роли.
Затем пользователь в Учетная запись B должна принять на себя созданную вами роль, которая позволяет получить доступ к вашей корзине.
Я считаю, что это именно та статья, которую вы ищете (более подробная): https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html
А это более конкретная статья: https://aws.amazon.com/premiumsupport/knowledge-center/copy-s3-objects-account/
Учетные данные, используемые для выполнения команды aws s3 sync
, требуют:
Поскольку вы принимаете роль из исходной учетной записи (которая уже имеет разрешения на чтение в исходном сегменте), вам потребуется предоставить этой роли разрешения на запись в целевую корзину в вашей учетной записи. .
Это можно сделать с помощью политики сегмента в целевом сегменте, которая будет выглядеть примерно так:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::destination-bucket/*",
"arn:aws:s3:::destination-bucket"
],
"Principal": {"AWS":"arn:aws:iam::bbbbbbbbbbbb:role/assumeDevOps"}
}
]
}