1:什么是IAM
AWS Identity and AccessManagement (IAM) 是一种 Web 服务,可帮助您安全地控制用户对 AWS 资源的访问权限。通过 IAM 可以控制哪些人可以使用您的 AWS 资源(身份验证)以及他们可以使用的资源和采用的方式(授权)
这一点与Keystone很类似。
IAM 不收费
2:提供的功能
对您 AWS 账户的共享访问权限
您可以向其他人员授予管理和使用您 AWS 账户中的资源的权限,而不必共享您的密码或访问密钥。
精细权限
您可以针对不同资源向不同人员授予不同权限。例如,您可以允许某些用户完全访问AmazonElasticCompute Cloud (Amazon EC2)、AmazonSimple Storage Service (Amazon S3)、AmazonDynamoDB、Amazon Redshift 和其他 AWS 产品。对于其他用户,您可以允许仅针对某些 S3 存储桶的只读访问权限,或是仅管理某些 EC2 实例的权限,或是访问您的账单信息但无法访问任何其他内容的权限。
在 Amazon EC2上运行的应用程序针对 AWS 资源的安全访问权限
您可以使用 IAM 功能安全地向 EC2 实例上运行的应用程序提供为访问其他 AWS 资源(如 S3 存储桶和 RDS 或DynamoDB 数据库)而需要的凭证。
多重验证 (MFA)
您可以向您的账户和各个用户添加双重身份验证以实现更高安全性。借助 MFA,您或您的用户不仅必须提供使用账户所需的密码或访问密钥,还必须提供来自经过特殊配置的设备的代码。
身份联合
您可以允许已在其他位置(例如,在您的企业网络中或通过Internet身份提供商)获得密码的用户获取对您 AWS 账户的临时访问权限。
实现保证的身份信息
如果您使用 AWS CloudTrail,则会收到日志记录,其中包括有关对您账户中的资源进行请求的人员的信息。这些信息基于 IAM 身份。
创建 AWS 账户时,会创建一个用于登录 AWS 的账户(即“根”)身份。您可以使用此根身份(即,创建
账户时提供的电子邮件地址和密码)登录 AWS 管理控制台。您的电子邮件地址和密码的这一组合也称为
您的根账户凭证。
使用根账户凭证时,您可以对您 AWS 账户中的所有资源进行完全、无限制的访问,包括访问您的账单信
息,您还能更改自己的密码。当您首次设置账户时,需要此访问级别。但是,我们不建议使用根账户凭证
进行日常访问。我们特别建议您不与任何人共享您的根账户凭证,因为如果这样做,他们可对您的账户进
用户:为您在 AWS 中创建的一个实体,该实体代表使用它与 AWS 进行交互的人员或服务。IAM 用户的主要用途是使与您一起工作的人员能够登录到 AWS 管理控制台以执行交互式任务,并向使用API 或 CLI AWS 的服务发出编程请求。AWS 中的用户由用于登录 AWS 管理控制台的用户名和密码组成,最多可包含用于 API 或 CLI 的两个访问密钥。
组:是 IAM 用户的集合。您可以使用组为一组用户指定权限,以便更轻松地管理这些用户的权限。例如,您可能有一个名为Admins的组,并向该组授予管理员通常需要的权限类型。该组中的任何用户均自动具有分配给该组的权限。如果有新用户加入您的组织,并且应具有管理员权限,则可通过将该用户添加到该组,分配相应的权限。同样,如果您的组织中有人更换工作,则不必编辑该用户的权限,只需从旧组中将其删除,然后将其添加到合适的新组即可。请注意,组并不是真正的身份,因为无法在访问策略中将其标识为 Principal。它只是用于一次性将策略附加到多个用户的方法。
角色:非常类似于用户,因为它是一个实体,该实体具有确定其在 AWS 中可执行和不可执行的操作的权限策略。但是,角色没有任何关联的凭证(密码或访问密钥)。角色旨在让需要它的任何人代入,而不是唯一地与某个人员关联。IAM用户可代入角色来暂时获得针对特定任务的不同权限。可将角色分配给联合身份用户 (p. 61),该用户使用外部身份提供程序而非 IAM 进行登录。AWS 使用由身份提供程
序传递的详细信息来确定映射到联合身份用户的角色。
创建一个用户
用户名只能使用字母数字和以下字符的组合:加号 (+)、等号 (=)、逗号 (,)、句点 (.)、@ 和
连字符(-)
点击服务-安全&身份-IAM-用户-创建新用户,最多可以一次性同时创建5个用户,创建成功后,将生成的AKSK保存好。
默认新创建的用户没有任何权限,也就是可以正常登录,但是没有办法看至平台里的任何内容,我们可以为其“附加策略”,点击相应用户,选择“附加策略”
在这里边我们可以针对不同的用户附加不同的资源使用策略。这里面做出的操作是即时生效的。
策略和组
为了简化操作,我们可以将用户归置至同一个组里,然后给组赋予策略;
用户或组可以附加授予不同权限的多个策略。这种情况下,用户的权限基于策略组合进行计算。
角色
角色实际上是一组权限,用于授予对 AWS 中的操作和资源的访问权限。这些权限附加到角色,而不附加到 IAM 用户或组。角色可由以下用户使用:
位于相同 AWS 账户中的作为角色的 IAM 用户
位于不同 AWS 账户中的作为角色的 IAM 用户
由 AWS 提供的 Web 服务,如Amazon Elastic Compute Cloud (Amazon EC2)
由与 SAML 2.0 或 OpenID Connect 兼容的外部身份提供商 (IdP) 服务或定制的身份代理进行身份验证的外部用户。
委托
委托将授予某人允许访问您控制的资源的权限。这涉及设置拥有资源的账户(信托账户)与包含需要访问资源的用户的账户(可信账户)之间的信任。可信账户和信托账户可为以下任一账户:
同一账户。
在您(组织)控制之下的两个账户。
由不同组织拥有的两个账户。
要委托访问资源的权限,请创建 IAM 角色 (p.92),并附加两个策略 (p. ?)。权限策略授予角色的用
户所需权限来对资源执行所需的任务。信任策略指定允许哪些可信账户授予其用户代入角色的权限。
针对信托账户中的角色的信任策略只是权限的一半。另一半是附加到允许用户切换到或代入角色(p.114)
的可信账户中的用户的权限策略。临时代入一个角色的用户将放弃自己的权限而接过该角色的权限。
当用户退出或停止使用该角色时,将恢复原始的用户权限。一个名为外部 ID (p. 96) 的附加参数可帮
助确保在未由同一组织控制的账户之间安全地使用角色。
联合身份验证
联合身份验证将创建外部身份提供商与 AWS 之间的信任关系。用户可登录一个 Web 身份提供商,
如 Login with Amazon、Facebook、Google 或与 OpenID Connect (OIDC) 兼容的任何 IdP。用户还
可登录与安全断言标记语言 (SAML) 2.0 兼容的企业身份系统,如 Microsoft Active Directory 联合身
份验证服务。当使用 OIDC 和 SAML 2.0 在这些外部身份提供商与 AWS 之间配置信任关系时,将为
用户分配了一个 IAM 角色,而且用户将会收到使其能够访问您的 AWS 资源的临时凭证。
Policy
IAM 策略 (p. 285)是一个JSON 格式的文档,您可在其中定义某个角色的权限。该文档是根据IAM 策
略语言 (p. 285)的规则编写的。
创建角色时,可为它创建两个单独的策略:信任策略,指定允许代入角色的人员(可信实体或委托
人;请参阅下一个术语);权限策略,定义允许委托人使用的操作和资源。
委托人
委托人是AWS中可执行操作并访问资源的实体。委托人可以是AWS账户(“根”用户)、IAM用户、
组或角色。您可采用以下两种方式之一授予可访问资源的权限:
可向用户或角色(直接,或通过组间接)附加权限。
对于支持基于资源的策略的这些服务,您可在已附加到资源的策略的Principal 元素中标识委托
人。
如果您将一个 AWS 账户称为委托人,则它通常表示该账户中定义的任何委托人。
跨账户访问
向账户中的可信委托人授予对其他账户资源的访问权限通常称为跨账户访问。角色是授予跨账户访问
权限的主要方式。但是,通过由 AWS 提供的某些 Web 服务,您可将策略直接附加到资源(而不是
使用角色作为代理)。这些策略称为基于资源的策略,您可以使用它们向其他 AWS 账户中的委托人
授予对资源的访问权限。以下服务支持针对以下指定资源的基于资源的策略:AmazonSimpleStorage
Service (S3) 存储桶、Amazon Glacier 文件库、Amazon Simple Notification Service (SNS) 主题和
Amazon Simple Queue Service (SQS) 队列。