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

浅谈AWS IAM(访问权限管理)

浅谈AWS IAM(访问权限管理)

浅谈AWS IAM(访问权限管理)

AWS_IAM因工作需要,全面系统地学习了AWS的IAM服务,参考IAM的用户指南,总结了AWS IAM服务相关信息,了解IAM用户创建的话请参照【创建AWS IAM用户】的blog文章。

何为IAM

  • 管理在AWS上,用户对AWS服务和资源的访问权限
  • 对用户访问用的认证信息,存取AWS资源的权限进行集中管理
  • 如果没有IAM的话,就需要大家共享具有完全访问权限的AWS账户
  • IAM免费使用

IAM可以做什么

  • 控制访问API的密钥,轮换,无效化
  • 控制各个用户对可操作的AWS资源的访问
  • AWS资源的共享(超越账户的共享)
  • 对开发者,管理者,生产环境,开发环境等群组级别存取权限的管理
  • 使用SSL,使仅通过内网访问AWS资源

转移IAM

  • 单一的账户→原封不动地转移
  • 群组里含有别的账户,但没有共享AWS资源→可以汇集账户,一起计费
  • 群组含有别的用户,想共享AWS资源→需要重新创建资源

登录AWS管理控制台

  • 使用邮件地址和密码登录的完全访问权限
  • 推荐创建IAM用户,通过IAM用户登录
  • 通过使用MFA,提升安全级别

统一计费

汇总多个账户,通过一个账户计费(合并结算)。

IAM的要素

  • AWS账户:使用AWS时,最初取得的具有完全访问权限的账户(用邮箱地址,密码可以通过管理控制台登录)
  • 角色:创建具有临时访问制约的账户(委任权限)
  • 资源:S3桶,对象,EC2实例等AWS资源,通过ARN可以指定资源
  • 访问权限:用户群(例如:小王有S3和EC2操作权限)和资源群(例如:小王和小张有S3的访问许可)

使用IAM

  1. 创建组
  2. 创建用户
  3. 发行API的访问密钥
  4. 发放登录管理控制台用的密码

IAM的使用方法

  1. AWS上IAM用户管理→创建合适的IAM用户,设定访问权限交付用户
  2. 联合已存在的认证系统→依据ID联合,可以授权外部用户临时使用的权限
  3. 在AWS账户间跨账户访问

IAM用户和组

  1. 相同的用户可以汇总为组(UNINX中所谓组,类似于用户那样的印像)
  2. 一个用户可以所属多个组
  3. 在组中,不能再创建组

MFA

  1. 登录管理控制台的时候,邮件地址,密码之外,需要输入第三个必要的认证信息
  2. 输入智能应用或MFA专用设备显示的数字或者登录信息

认证信息的种类

  • 密码(登录管理控制台时,使用指定的符号,数字等文字,期间也可以变更)
  • 访问密钥(API,AWS CLI时使用)
  • 证明书
  • MFA(登录管理控制台时,追加的登录信息)

密码的管理

  1. 密码变更
  2. 设定密码策略
    • 密码最小的长度
    • 指定包含特定大小写,数值,字母,符号
    • 指定IAM用户能够自己变更其所使用的密码
    • 指定经过一定时间后,要求自己变更密码
    • 指定经过一定时间后,管理者不重置密码的话,不能使用
    • 设定以前使用过的密码不能再次使用
    • 密码策略从下次变更时适用
    • 但是,指定既存密码变更时间的话,立即适用

访问密钥的管理

  1. 发行AWS CLI,SDK等可以操作AWS的密钥
  2. 访问密钥ID和访问密钥
  3. 访问密钥仅在密钥创建时,可以下载(没有的话,重新发行密钥)
  4. 一个IAM用户一个密钥
  5. 可以指定状态是active,Inactive(不用的话,inactive或删除)

MFA的管理

  1. 依据Time-Based One-Time Password(TOTP)
  2. 智能应用可以作为MFA设备使用:登录时QR代码
  3. 也可以使用MFA专用的硬件设备(有售卖,可以购买使用):登录的时候,显示串行代码
  4. 每个账户使用一个MFA设备
  5. 作为MFA设备从同步对象分离的话(使用频度低,设别时间超时等)
    • 再同步需要花费10分左右
    • 再同步失败的话,电话咨询
  6. 不使用MFA的话,无效化MFA
  7. MFA设备发生故障或遗失的话
    • 无效化MFA
    • root用户的话,通过Contact US联系Amazon,临时解除MFA
    • IAM用户的话,由root用户登录操作
  8. 强制MFA认可,进行API保护(通过策略设定)

用户署名证明书的管理

在调用API时,可以使用SOAP,但是因为决定取消SOAP,可以使用访问密钥

认证信息的更新

不中断应用,变更访问密钥。

  1. 创建新的密钥(active的密钥变为两个)
  2. 修改应用程序使用新的密钥
  3. 旧的密钥设置为inactive
  4. 切换回去的话,只需active旧的密钥即可

获取认证信息报告

  1. 下载每个用户的密码,密钥,MFA设备,署名证明书等(active,密码变更日等)CSV文件

ID提供商的使用

  1. 针对外部用户(google,Facsbook,AD等),可以允许其访问AWS上的资源(SSO)
  2. 作为ID提供商,可以使用SAML或OpenID Connect(OIDC)
  3. SAML提供商的使用方法(AD等)
    1. 从ID提供商取得SAML元数据(发行者名,密钥等信息)
    2. 根据SAML元数据,做成管理控制台或API的SAML提供商(信赖ID提供商)
    3. 定SAML提供商,创建角色
    4. 在创建EC2时进行指定
  4. OIDC提供商的使用方法(google,Facebook等)
    1. 用ID提供商(google或Facebook)登录应用程序,获得客户端ID
    2. 根据客户端ID,ID提供商URL做成OIDC提供商
    3. 取得OIDC供应商的证明书,进行登录
    4. 指定OIDC供应商,创建角色
    5. 在创建EC2时进行指定

IAM角色(委任和联合)

  • IAM角色可以做的事
    • 和AWS以外的ID(facebook,google,ldap、AD等)进行联合
    • 授权EC2实例(上运行的应用)权限(授予具有时限的临时访问)
  • 何为角色
    • 完全不同于IAM用户,组的其他东西(不是链接在用户上)
    • 创建角色,设定访问权限
    • 指定角色自己或者其他AWS用户,可以委任访问权限
    • 给角色指定IAM用户,可以委以访问权限
    • 给角色指定ID提供商,可以控制访问(ID联合)
  • 角色的使用方法
    • 通过管理控制台操作的话:登录IAM,执行切换角色,可以替换访问权限
    • 通过API(应用)操作的话:通过AWS STS AssumeRole 获取临时用户,进行使用
    • 使用EC2实例的话:给EC2实例分配角色,通过EC2元数据,获得临时用户

服务器证明书管理

  • 通过IAM可以管理ELB或其他应用程序使用的服务器证明书(X.509)
  • 可以上传,删除,更新,显示一览表
  • 如果ELB使用HTTPS的话,选择给IAM上传的证明书

访问策略

  • 要给IAM的用户,组,角色设定访问权限,做成记载有策略的JSON形式
  • 创建的策略绑定到用户,组,角色上使用
  • 记载方式请参考用户指南

AWS Security Token Service(STS是什么)

  • 授予可信任的用户临时访问权限
  • 具体来说,发放临时的访问ID,访问密钥,认证令牌,也可设置时限

STS使用案例

  • 与本地ID(SAML,LDAP)的认证联合
  • 和Web ID(Amazon,Google,Facebook等)联合
  • 跨账户访问(可以接受来自其他AWS用户访问)
  • EC2角色(发行角色在EC2上临时ID)