AWS IAM (Identity and Access Management)是能管理和控制访问AWS服务和资源的一个Web组件,它能定义谁可以访问你的AWS资源,以及它们的访问方式。
IAM是AWS免费的服务,用户不需要为使用IAM而支出任何费用。
重点名词
- IAM用户(User):代表访问AWS的终端用户
- 可使用密码来访问AWS管理平台
- 可使用Access Key ID和Secret Access Key并通过API, CLI或SDK的形式来访问AWS服务(主要针对应用程序对AWS资源的访问)
- 默认用户没有任何权限,我们需要用策略赋予每个用户所需要的最小权限
- IAM用户组(Group):拥有相同权限的用户组合
- 拥有相同权限的用户可以归入一个组,方便权限的统一管理和控制
- 一个组可以拥有多个用户,一个用户可以属于多个组
- IAM角色(Role):角色可以分配给AWS服务,让AWS服务有访问其他AWS资源的权限
- 角色不包含任何用户名/密码
- 角色比用户更加安全可靠,因为没有泄露用户名/密码或者Access Key的可能性
- 代入角色时,他会为您提供角色会话的临时安全凭证
- 举个例子,我们可以赋予EC2实例一个角色,让其有访问S3的读写权限
- IAM策略(Policy):定义具体访问权限的文档
- 策略具体定义了能访问哪些AWS资源,并且能执行哪些操作(比如List, Read, Write等)
- 策略的文档以JSON的格式展现
AWS IAM还拥有如下特点:
- AWS账号管理的中央控制,IAM可以统一管理AWS的所有账号,权限问题
- 分享AWS的访问权限给其他用户
- 精细的访问权限控制,每一个用户都可以被赋予不同的访问权限
- 可通过角色(Role)安全地赋予AWS服务访问另一个AWS服务的权限
- Identity Federation ,通过与AD,Facebook,Google等第三方机构认证,赋予用户短暂的AWS权限
- 多重认证/MFA (Multi-Factor Authentication),在登陆AWS管理平台的时候,除了使用用户名/密码之外,还可以另外提供软件Token来认证,进一步提高了安全性
- 可赋予用户/设备和服务短暂的访问权限
- 可自定义密码复杂度策略(密码多少位,需不需要包含大小写字母和数字,多久过期等)
- 和几乎所有AWS的服务都能集成
- 支持PCI DSS规范
用户VS角色
在能够使用角色的场景下,能用角色就不要用IAM。比较常见的是EC2实例要访问一些AWS资源,比如S3存储桶。(考试的时候无脑选角色就对了)