Произошла ошибка (AccessDenied) при вызове операции AssumeRole
У меня есть лямбда-функция (lambda-get-details), созданная с использованием указанной ниже роли IAM в Account-A
Название роли: лямбдарол
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*",
"Effect": "Allow"
},
{
"Action": [
"config:PutEvaluations",
"ec2:DescribeImages",
"sts:AssumeRole"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
Такое же имя роли IAM (lambdarole) создается в разных учетных записях, как и Account-B.
Теперь лямбда-функция из учетной записи-A должна получить данные, например, из учетной записи-B (список AMI), и мы получаем следующую ошибку
"errorMessage": "An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::Account-A:assumed-role/lambdarole/lambda-get-details is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::Account-B:role/lambdarole
Может ли кто-нибудь помочь мне решить вышеуказанную проблему.
Любая помощь будет оценена
Спасибо
2 ответа
В учетной записи-A политикаlambdarole
позволяет присвоение ролей любой роли ARN (включая роли в Account-B). Об этом позаботится это заявление
{
"Action": [
"sts:AssumeRole"
],
"Resource": "*",
"Effect": "Allow"
}
Аналогично в Account-B рольlambdarole
должен содержать политику доверия, которая допускает принятие роли от учетной записи-A.
Добавить AccountID
или lambdarole
Роль АРН из счета-А в качестве основного в Счет-B-хlambdarole
AssumeRolePolicyDocument.
В AssumeRolePolicyDocument
будет выглядеть так (если идентификатор учетной записи используется как принципал),
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect" : "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS" : "<Account-ID-of-Account-A>"
}
}
]
}
Вы можете обратиться сюда, чтобы понять, как устанавливается доступ между учетными записями с ролями IAM.
Если в вашей учетной записи есть MFA, в профиль необходимо добавить дополнительную конфигурацию:
mfa_serial = arn:aws:iam::<serial>:mfa/<username>
Вы сможете найти полное значение arn в учетных данных безопасности вашей учетной записи.