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

cha*_*rli 12 amazon-web-services amazon-iam aws-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"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT_NR_A:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

那么,有没有办法只允许一组角色而不被明确指定?

小智 20

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

Charli,你原来的解决方案是有效的,但我需要一些调整才能让它工作,也就是说,我需要用 'stringLike' 替换 'ArnLike' 并切换 '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-*"
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

  • @HiteshGarg https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html 和 https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html (2认同)