IAM 中的安全最佳實務 - AWS Identity and Access Management

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

IAM 中的安全最佳實務

為了協助保護您的 AWS 資源,請遵循 () 的 AWS Identity and Access Management 這些最佳實務IAM。

要求人工使用者使用身分提供者聯合,以 AWS 使用臨時憑證存取

人類使用者具有人類身分,是應用程式的相關人員、管理員、開發人員、操作員和消費者。它們必須具有身分才能存取您的 AWS 環境和應用程式。擁有您組織成員身分的人類使用者,也具有人力身分。人工使用者也可以是您合作的外部使用者,以及與您的 AWS 資源互動的使用者。他們也可以透過 Web 瀏覽器、用戶端應用程式、行動應用程式或互動式命令列工具進行此項工作。

要求您的人工使用者在存取 時使用臨時憑證 AWS。您可以使用身分提供者,讓人工使用者 AWS 帳戶 擔任角色來提供對 的聯合存取,這些角色提供臨時憑證。對於集中存取管理,我們建議您使用 AWS IAM Identity Center (IAM Identity Center) 來管理對這些帳戶中帳戶的存取和許可。您可以使用 IAM Identity Center 管理您的使用者身分,或從外部身分提供者管理 IAM Identity Center 中使用者身分的存取許可。如需詳細資訊,請參閱 AWS IAM Identity Center 使用者指南中的什麼是 AWS IAM Identity Center

如需角色的詳細資訊,請參閱角色術語和概念

要求工作負載使用具有IAM角色的臨時憑證來存取 AWS

工作負載是可提供商業價值的資源和程式碼的集合,例如應用程式或後端程序。您的工作負載會有需要身分才能向 AWS 服務提出請求 (例如請求讀取資料) 的應用程式、操作工具和元件。這些身分包括在 AWS 環境中執行的機器,例如 Amazon EC2執行個體或 AWS Lambda 函數。

您可以管理需要存取權的外部當事人的機器身分。若要授予機器身分的存取權,您可以使用 IAM 角色。IAM 角色具有特定許可,並透過角色工作階段 AWS 依賴臨時安全憑證來提供存取方式。此外,您可能擁有 以外的機器 AWS ,需要存取您的 AWS 環境。對於在 外部執行的機器 AWS ,您可以使用 AWS Identity and Access Management Roles Anywhere 。如需角色的詳細資訊,請參閱IAM角色。如需如何使用角色在 中委派存取權的詳細資訊 AWS 帳戶,請參閱 IAM教學課程:委派存取 AWS 使用IAM角色的帳號

需要多重要素驗證 (MFA)

我們建議對存取您 AWS 資源的人工使用者和工作負載使用 IAM 角色,以便他們使用臨時憑證。不過,如果您的帳戶中需要IAM使用者或根使用者, 需要 MFA 以獲得額外的安全性。透過 MFA,使用者擁有可產生身分驗證挑戰回應的裝置。擁有每位使用者的憑證及裝置產生的回應,才能完成登入程序。如需詳細資訊,請參閱AWS 多因素身份驗證 IAM

如果您使用 IAM Identity Center 進行人類使用者的集中存取管理,當身分來源設定為 Identity Center 身分存放區、Managed Microsoft AD 或 AD Connector 時, AWS 您可以使用 IAM Identity Center IAMMFA功能。如需 IAM Identity Center MFA中的詳細資訊,請參閱 AWS IAM Identity Center 使用者指南 中的多重要素身分驗證

對於需要長期憑證的使用案例,請視需要更新存取金鑰

我們建議您盡可能依賴暫時性憑證,而不要建立長期憑證,例如存取金鑰。不過,對於需要具有程式設計存取和長期憑證IAM的使用者的情況,我們建議您在需要時更新存取金鑰,例如員工離開公司時。我們建議您使用IAM上次使用的資訊來安全地更新和移除存取金鑰。如需詳細資訊,請參閱更新存取金鑰

有些特定使用案例需要 中IAM使用者的長期憑證 AWS。以下是部分使用案例:

  • 無法使用IAM角色的工作負載 – 您可以從需要存取 的位置執行工作負載 AWS。在某些情況下,您無法使用IAM角色來提供臨時憑證,例如 WordPress 外掛程式。在這些情況下,請使用該工作負載IAM的使用者長期存取金鑰來驗證 AWS。

  • 第三方 AWS 用戶端 – 如果您使用不支援 IAM Identity Center 存取的工具,例如非託管於 的第三方 AWS 用戶端或廠商 AWS,請使用IAM使用者長期存取金鑰。

  • AWS CodeCommit 存取 – 如果您使用 CodeCommit 來儲存程式碼,則可以使用具有 SSH金鑰或服務特定憑證IAM的使用者 CodeCommit ,以對您的儲存庫進行身分驗證。除了在 IAM Identity Center 中使用使用者進行一般身分驗證之外,建議您這麼做。IAM Identity Center 中的使用者是您人力中需要存取您的 AWS 帳戶 或雲端應用程式的人員。若要讓使用者存取 CodeCommit 您的儲存庫而不設定IAM使用者,您可以設定git-remote-codecommit公用程式。如需 IAM和 的詳細資訊 CodeCommit,請參閱 IAM認證 CodeCommit:Git 憑證、SSH金鑰和 AWS 存取金鑰。如需設定git-remote-codecommit公用程式的詳細資訊,請參閱 AWS CodeCommit 使用者指南 中的使用輪換憑證連線至 AWS CodeCommit 儲存庫

  • Amazon Keyspaces (適用於 Apache Cassandra) 存取 – 您無法在 IAM Identity Center 中使用使用者的情況,例如為了測試 Cassandra 相容性,您可以使用具有服務特定憑證IAM的使用者來驗證 Amazon Keyspaces。IAM Identity Center 中的使用者是您人力中需要存取您的 AWS 帳戶 或雲端應用程式的人員。您也可以使用暫時性憑證連線到 Amazon Keyspaces。如需詳細資訊,請參閱 Amazon Keyspaces (適用於 Apache Cassandra) 開發人員指南 中的使用臨時憑證使用IAM角色和 SigV4 外掛程式連線至 Amazon Keyspaces。

遵循最佳實務以保護您的根使用者憑證

當您建立 時 AWS 帳戶,您可以建立根使用者憑證以登入 AWS Management Console。如同保護其他敏感的個人資訊那樣,保護您的根使用者憑證。若要更好地了解如何保護和擴展根使用者程序,請參閱 適用於 AWS 帳戶的根使用者最佳實務

套用最低權限許可

當您使用IAM政策設定許可時, 只會授予執行任務所需的許可。為實現此目的,您可以定義在特定條件下可以對特定資源採取的動作,這也稱為最低權限許可。探索工作負載或使用案例所需的許可時,您可能會從廣泛許可開始。隨著使用案例的成熟,您可以設法減少授予的許可,以便朝向最低權限的目標邁進。如需使用 IAM 套用許可的詳細資訊,請參閱 中的政策和許可 AWS Identity and Access Management

開始使用 AWS 受管政策,並邁向最低權限許可

若要開始授予許可給使用者和工作負載,請使用 AWS 受管政策,為許多常見使用案例授予許可。它們可在您的 中使用 AWS 帳戶。請記住, AWS 受管政策可能不會授予特定使用案例的最低權限許可,因為這些許可可供所有 AWS 客戶使用。因此,我們建議您定義使用案例的客戶管理政策,以便進一步減少許可。如需詳細資訊,請參閱AWS 受管政策。如需專為特定任務函數設計的 AWS 受管政策的詳細資訊,請參閱 AWS 受管理的工作職能政策

使用 IAM Access Analyzer 根據存取活動產生最低權限政策

若只授予執行任務所需的許可,您可以根據在 AWS CloudTrail中記錄的存取活動產生政策。IAM Access Analyzer 會分析IAM角色使用的服務和動作,然後產生您可以使用的精細政策。測試產生的每個政策後,您可以將政策部署到生產環境。這可確保您僅授予所需的許可給工作負載。如需政策產生的詳細資訊,請參閱 IAM Access Analyzer 政策產生

定期檢閱並移除未使用的使用者、角色、許可、政策和憑證

您可能在 中不再需要IAM使用者、角色、許可、政策或憑證 AWS 帳戶。IAM 提供上次存取的資訊,協助您識別不再需要的使用者、角色、許可、政策和憑證,以便移除它們。這可協助您減少必須監控的使用者、角色、許可、政策和憑證數量。您也可以使用此資訊來精簡您的IAM政策,以更好地遵守最低權限許可。如需詳細資訊,請參閱使用上次存取資訊,以縮小 AWS 中的許可範圍

使用IAM政策中的條件來進一步限制存取

您可以根據生效的政策陳述式指定條件。如此,您便可以授予對動作和資源的存取權,前提是存取請求符合特定條件。例如,您可以撰寫政策條件來指定所有請求都必須使用 傳送SSL。您也可以使用條件來授予對服務動作的存取權,但僅限透過特定 使用, AWS 服務例如 AWS CloudFormation。如需詳細資訊,請參閱IAMJSON政策元素:Condition

使用 IAM Access Analyzer 驗證公有和跨帳戶對資源的存取

在 中授予公有或跨帳戶存取許可之前 AWS,建議您確認是否需要此類存取。您可以使用 IAM Access Analyzer 來協助您預覽和分析支援資源類型的公有和跨帳戶存取。您可以透過檢閱 IAM Access Analyzer 產生的調查結果來執行此操作。這些問題清單有助於您驗證資源存取控制是否授予您預期的存取權。此外,隨著您更新公開和跨帳戶許可,您可以在將新的存取控制部署到資源前驗證變更的影響。IAM Access Analyzer 也會持續監控支援的資源類型,並為允許公有或跨帳戶存取的資源產生調查結果。如需詳細資訊,請參閱使用 IAM Access Analyzer 預覽存取權APIs

使用 IAM Access Analyzer 驗證您的IAM政策,以確保安全且功能正常的許可

驗證您建立的政策,以確保其遵守IAM政策語言 (JSON) 和IAM最佳實務。您可以使用 IAM Access Analyzer 政策驗證來驗證您的政策。IAM Access Analyzer 提供超過 100 個政策檢查和可行的建議,協助您撰寫安全且功能正常的政策。當您在主控台中撰寫新政策或編輯現有政策時,IAMAccess Analyzer 會提供建議,協助您在儲存政策之前對其進行精簡和驗證。此外,我們建議您檢閱並驗證所有現有政策。如需詳細資訊,請參閱 IAM Access Analyzer 政策驗證 。如需 IAM Access Analyzer 提供的政策檢查詳細資訊,請參閱 IAM Access Analyzer 政策檢查參考

建立跨多個帳戶的許可防護機制

當您擴展工作負載時,請使用使用 管理的多個帳戶來分隔工作負載 AWS Organizations。我們建議您使用 Organizations 服務控制政策 (SCPs) 來建立許可防護機制,以控制帳戶內IAM所有使用者和角色的存取。SCPs 是組織政策的一種類型,可用於在組織、OU AWS 或帳戶層級管理組織中的許可。您建立的許可防護機制會套用至所涵蓋帳戶內的所有使用者和角色。不過,SCPs僅 就不足以將許可授予您組織中的帳戶。若要這麼做,您的管理員必須將身分型或資源型政策連接至您帳戶中IAM的使用者、IAM角色或資源。如需詳細資訊,請參閱 AWS Organizations、 帳戶和IAM護欄

使用許可界限委派帳戶內的許可管理

在某些情況下,您可能想要將帳戶內的許可管理委派給其他人。例如,您可以允許開發人員為其工作負載建立和管理角色。委派許可給其他人時,請使用許可界限來設定您委派許可的上限。許可界限是進階功能,用於使用受管政策來設定身分型政策可授予IAM角色的最大許可。許可界限不會自行授予許可。如需詳細資訊,請參閱IAM 實體的許可界限