如何使用SAML session tags实现SSO的ABAC权限管理

Use SAML session tags for ABAC

如果您的公司使用基于SAML的身份提供商(IdP)来管理企业的用户身份,那么可以使用SAML属性在AWS进行精细的访问控制。属性包括成本中心标识,用户email地址,部门分类,项目分配。当你将这些属性用session tags传递时,你可以基于这些session tags控制访问Amazon的权限。

前提条件

要使用SAML的session tags你必须已经拥有以下内容:

  • 有基于SAML的IdP,在这个IdP你可以创建测试用户,带有指定的属性;

  • 作为管理员登录的权限;

  • 有在AWS创建user,role,group,policy等的经验;

  • 拥有配置基于SAML的IdP到IAM的经验;

Step 1: 创建一个用于SAML 2.0 federation的role

给role起名为access-session-tags,附加access-same-project-team的策略(可以参见如何根据标签定义访问Amazon资源的权限),编辑role trust policy使用以下的trust policy。

role trust policy
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowSamlIdentityAssumeRole",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRoleWithSAML",
                "sts:TagSession"
            ],
            "Principal": {
                "Federated": "arn:aws:iam:::saml-provider/"
            },
            "Condition": {
                "StringLike": {
                    "aws:RequestTag/cost-center": "*",
                    "aws:RequestTag/access-project": "*",
                    "aws:RequestTag/access-team": [
                        "eng",
                        "qas"
                    ]
                },
                "StringEquals": {
                    "SAML:aud": "https://signin.aws.amazon.com/saml"
                }
            }
        }
    ]
}

上面的策略中,AllowSamlIdentityAssumeRole允许开发(eng)和测试(qas)团队在从ExampleCorpProvider单点登录到AWS时,代入角色。ExampleCorpProvider传递的属性中,cost-centeraccess- project的标签可以是任意值。但是access-team的值必须是“eng”或者“qas”表明身份是开发团队或者测试团队的。

Step 2: 配置SAML IdP

配置你的SAML IdP传递cost-center, access-project access-team属性作为session tags。因此,需要包含以下内容到你的SAML assertion:

// SAML assertion
<Attribute Name="http://www.amazonaws.cn/SAML/Attributes/PrincipalTag:cost-center">
  <AttributeValue>987654</AttributeValue>
</Attribute>
<Attribute Name="http://www.amazonaws.cn/SAML/Attributes/PrincipalTag:access-project">
  <AttributeValue>peg</AttributeValue>
</Attribute>
<Attribute Name="http://www.amazonaws.cn/SAML/Attributes/PrincipalTag:access-team">
  <AttributeValue>eng</AttributeValue>
</Attribute>

Step 3: 允许控制台访问

允许SSO SAML用户可以从控制台访问。

Step 4: 测试效果

从IdP创建的用户(带有session tags与secrets的tag是一样的),是否可以查看secrets。以及测试是否可以更新和删除secrets。

最后更新于