部分用户名匹配的 AWS IAM 策略(从 SSO 中提取用户名)

部分用户名匹配的 AWS IAM 策略(从 SSO 中提取用户名)

我们对 AWS 用户使用单点登录,因此当用户登录时他们会承担一个角色,但他们没有实际的 IAM 用户帐户。

我们使用 CodeCommit,它需要向 IAM 用户添加 SSH 密钥。

这意味着我们为开发人员创建用户帐户,因此有某种方式可以上传 SSH 密钥,但我们不希望开发人员使用该帐户登录 AWS 控制台,因为它会绕过我们的 SSO 系统。

这意味着开发人员无法上传自己的 SSH 密钥,因为他们以与 SSH IAM 用户不同的 SSO 用户身份登录,所以他们没有权限上传 SSH 密钥。

我想编写一个允许此访问的 IAM 策略,因为两个系统之间的用户名是相同的。

目前尝试上传 SSH 密钥时出现如下错误:

用户:arn:sts::12345:assumed-role/Developers/usernameA 无权对资源:用户 usernameA 执行 iam:UploadSSHPublicKey,因为没有基于身份的策略允许 iam:UploadSSHPublicKey 操作

错误是因为登录的“用户名”是,assumed-role/Developers/usernameA但 IAM 帐户名是usernameA,由于它们不同,因此访问被拒绝。

我需要一个策略,以某种方式从登录用户名的末尾修剪用户名(仅当它以 开头assumed-role)并将其与 IAM 帐户名进行比较。

AWS 管理策略是一个很好的起点,我只是不确定要添加哪些条件才能获得所需的行为:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:DeleteSSHPublicKey",
                "iam:GetSSHPublicKey",
                "iam:ListSSHPublicKeys",
                "iam:UpdateSSHPublicKey",
                "iam:UploadSSHPublicKey"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}

相关内容