AWS 安全性導論

AWS Security 開發者實務

Rahul Singh

Technical Product Manager

課程先修條件

 

  • 基本 AWS 安全性知識
  • 雲端運算概念
  • AWS 安全與成本管理概念

 

 

AWS 安全與成本管理概念課程標題卡

AWS Security 開發者實務

課程目標

 

  1. 身分:誰在呼叫
  2. 授權:可存取什麼
  3. 秘密與加密:如何保護資料
  4. 證據:事後發生了什麼

四條編號色帶沿脊柱往下堆疊,各代表課程涵蓋的區塊。色帶一:Identity,標示 Chapter 1。色帶二:Authorization,標示 Chapter 2。色帶三:Secrets and encryption,標示 Chapters 2 and 3。色帶四:Evidence,標示 Chapter 3。左側有一個標示 this video 的橘色箭頭指向色帶一。

AWS Security 開發者實務

你的程式碼透過 pipeline 發佈

由左至右的流程。步驟一:標示 Your pipeline 的方塊,內含 Build、Test、Deploy 三階段。步驟二:標示 git push 的箭頭自標示 You 的方塊指向管線。步驟三:管線下方懸掛一枚標示 its own identity 的橘色徽章。箭頭續往右指向標示 AWS 的方塊。

先釐清一個詞彙

  • pipeline:自動化建置、測試並部署你的程式碼
  • 由你的 push 觸發,全程無人工介入
AWS Security 開發者實務

因錯誤原因而失敗的部署

當程式碼變更時,實際被檢查的是誰的權限?
  1. 你推送了變更

垂直流程的第一步。標示 You 的方塊,正在推送程式碼變更。

AWS Security 開發者實務

因錯誤原因而失敗的部署

當程式碼變更時,實際被檢查的是誰的權限?
  1. 你推送了變更

  2. 你的 pipeline 執行

垂直流程。步驟一:You,推送程式碼變更。箭頭往下至步驟二:你的 pipeline 執行部署。

AWS Security 開發者實務

因錯誤原因而失敗的部署

當程式碼變更時,實際被檢查的是誰的權限?
  1. 你推送了變更

  2. 你的 pipeline 執行

  3. 部署停止:AccessDenied

直覺反應:「我先檢查自己的權限。」

垂直流程。步驟一:You,推送程式碼變更。步驟二:你的 pipeline 執行部署。步驟三:AWS 評估請求並回傳 AccessDenied。

AWS Security 開發者實務

實際發生了什麼

由左至右流程的第一步。標示 You 的方塊,你的參與到此為止。

  1. 你推送。你的參與到此為止
AWS Security 開發者實務

實際發生了什麼

由左至右的流程。標示 You 的方塊,箭頭指向標示 Your pipeline 的方塊。管線下方懸掛標示 deploy-role 的徽章。

  1. 你推送。你的參與到此為止
  2. 管線負責部署,並以你團隊建立的角色執行
AWS Security 開發者實務

實際發生了什麼

由左至右:You → Your pipeline → AWS。管線下方有 deploy-role 徽章,虛線箭頭標示 checks 從 AWS 指回該徽章,而非 You。

  1. 你推送。你的參與到此為止
  2. 管線負責部署,並以你團隊建立的角色執行
  3. AWS 會評估那個角色
AWS Security 開發者實務

Actor 與 principal

Actor

啟動這項工作的那個人。

此處:你。

象徵啟動工作的行動者圖示。

AWS Security 開發者實務

Actor 與 principal

Actor

啟動這項工作的那個人。

此處:你。

Principal

請求送達時,AWS 會評估的身分。

此處:pipeline 的角色。

象徵啟動工作的行動者圖示。

象徵 principal 的圖示。

AWS Security 開發者實務

Actor 與 principal

Actor

啟動這項工作的那個人。

此處:你。

Principal

請求送達時,AWS 會評估的身分。

此處:pipeline 的角色。

  • Lambda:execution role。ECS:task role。名稱不同,本質同一個 principal
  • 例外:終端機裡的長期金鑰,principal 會是 IAM 使用者

象徵啟動工作的行動者圖示。

圖示顯示 AWS 檢查的是 principal 而非 actor。

AWS Security 開發者實務

同一部署,兩種角色

Role A(AdministratorAccess 的典型範圍)

  • 讀取所有 bucket
  • 使用所有金鑰
  • 更新所有函式

Role B

  • 讀取單一 bucket
  • 使用單一金鑰
  • 更新單一函式

Prefix:bucket 內類似資料夾的路徑

顯示具全域存取角色,可存取六種不同政策的圖片。

顯示狹義存取角色,只能存取單一政策的圖片。

AWS Security 開發者實務

衝擊半徑(Blast radius)

寬鬆角色

若遭入侵:可觸及帳戶內所有 bucket、prefix 與物件。

狹義角色

若遭入侵:僅能觸及單一 bucket 的單一 prefix,不會更多。

同心圓示意寬鬆角色可觸及整個帳戶各層。

同心圓示意狹義角色只觸及最內層物件與 prefix,其他不動。

AWS Security 開發者實務

最小權限的實務作法

角色應只具備完成任務所需的權限,並儘量精簡。

  • AWS 管理的(如 AmazonS3ReadOnlyAccess):涵蓋每個 bucket。自行管理:你自訂,可細到單一 prefix
  • 範圍與存續:偏好短期憑證勝過長期金鑰
  • AWS 負責基礎設施的安全
  • 角色寬度由你決定,定義在你的版本庫中

範例: reports-bucket 讀取角色 只允許兩項。沒有額外授權。

  • 不包含 IAM(決定誰能做什麼的服務)的任何權限

一個角色的權限清單,三個多餘權限以紅色刪除線標示,兩個必要權限以綠色保留。

AWS Security 開發者實務

一起來練習吧!

AWS Security 開發者實務

Preparing Video For Download...