ABAC权限控制方式
最后更新于
最后更新于
Attribute-based access control (ABAC)是一个基于属性定义权限的授权策略。在Amazon,这些属性称为标签(tag)。您可以为Amazon的资源添加标签。ABAC在快速增长的环境中非常有用,有助于解决策略管理变得繁琐的情况。
传统的RBAC模型根据人员的工作职能定义权限。在Amazon,角色通常指IAM role,是您可以代入的身份。
传统方式是为每个人创建一个user,放在一个group中,group配置不同的策略来实施RBAC。但是作为最佳实践,要求使用最小权限,列出能够访问的特定资源,可以执行的特定操作。那么RBAC模型的缺点是当有新的资源创建出来,必须更新策略来访问这些资源。
假设,你有三个项目,分别为“Heart”, “Sun”和“Lightning”。您为每个项目都创建了组或者IAM role和不同的策略,给人员或者程序分配好后,“Sun”添加了新的资源,比如新的S3存储桶。那么您就需要更新“Sun”的组或者IAM role的策略。否则,Sun的项目组成员就无法访问这个新建的资源。
🎉ABAC与创新一起增长
管理员不需要不断更新策略来允许访问新的资源。比如,您使用ABAC策略,开发人员和项目资源都是用🏷️标签tag进行标记。当项目需要额外的Amazon资源时,开发人员可以给资源加上标签,然后所有项目组的人员拥有一样的标签就可以看到/更改(可使用的action以策略里定义的为准)这个资源了。(需要policy中condition配置了基于标签进行权限控制)
🎉ABAC需要更少的策略
您不再需要为不同的工作职能创建不同的策略,您只需要创建几个策略,给不同的IAM role,这些策略更易于管理。
🎉使用ABAC,团队可以更快地变化和增长
这是因为新资源的权限是根据tag自动授予的。比如你有一个新项目“Lighting”, IAM管理员创建新角色,access-project = Lightning
,任何代入该角色的人都可以创建和查看标记为access-project = Lightning
的资源。此外,企业内部人员可能从Heart项目调整到Lighting项目,那么代入Lighting项目的角色就可以拥有对应的权限了。
🎉使用ABAC,可以实现权限最小化原则
AWS安全最佳实践推荐要实现权限最小化,使用传统的RBAC,你必须创建策略允许访问指定的资源。但是,如果您使用ABAC,只需要资源的tag与principal的tag匹配,你就可以拥有权限进行操作。不要调整策略,只需要创建资源时带上正确的标签🏷️。
参考资料