AWS ABAC入门
背景知识
关于什么是ABAC,以及和RBAC的比较可以看AWS的官方介绍,当然如果对RBAC不太了解的话,可以看看Wikipedia解释,需要更深入理解的话,还可以看看类似这种疑问角色和用户组的区别,本文我们就不深入探讨这些理论知识.
站在企业用户的角度,ABAC相对于RBAC而言,最直接的一个好处就是:能极大的降低权限配置的复杂度. 特别那些公司内部本来就有CMP的企业客户,在没有上云前就维护了一套资源,人员,权限的对应关系.如果有了ABAC就只要把mapping关系照搬到云上就可以了,这对于这类客户而言,几乎不用改变原来的管理模式.也是云”被集成”很大的一个好处.
痛点是什么
当用户使用Role-based权限体系的时候,有个比较麻烦的问题是很难做资源层面的分权.举个例子,有个角色叫devops,这个有ECS的全部权限. 这时候如果想区分张三有A,B机器的权限,李四有C,D机器的权限.就只能建好几个角色出来.当机器和人员超过一定数量后,维护这个多对多的关系简直就是噩梦. ABAC就是来解决这种policy膨胀的问题的.
准备工作
创建IAM用户
User Name | Tag | Comment |
---|---|---|
dev-zhang-a | team=dev1,product=app1 | 开发工程师 |
dev-zhang-b | team=dev1,product=app2 | 开发工程师 |
test-wang-a | team=test1,product=app1 | 测试工程师 |
test-wang-b | team=test1,product=app2 | 测试工程师 |
创建Policy
access-same-product-team
1 | { |
某些 Secrets Manager 操作不支持该tag,包括
GetRandomPassword
和ListSecrets
.所以需要创建额外语句才能允许这些操作.
并将此策略attach到上面创建出来的4个IAM User上.
创建测试资源
在AWS Secrets Manager中创建测试密钥:
User Name | Tag |
---|---|
dev/app1/key1 | team=dev1,product=app1 |
dev/app2/key1 | team=dev1,product=app2 |
用账号dev-zhang-a
登录后,会发现有dev/app1/key1
的权限,但是没有dev/app2/key1
权限