【问题标题】:IAM Roles Assume Role PermissionIAM 角色代入角色权限
【发布时间】:2018-06-20 14:33:06
【问题描述】:

给定一个使用此权限创建的 IAM 角色:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Effect": "Allow",
      "Sid": "First"
    }
  ]
}

是否有任何信息告诉 AWS 只有 账户中的 lambda 函数才能担任该角色。我希望 AWS lambda 在此账户中运行函数时能够承担此角色,但仅在此 AWS 账户中运行 lambda 函数 - 而不是在其他随机 AWS 账户中运行的 lambda 函数,碰巧发现此 IAM 角色的 ARN。

如果使用此配置允许在任何 AWS 账户中运行的任何 lambda 函数担任此角色,那么如何修改此策略以仅允许在我的账户中运行的 lambda 函数担任此角色。

【问题讨论】:

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


    【解决方案1】:

    "Service": "lambda.amazonaws.com" 表示您的 IAM 角色只能由 Lambda 担任。

    如果您想向其他账户授予代入该角色的权限,您的该角色的 IAM 策略可能如下所示:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::<AccountNumberThatCanAssumeTheRole>:root"
          },
          "Action": "sts:AssumeRole",
          "Condition": {}
        }
      ]
    }
    

    【讨论】:

    • 好的,那么世界上任何运行 Lambda 函数的 AWS 账户都可以在知道 ARN 的情况下担任此角色吗?这意味着如果此角色被授予对我帐户中其他资源的访问权限,那么从另一个帐户担任此角色的能力实际上意味着世界上任何人都可以做这个角色可以做的任何事情?
    • 没有。即使他们知道 ARN,他们也无法承担,除非您向该账户授予 AssumeRole 权限以承担该角色。
    • 所以,澄清一下 - 即使政策文档没有指定任何账户限制,它是 IAM 政策如何工作的默认假设,它仅适用于当前 AWS 账户?有没有你可以为此指出的文档?
    • 是的。你可以这么说吧。我无法找到可以解释它的确切文档,但请查看docs.aws.amazon.com/IAM/latest/UserGuide/…,如果您有 2 个帐户,请使用它,它可能会清除您的疑虑。
    猜你喜欢
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2022-08-18
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多