AWS IAM介绍

news/2024/7/5 7:57:05

前言

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的介绍和对比


http://lihuaxi.xjx100.cn/news/1367789.html

相关文章

Golang中函数和方法的区别

在Golang中,函数和方法之间有一些区别。 函数是一段独立的代码块,可以接收输入参数并返回结果。它可以在任何地方被调用,而不依赖于任何特定的结构或类型。 方法是与特定类型关联的函数。它是类型的一部分,可以通过该类型的实例…

Linux - awk 命令 快速学习

awk会对数据流(可以是系统的文件, 网络的文件, 管道流)的每一行, 以某个分隔符分割,进行处理并输出内容. [rootiZwz9euj2j1u3uw9bv632sZ sea]# awk -F: {print $1,$3} /etc/passwd | head -5 root 0 bin 1 daemon 2 adm 3 lp 4-F: 以:分割字符串,等于 -F ":" {} …

serializers.PrimaryKeyRelatedField()是Django REST Framework(DRF)提供的一个序列化字段类

1.serializers.PrimaryKeyRelatedField()是Django REST Framework(DRF)提供的一个序列化字段类,用于在序列化和反序列化过程中处理其他模型之间的关联关系。 该字段类接受一个参数,即关联模型的主键。它将根据这个主键自动序列化和…

RocketMQ集成Springboot --Chapter5

RocketMQ tag过滤和sql92语法过滤 tag过滤 生产者,由于springboot没有专门对mq进行tag标记的方法,只是在topic:后面加上,所以只需 rocketMQTemplate.sendOneWay(“tagFilterBoot:TagA”,msg1);标记即可 生产者代码如下 /***生产者* tag过滤*…

Python 模块 ddt 数据驱动测试

简介 ddt 提供了一种方便的方法来实现数据驱动测试(Data-Driven Testing)。数据驱动测试是一种测试方法,通过将测试数据与测试逻辑分开,可以使用不同的数据集来运行相同的测试用例。这样可以提高测试的灵活性和可维护性&#xff0…

“深入探究Spring Boot:从入门到精通“

标题:深入探究Spring Boot:从入门到精通 摘要:Spring Boot是一个快速开发框架,它简化了Spring应用的搭建和配置。本文将从入门到精通,介绍Spring Boot的核心概念和用法,并通过示例代码详细解释每个概念。 …

【网络代理】(三)Docker+Haproxy 搭建四层代理

目录 1.1 创建 web 服务器镜像 1.2 启动 web 服务器容器 2.1 编写 haproxy 配置文件 2.2 拉取 haproxy 镜像 2.3 启动 haproxy 容器 3.1 访问 8000 端口 3.2 查看 web 服务器容器日志 附录:haproxy 仪表板 1.1 创建 web 服务器镜像 编写一个 Docke…

深入理解 PostgreSQL 的架构和内部工作原理

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…