AWS 身份與存取管理 (IAM) 現在支援對 AWS Organizations 中成員帳戶的根存取進行集中管理。透過這項功能,您可以刪除成員帳戶中不必要的根使用者憑證,並自動化一些過去需要根使用者憑證的常規任務,例如恢復對 Amazon 簡單儲存服務 (Amazon S3) 存放桶和 Amazon 簡單佇列服務 (Amazon SQS) 佇列的存取,這些存放桶和佇列的政策拒絕所有存取。
在這篇部落格文章中,我們將展示如何集中管理根憑證,並在您的組織中執行過去需要根憑證的任務。
集中管理根存取
這項新的 IAM 功能有兩個特性:根憑證管理和成員帳戶中的特權根操作。
根憑證管理使您能夠在 AWS Organizations 中集中監控、刪除和禁止恢復成員帳戶的長期根憑證。這有助於防止意外的根存取,並在整個組織中提升帳戶安全性。它有助於減少您需要管理的特權憑證和多因素認證 (MFA) 設備的數量。
注意:在您啟用組織中的根憑證管理後,您從 AWS Organizations 創建的新 AWS 帳戶將不會有根使用者密碼,並且在您重新啟用帳戶恢復之前,將無法進行根使用者密碼恢復程序。
成員帳戶中的特權根操作為您提供了一種集中執行過去需要根使用者憑證的最常見特權任務的方法。您的安全團隊可以通過短期(最多 15 分鐘)的任務範圍根會話,集中執行特權任務,例如解鎖配置錯誤的 S3 存放桶或 SQS 佇列,來支持您的成員帳戶使用者。您可以授權根會話僅執行該會話預定的操作。例如,您啟動的根會話用於解鎖 S3 存放桶政策,只能解鎖 S3 存放桶政策,不能用於其他根任務。根會話只能從您的管理帳戶或授權管理員帳戶啟動。IAM 實體需要在管理帳戶或授權管理員帳戶中擁有對新的 IAM 動作 sts:AssumeRoot 的權限才能創建根會話。
服務控制政策、VPC 端點政策和其他相關政策在根會話期間仍然有效。例如,您可以限制根會話僅限於預期的網路。
您可以使用以下 AWS 管理政策之一來範圍臨時根會話:
policy/root-task/IAMDeleteRootUserCredentials – 根會話範圍允許刪除成員根憑證(控制台密碼、存取金鑰、簽署憑證和 MFA 設備)。
policy/root-task/IAMCreateRootUserPassword – 根會話範圍允許創建成員根登錄配置。
policy/root-task/IAMAuditRootUserCredentials – 根會話範圍允許審核根憑證。
policy/root-task/S3UnlockBucketPolicy – 根會話範圍允許刪除 S3 存放桶政策。
policy/root-task/SQSUnlockQueuePolicy – 根會話範圍允許刪除 SQS 佇列資源政策。
啟用集中根存取
在本節中,我們將展示如何啟用根存取的集中管理。您必須以擁有 Organizations 管理員權限的組織管理帳戶登錄。
要啟用集中根存取(控制台)
在 IAM 控制台中,於左側導航選單中選擇根存取管理。
選擇啟用 當您使用控制台啟用集中根存取時,您還啟用了對 AWS Organizations 中 IAM 的受信任存取。
圖 1: IAM 控制台中的集中根存取功能
在成員帳戶的集中根存取頁面上,根憑證管理和成員帳戶中的特權根操作功能預設都是選中的,如圖 2 所示。作為安全最佳實踐,AWS 強烈建議您將此服務的管理委派給您的安全團隊使用的專用成員帳戶,該帳戶應與用於托管您的工作負載或應用的 AWS 帳戶分開。您也可以使用授權管理員帳戶來避免對您的管理帳戶的無必要存取。

圖 2: 啟用根存取管理
啟用集中根存取 (CLI)
從 Organizations 管理帳戶,您也可以從命令列啟用集中根存取。
要啟用集中根存取 (CLI)
首先,確保您已更新到最新的 AWS CLI,以便新的 API 可用。
在驗證了您的 CLI 版本後,通過運行以下命令來啟用該功能:
為了減少對管理帳戶的無必要存取,使用以下命令將此服務的管理委派給專用的安全成員帳戶。確保將 <MEMBER_ACCOUNT_ID> 替換為將註冊授權管理員的成員帳戶 ID。
接下來,啟用根操作:
集中根存取現在已啟用,並已委派給專用的安全成員帳戶。從該帳戶,您可以管理成員帳戶的根憑證或獲得短期任務範圍根存取,以便執行特定的根操作。請登入安全成員帳戶以遵循本文的其餘步驟。
根憑證管理
我們將討論的第一個功能是根憑證管理。導航至前面描述的新集中根存取管理控制台頁面,您將看到組織結構。如圖 3 所示,對於每個 AWS 帳戶,都有一個根使用者憑證欄位,告訴您根使用者憑證是否存在。

圖 3: 成員帳戶根憑證狀態預覽
在此控制台頁面上,您可以刪除或創建每個成員帳戶的根使用者控制台密碼(登錄配置)。
要刪除或創建根使用者控制台密碼
在帳戶下,選擇一個帳戶並選擇執行特權操作按鈕。
選擇刪除根使用者憑證或允許密碼恢復(對於不存在根憑證的 AWS 帳戶)。請注意,創建根使用者登錄配置不會恢復之前的根使用者配置,例如先前設置的密碼和關聯的 MFA 設備。

圖 4: IAM 控制台中的刪除根使用者憑證功能
特權根任務
在您啟用特權根操作功能後,您(作為安全管理員)將能夠使用控制台或 CLI 執行特權任務,例如解鎖成員帳戶中的 S3 存放桶或 SQS 佇列政策。
要執行特權根操作(控制台)
從您的授權管理員帳戶,導航至 IAM 控制台。在左側導航選單中選擇根存取管理。
選擇您的 S3 存放桶或 SQS 佇列所在的帳戶。然後選擇執行特權操作按鈕。
選擇您希望在成員帳戶上執行的特權任務,並提供您希望刪除資源政策的 S3 存放桶或 SQS 佇列的詳細資訊。在圖 5 的示例中,我們選擇了刪除 S3 存放桶政策操作並輸入了成員帳戶中 S3 存放桶的 URI。

圖 5: IAM 控制台中的特權根操作
確認您刪除資源政策的意圖,然後選擇刪除存放桶政策。
要執行特權根操作(CLI)
從終端中,更新到最新的 AWS CLI,以確保新的 API 可用。
從授權管理員帳戶,使用 STS/AssumeRoot API 操作在成員帳戶中獲取根會話,如下所示。根會話的默認和最大持續時間為 15 分鐘。確保將 <MEMBER_ACCOUNT_ID> 替換為您的成員帳戶 ID。
使用以下命令在 CLI 中加載新的憑證:
刪除被鎖定的 S3 存放桶政策,確保將 <value> 替換為存放桶的名稱:
現在存放桶政策可用,存放桶所有者可以撰寫新的政策。
集中根存取的最佳實踐
本節概述了集中根存取和使用臨時根會話的安全考量。
限制誰可以使用根會話
僅授予需要存取的管理員和自動化使用新的根會話與 AssumeRoot 的存取。在您組織的管理和授權管理員帳戶中,僅向需要的個人和自動化授予 sts:AssumeRoot 權限。
您可以進一步限制管理員或自動化實體可以執行的根操作,使用 AWS 安全令牌服務 (AWS STS) 條件鍵 sts:TaskPolicyArn,如以下政策聲明所示。
為根存取提供緊急訪問
緊急訪問是指在特殊情況下獲得存取的替代方法,例如僅能使用根存取執行的任務。當您遵循緊急訪問的建議時,則不需要根使用者存取。請檢查並更新您現有的依賴於根使用者的程序,以減少對根憑證緊急訪問的依賴。
自動化常規根操作
由於集中根存取功能與 AWS API、CLI 和 SDK 支援一起推出,您可以建立自動化以節省時間,減少安全團隊進行手動操作的需要。例如,您可以與您的票務系統建立 Amazon EventBridge 集成,當佇列或存放桶所有者提交具有批准的票據時,EventBridge 規則會觸發 AWS Lambda 函數。然後,該 Lambda 函數使用任務範圍的根會話來刪除 SQS 佇列或 S3 存放桶的政策。圖 6 顯示了這種類型的自動化示例。

圖 6: 在票據批准後刪除 SQS 佇列或 S3 存放桶上的政策的自動化
自動化的流程如下:
當在您的票務系統中批准刪除 S3 存放桶或 SQS 佇列上的政策的票據時,事件會放入 EventBridge 事件總線,並在您的授權管理員帳戶上觸發 EventBridge 規則。
EventBridge 規則觸發並調用 Lambda 函數,傳遞事件的副本。
Lambda 函數使用 assumeRoot 操作,範圍為集中根存取任務政策之一。
AWS STS 返回臨時憑證,其範圍在前一步中由任務政策確定。
使用臨時憑證,Lambda 函數在您的成員帳戶中執行刪除 S3 存放桶或 SQS 佇列政策的特權根操作。
檢查並更新您的根使用及根憑證管理程序
現在,過去最常需要根使用者存取的任務(S3 存放桶恢復和 SQS 佇列恢復)不再需要長期根使用者憑證,您應重新檢視這些用例的程序,並轉移到使用根會話,而不是長期根使用者。
因為現在可以刪除根使用者的登錄配置,您應重新檢視組織成員帳戶的根使用者憑證管理程序。與其執行密碼輪換或 MFA 設備管理,您可能能夠通過刪除根登錄配置來改善整體安全狀態,這樣就無法使用憑證訪問根使用者,且無法啟動密碼恢復程序。
持續遵循組織管理帳戶中的根使用者最佳實踐
這項新功能使您能夠更簡單地管理組織成員帳戶中的根憑證。然而,組織的管理帳戶根使用者仍然必須存在且擁有已知憑證。請參閱 IAM 使用者指南以了解有關管理組織管理帳戶根使用者的最佳實踐。
如果您的組織管理帳戶根使用者沒有 MFA 設備,AWS 將為符合條件的客戶提供免費的 MFA 設備。
如何以可擴展的方式刪除根憑證
本節概述了一種安全地在大規模上刪除根使用者憑證的方法。首先,獲取成員帳戶根憑證的摘要。檢查根憑證的使用情況,並識別可以安全刪除根憑證的帳戶。然後建立自動化以在您的成員帳戶中大規模刪除未使用的根憑證。
獲取成員帳戶根憑證的摘要
首先,確認您的成員帳戶的根帳戶是否有憑證,然後再刪除它們。如果您已在成員帳戶中擁有安全管理員角色,請使用 getAccountSummary 操作來審核根憑證。如果您沒有這樣的角色並且無法在成員帳戶中創建審核角色,您可以建立自動化,使用 assume-root 會話範圍為 IAMAuditRootUserCredentials 任務來確定根憑證是否存在,以及持久根憑證最後一次使用的時間。持久根帳戶可以有兩種類型的憑證,密碼和存取金鑰。您需要檢查兩者。
以下是一個示例 bash 腳本,您可以從授權管理員帳戶運行以獲取成員帳戶上根憑證的摘要。
要使用 bash 腳本獲取根憑證摘要
確保您已安裝 AWS CLI,並使用具有 organizations:ListAccounts 和 sts:AssumeRoot 操作權限的管理角色憑證登錄到您的授權管理員帳戶。
將下面的代碼保存為 GetRootCredentialsSummary.sh。
腳本中使用的配置檔為 root-access-management。您可以修改腳本以使用其他配置檔。
在終端上運行 GetRootCredentialsSummary.sh。
輸出將包含一個 .csv 文件,列出根帳戶的最後登錄時間,包括密碼和存取金鑰的最後使用時間。使用此信息來確定哪些根帳戶可以安全刪除。如果沒有最後使用的信息,則憑證未使用,您可以進行刪除。如果它們已被使用,請追蹤在 AWS CloudTrail 中使用它們的操作。如果憑證被用於根操作,請用替代方法替換它們。確定目前無法刪除根憑證的帳戶,並需要在刪除過程中排除這些帳戶。
大規模刪除根憑證
在確定哪些 AWS 帳戶擁有您想要刪除的持久根憑證後,使用新的操作 assumeRoot 來訪問這些帳戶並刪除根憑證。
以下是一個將在整個組織中刪除根登錄配置的腳本。您可以通過更新變量 EXCLUDED_ACCOUNTS 來排除某些帳戶。
要使用該腳本刪除根憑證
確保您已安裝 AWS CLI,並使用具有 organizations:ListAccounts 和 sts:AssumeRoot 操作權限的管理角色憑證登錄到您的授權管理員帳戶。
將下面的代碼保存為 DeleteRootCredentials.sh。
腳本中使用的配置檔為 root-access-management。您可以修改腳本以使用其他配置檔。
在終端上運行 ./DeleteRootCredentials.sh。
輸出將包含一個 .csv 文件,列出根帳戶(除了 EXCLUDED_ACCOUNTS 中的帳戶)的根登錄配置刪除狀態。
您可以擴展此腳本以通過使用 delete-access-key 命令刪除根存取金鑰。為此,您需要使用 list-access-keys 命令檢索存取金鑰的列表,遍歷存取金鑰列表以確定要刪除哪些金鑰,並將結果的存取金鑰 ID 傳遞給 delete-access-key 以刪除這些金鑰。
同樣,您可以擴展該腳本以刪除 MFA 設備,方法如下。通過使用 list-mfa-devices 檢索 MFA 設備的列表,遍歷該列表以確定要刪除哪些 MFA 設備,並將結果的設備序列號傳遞給 deactivate-mfa-device 和 delete-virtual-mfa-device,以停用 MFA 設備並進一步刪除虛擬 MFA 設備。
結論
在這篇文章中,我們向您展示了如何啟用和使用集中根存取的各種功能。此外,我們還介紹了使用這項新功能的最佳實踐,並討論了採用的考量。
要了解有關集中根存取和根使用者最佳實踐的更多資訊,請查看我們的文檔。如果您有問題,請聯絡 AWS 支援或在 re:Post 上發表問題。