IAM:亚马逊访问权限控制

IAM的策略。用户->服务器(仓库、业务体)

IAM:亚马逊访问权限控制(AWS Identity and Access Management )
IAM使您能够安全地控制用户对 AWS 服务和资源的访问。
您可以使用 IAM 来创建和管理 AWS 用户和群组,并使用各种权限来允许或拒绝他们使用 AWS 资源。

什么是 IAM?
AWS Identity and Access Management (IAM) 是一种 Web 服务,
可以帮助您安全地控制对 AWS 资源的访问。
您可以使用 IAM 控制对哪个用户进行身份验证 (登录) 和授权 (具有权限) 以使用资源。

当您首次创建 AWS 账户时,最初使用的是一个对账户中所有 AWS 服务和资源有完全访问权限的单点登录身份。此身份称为 AWS 账户根用户,使用您创建账户时所用的电子邮件地址和密码登录,即可获得该身份。强烈建议您不使用 根用户 执行日常任务,即使是管理任务。请遵守使用 根用户 的最佳实践,仅将其用于创建您的首个 IAM 用户。然后请妥善保存 根用户 凭证,仅用它们执行少数账户和服务管理任务。

用户:Users。①仅限首次访问:您的根用户凭证。②IAM 用户。③联合现有用户。
AWS 账户根用户:首次创建 AWS 账户时的账户。对 AWS 账户中的所有资源进行完全、无限制的访问,包括访问您的账单信息,您还能更改自己的密码。不建议使用根用户凭证进行日常访问和账户共享。
IAM 用户:由根用户创建的账户。是与 AWS 互动的人员或服务。IAM 用户不是单独的账户;它们是您账户中的用户。每个用户都可以有自己的密码以用于访问 AWS 管理控制台。某些用户实际上是应用程序 (例如 DevApp1)。IAM 用户不必表示实际人员;您可以创建 IAM 用户以便为在公司网络中运行并需要 AWS 访问权限的应用程序生成访问密钥。
IAM组:是 IAM 用户的集合。组不是真正的身份。
IAM 角色:非常类似于用户,角色没有任何关联的凭证 (密码或访问密钥)。角色旨在让需要它的任何人代入,而不是唯一地与某个人员关联。
委托人:principal。委托人是可对 AWS 资源执行操作的实体。用户、角色、联合用户和应用程序都是 AWS 委托人。作为委托人,您必须进行身份验证 (登录到 AWS) 才能将请求发送到 AWS。委托人的类别就是身份。
身份:identity。(用户、组和角色)。身份代表用户,可对身份进行验证,然后向其授予在 AWS 中执行操作的权限。用户是身份,组不是真正的身份。

凭证: credentials。账户(或者用户名)和密码(或者访问秘钥)
根用户身份凭证:创建账户时提供的电子邮件地址(账户)和密码。
临时凭证:主要用于 IAM 角色,但也有其他用途。会在设定的时间段后自动过期。
长期凭证: 用户名和密码或访问密钥。


策略:Policies,作为 JSON 文档存储在 IAM 中。它们作为基于身份的策略 附加到委托人或作为基于资源的策略 附加到资源。
基于身份的策略:委托人允许或拒绝的权限。
基于资源的策略:资源允许或拒绝的权限。

基于身份策略:
默认情况下,IAM 用户无法访问您账户中的任何内容。您可以创建基于身份的策略以便为用户授予权限,这是一个附加到用户的策略。以下示例说明了一个策略,它授予权限以在 us-west-2 区域中使用 123456789012 账户对 Books 表执行所有 Amazon DynamoDB 操作 (dynamodb:*)。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "dynamodb:*",
"Resource": "arn:aws-cn:dynamodb:us-west-2:123456789012:table/Books"
}
}

基于资源策略:
例如,在 Amazon S3 中,您可以将基于资源的策略附加到存储桶。这称为存储桶策略。以下示例说明了一个 S3 存储桶策略,它允许 AWS 账户 777788889999 中名为 bob 的 IAM 用户将对象放入附加了该策略的存储桶中。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {"AWS": "arn:aws-cn:iam::777788889999:user/bob"},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
]
}
}

授权:authorization。IAM 的访问管理部分帮助定义用户或其他实体可在账户内执行的操作。

名称术语:
身份认证:authorization。
命令行界面 :(CLI)
权限:Permissions。


IAM 用户: 是您在 AWS 中创建的实体。当您创建 IAM 用户时,通过使该用户成为附加了适当的权限策略的组的成员或者通过直接将策略附加到该用户,从而授予用户权限。您也可以克隆现有 IAM 用户的权限,这将使得新用户自动成为相同组的成员并挂载所有相同的策略。
IAM 组:是 IAM 用户的集合。您可以使用组为一组用户指定权限,以便更轻松地管理这些用户的权限。请注意,组并不是真正的身份,因为无法在基于资源的策略或信任策略中将其标识为 Principal(委托人)。它只是用于一次性将策略附加到多个用户的方法。
IAM 角色:非常类似于用户,因为它是一个实体,该实体具有确定其在 AWS 中可执行和不可执行的操作的权限策略。但是,角色没有任何关联的凭证 (密码或访问密钥)。IAM 用户可代入角色来暂时获得针对特定任务的不同权限。
临时凭证:主要用于 IAM 角色,但也有其他用途。您可以请求权限集比标准 IAM 用户限制更严格的临时凭证。这可以防止您意外执行限制更严格的凭证不允许执行的任务。临时凭证的一个好处是会在设定的时间段后自动过期。您可以控制这些凭证的有效期。


IAM的策略:

身份 (用户、组和角色)
本节介绍 IAM 身份,创建这些身份的目的是为了向您的 AWS 账户中的人员和过程提供身份验证。本节还介绍 IAM组,这是可以作为一个单位进行管理的 IAM 用户的集合。身份代表用户,可对身份进行验证,然后向其授予在 AWS 中执行操作的权限。每个部分均可与一个或多个策略相关联来决定用户、角色或组成员可在哪些条件下对哪些 AWS 资源执行哪些操作。

了解 IAM 的工作方式
在创建用户之前,您应该了解 IAM 的工作方式。IAM 提供了控制您的账户的身份验证和授权所需的基础设施。IAM 基础设施包含以下元素:
委托人
请求
身份验证
授权
操作
资源

委托人
委托人是可对 AWS 资源执行操作的实体。

请求
在委托人尝试使用 AWS 管理控制台、AWS API 或 AWS CLI 时,该委托人将向 AWS 发送请求。

身份验证
作为委托人,您必须进行身份验证 (登录到 AWS) 才能将请求发送到 AWS。此外,诸如 Amazon S3, 的一些服务允许来自匿名用户的请求。要从控制台中进行身份验证,您必须使用用户名和密码登录。要从 API 或 CLI 中进行身份验证,您必须提供访问密钥和私有密钥。您还可能需要提供额外的安全信息。AWS 建议您使用多重身份验证 (MFA) 以提高您的账户的安全性。

授权
在授权期间,IAM 使用请求上下文中的值检查匹配的策略并确定是允许还是拒绝请求。
策略作为 JSON 文档存储在 IAM 中,并指定为委托人允许或拒绝的权限 (基于身份的策略) 或为资源允许或拒绝的权限 (基于资源的策略)。
IAM 检查与请求上下文匹配的每个策略。如果一个策略包含拒绝的操作,IAM 将拒绝整个请求并停止评估。这称为显式拒绝。由于请求是默认拒绝的,因此,只有在匹配的策略允许请求的每个部分时,IAM 才会授权请求。评估逻辑遵循以下规则:
默认情况下,所有请求都将被拒绝。
显式允许将取代此默认设置。
显式拒绝将覆盖任何允许。
注意
默认情况下,仅 AWS 账户根用户有权访问该账户中的所有资源。因此,如果未以根用户身份登录,您必须具有策略授予的权限。

操作
在对您的请求进行身份验证和授权后,AWS 将批准请求中的操作。操作是由服务定义的,这是可以对资源执行的操作,例如,查看、创建、编辑和删除该资源。例如,IAM 为用户资源支持大约 40 个操作,包括以下操作:
CreateUser
DeleteUser
GetUser
UpdateUser
要允许委托人执行操作,您必须在应用于委托人或受影响的资源的策略中包含所需的操作。

资源
在 AWS 批准请求中的操作后,可以对您的账户中的相关资源执行这些操作。资源是位于服务中的一个实体。示例包括 Amazon EC2 实例、IAM 用户和 Amazon S3 存储桶。服务定义了一组可对每个资源执行的操作。如果创建一个请求以对资源执行不相关的操作,则会拒绝该请求。例如,如果您请求删除一个 IAM 角色,但提供一个 IAM 组资源,请求将失败。
如果在 IAM 中使用基于身份的策略提供权限,则仅提供访问同一账户中的资源的权限。如果您需要在另一个账户中发出请求,该账户中的资源必须具有附加的基于资源的策略以允许从您的账户中进行访问。否则,您必须在该账户中担任具有所需权限的角色。

原文地址:https://www.cnblogs.com/andy9468/p/10635019.html