是否可以为AWS角色信任关系指定模式

时间:2018-11-22 10:47:56

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

我想允许其他帐户中的某些角色在我的帐户中担任角色。我不想一一指定角色,因为它们容易经常更改。

我为“信任关系”制定了此策略,该策略应该允许任何名称以_my_suffix结尾的角色,但不起作用(访问被拒绝):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT_NR_A:root"
      },
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:iam::ACCOUNT_NR_A:role/*_my_suffix"
        }
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

另一方面,此策略有效,但是它太开放了,因为它允许帐户A中的任何用户/角色承担我的角色:

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

那么,有什么方法可以只允许一组角色而无需明确指定?

3 个答案:

答案 0 :(得分:1)

除了"Principal" : { "AWS" : "*" }之外,在信任策略中不能使用通配符。原因是当您将身份指定为Principal时,您必须使用完整的ARN,因为IAM会转换为唯一ID,例如AIDAxxx(用于IAM用户)或AROAxxx(用于IAM角色)。以下是来自document的内容:

  

如果您在角色信任策略中的Principal元素包含一个ARN,   指向特定的IAM用户,然后将ARN转换为   保存策略时用户的唯一主体ID。这有帮助   通过删除来减轻某人提升特权的风险   并重新创建用户。您通常不会在   控制台,因为还有反向转换回   显示信任策略时用户的ARN。

答案 1 :(得分:1)

我最近遇到了相同的用例。没有任何答复为我解决了这个问题。

Charli,您的原始解决方案是有效的,但我需要进行一些调整才能使其正常工作,即,我需要将“ ArnLike”替换为“ stringLike”,并将“ aws:SourceArn”切换为使用“ aws:PrincipalArn”:

    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<ACCOUNT_ID>:root"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": "arn:aws:iam::<ACCOUNT_ID>:role/test-role-name-*"
        }
      }
    }

答案 2 :(得分:0)

这似乎是委派访问信任帐户(您的帐户)而非信任帐户(_my_suffix-AWS帐户)的问题。您可以在以下网址中检查以下几项内容。

链接:https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html

谢谢