Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

不談 IAM

456 views

Published on

2015/3/26 黑金架構師

談 IAM 實用 Pattern,包含 IAM 如何以 Credential 與 AWS API 互動,以 IAM Role 取代 Group,與透過 Credential Factory 等方式授權外部機器(相對)安全的管理 AWS Credential。

Published in: Software
  • Be the first to comment

不談 IAM

  1. 1. 不談 IAM 我們今天聊 Credential Cliff Chao-kuan Lu 2015/3/26
  2. 2. 然後 • 最近太忙了,準備有點趕 • 投影片全部都是字字字• 沒有動畫
  3. 3. 緣起 • AWS 抽象包裹了很多細節 • 很多人忘記 AWS 是集成的 API • 把 Management Console 當 cPanel 在用 • 把 SDK 想成原生物件交互
  4. 4. 追本溯源 • 還它原來面貌 • 其中核心乃是 IAM
  5. 5. 所以今天 • 談 API 簽署 • 談 IAM 與 Credential • 談 IAM Idnetity 如何善用
  6. 6. API 簽署 •http://docs.aws.amazo n.com/general/latest/gr /signature-version- 4.html
  7. 7. API 簽署 (v4) • Create canonical request • Create digest of the request • Create a string (algorithm, request, date, credential scope, digest) • Create signing key with HMAC on the string using Secret Key • Signature = keyed hash(signing key, string) • 有點煩,交給 SDK 吧
  8. 8. 重點 • AWS 只會看到 Access Key / Security Token (STS) • Credential 才是一切的核心
  9. 9. Credential 來源 • IAM User • GetSession() • IAM Role • Instance Profile • 其他授權 • AssumeRole()
  10. 10. Credential 帶有 Metadata • MFA (透過 GetSession() 或 AssumeRole()) • Expire • Identity ARN • 除非被 403 ,我不知能如何高尚的取得 • CloudTrail Logs 有,但有些遲 • Policies
  11. 11. Credential Policies • 來自 IAM Role / User 的 Policy • AssumeRole() 時可以帶入額外 Policies • AWS 接到 Request 時,會再比對是否有權限呼叫該 API (比對所有 policy)
  12. 12. 用例:Role 取代 Group • Role 可以在 Principal 要求帶入 MFA • IAM User 必須先有權限呼叫 AssumeRole,查驗 MFA 後,才能變 身 • IAM Group 權柄天授,只能透過 Group Policy 加以限制 • Login as IAM User `clifflu` • AssumRole(‘arn:aws:iam::123412341234:role/admin’)
  13. 13. 用例:IAM Role per Service Role • Web Tier 各有 Instance Profile 進行基本授權 • 如果有多於一種 Service Role 在同一台機器上 • Instance Profile 只授權成為各個 Service Role 之 IAM Role • 開發機? • 只要 Principal 帶有 ec2,就能當作 Instance Profile 用;把 AWS Account 加 入 Principal,就能授權其他 Identity AssumeRole
  14. 14. 注意 • STS 頗慢,每個 web request 都調用,客戶會哭 • 善用 regional endpoint • Temporary credential 一小時後到期,記得 renew • 管理的花樣就多了
  15. 15. 過去讓它過去 • 曾經我們建議將 credential 存在 S3,讓機器定時抓取以 rotate credential • 不是不能用,但安全有疑慮 Credential 不應該離開它的持有者 • 使用 Instance Profile with or without AssumRole() 是當今王道
  16. 16. 如果機器不在 AWS • 建立 VM IAM User 生成 Credential 是一招,但不容易 rotate credential • 在 AWS 開台機器,查驗 requester 身份以後,回傳對應的 Temp Credential (STS) 也是一招。我叫它 Credential Factory,Stephen 大 大說 AWS 管這叫 Credential Vending Machine
  17. 17. 順道一提 • IAM Policy 的辨識規則貌似幾個月前變了 • 以前 {Allow All} + {Allow All; Condition: MFA} 會 Deny, 但現在好像會 Allow 了
  18. 18. 沒了

×