AWS 承担组织中任何角色的角色

AWS assume role for any role in organization

我有大量的 AWS 账户,我想将它们提供给其中一个账户中的特定资源,比如说我有 a 到 z 的账户,我希望所有账户都可以访问 A 中的资源。

我创建了一个角色,该角色在账户 A 中具有访问该资源的策略,但对于假设策略文档,所有在线资源都是为了公开该角色由另一个角色承担帐户,没有关于如何使所有组织帐户都可以承担该角色的参考。

为了使问题更清楚和具体,我希望此处的帐户 ID 是组织内的通配符:

{
              
              "Statement": {
                     "Effect": "Allow",
                     "Action": "sts:AssumeRole",
                     "Resource": "arn:aws:iam::112233445566:role/Prod-Xacc-Access"
                 }
}

使用 IAM 策略变量。这是我从 this blog 中获取的示例。它允许组织中的所有账户对驻留在目标账户上的 S3 存储桶执行 s3:GetObject 和 s3:ListBucket。

在评估期间 ${aws:PrincipalAccount} 被转换为调用方帐户。 ${aws:PrincipalOrgID} 转换为调用者帐户的组织。

  {
            "Sid": "MemberAccountAccessObjectLevel",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-organization-bucket/AWSLogs/o-exampleorgid/${aws:PrincipalAccount}/*",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalOrgID": "o-exampleorgid"
                }
            }
        },
        {
            "Sid": "MemberAccountAccessBucketLevel",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::my-organization-bucket",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalOrgID": "o-exampleorgid"
                },
                "StringLike": {
                    "s3:prefix": "AWSLogs/o-exampleorgid/${aws:PrincipalAccount}/*"
                }
            }
              }