阅读 AWS 记录

开发者的 AWS 安全实践

Rahul Singh

Technical Product Manager

一条记录包含什么

CloudTrail:一次 API 调用,一条记录

  1. 调用了什么:eventName
  2. 何时(UTC):eventTime
  3. 谁发起的:userIdentity
  4. 作用于何资源:requestParameters

一张记录卡,列出 5 个编号字段及示例值:eventName、eventTime、userIdentity、requestParameters 和 errorCode。第 5 个标记为橙色,值为 AccessDenied。

开发者的 AWS 安全实践

一条记录包含什么

CloudTrail:一次 API 调用,一条记录

  1. 调用了什么:eventName
  2. 何时(UTC):eventTime
  3. 谁发起的:userIdentity
  4. 作用于何资源:requestParameters
  5. 被拒绝及原因:errorCode

一张记录卡,列出 5 个编号字段及示例值:eventName、eventTime、userIdentity、requestParameters 和 errorCode。第 5 个标记为橙色,值为 AccessDenied。

开发者的 AWS 安全实践

日志标明的是 principal

两个字段,一个身份

  • 会话(Session): 调用方,位于 arn,以 arn:aws:sts: 开头
  • 角色(Role): 其权限,位于 sessionIssuer,以 arn:aws:iam: 开头

上下两块区域。上方"Principal"区显示会话 ARN assumed-role/ReportsRole/deploy-42,向下箭头指向签发它的角色 ARN role/ReportsRole,均为实线。下方"Actor"区显示三个虚线框:session name、sourceIPAddress 和 userAgent,均指向一个写有 Inferred 的虚线框。

开发者的 AWS 安全实践

日志标明的是 principal

两个字段,一个身份

  • 会话(Session): 调用方,位于 arn,以 arn:aws:sts: 开头
  • 角色(Role): 其权限,位于 sessionIssuer,以 arn:aws:iam: 开头

actor 不是单独字段

  • 需推断:会话名、sourceIPAddress

上下两块区域。上方"Principal"区显示会话 ARN assumed-role/ReportsRole/deploy-42,向下箭头指向签发它的角色 ARN role/ReportsRole,均为实线。下方"Actor"区显示三个虚线框:session name、sourceIPAddress 和 userAgent,均指向一个写有 Inferred 的虚线框。

开发者的 AWS 安全实践

保留四个字段,而非四十个

四十个字段,只取四个

  • Actor: 谁触发
  • Principal: AWS 校验的身份
  • Action: 调用了什么
  • Resource: 作用到哪里

一条密集事件记录含多条灰色字段条,其中四条以蓝色突出,并有箭头指向一张精简卡片,列出四行编号:actor、principal、action、resource。

开发者的 AWS 安全实践

保留四个字段,而非四十个

四十个字段,只取四个

  • Actor: 谁触发
  • Principal: AWS 校验的身份
  • Action: 调用了什么
  • Resource: 作用到哪里

来源对应

  • Action 来自 eventName,Resource 来自 requestParameters
  • Principal 来自 userIdentity,Actor 需推断

一条密集事件记录含多条灰色字段条,其中四条以蓝色突出,并有箭头指向一张精简卡片,列出四行编号:actor、principal、action、resource。

开发者的 AWS 安全实践

默认开启,或默认关闭

管理事件(Management events)

  • 控制平面调用
  • 包含所有 KMS 调用,因此 Decrypt 也在此处
  • Event history: 免费 90 天控制台视图

 

一个框中列出三种控制平面调用名,有一条实线箭头指向"Recorded by default"框。

 

开发者的 AWS 安全实践

默认开启,或默认关闭

管理事件(Management events)

  • 控制平面调用
  • 包含所有 KMS 调用,因此 Decrypt 也在此处
  • Event history: 免费 90 天控制台视图

数据事件(Data events)

  • 对象读取、函数调用、项目写入
  • Trail: 持续投递,单独计费
  • 通过选择器指定资源类型,以及读取、写入或二者皆有

一个框中列出三种控制平面调用名,有一条实线箭头指向"Recorded by default"框。

一个框中列出三种数据平面调用名,有一条虚线箭头指向"Not recorded until you ask"虚线框。

开发者的 AWS 安全实践

当时没人录这个

一条时间线有三个节点:您选择录制内容、文件被下载、您打开 CloudTrail。虚线将第一个节点延伸到最后一个节点,并在此分叉为"event found"与"nothing there"两个框。

先决定,后查阅

开发者的 AWS 安全实践

当时没人录这个

一条时间线有三个节点:您选择录制内容、文件被下载、您打开 CloudTrail。虚线将第一个节点延伸到最后一个节点,并在此分叉为"event found"与"nothing there"两个框。

先决定,后查阅

  • 客户数据的数据事件默认开
  • 其余默认关
开发者的 AWS 安全实践

证据,用于前瞻

IAM Access Analyzer

  • 策略校验: 检查您编写的策略

三个相连阶段。包含角色使用的事件名框(GetObject、ListBucket、Decrypt)流向 IAM Access Analyzer,再流向生成的策略,策略中为命名空间化的 IAM 操作 s3:GetObject、s3:ListBucket 和 kms:Decrypt。

开发者的 AWS 安全实践

证据,用于前瞻

IAM Access Analyzer

  • 策略校验: 检查您编写的策略
  • 策略生成: 基于您 Trail 的最长 90 天活动
  • 需要 Trail,不支持 Event history

三个相连阶段。包含角色使用的事件名框(GetObject、ListBucket、Decrypt)流向 IAM Access Analyzer,再流向生成的策略,策略中为命名空间化的 IAM 操作 s3:GetObject、s3:ListBucket 和 kms:Decrypt。

开发者的 AWS 安全实践

已授予,却从未使用

两条条形图。上方条显示授予了 42 个操作。下方条分为一段窄绿的 3 个已用操作和一段宽虚线的 39 个未使用。

未使用的访问发现

  • 从未被调用的角色、密钥和操作
开发者的 AWS 安全实践

已授予,却从未使用

两条条形图。上方条显示授予了 42 个操作。下方条分为一段窄绿的 3 个已用操作和一段宽虚线的 39 个未使用。

未使用的访问发现

  • 从未被调用的角色、密钥和操作

已用不等于所需

开发者的 AWS 安全实践

已授予,却从未使用

两条条形图。上方条显示授予了 42 个操作。下方条分为一段窄绿的 3 个已用操作和一段宽虚线的 39 个未使用。

未使用的访问发现

  • 从未被调用的角色、密钥和操作

已用不等于所需

最小权限,可量化

  • 证据为入,收敛策略为出
开发者的 AWS 安全实践

让我们一起练习吧!

开发者的 AWS 安全实践

Preparing Video For Download...