前言

AWS是世界上最大的云服务提供商,它提供了很多组件供消费者使用,其中进行访问控制的组件叫做IAM(Identity and Access Management), 用来进行身份验证和对AWS资源的访问控制。

功能

IAM的功能总结来看,主要分两种:

  • 验证身份(Authentication)

  • 授权访问(Authorization)

验证身份

验证身份的主要目的就是验证你的身份。

主要的身份实体有3种:

  • 用户(user),实体创建的用户,与用户组的关系为多对多

  • 用户组(group),根据一定规则分类的抽象集合,与用户的关系为多对多

  • 角色(role),其余AWS资源,例如EC2实例、Lambda函数等

对于用户来说,我们在控制台看到的是一个用户名,实际上在后台,它是一串资源字符串:

arn:aws:iam::account-ID-without-hyphens:user/User-name

确认方式有以下几种:

  1. AWS管理控制台,使用username/password方式进行认证

  2. AWS命令行工具,使用Access Key/Secret Key进行认证

  3. AWS产品开发包(SDK),使用Access Key/Secret Key进行认证

  4. Restful API,使用Access Key/Secret Key进行认证

设定权限

对于AWS来说,这部分是通过Policy来实现的。

Policy规定了被认证的实体可以访问什么权限,怎样访问权限的问题,主要由Statement来完成。而Statement是使用json格式来填写的。

针对不同的层级,我们将Policy分为两种:

  1. 针对已认证用户的层级,我们称为“Identified-Based Policy”

  2. 针对资源层级,我们称为“Resource-Based Policy”

Statement的写法如下:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::productionapp"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::productionapp/*"
}
]
}

Identified-Based Policy

这里的Policy是针对被验证过用户的层级(此处的用户包含我上面讲的User、Group、Role)。

Policy和Statement是一对多的关系,也就是说,一个Policy可以包含多个Statement。

而Statement又包含以下内容:

  1. Effect,决定你能不能访问(Allow/Deny)

  2. Action,允许你对服务做什么动作

  3. Resource,指明这次的Statement是对哪个资源做动作

Resource-Based Policy

这里的Policy是针对资源本身的层级。

Policy和Statement是一对多的关系,也就是说,一个Policy可以包含多个Statement。

而Statement又包含以下内容:

  1. Effect,决定你能不能访问(Allow/Deny)

  2. Action,允许你对服务做什么动作

  3. Resource,指明这次的Statement是对哪个资源做动作,由于是针对自己的,所以要加上self

  4. Principle,将自己的资源套用给谁

Identified-Based Policy和Resource-Based Policy的区别

  1. Identified-Based Policy是Policy层级的,而Resource-Based Policy是Statement层级的,Identified-Based Policy比Resource-Based Policy高了一级

  2. Identified-Based Policy是从用户角度来看待权限管理的,而Resource-Based Policy是从资源角度来看待权限管理的。

小结

  1. IAM是用来做什么的

  2. 用户、用户组、角色的介绍

  3. Policy的介绍,Identified-Based Policy和Resource-Based Policy的介绍和对比

参考与鸣谢

官网 IAM

01 IAM 是做什么的? - YouTube

圖解AWS教學 - IAM - 整體架構 入門介紹 - YouTube

AWS IAM介绍的更多相关文章

  1. AWS IAM (Identity and Access Management) 使用笔记

    为 AWS 管理控制台登录页面 URL 创建别名 $ aws iam create-account-alias --account-alias <value> 创建用户 $ aws iam ...

  2. AWS Switching to an IAM role (AWS CLI)

    一,引言 今天额外分享一篇 AWS 的技术内容,需要在 EC2 切换到跨账号 IAM 角色(AWS CLI).假设我们使用两个 AWS 账户,A账号,B账号.我们希望允许 A 账号用于 "i ...

  3. AWS EKS 添加IAM用户角色

    作者:SRE运维博客 博客地址: https://www.cnsre.cn/ 文章地址:https://www.cnsre.cn/posts/211203931498/ 相关话题:https://ww ...

  4. 基于AWS的云服务架构最佳实践

    ZZ from: http://blog.csdn.net/wireless_com/article/details/43305701 近年来,对于打造高度可扩展的应用程序,软件架构师们挖掘了若干相关 ...

  5. 云K8S - AWS容器库ECR(ERS)编排ECS-EKS以及阿里云编排ACS-ACK

    云K8S相关 AWS 部分-ECR(ERS) ECS EKS 20180824 Chenxin AWS的容器编排目前分为 ECS 和 EKS 两种. AWS价格说明 Fargate模式的ECS,换算成 ...

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

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

  7. How do I use EC2 Systems Manager to join an instance to my AWS Directory Service domain?

    1. Create new role "EC2RoleforSSM" in AWS IAM AWS->IAM->Roles->Create role->Se ...

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

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

  9. Qwiklab'实验-Hadoop, IoT, IAM, Key Management'

    title: AWS之Qwiklab subtitle: 1. Qwiklab'实验-Hadoop, IoT, IAM, Key Management Service' date: 2018-09-1 ...

  10. AWS物联网解决方案之:如何将设备安全地接入AWS IoT

    1 简介 AWS IoT解决方案是一个全托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互.AWS IoT可以支持数十亿太设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路 ...

随机推荐

  1. Python中使用pyyaml对yaml文件进行读写删操作

    安装库 pip install pyyaml 读取yaml/yam格式的文件 def get_yaml(filepath) -> list: """ :param ...

  2. RuntimeError: Expected object of backend CUDA but got backend CPU for argument #4 'mat1'

    原因:变量没有加cuda data=data.cuda()

  3. VUE keepAlive缓存问题之动态使用exclude(会使用到VUEX)

    exclude是啥? 官方解释: 怎么用呢? 处理的问题是什么?(答:返回首页的时候清除B页面的缓存) 我遇到的问题是: 一开始状态:A(首页). B(列表).C(列表中的详情)三个页面,设置B页面的 ...

  4. Python第四章

    import datetime # 定义一个列表 mot = ["今天星期一:\n坚持下去不是因为我坚强,而是因为我别无选择.",        "今天星期二:\n含泪播 ...

  5. 探秘ThreadLocal

    一 类结构 主要是set(T), get(), remove()方法 二  TheadLocal是什么时候创建的 threadLocal的初始化, lazy creating, 用到的时候(get 或 ...

  6. linux系统下载redis时make报错:没有名为什么》》》》》

    明明自己下载了gcc-c++环境,但是make还是一直报错,没有名为什么的>>>>> 其实这个问题主要的原因的是gcc的版本过低了,你可以gcc -v查看一下你的版本,是 ...

  7. 各种系统名词解释:MIS 、ERP、CRM、OA

    MIS :信息系统.针对企业使用的软件,都可以叫做MIS系统. (管理信息系统--Management Information System)系统 ,是一个由人.计算机及其他外围设备等组成的能进行信息 ...

  8. .Netcore webApi 注入socket 与客户端交互

    模拟服务端 private string TcpServiceControl(string value) { // 1.按照模拟工具上看 先new一个tcp服务 Socket serverSocket ...

  9. 将成员服务器ms1加到AD域中

    1.对ms1的ipv4设置,dns对应地址dc1服务器地址 2.修改计算机名,并加入域 重启后 2.以域用户登录方式有两种 1.  2. 检查ms1有没有加入dc1的域中 在dc1

  10. [C# 学习笔记]运用 GDI+ 的 Matrix 进行显示图形的平移和缩放

    C# 学习中,想尝试着做一个工控方面的上位机,可以读取CAD绘制的图形,然后把它显示出来,后面让运动控制器去走CAD里面的轨迹. 一.用netDXF 开源包,对DXF文件进行解析.解析后的直线.圆.圆 ...