AWS认证与权限管理IAM
IAM,全称Identity & Access Management,作用是AWS资源的权限管理。
IAM解决了什么问题
解决了什么问题,等同于带来了什么价值,在AWS的官方文档中,IAM主要是出于以下需求被设计出来的:
- 增强安全:AWS给每个用户单独的验证,保证每个用户能够被分配恰当的权限,从而保证AWS资源的安全。默认情况下,IAM的User在被创建的时候是没有任何权限的,所以IAM是默认安全的。
- 粒度控制:IAM让租户可以进行细粒度的权限控制,比如terminate instance的权限,比如对S3 bucket中对象的只读权限。
- 临时证书:IAM允许创造生命周期短于用户的权限(Role),Role被绑定在AWS资源(如EC2 instance)上,确保资源之间的相互调用有适当的权限。
- 灵活的安全证书管理:IAM提供了多种验证方式,包括key pair, 用户名密码,X.509 certificates, MFA,用于Console,CLI,sdk等API调用。
- 外部身份系统:IAM使AWS支持第三方登录或与企业现有权限管理系统集成,比如微软的Active Directory,或第三方验证,比如Google,Facebook。
- 与AWS服务无缝贴合:IAM与AWS的几乎所有服务集成,首先你需要IAM的权限再能访问和使用AWS的服务,其次AWS中的服务需要IAM的权限才能完成对AWS其他资源的调用。
几个概念
AWS的官方文档和很多博客都在说的Get Start,最重要的就是AWS中的几个名词:
- User:一个User对应一个AWS用户,这个用户指的是一个真实的用户,用户在创建初期是没有任何权限的,需要被加到用户组或绑定Policy才能有相应权限,User有两种验证方式,一种是key pair,常用于集成到程序中和AWS CLI 使用,另一种是Username+Password的方式,这种方式只能用于Console登录。
- UserGroup:类比Linux系统的UserGroup,一个UserGroup可以包含多个User,这些User具有UserGroup指定的所有权限,UserGroup的权限由Policy制定,Group不能嵌套Group,一个用户如在多个UserGroup中,权限取Group权限的和。
- Policy:由“资源类型”和“操作类型”两个重要参数构成的Json文件,用于定义一定粒度的权限,支持模糊匹配(*),分为官方定义和自己定义,用于定义用户可对何种资源执行何种操作,Policy可以与User,UserGroup,Role绑定。
- Role:IAM定义用于代替User赋予资源权限的权限单位,比如给一个EC2 instance S3 administrator的权限,便可以在改Instance上执行aws s3的所有命令,且在本地不会出现Creadentical文件(比User安全)。与User相同,Role 的权限也由Polic组成,由用户定义。另外,Role还可以用于赋予外部账号权限。
官方推荐最佳实践
参照官方文档:https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html
- 禁用AWS Root账户:因为Root用户权限实在太大,要尽可能避免Root账户认证被泄露的风险,建议不要给Root账户创建Access Key,另外开启MFA验证。
- 为每个用户创建单独的User
- 尽可能使用Policies 添加权限
- 使用UserGroup对用户权限进行分组管理
- 最小权限原则
- 开启强密码限制
- 开启MFA设备验证
- 为EC2 instance上的应用程序创建Role
- 使用Role而不是User的Credentials
- 经常更新Credentials
- 移除不再使用的Creadentials
- 使用策略提高额外的安全性:比如限制该资源只能从哪个网段访问,只能在某个时间段访问,强制开启MFA验证后才可访问,等等
- 监控账户活动情况:CloudFront, CloudTrail, CloudWatch, Config, S3 log都可以保证账户活动被监控
限制
https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html
大部分限制大部分情况下都碰不到,列几个常见的:
- 每个User最多可被加入到10个UserGroup
- 每个User最多可以有2个Access key(包括root account)
- 一个用户只能验证一个MFA设备
- User Policy的长度限制为2KB
- Role Policy的长度限制为10KB
- UserGroup Policy的长度限制为5KB
几个知识点
以下知识点是笔者在查阅 FAQs 时记录的:
- 一个EC2 instance不能有多个Role,但一个Role可以被多个EC2 instance共用
- Role可以被attach 到一个正在运行的实例
- 可以将Role与Auto Scaing Group关联,这样每个在该安全组内被启动的实例都会被附上该Role所指的权限
- AWS有一个用于测试你的Polic的工具:Policy Simulator
- IAM的每一个记录都会被CloudTrail记录log,保存在S3中