+86 135 410 16684Mon. - Fri. 10:00-22:00

AWS认证与权限管理IAM

AWS认证与权限管理IAM

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中