AWS中的IAM(Identity and Access Management)俗称身份访问权限管理,简单来说即定义谁或者哪个程序可以在什么情况下访问什么资源。谁在这里说的可以是一个具体的人类用户,即User,又或者是绑定了某个的角色(Role)的资源。这里的资源在AWS可以指大到某一个Service,例如S3,DynamoDB,或IAM本身,又可以小到某个Service中的具体一部分,比如VPC中的DHCPOptions,EC2中的Instance Status。比如说我可以定义一个规则说,我想让用户SysAdmin可以看到所有此AWS账户中的所有资源,又或者定一个规则让Developer用户只对EC2相关的资源有所有权力,但对其他资源只有可见却不可更改的权力等等如此。
IAM的概念并不是只有AWS才有,任何云平台,或者任何平台都会有这么一个能够控制用户权限的组件,也是身份安全保障的第一道关,像是一个黑名单和白名单的结合,但最终目的即仅将有限的权力赋予该有的个体(Entity/Principal),下面先来说说最直白的个体之一,用户(User)。
注册了AWS账户之后便会自动启用一个默认用户叫做root,在计算机领域但凡提到root,都是绝对权力的代名词。AWS的root账户可以对账户中的一切进行资源通过任何方式进行更改。一般来说会建议root用户来创建一些新的一般用户并赋予他们一些局限的权利,再适用这些用户来操作AWS的资源,以避免意外性的毁灭性操作。创建用户并不是一个特殊的操作,它也只是对用户资源进行了添加这个操作,那么用户(User)属于什么资源呢?很明显,它就属于跟身份有关的那个资源IAM,没错IAM也是个服务,就跟其他服务一样的等级。所以root用户创建新用户时,即是对IAM服务进行了添加了用户资源这个操作。这个操作一般来说还会有一个连带操作,即赋予这个新用户以一部分权限。然后还会配置一下用户允许的和AWS的交互方式,比如设置一个Web Console的用户名和密码来登录然后通过网页操作,又或者生成一对密钥来配合Cli或者SDK使用。
接下来的章节会具体来讲解IAM中常用到各个元素:User, Role, Policy, Policy Statement, Instance Profile。