我的 aws 角色的信任策略有啥问题,它不能被假定为跨账户?

Posted

技术标签:

【中文标题】我的 aws 角色的信任策略有啥问题,它不能被假定为跨账户?【英文标题】:What's wrong with the trust policy on my aws role that it can't be assumed cross-accounts?我的 aws 角色的信任策略有什么问题,它不能被假定为跨账户? 【发布时间】:2022-01-19 20:29:24 【问题描述】:

我的 lambda,名为“configure-idp”,在帐户 AAAAAAAAAAAA 中作为角色“configure-saml-providerA”运行。我需要在帐户 BBBBBBBBBBBB 中担任角色“configure-saml-providerB”,该帐户有权为帐户 BBBBBBBBBBBB 配置 ipd。对“configure-saml-providerB”的信任如下:


  "Version": "2012-10-17",
  "Statement": [
    
      "Effect": "Allow",
      "Principal": 
        "AWS": "arn:aws:sts::AAAAAAAAAAAA:assumed-role/configure-saml-providerA/configure-idp"
      ,
      "Action": "sts:AssumeRole"
    
  ]

然而,当我的 lambda 尝试运行 assume_role 命令(见下文)时,我得到:

An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::AAAAAAAAAAAA:assumed-role/configure-saml-providerA/configure-idp is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::BBBBBBBBBBBB:role/configure-saml-provider

上面提到的assume_role代码是:

client = boto3.client('sts')
        assumed_role_object = client.assume_role(
            RoleArn = f"arn:aws:iam::BBBBBBBBBBBB:role/configure-saml-providerB",
            RoleSessionName = "LambdaSetIDPSession"
        )

我还尝试将信任中的主要 ARN 更改为如下所示:

arn:aws:sts::AAAAAAAAAAAA:role/configure-saml-providerA

但得到同样的错误。

当对角色的信任设置为允许我担任arn:aws:iam::BBBBBBBBBBBB:role/configure-saml-providerB 角色时,为什么我无法担任该角色?

【问题讨论】:

【参考方案1】:

考虑以下

https://aws.amazon.com/es/premiumsupport/knowledge-center/iam-assume-role-error/

也许您是 aws 组织的一员,并且有一个 SCP 限制您担任角色?

【讨论】:

谢谢@Mathias-lagomarsino。我实际上是一个组织的一部分,但是没有 SCP 可以防止角色假设。谢谢你的宝贵建议。也许遇到这种情况的其他用户会发现这可以解决他们的问题。【参考方案2】:

问题是我在尝试担任角色时使用了帐户别名而不是 ARN 中的帐户 ID。你不会在帖子中看到我混淆了敏感信息。

【讨论】:

以上是关于我的 aws 角色的信任策略有啥问题,它不能被假定为跨账户?的主要内容,如果未能解决你的问题,请参考以下文章

pthread优先级和pthread策略有啥关系?

不应该使用查询参数的 IT 策略有啥理由吗?

在强化学习中,最优策略和分段最优策略有啥区别?

使用 ProGuard,对测试策略有何影响?

aws sts假定角色返回被屏蔽的“ ***”的accesskeyid

究竟啥是 AWS 中的“承担”角色?