上一章讲述了如何创建User,但有时候可能会有很多用户需要AWS的访问,比如技术人员可以大体分为开发,测试,或者运维部门,再或者这些人不一定是技术人员,而是公司里其他部门的人想要来访问一些数据之类的,比如说市场部,财务部。很明显每个人都需要不用的权限来访问不同的资源,这时AWS账户管理人员(SysAdmin)可以用最笨的方式为每一个单独的用户建立一个User,然后再赋予这个User它的权限,工作很无脑,也许,过于无脑了。有没有更简单的方式呢?我们先来看看这些新用户所需的权限有没有什么交集呢,肯定会有的,这些交集也会提醒管理员来将用户根据所需权限分类,比如说,市场部的人只可以拥有对于资源的只读权限,而开发部门则需要对某些服务拥有写的权限。这时可以通过创建用户组(User Group)来简化我们的创建过程,一个用户组被赋予一些列权限,可以包含若干用户,而这些用户“天生”就拥有用户组中定义的权限。一个用户也可以同时属于多个Group,这样便可以满足一个人身兼多职的需求。如此一来,反复的权限创建操作便被大幅度简化了,但是还是要一个一个创建新的用户,并把它们加入正确的组里。
但是,总会有些个例吧!有些人就是拥有一些额外的权限,或者被明确禁止了某些权限,这些特例很难被划为一个一个的组里,而单独为他们创建单人的组也是有些过杀。这种情况其实很好处理,首先先将用户加入最接近的组里,然后在单独修改这个用户的权限来设置“特权”。当然,如果有很多人有同样的特权,那么还是为他们创建一个新的组比较合适。举个例子,比如市场部的Perl因为去年意外泄露了公司S3中数据,公司决定取消他对S3的所有权限,这时可以先将Perl加入市场部,然后在单独修改他的权限来禁止对S3的访问。
和用户组很像但目的不同的一个概念就是用户池(User Pool)。现在由于ID-as-a-service(身份服务外包)的兴起,建立一个用户信息储存很认证系统越来越简单了,从用户注册,身份提供第三方登录,权限分配等,到登陆界面的UI代码都一并可以托管。AWS的Cognito就提供了这一些列服务,其中一种就是用户池,管理app的用户的身份信息。这些用户首先不是使用AWS的用户,而是application里的用户,AWS只是再提供一个平台来方便管理。但是Cognito也有一个神奇的功能就是可暂赋予User Pool中的用某些AWS的访问权限。
Labs:
- 创建用户组,在创建用户
- 配置特权用户