Posted in: 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
- 创建组
- 创建用户
- 发行API的访问密钥
- 发放登录管理控制台用的密码
IAM的使用方法
- AWS上IAM用户管理→创建合适的IAM用户,设定访问权限交付用户
- 联合已存在的认证系统→依据ID联合,可以授权外部用户临时使用的权限
- 在AWS账户间跨账户访问
IAM用户和组
- 相同的用户可以汇总为组(UNINX中所谓组,类似于用户那样的印像)
- 一个用户可以所属多个组
- 在组中,不能再创建组
MFA
- 登录管理控制台的时候,邮件地址,密码之外,需要输入第三个必要的认证信息
- 输入智能应用或MFA专用设备显示的数字或者登录信息
认证信息的种类
- 密码(登录管理控制台时,使用指定的符号,数字等文字,期间也可以变更)
- 访问密钥(API,AWS CLI时使用)
- 证明书
- MFA(登录管理控制台时,追加的登录信息)
密码的管理
- 密码变更
- 设定密码策略
- 密码最小的长度
- 指定包含特定大小写,数值,字母,符号
- 指定IAM用户能够自己变更其所使用的密码
- 指定经过一定时间后,要求自己变更密码
- 指定经过一定时间后,管理者不重置密码的话,不能使用
- 设定以前使用过的密码不能再次使用
- 密码策略从下次变更时适用
- 但是,指定既存密码变更时间的话,立即适用
访问密钥的管理
- 发行AWS CLI,SDK等可以操作AWS的密钥
- 访问密钥ID和访问密钥
- 访问密钥仅在密钥创建时,可以下载(没有的话,重新发行密钥)
- 一个IAM用户一个密钥
- 可以指定状态是active,Inactive(不用的话,inactive或删除)
MFA的管理
- 依据Time-Based One-Time Password(TOTP)
- 智能应用可以作为MFA设备使用:登录时QR代码
- 也可以使用MFA专用的硬件设备(有售卖,可以购买使用):登录的时候,显示串行代码
- 每个账户使用一个MFA设备
- 作为MFA设备从同步对象分离的话(使用频度低,设别时间超时等)
- 再同步需要花费10分左右
- 再同步失败的话,电话咨询
- 不使用MFA的话,无效化MFA
- MFA设备发生故障或遗失的话
- 无效化MFA
- root用户的话,通过Contact US联系Amazon,临时解除MFA
- IAM用户的话,由root用户登录操作
- 强制MFA认可,进行API保护(通过策略设定)
用户署名证明书的管理
在调用API时,可以使用SOAP,但是因为决定取消SOAP,可以使用访问密钥
认证信息的更新
不中断应用,变更访问密钥。
- 创建新的密钥(active的密钥变为两个)
- 修改应用程序使用新的密钥
- 旧的密钥设置为inactive
- 切换回去的话,只需active旧的密钥即可
获取认证信息报告
- 下载每个用户的密码,密钥,MFA设备,署名证明书等(active,密码变更日等)CSV文件
ID提供商的使用
- 针对外部用户(google,Facsbook,AD等),可以允许其访问AWS上的资源(SSO)
- 作为ID提供商,可以使用SAML或OpenID Connect(OIDC)
- SAML提供商的使用方法(AD等)
- 从ID提供商取得SAML元数据(发行者名,密钥等信息)
- 根据SAML元数据,做成管理控制台或API的SAML提供商(信赖ID提供商)
- 定SAML提供商,创建角色
- 在创建EC2时进行指定
- OIDC提供商的使用方法(google,Facebook等)
- 用ID提供商(google或Facebook)登录应用程序,获得客户端ID
- 根据客户端ID,ID提供商URL做成OIDC提供商
- 取得OIDC供应商的证明书,进行登录
- 指定OIDC供应商,创建角色
- 在创建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)