iT邦幫忙

2025 iThome 鐵人賽

DAY 5
0
進入職場還是要看職位,才知道能取得哪些操作權限啊!

昨天在 AWS IAM 中建立了系統管理員角色 (Role),還給了它 AdministratorAccess 權限。
看到這個畫面,立刻來測試使用者+角色!
https://ithelp.ithome.com.tw/upload/images/20250918/201684374l2KrnoZAE.png

  • 使用 user-me 的身分做登入:
    https://ithelp.ithome.com.tw/upload/images/20250919/20168437GcVLG38eY2.png

還是沒有權限?!

莫急、莫慌、莫害怕
目前只是用員工的身分進了公司,還需要切換成對應的職位才有權限。


切換角色

  • 點開畫面右上角,下方有個「切換角色」的按鈕。
    點它
    https://ithelp.ithome.com.tw/upload/images/20250918/20168437f0OP13typv.png

  • 輸入 Account IDRole Name
    https://ithelp.ithome.com.tw/upload/images/20250918/20168437v02xOcR13o.png

然後就出錯了。

https://ithelp.ithome.com.tw/upload/images/20250919/20168437uWAgmO0GW5.png


Trust Policy

理論上應該可以順利使用了,但實際測試卻發現...什麼都不能做。
怎麼會這樣?

還記得在建立角色的時候,曾經寫了一段 JSON 格式的設定嗎?
它是 AWS 中的 信任政策 (Trust Policy),文末會再仔細介紹。
設定中的其中一段:

"Condition": {
  "StringEquals": {
    "aws:PrincipalAccount": "590184072539"
  },
  "Bool": {
    "aws:MultiFactorAuthPresent": "true"
  }
}

這裡明確要求:一定要透過 MFA 登入 才能使用這個角色

所以單純用帳號密碼登入就想做角色切換,當然會被 AWS 拒絕。
就像是雖然持有識別證,但進申請機房通行證需要驗證指紋,否則門禁不會放行。


啟用 MFA

AWS 顯然知道大家會在這裡卡關,因此在 IAM 使用者頁面就能直接設定 MFA。

  • 直接點擊「啟用 MFA」
    https://ithelp.ithome.com.tw/upload/images/20250918/20168437eB7JZbjtRS.png

  • 選擇要使用的 MFA 裝置
    https://ithelp.ithome.com.tw/upload/images/20250918/201684371AnZBqQWiD.png

  • 跟著畫面完成綁定,掃描 QR code,輸入兩組連續的驗證碼
    https://ithelp.ithome.com.tw/upload/images/20250918/20168437B4KEyJM5tL.png

  • 完成後,IAM 使用者的狀態會顯示「已啟用且具有 MFA 」
    https://ithelp.ithome.com.tw/upload/images/20250918/20168437ToMNfzBdwl.png

從這一刻開始,每次使用這個 User 登入 AWS Console 都要額外輸入動態驗證碼囉!
  • 啟用 MFA 之後,再次嘗試切換角色。
    https://ithelp.ithome.com.tw/upload/images/20250918/20168437PkE0ObQ2Qw.png

完成後,畫面上方會顯示你已切換到指定角色
這時候再看畫面,就會發現原本的「拒絕存取」紅框都不見了!
https://ithelp.ithome.com.tw/upload/images/20250918/20168437PkE0ObQ2Qw.png


最後做一個小小的步驟整理:

  1. 建立 User → 只是身分,沒有權限。
  2. 建立 Role (系統管理員) → 用來集中管理權限。
  3. 設定信任政策 (Trust Policy) → 指定哪個 User 可以 AssumeRole,並要求
  4. 給 Role 權限 → 勾選 AdministratorAccess。
  5. 啟用 User 的 MFA → 綁定設備。
  6. 切換角色 (AssumeRole) → User 使用臨時通行證取得系統管理員權限。

AWS 的權限規則

一路看下來,AWS 的權限機制實在是很麻煩很嚴謹。
那麼,在這樣嚴謹機制中,AWS 是怎麼做權限判斷的?

  1. AssumeRole

    • AssumeRole 前:只有身分的權限集合
    User Policies + Group Policies + Identity-based Policies
    
    • AssumeRole 後:使用 Role 的設定
    Role Policies + Resource-based Policies 
    

    在 AssumeRole 之後,User 身上的判斷就全部消失了?!

    沒錯,在 AssumeRole (切換角色)之後,就**只看** Role 的權限設定。
    這也是避免 User 同時擁有兩組權限導致混亂。

  2. Deny 永遠優先
    在 IAM 的世界裡:Deny > Allow
    只要有任何一個規則出現 Deny,就算同時有多個 Allow,也會直接被拒絕。
    所以在實務上的設定中 Deny 用的場景不太多,因為一旦設定上去,就等於是「最高限制」。


信任政策 (Trust Policy)

「Trust policy」=資源端決定要信任誰。
最常見的例子就是 IAM Role,但其實它不是 Role 獨有的機制,也會用在 IAM Identity ProviderAWS Service-linked Roles跨帳號存取 等場景。

基本格式:

{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "AllowLoginUserWithMFA",
    "Effect": "Allow",
    "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:user/login-user" },
    "Action": "sts:AssumeRole",
    "Condition": {
      "Bool": { "aws:MultiFactorAuthPresent": "true" },
      "StringEquals": { "aws:PrincipalAccount": "ACCOUNT_ID" }
    }
  }]
}
欄位 位置/格式 意義
Version 最外層 IAM 政策語言版本,固定使用 "2012-10-17"
Statement 最外層/陣列 由一或多個規則組成,每個規則獨立判斷
Sid Statement 內 規則的識別字串,方便人閱讀
Effect Statement 內 指定規則是 AllowDeny
Principal Statement 內 誰可以來 Assume 這個 Role,可以是 User/Role/Service/Account
Action Statement 內 被允許的動作;信任政策通常只會是 sts:AssumeRole
Condition Statement 內 額外限制條件,必須同時符合才會生效
Bool Condition 內 設定條件為 True or False。"aws:MultiFactorAuthPresent": "true":要求需有 MFA 狀態
StringEquals Condition 內 設定條件為完全相符的字串。"aws:PrincipalAccount": "ACCOUNT_ID":指定要相符的帳號 ID

補充資訊

  • 明明設定了 AdministratorAccess ,卻發現無法存取費用設定?
    即使給了 AdministratorAccess,也不一定能進 Billing Console。
    AdministratorAccess 本身雖然有包含帳務相關權限,但是要實際存取 AWS Billing Console (存取帳務資訊),還需要額外的帳戶層級設定。
    而且這個設定需要由 Root 來做。

    1. 使用 Root 登入 Console
    2. 進入 Account Settings
    3. 啟用 IAM User and Role Access to Billing Information
  • 常見盲區

    1. 只改信任政策不夠
      呼叫端如果沒有包含:Allow sts:AssumeRole,仍然無法切換角色。
    2. 最小權限原則
      這份信任政策只管「誰能成為這個角色」,Role 自身附掛的許可(Managed/Inline/Permissions Boundary)才是「進來後能做什麼」;注意兩者都要最小化。

上一篇
Day 4. 沒有人會 24 小時都是員工
下一篇
Day 6. 就說了不要再生金鑰
系列文
科學的盡頭是玄學?AI占卜小助手與知識庫驗證6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言