閱讀 AWS 收據

AWS Security 開發者實務

Rahul Singh

Technical Product Manager

一筆記錄包含什麼

CloudTrail:一個 API 呼叫對應一筆記錄

  1. 呼叫了什麼:eventName
  2. 何時(UTC):eventTime
  3. 誰呼叫的:userIdentity
  4. 針對哪個資源:requestParameters

一張記錄卡列出五個編號欄位,每個旁邊都有範例值:eventName、eventTime、userIdentity、requestParameters 和 errorCode。第五個標記為橘色,值為 AccessDenied。

AWS Security 開發者實務

一筆記錄包含什麼

CloudTrail:一個 API 呼叫對應一筆記錄

  1. 呼叫了什麼:eventName
  2. 何時(UTC):eventTime
  3. 誰呼叫的:userIdentity
  4. 針對哪個資源:requestParameters
  5. 被拒絕及原因:errorCode

一張記錄卡列出五個編號欄位,每個旁邊都有範例值:eventName、eventTime、userIdentity、requestParameters 和 errorCode。第五個標記為橘色,值為 AccessDenied。

AWS Security 開發者實務

日誌標示 principal

兩個欄位,一個身分

  • Session: 呼叫者,於 arn,開頭為 arn:aws:sts:
  • Role: 其權限,於 sessionIssuer,開頭為 arn:aws:iam:

上下兩區。上方區域標題為 Principal,顯示 session ARN assumed-role/ReportsRole/deploy-42,以箭頭指向發出它的 role ARN role/ReportsRole,兩者為實線。下方區域標題為 Actor,顯示三個虛線方框:session name、sourceIPAddress 與 userAgent,皆指向一個標示 Inferred 的虛線方框。

AWS Security 開發者實務

日誌標示 principal

兩個欄位,一個身分

  • Session: 呼叫者,於 arn,開頭為 arn:aws:sts:
  • Role: 其權限,於 sessionIssuer,開頭為 arn:aws:iam:

Actor 不是欄位

  • 推知:session name、sourceIPAddress

上下兩區。上方區域標題為 Principal,顯示 session ARN assumed-role/ReportsRole/deploy-42,以箭頭指向發出它的 role ARN role/ReportsRole,兩者為實線。下方區域標題為 Actor,顯示三個虛線方框:session name、sourceIPAddress 與 userAgent,皆指向一個標示 Inferred 的虛線方框。

AWS Security 開發者實務

留四個,不留四十個

四十個欄位,只要四個

  • Actor: 誰發起的
  • Principal: AWS 驗證的身分
  • Action: 呼叫了什麼
  • Resource: 影響了什麼

一筆密集事件記錄含許多灰色欄位條,其中四個以藍色突顯,並有箭頭指向一張精簡卡片,列出四條:actor、principal、action、resource。

AWS Security 開發者實務

留四個,不留四十個

四十個欄位,只要四個

  • Actor: 誰發起的
  • Principal: AWS 驗證的身分
  • Action: 呼叫了什麼
  • Resource: 影響了什麼

來源為何

  • Action 來自 eventName,Resource 來自 requestParameters
  • Principal 來自 userIdentity,Actor 由情境推知

一筆密集事件記錄含許多灰色欄位條,其中四個以藍色突顯,並有箭頭指向一張精簡卡片,列出四條:actor、principal、action、resource。

AWS Security 開發者實務

預設開啟,或預設關閉

管理事件(Management events)

  • 控制層(control plane)呼叫
  • 包含所有 KMS 呼叫,因此 Decrypt 歸在此處
  • Event history: 主控台免費保留 90 天

 

一個方框內列出三個控制層呼叫名稱,實線箭頭指向「Recorded by default」方框。

 

AWS Security 開發者實務

預設開啟,或預設關閉

管理事件(Management events)

  • 控制層(control plane)呼叫
  • 包含所有 KMS 呼叫,因此 Decrypt 歸在此處
  • Event history: 主控台免費保留 90 天

資料事件(Data events)

  • 物件讀取、函式觸發、項目寫入
  • Trail: 持續傳送,個別計費
  • 以選擇器指定資源類型,以及讀、寫或兩者

一個方框內列出三個控制層呼叫名稱,實線箭頭指向「Recorded by default」方框。

一個方框內列出三個資料層呼叫名稱,虛線箭頭指向「Not recorded until you ask」的虛線方框。

AWS Security 開發者實務

當時沒有人在錄

一條時間軸含三個節點:你決定要錄什麼、下載檔案、打開 CloudTrail。第一個節點以虛線延伸到最後,並分叉為「event found」方框與「nothing there」方框。

先決定,後查看

AWS Security 開發者實務

當時沒有人在錄

一條時間軸含三個節點:你決定要錄什麼、下載檔案、打開 CloudTrail。第一個節點以虛線延伸到最後,並分叉為「event found」方框與「nothing there」方框。

先決定,後查看

  • 客戶資料的資料事件預設開啟
  • 其他預設關閉
AWS Security 開發者實務

證據,往前推進

IAM Access Analyzer

  • 原則驗證: 檢查你撰寫的原則

三層串接。事件方框列出該角色使用的 GetObject、ListBucket、Decrypt,流向 IAM Access Analyzer,再流向產生的原則,內含命名空間化的 IAM 動作 s3:GetObject、s3:ListBucket、kms:Decrypt。

AWS Security 開發者實務

證據,往前推進

IAM Access Analyzer

  • 原則驗證: 檢查你撰寫的原則
  • 原則產生: 根據你的 trail 最多 90 天
  • 需要 trail,不含 Event history

三層串接。事件方框列出該角色使用的 GetObject、ListBucket、Decrypt,流向 IAM Access Analyzer,再流向產生的原則,內含命名空間化的 IAM 動作 s3:GetObject、s3:ListBucket、kms:Decrypt。

AWS Security 開發者實務

被授權,卻從未使用

兩條長條。上方顯示核准 42 個動作。下方分成窄綠段的 3 個已用動作,與寬虛線段的 39 個未使用。

未使用存取的發現

  • 沒有人呼叫過的角色、金鑰與動作
AWS Security 開發者實務

被授權,卻從未使用

兩條長條。上方顯示核准 42 個動作。下方分成窄綠段的 3 個已用動作,與寬虛線段的 39 個未使用。

未使用存取的發現

  • 沒有人呼叫過的角色、金鑰與動作

已用不等於必需

AWS Security 開發者實務

被授權,卻從未使用

兩條長條。上方顯示核准 42 個動作。下方分成窄綠段的 3 個已用動作,與寬虛線段的 39 個未使用。

未使用存取的發現

  • 沒有人呼叫過的角色、金鑰與動作

已用不等於必需

最小權限,可量化

  • 證據輸入,產出更精準的原則
AWS Security 開發者實務

一起來練習吧!

AWS Security 開發者實務

Preparing Video For Download...