Произошла ошибка (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Роль АРН из счета-А в качестве основного в Счет-BlambdaroleAssumeRolePolicyDocument.

В 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 в учетных данных безопасности вашей учетной записи.

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