调用AssumeRole操作时发生错误(AccessDenied)

时间:2020-03-27 10:04:57

标签: amazon-web-services aws-lambda amazon-iam assume-role

我有一个Lambda函数( lambda-get-details ),该函数是在 Account-A < / strong>

角色名称 lambdarole

{
    "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

现在,例如, Account-A 中的lambda函数需要从 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 个答案:

答案 0 :(得分:1)

Account-A 中,lambdarole的策略允许对任何角色ARN(包括 Account-B 中的角色)承担角色。这句话很小心

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

Account-B 类似,角色lambdarole应包含一个信任策略,该策略允许从 Account-A 承担角色。

帐户A AccountIDlambdarole角色ARN添加为帐户B 的{{1 }}的AssumeRolePolicyDocument。

lambdarole如下所示(如果使用帐户ID作为主体),

AssumeRolePolicyDocument

您可以参考here来了解如何使用IAM角色建立跨帐户访问。