在 IAM 角色策略中定位联合 SAML 用户

Whe*_*rdy 2 roles saml amazon-iam google-workspace

我们目前使用 G Suite 作为我们 AWS SAML 访问的 IDP,它在少数账户中扮演一个角色,让我们的 G Suite 用户访问某些 AWS 资源。每个帐户都有一个类似命名的角色,G Suite 用户可以担任该角色以授予他们对该帐户中某些资源的访问权限,这些资源都按预期工作。

我正在研究是否可以配置该假定角色,以便为某些用户提供对某些资源的更细粒度的访问权限,而不必为 G Suite 本身内的不同用户分配完全不同的角色。

例如,如果账户中承担的角色名为“assumed_gsuite_ro”并且不授予对 IAM 的访问权限,您会在 IAM 控制台中收到如下错误:

User: arn:aws:sts::0012345678900:assumed-role/assumed_gsuite_ro/matt@domain.com is not authorized to perform: iam:GetAccountSummary on resource: *
Run Code Online (Sandbox Code Playgroud)

所以我想添加一些类似的东西到posed_gsuite_ro 角色策略中,让我的联合用户在 IAM 中访问它:

...
{
    "Sid": "IAMTest",
    "Effect": "Allow",
    "Action": [
        "iam:GetAccountSummary",
        "iam:ListAccountAliases"
    ],
    "Resource": "*",
    "Condition": {
        "ArnEquals": {
            "aws:SourceArn": "arn:aws:sts::0012345678900:assumed-role/assumed_gsuite_ro/matt@domain.com"
        }
    }
}
...
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,因为 SourceArn 显然不匹配。我可以使用的条件值是否允许我定位 AWS 似乎知道的特定联合用户?我在想像 aws:userid 或 aws:username 这样的东西可能会起作用,但我不确定在这种情况下它们的值是什么。

Whe*_*rdy 6

深入研究并在 AWS 文档中找到了此页面该页面描述aws:userid了 SAML/联合上下文中的值是如何构成的,我确定以下工作:

"Condition": {
    "StringLike": {
        "aws:userid": "AROAROLEID:matt@domain.com"
    }
}
Run Code Online (Sandbox Code Playgroud)

AROAROLEID您假设的角色名称的“角色 ID”值在哪里(在我的示例中为 assumed_gsuite_ro),根据此页面,您只能从对 AWS CLI 的 get-role 调用中获取(这是角色 ID)。