mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
3043 字
8 分钟
云安全01
2026-05-31
2026-06-01

AWS相关概念阐述#

AWSAmazon Web Services 的缩写,中文译为“亚马逊云服务”。它是全球市场份额最大、最全面且应用最广泛的云平台。

简单来说,AWS 让你不需要自己购买、拥有和维护实体服务器(硬件)或数据中心,就能通过互联网按需获取计算能力、存储空间、数据库等 IT 资源。

AWS不是服务器。

AWS更像:

资源管理平台

里面有:

服务器
存储
网络
身份
权限

各种资源。

所以真正的结构应该是:

AWS Account
├── IAM(身份于权限)
├── EC2(服务器)
├── S3(存储)
└── VPC(网络)

这里第一次出现一个概念:

AWS Account

AWS Account#

这是整个AWS世界的根节点。

可以理解成:

你的云公司

你创建的所有东西:

EC2
S3
IAM
VPC

全部属于:

同一个Account

所以后面攻击者最喜欢看到:

Account ID

因为这代表:

目标云环境

IAM(Identity And Access Management)#

身份与权限管理

它能决定谁能访问什么资源

概念说明通俗理解
用户代表一个人或应用程序,可以登录或调用 API具体的人,如“张三”、“运维机器人”
一组用户的集合,可以统一授予权限按部门分组,如“开发组”、“财务组”
角色通常给AWS 服务临时身份使用,不绑定长期密码/密钥一种“临时工牌”,谁需要就谁借用
策略用 JSON 格式编写的权限规则文档,定义允许/拒绝哪些操作“允许对 S3 的 my-bucket 进行读取操作”
身份提供商允许使用外部身份登录 AWS(如公司 AD、Google、Facebook)“刷工牌也能进 AWS 大门”

IAM 与其他概念的关系#

  • 与“AWS 主账号”的关系:主账号拥有最高权限,日常操作强烈不建议使用主账号,应创建 IAM 用户使用
  • 与其他 AWS 服务的关系:几乎所有 AWS 服务都需要通过 IAM 进行权限检查,没有 IAM 授权就无法访问任何资源

一句话总结:IAM 是 AWS 安全的基石——谁、能做什么、对什么资源做,完全由它控制。

EC2(Elastic Compute Cloud)#

指的就是云服务器,不过多赘述

S3(Simple Storage Service)#

对象存储(Object-Based Storage),也可以叫做面向对象的存储,现在也有不少厂商直接把它叫做云存储。

说到对象存储就不得不提 Amazon,**Amazon S3 **(Simple Storage Service) 简单存储服务,是 Amazon 的公开云存储服务,与之对应的协议被称为 S3 协议,目前 S3 协议已经被视为公认的行业标准协议,因此目前国内主流的对象存储厂商基本上都会支持 S3 协议。

在 Amazon S3 标准下中,对象存储中可以有多个桶(Bucket),然后把对象(Object)放在桶里,对象又包含了三个部分:KeyDataMetadata

img

概念说明通俗理解
存储桶存储对象的容器,相当于顶级文件夹。桶名在 AWS 中全局唯一你的“云上根目录”
对象你存储的文件 + 相关的元数据(如文件名、大小、修改时间等)你上传的“一张照片”
对象的唯一标识符,相当于文件路径+文件名photos/2025/myfile.jpg
区域存储桶所在的 AWS 数据中心位置。选择靠近用户的区域可降低延迟如美国东部、亚太东京
版本控制保留同一对象的多个历史版本,可防止误删或覆盖“回收站 + 历史版本记录”
存储类别根据访问频率和成本选择不同层级(见下表)热数据、冷数据、归档

典型使用场景#

  • 静态网站托管:将 HTML/CSS/JS/图片直接放在 S3 桶中,开启静态网站功能即可低成本运行一个网站(无需服务器)。
  • 数据备份与灾难恢复:数据库备份、系统日志、重要文档等自动上传到 S3,利用其 99.999999999%(11个9)的持久性保证安全。
  • 大数据分析:将海量日志或原始数据存放在 S3,然后使用 Athena、EMR、Redshift 等服务直接分析 S3 中的数据。
  • 内容分发与 CDN 源站:将 S3 作为源站,配合 CloudFront(AWS 的 CDN 服务)加速全球分发。
  • 应用程序存储:用户上传的头像、文件、附件等存储在 S3。
  • 数据湖:作为企业数据湖的中心存储,集中存放结构化/非结构化数据。

与其他 AWS 服务的关系#

  • 与 IAM:通过 IAM 策略控制谁可以访问哪个桶/哪个对象
  • 与 EC2:EC2 虚拟机可将 S3 作为数据盘、备份目标或应用存储
  • 与 CloudFront:CDN 从 S3 拉取内容加速全球分发
  • 与 Lambda:对象上传时触发 Lambda 函数进行处理(如自动生成缩略图)
  • 与 Athena:直接在 S3 上运行 SQL 查询分析数据(如 CSV、JSON 日志)

一句话总结:S3 是 AWS 的海量、高持久、低成本对象存储服务,几乎任何需要存文件或数据的场景都可以用它,是 AWS 生态中最重要的基础组件之一。

aws-cli#

AWS CLI(Amazon Web Services Command Line Interface)是 AWS 官方提供的命令行工具,让你可以在终端中直接管理和操作 AWS 的各种资源(S3、EC2、IAM 等),而不需要通过浏览器登录控制台。一般的云渗透往往也是采用这一类命令行工具

核心特点#

特点说明
统一命令格式所有服务都遵循 aws <服务> <操作> 的模式
脚本化可以写成 Shell 脚本批量执行,实现自动化运维
跨平台支持 Windows、Linux、macOS
两种版本v1(旧版,Python 编写)、v2(新版,性能更好,推荐)
输出格式支持 JSON、YAML、文本、表格等多种格式

核心工作流程#

aws <服务名称> <操作名称> [参数和选项]

实际例子

# 语法分解
aws s3 ls # s3=服务, ls=列出存储桶
aws ec2 describe-instances # ec2=服务, describe-instances=列出实例
aws iam list-users # iam=服务, list-users=列出用户

安装与配置#

1. 安装(Ubuntu)#

# 推荐方式:snap 安装
sudo snap install aws-cli --classic
# 验证安装
aws --version

2. 配置凭证#

aws configure

系统会依次提示输入:

提示说明示例
AWS Access Key IDIAM 用户的访问密钥 IDAKIA...
AWS Secret Access KeyIAM 用户的秘密访问密钥xxxxx
Default region name默认操作的区域ap-southeast-1
Default output format输出格式json

3. 配置文件位置#

配置信息保存在两个文件中:

文件路径内容
凭证文件~/.aws/credentialsAccess Key ID 和 Secret Key
配置文件~/.aws/configregion 和 output format

常用命令分类#

一、S3 存储服务#

操作命令
列出所有存储桶aws s3 ls
创建存储桶aws s3 mb s3://桶名
上传文件aws s3 cp 本地文件 s3://桶名/远程路径
下载文件aws s3 cp s3://桶名/文件 ./
同步整个目录aws s3 sync ./本地目录 s3://桶名/远程目录
删除文件aws s3 rm s3://桶名/文件
删除存储桶(需先清空)aws s3 rb s3://桶名 --force
移动文件aws s3 mv s3://桶名/源 s3://桶名/目标
生成预签名 URLaws s3 presign s3://桶名/文件 --expires-in 秒数

示例

# 上传文件到私有桶
aws s3 cp myfile.txt s3://my-bucket/
# 下载整个目录
aws s3 cp s3://my-bucket/logs/ ./logs/ --recursive
# 同步本地文件夹到 S3(只上传有变化的文件)
aws s3 sync ./assets/ s3://my-bucket/assets/

二、EC2 计算服务#

操作命令
列出所有实例aws ec2 describe-instances
列出运行中的实例aws ec2 describe-instances --filters "Name=instance-state-name,Values=running"
启动实例aws ec2 start-instances --instance-ids i-xxxxx
停止实例aws ec2 stop-instances --instance-ids i-xxxxx
重启实例aws ec2 reboot-instances --instance-ids i-xxxxx
终止实例aws ec2 terminate-instances --instance-ids i-xxxxx
查询实例的公共 IPaws ec2 describe-instances --query "Reservations[*].Instances[*].PublicIpAddress"

示例

# 查看特定实例的详细信息
aws ec2 describe-instances --instance-ids i-1234567890abcdef0
# 使用 --query 过滤输出(提取实例 ID 和状态)
aws ec2 describe-instances --query "Reservations[*].Instances[*].[InstanceId,State.Name]" --output table

三、IAM 身份管理#

操作命令
列出所有用户aws iam list-users
创建用户aws iam create-user --user-name 用户名
删除用户aws iam delete-user --user-name 用户名
列出策略aws iam list-policies
附加策略给用户aws iam attach-user-policy --user-name 用户名 --policy-arn arn:aws:iam::aws:policy/策略名
获取当前用户信息aws sts get-caller-identity

四、通用命令格式#

操作命令
查看帮助aws <服务> helpaws help
查看命令可用选项aws <服务> <操作> help
指定不同的区域--region ap-northeast-1
指定输出格式--output json / text / table / yaml
仅显示特定字段--query "字段路径"
查看请求的详细过程--debug

尝试#

这一部分没必要看了,写的乱七八糟的,主要就是要自己上控制台看看这些东西在哪来配置,以运维的视角看看这些概念是怎么运作的

创建aws账户#

AWS Console 亚马逊云管理控制台 - AWS云服务

我已经创建好了就不写过程了,按照指引走就行了,不会的要么问ai要么默认

image-20260531191030373

创建IAM用户#

一般的云资源是一些公司厂商共同使用,如果底下每一个用户都使用邮箱创建的最高权限账户往往会带来风险,这时候就需要创建分配具体权限的用户秉持着最小权限原则

创建用户后可以选择添加用户到组或复制权限或最直接附加策略

  • 添加用户到组:这种情况往往是公司已经分配好工作组了,具体的工作组有具体的权限,这样新用户可以根据工作安排直接进组,享有组中的权限
  • 复制权限:将已经创建好的用户的权限直接复制
  • 直接附加策略:不同策略有不同的权限,相当于直接给该用户附加权限了

一些常见的策略

策略名称权限范围相当于什么风险等级
AdministratorAccessAWS所有资源完全控制Linux root⭐⭐⭐⭐⭐
ReadOnlyAccess所有资源只读Linux 普通用户 + 只读⭐⭐
IAMFullAccess完全控制 IAM域管理员权限管理⭐⭐⭐⭐⭐
IAMReadOnlyAccess查看 IAM查看用户和权限配置⭐⭐
AmazonS3FullAccess完全控制 S3文件服务器管理员⭐⭐⭐⭐
AmazonS3ReadOnlyAccess只读 S3文件查看权限
AmazonEC2FullAccess完全控制 EC2虚拟机管理员⭐⭐⭐⭐
AmazonEC2ReadOnlyAccess查看 EC2查看服务器信息
AmazonVPCFullAccess管理 VPC网络管理员⭐⭐⭐
AmazonRDSFullAccess管理数据库DBA⭐⭐⭐⭐
AmazonRDSReadOnlyAccess查看数据库配置数据库审计员
AWSLambda_FullAccess管理 LambdaServerless 管理员⭐⭐⭐
CloudTrailFullAccess管理审计日志日志管理员⭐⭐⭐⭐
CloudWatchFullAccess管理监控运维监控管理员⭐⭐

image-20260531192502108

现在给他只给这个用户读取S3的权限

image-20260531193130122

这里创建的IAM用户是可以通过提供的url和密码在网页端登录的,cli处的管理还没有开始学

image-20260601130115863

记得创建访问密钥,这是aws-cli登录的前提

创建S3存储桶#

image-20260531193337666

  1. 点击“创建存储桶

    • 桶名my-first-web-你的名字拼音-日期(例如 my-first-web-lilei-0601),必须全局唯一
    • 区域:选离你最近的(如 ap-northeast-1 东京)
    • 勾选“阻止全部公共访问权限”
    • 其他默认,点击“创建存储桶”
  2. 创建 index.txt 文件,内容如下:

    hello world
  3. 在S3控制台点击桶名 → “上传” → 添加 index.html → 下一步

  4. 关键步骤:在“设置权限”页面,将“预定义ACL”设置为“使所有人都可以公开读取

  5. 点击“上传” 因为我们设置的explorer用户只有读取c3的权限,所以可以上那个用户看看它的面板

创建ec2#

因为我是使用ssh密钥登录的,所以要先去ec2->密钥对中创建密码,将本地创建的公钥导入

image-20260531200550794

  • ubuntu系统

  • t3.micro实例

  • 启动实例

这样就用它的免费额度创建了一台轻量级的vps(相当轻量级2核1G,这台服务器我也就拿来做云安全的相关实验了)

之后直接在termius上连接这台服务器

cli交互#

image-20260601131925850

在aws-cli上配置

image-20260601132118250

查看存储桶,查看存储桶中的具体文件

现在本地写一个flag文件

flag{hacked_by_btop251}

image-20260601133051678

尝试上传,注意到权限不足,因为在配置的时候只给了这个用户查看存储桶的权限

现在给他添加一些别的权限尝试

image-20260601132410848

现在这个explorer用户具备完全控制S3存储桶和ec2的权限

再次尝试上传

image-20260601133159947

image-20260601133303375

成功了

一些其他尝试截屏要打码太麻烦了,自己去玩 云资产的基础部分大概就过这么多,现在对于一些资产的基本概念大概都搞清楚了,接下来就直接找靶场开打,以练代学了

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

云安全01
https://blog.btop251.top/posts/cloud-security/cloud-security01/
作者
btop251
发布于
2026-05-31
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录