Вы должны явно принять роль, чтобы иметь возможность выполнять операции с несколькими учетными записями.
Но для рассматриваемого сценария, то есть доступа к нескольким учетным записям для зашифрованного KMS S3 Bucket, допущение роли можно пропустить, предоставив доступ к S3 и KMS с помощью политик ресурсов.
В учетной записи B добавьте эту политику Bucket в корзину S3
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"CrossAccountReadAccess",
"Effect":"Allow",
"Principal": {
"AWS": [
"arn:aws:iam::<AccountA-ID>:root"
]
},
"Action":[
"s3:GetObject",
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource":[
"arn:aws:s3:::bucketname",
"arn:aws:s3:::bucketname/*"
]
}
]
}
В учетной записи B добавьте эту Политику ключей к ключу KMS, используемому для шифрования объектов
{
"Sid": "CrossAccountDecryptAccess",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::<AccountA-ID>:root"
]
},
"Action": [
"kms:Decrypt",
"kms:DescribeKey",
"kms:GenerateDataKey*"
],
"Resource": "*"
}
Principal
упоминается как root
для обеих политик, измените его, чтобы ограничить его любой пользователь IAM в учетной записи A.
и для этого пользователя в учетной записи A обновите политику IAM, чтобы разрешить соответствующий доступ S3 и KMS.
Примечание : Политики ресурсов определены здесь только для доступа для чтения. Обновите Action
в заявлениях политики, чтобы предоставить больше доступа при необходимости.
ВНИМАНИЕ: Если предоставлены права на запись, объекты, написанные с помощью учетной записи A, будут принадлежать только учетной записи A. bucket-owner-full-control
ACL должен быть явно добавлен к этим объектам, чтобы учетная запись B могла получить к ним доступ.