如何使用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::123456789012:saml-provider/ExampleCorpProvider"
},
"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-center和access- project的标签可以是任意值。但是access-team的值必须是“eng”或者“qas”表明身份是开发团队或者测试团队的。
Step 2: 配置SAML IdP
配置你的SAML IdP传递cost-center, access-project 和 access-team属性作为session tags。因此,需要包含以下内容到你的SAML assertion:
Step 3: 允许控制台访问
允许SSO SAML用户可以从控制台访问。
Step 4: 测试效果
从IdP创建的用户(带有session tags与secrets的tag是一样的),是否可以查看secrets。以及测试是否可以更新和删除secrets。
最后更新于