【问题标题】:Problem with AWS Lambda and cross account rolesAWS Lambda 和跨账户角色的问题
【发布时间】:2019-02-15 05:19:48
【问题描述】:

我需要担任跨账户角色才能访问 ElasticSearch 域以登录 AWS。这是我所做的:

首先,我在 ACCOUNT1 中创建了一个跨账户角色。角色名称为LoggerAccessToES,信任关系如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::ACCOUNT1:root",
          "arn:aws:iam::ACCOUNT2:root"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {}
    }
  ]
}

然后,在 ACCOUNT2 上,我创建了一个 Lambda 函数来使用以下代码承担上述角色:

        sts_client = boto3.client('sts', region_name=Config.AWS_ES_REGION)
        assumed_role_object=sts_client.assume_role(
            RoleArn="arn:aws:iam::ACCOUNT1:role/LoggerAccessToES",
            RoleSessionName="AssumeLoggerAccessToESSession1"
        )

当我调用 lambda(基本上 lambda 附加到 SNS 主题)时,我收到错误:

botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied

我已经尝试了其他人在其他问题中提出的所有建议,我也用谷歌搜索了这个问题,但我找不到解决方案。我在这里做错了什么?

【问题讨论】:

  • 尝试更改 Trust 策略中的 Principal 以使用分配给 Account-2 Lambda 函数的角色的 ARN(而不是使用 Account:root)。

标签: amazon-web-services aws-lambda


【解决方案1】:

据我了解,您想使用帐户 2 中的 lambda 在帐户 1 中担任一个角色。

这需要创建两个角色 -

  1. 需要在要附加到 Lambda 的账户 2 中创建第一个角色。此角色需要附加以下权限 -
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::ACCOUNT1:role/LoggerAccessToES"
    }
}

上述策略可以添加到您现有的 lambda 执行角色中。

  1. 第二部分,只需要在下图的Account 1中添加Role LoggerAccesstoEs的信任关系-
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT2:root"
      },
      "Action": "sts:AssumeRole",
      "Condition": {}
    }
  ]
}

第一个角色策略允许 lambda 使用 AssumeRole。 第二个策略允许账户 1 信任来自账户 2 的 AssumeRole 请求。

【讨论】:

    猜你喜欢
    • 2016-11-02
    • 1970-01-01
    • 2017-03-16
    • 2020-07-17
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2018-01-08
    相关资源
    最近更新 更多