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 中使用基于身份的策略提供权限,则仅提供访问同一账户中的资源的权限。如果您需要在另一个账户中发出请求,该账户中的资源必须具有附加的基于资源的策略以允许从您的账户中进行访问。否则,您必须在该账户中担任具有所需权限的角色。

IAM:亚马逊访问权限控制的更多相关文章

  1. 通过SecureCRT访问亚马逊Amazon EC2主机

    亚马逊推出了免费的云主机服务器 Amazon EC2,它是通过安全密钥来访问主机的. 问题是下载的密钥在SecureCRT 上无法直接使用,需要转换. 下面的方法可以在自己的linux主机上生成sec ...

  2. 解决亚马逊云服务器上安装nginx后无法访问的问题

    在亚马逊云服务器上装了Ubuntu系统,使用docker环境搭建nginx,启动nginx容器后,在浏览器输入地址后,显示连接超时. 在网上查了一下说有可能是服务器安全组的设置问题 然后在云服务器的安 ...

  3. 亚马逊EC2

    亚马逊EC2编辑 本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 亚马逊弹性计算云(EC2,Elastic Compute Cloud)是一个让使用者可以租用云端电脑运行所需 ...

  4. 亚马逊云架设WordPress博客

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 这篇文章介绍如何在亚马逊云架设WordPress博客.最强的云,加上最流行的建站工 ...

  5. 成都亚马逊AWSome Day回顾

    6月25日我和公司同仁一起参加了亚马逊在成都的第一场AWSome Day活动.整个活动时间异常紧促,短短一天包含了7堂session,讲师的狂轰乱炸使得我们同学们普遍觉得比上班累多了.好了,废话不多说 ...

  6. 国外物联网平台(1):亚马逊AWS IoT

    国外物联网平台(1)——亚马逊AWS IoT 马智 平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并 ...

  7. 微软、谷歌、亚马逊、Facebook等硅谷大厂91个开源软件盘点(附下载地址)

    开源软件中有大量专家构建的代码,大大节省了开发人员的时间和成本,热衷于开源的大厂们总是能够带给我们新的惊喜.2016年9月GitHub报告显示,GitHub已经有超过 520 万的用户和超 30 万的 ...

  8. 国外物联网平台初探(一) ——亚马逊AWS IoT

    平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AW ...

  9. 让用户使用第三方账号(如亚马逊账号)接入AWS IoT系统

    我们想象这么一个IoT应用场景:厂商A使用AWS IoT来开发物联网解决方案,那么A把设备卖给用户的时候,需要使用户能够登入AWS IoT系统来控制其购买的A的设备,也就是说给用户分配适当的权限.下面 ...

随机推荐

  1. PISQLDAS 查询语句

    SELECT tag,CAST(value AS Float64) FROM piarchive..piavg WHERE tag = ? AND time >= DATE(?) AND tim ...

  2. PowerDesigner 16PDM显示备注

    默认显示的列是Name及类型 name和code不支持同时显示,设置方法: Tool->Model Options->Name Convention->右侧display中选择显示n ...

  3. python中,numeric(数字类型)和integer(整型)的区别

    说明: 在今天做int实现的过程中,官方函数的解释是将numeric转换为integer,就突然不明白,两个有啥区别. numeric-数字类型包括: int,float,bool,complex i ...

  4. [Converge] Gradient Descent - Several solvers

    solver : {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’}, default: ‘liblinear’ Algorithm to use in the op ...

  5. [Laravel] 16 - DB: Eloquent

    前言 一.大纲 写后端API,与数据库打交道无疑是很重要的角色. PHP数据库操作:从MySQL原生API到PDO PHP数据库操作:使用ORM Ref: [PHP] 07 - Json, XML a ...

  6. SpringBoot(十五)-- 修改SpringBoot默认的错误页面

    将以下代码放置到 main方法中.然后在resources 中的static中新建404.html.405.html,这里可以自定义错误编码,不局限于这两个. @Bean public Embedde ...

  7. Qt编写守护程序保证程序一直运行(开源)

    没有任何人敢保证自己写的程序没有任何BUG,尤其是在商业项目中,程序量越大,复杂度越高,出错的概率越大,尤其是现场环境千差万别,和当初本地电脑测试环境很可能不一样,有很多特殊情况没有考虑到,如果需要保 ...

  8. Failed to resolve: com.android.support:appcompat-v7:27.0.1问题解决

    今天,在毫无征兆的情况下AndroidStudio又抽风了,搞了大半天,试了网上众多方案,终于解决了这个问题.咱们一步一步来 第一步:这是最开始的bug Error:Failed to resolve ...

  9. js积累点

    window.opener.parent.frames['taskAnswerInfoForm'].location=newUrl;//可以使该frame的页面跳转.不需要再写xxx.location ...

  10. .NET Core开发日志——Linux版本的SQL Server

    SQL Server 2017版本已经可以在Linux系统上安装,但我在尝试.NET Core跨平台开发的时候使用的是Mac系统,所以这里记录了在Mac上安装SQL Server的过程. 最新的SQL ...