Site icon Mr. 沙先生

AWS 跨帳號 assumeRole 加入 MFA 認證

這篇的來源是當你的 AWS 環境有「多帳號」所延伸出來的安全議題,assumeRole 的用法可以參考之前寫過的一篇「在 AWS 用 switch Role 的方式管理多個 Account」通常會透過一個跳板帳號,這篇稱為 Jump Account,這個方法會透過 Jump Account IAM User 跳到 Client Account 的 IAM Role。

用了一陣子後發現 Jump Account 的 IAM User 如果不小心沒加上 MFA 驗證也可以跳到 Client Account,沒有 MFA 漏洞就大了許多,尤其關係到這麼多的 AWS Account。

後來查了一下 IAM Role 的 Trust Policy 可以限制來源擁有 MFA !! 官方內容可以參考「How Do I Protect Cross-Account Access Using MFA?

作法其實在 Client Account 的 IAM Role 加上 MFA Condition 就好

Create Role

一種是從 create role 勾選 Require MFA 就可以限制來源必須要有 MFA 認證

Trust Policy

另一種是直接改 Trust Policy 在 Condition 加上 aws:MultiFactorAuthPresent 就好

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {"AWS": "Parent-Account-ID"},
      "Action": "sts:AssumeRole",
      "Condition": {"Bool": {"aws:MultiFactorAuthPresent": true}}
    }
  ]
}

這樣子沒有開啟 MFA 認證的 IAM User 就不能跳到這個 Role 了。

Exit mobile version