什么是IAM?
AWS Identity and Access Management (IAM) 是一种 Web 服务,可帮助您安全地控制用户对 AWS 资源的访问权限。通过 IAM 可以控制哪些人可以使用您的 AWS 资源(身份验证)以及他们可以使用的资源和采用的方式(授权)。
主要功能与特点
Shared access to your AWS account
Granular permissions
Secure access to AWS resources for applications that run on Amazon EC2
Identity federation
Identity information for assurance
PCI DSS Compliance
Integrated with many AWS services
Eventually Consistent
Free to use
基本概念
User
您可以在账户中创建与组织中的用户对应的各 IAM 用户,而不是与他人共享您的根账户凭证。IAM 用户不是单独的账户;它们是您账户中的用户。每个用户都可以有自己的密码以用于访问 AWS 管理控制台。您还可以为每个用户创建单独的访问密钥,以便用户可以发出编程请求以使用账户中的资源。
Group
IAM* 组*是 IAM 用户的集合。利用组,可为多个用户指定权限,以便更轻松地管理这些用户的权限。例如,您可能有一个名为 Admins 的组,并向该组授予管理员通常需要的权限类型。该组中的任何用户均自动具有分配给该组的权限。如果有新用户加入您的组织,并且需要管理员权限,则可通过将此用户添加到组来分配相应的权限。同样,如果您的组织中有人更换工作,则不必编辑该用户的权限,只需从旧组中将其删除,然后将其添加到合适的新组即可。
Role
IAM 角色 类似于用户,因为它是一个 AWS 实体,该实体具有确定其在 AWS 中可执行和不可执行的操作的权限策略。但是,角色旨在让需要它的任何人代入,而不是唯一地与某个人员关联。此外,角色没有任何关联的凭证(密码或访问密钥)。相反,如果将某个用户分配给角色,则将动态创建访问密钥并将该密钥提供给用户。
Temporary Security Credentials
您可以使用 AWS Security Token Service (AWS STS) 创建可控制对您的 AWS 资源的访问的临时安全凭证,并将这些凭证提供给可信用户。
典型使用场景
Federating Existing Users
下图介绍用户如何使用 IAM 获取临时 AWS 安全凭证以访问您 AWS 账户中的资源
访问控制相关概念
Permissions
基于身份的 (IAM) 权限和基于资源的权限
下图阐明了两种权限类型。第一列显示与身份(两个用户和两个组)关联的权限。其中一些权限确定可对其执行操作的特定资源。这些操作支持资源级 权限。第二列显示挂载到资源的权限。这些服务支持基于资源的权限。
Policies
要给用户、组、角色或资源指定许可,您必须创建一个策略,它是一个显式列出许可的文档。从最基本的意义上而言,策略使您能够指定以下内容:
操作:您将允许哪些操作。每个 AWS 服务都有自己的一组操作。例如,您可能允许用户使用 Amazon S3 ListBucket
操作,它将返回有关存储段中项目的信息。任何您没有显式允许的操作都将被拒绝。
资源:您允许对哪些资源执行操作。例如,您将允许用户对哪些特定 Amazon S3 存储段执行ListBucket
操作?用户不能访问任何您没有显式授予许可的任何资源。
效果:当用户请求访问权限时将产生什么效果(允许或拒绝)。因为默认设置为拒绝用户访问资源,因此您通常需要指定您将允许用户访问资源。
最佳实践
隐藏您的 AWS 账户(根)访问密钥
创建单独的 IAM 用户
使用组向 IAM 用户分配权限
授予最小权限
为您的用户配置强密码策略
为特权用户启用 MFA
针对在 Amazon EC2 实例上运行的应用程序使用角色
通过使用角色而非共享证书来委托访问
定期交替轮换证书
删除不需要的证书
使用策略条件来增强安全性
监控 AWS 账户中的活动