Произошла ошибка (AccessDenied) при вызове операции AssumeRole - PullRequest
1 голос
/ 27 марта 2020

У меня есть лямбда-функция ( 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 ( лямбдарол ) создается в разных учетных записях, например, Account-B

Теперь лямбда-функция из Account-A необходимо получить данные, например, от Account-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

Может кто-то помогите мне решить вышеуказанную проблему.

Буду признателен за любую помощь

Спасибо

1 Ответ

1 голос
/ 27 марта 2020

В Account-A , политика lambdarole допускает принятие роли для любой роли ARN (включая роли в Account-B ). Об этом заботится это утверждение

       {
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }

Аналогично в Account-B роль lambdarole должна содержать политику доверия, которая допускает принятие роли от Account-A .

Добавьте AccountID или lambdarole Роль ARN Account-A в качестве Принципала в Account-B 's lambdarole AssumeRolePolicyDocument. ,

AssumeRolePolicyDocument будет выглядеть так (если идентификатор учетной записи используется в качестве принципала),

"AssumeRolePolicyDocument": {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect" : "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {
                "AWS" : "<Account-ID-of-Account-A>"                                
            }
        }
    ]
}

Вы можете сослаться здесь , чтобы понять, как кросс-учетный доступ установлен с ролями IAM.

...