AWS 安全入门

开发者的 AWS 安全实践

Rahul Singh

Technical Product Manager

课程先修要求

 

  • 基础 AWS 安全知识
  • 云计算概念理解
  • AWS 安全与成本管理概念

 

 

AWS 安全与成本管理概念课程标题卡

开发者的 AWS 安全实践

课程目标

 

  1. 身份:谁在发起调用
  2. 授权:能访问什么
  3. 机密与加密:如何保护数据
  4. 证据:之后发生了什么

四条按章节标注的色带自上而下排列:身份(第 1 章)、授权(第 2 章)、机密与加密(第 2、3 章)、证据(第 3 章)。左侧一枚标注"本视频"的橙色箭头指向身份。

开发者的 AWS 安全实践

您的代码通过 pipeline 交付

从左到右的流程:步骤一,标注为 You 的框向内有一条标注 git push 的箭头,指向标注为 Your pipeline 的框(含 Build、Test、Deploy 三阶段)。步骤二,管道下方悬挂一枚标注 its own identity 的橙色徽章。步骤三,箭头继续指向标注 AWS 的框。

先学一个术语

  • pipeline:自动构建、测试并部署您的代码
  • 由您的 push 触发,无需人工参与
开发者的 AWS 安全实践

一次"错因"导致的部署失败

代码变更时,实际检查的是谁的权限?
  1. 您推送一次变更

纵向流程的第 1 步:标注为 You 的框,正在推送代码变更。

开发者的 AWS 安全实践

一次"错因"导致的部署失败

代码变更时,实际检查的是谁的权限?
  1. 您推送一次变更

  2. 您的 pipeline 运行

纵向流程:步骤一,You 推送代码变更。向下箭头到步骤二,your pipeline 执行部署。

开发者的 AWS 安全实践

一次"错因"导致的部署失败

代码变更时,实际检查的是谁的权限?
  1. 您推送一次变更

  2. 您的 pipeline 运行

  3. 部署被阻止:AccessDenied

第一反应:"让我检查下我自己的权限。"

纵向流程:步骤一,You 推送代码变更。步骤二,pipeline 执行部署。步骤三,AWS 评估请求并返回 AccessDenied。

开发者的 AWS 安全实践

实际发生了什么

从左到右流程的第 1 步:标注为 You 的框,您的参与到此结束。

  1. 您推送。您的参与到此结束
开发者的 AWS 安全实践

实际发生了什么

从左到右:标注为 You 的框,箭头指向 Your pipeline。管道下方悬挂一枚标注 deploy-role 的徽章。

  1. 您推送。您的参与到此结束
  2. 管道以团队创建的某个角色来部署
开发者的 AWS 安全实践

实际发生了什么

从 You 到 Your pipeline 再到 AWS 的左到右流程。管道下挂 deploy-role 徽章,AWS 回指的虚线箭头标注 checks,指向该徽章而非 You。

  1. 您推送。您的参与到此结束
  2. 管道以团队创建的某个角色来部署
  3. AWS 评估的是该角色
开发者的 AWS 安全实践

Actor 与 principal

Actor

发起工作的那一方。

此处:您。

表示发起工作的参与者的图标。

开发者的 AWS 安全实践

Actor 与 principal

Actor

发起工作的那一方。

此处:您。

Principal

请求到达时,AWS 实际评估的身份。

此处:pipeline 的角色。

表示发起工作的参与者的图标。

表示 principal 的图标。

开发者的 AWS 安全实践

Actor 与 principal

Actor

发起工作的那一方。

此处:您。

Principal

请求到达时,AWS 实际评估的身份。

此处:pipeline 的角色。

  • Lambda:execution role。ECS:task role。名字不同,本质同为 principal
  • 例外:终端中的长期密钥,principal 就是该 IAM 用户

表示发起工作的参与者的图标。

显示 AWS 检查 principal 而非 actor 的图标。

开发者的 AWS 安全实践

同一部署,不同角色

角色 A(AdministratorAccess 的形状)

  • 读取所有 bucket
  • 使用所有 key
  • 更新所有 function

角色 B

  • 读取单个 bucket
  • 使用单个 key
  • 更新单个 function

Prefix:bucket 内类似文件夹的路径

展示具备六项策略的全域访问角色的图片。

展示仅具备一项策略的窄权限角色的图片。

开发者的 AWS 安全实践

爆炸半径

宽权限角色

若被攻破:可访问账户内所有 bucket、prefix 与对象。

窄权限角色

若被攻破:只能访问某个 bucket 中的一个 prefix,且仅此而已。

同心圆示意:宽权限角色可触达整个账户的每一层。

同心圆示意:窄权限角色仅触达最内层对象与 prefix,其他保持不变。

开发者的 AWS 安全实践

最小权限:实操

角色应仅具备完成职责所需的权限,且尽量少于此之外。

  • AWS 托管(如 AmazonS3ReadOnlyAccess):覆盖所有 bucket。客户托管:可细化到您自有的单个 prefix
  • 控制范围与时效:优先短期凭证而非长期密钥
  • AWS 保障基础设施安全
  • 角色宽窄由您决定,并存放在您的代码库中

示例: 报表 bucket 的读取角色 只授予两项 allow。除此之外不授予任何权限。

  • 对 IAM(决定谁能做什么的服务)不授予任何权限

一个角色的权限列表,三项多余权限被红色删除线划去,两项必要权限保留为绿色。

开发者的 AWS 安全实践

让我们一起练习吧!

开发者的 AWS 安全实践

Preparing Video For Download...