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

IAM 中的安全最佳實務

若要協助保護您 AWS 資源的安全,請遵循這些 AWS Identity and Access Management (IAM) 服務的建議。

鎖定您的 AWS 帳戶 根使用者存取金鑰

您使用存取金鑰 (存取金鑰 ID 與私密存取金鑰),對 AWS 提出程式設計要求。不過,請勿使用您的 AWS 帳戶 根使用者存取金鑰。您 AWS 帳戶 根使用者的存取金鑰提供所有 AWS 服務之所有資源的完整存取權,包括您的帳單資訊。您無法減少與 AWS 帳戶 根使用者存取金鑰關聯的許可。

因此,保護您的根使用者存取金鑰如同保護您的信用卡號碼或任何其他敏感的密碼。以下是一些可用方式:

  • 強烈建議您不要以根使用者處理日常作業,即使是管理作業。反之,僅使用根使用者憑證來建立 IAM 管理員使用者。接著請妥善鎖定根使用者憑證,只用來執行少數的帳戶與服務管理作業。對於日常任務,請勿使用 IAM 管理員使用者。反之,使用角色以委派許可

  • 如果您有 AWS 帳戶 根使用者的存取金鑰,請將其刪除。如果您必須保存它,定期輪換 (變更) 存取金鑰。若要刪除或輪換您的根使用者存取金鑰,請前往 AWS Management Console 中的我的安全憑證頁面,並使用您帳戶的電子郵件地址和密碼登入。您可以在 Access keys (存取金鑰) 區段管理您的存取金鑰。如需有關輪換存取金鑰的詳細資訊,請參閱 輪換存取金鑰

  • 切勿與任何人分享您的 AWS 帳戶 根使用者密碼或存取金鑰。本文件的其餘各節會討論各種方式,讓您不必與其他使用者共享 AWS 帳戶 根使用者憑證。同時,也會說明如何避免將這些憑證嵌入應用程式中。

  • 使用高強度密碼,來協助保護帳戶層級的 AWS Management Console 存取權。如需有關管理您的 AWS 帳戶 根使用者密碼的詳細資訊,請參閱 變更 AWS 帳戶根使用者密碼

  • 在您的 AWS 帳戶 根使用者帳戶上啟用 AWS 多重要素驗證 (MFA)。如需詳細資訊,請參閱 使用 AWS 中的多重要素驗證 (MFA)

使用角色以委派許可

您使用 AWS Security Token Service 操作擔任 IAM 角色或在 AWS Management Console 中切換至角色以接收暫時憑證角色工作階段。這比使用長期密碼或存取金鑰憑證更安全。工作階段的持續時間有限,如果您的憑證遭到洩露,這可降低風險。

最佳實務是使用 IAM 角色暫時憑證僅存取執行任務所需的資源 (授予最低權限)。設定 AWS Single Sign-On 以允許外部身分來源的使用者存取帳戶中的 AWS 資源。在單一帳戶中,您可以將 IAM 角色設定為允許來自 SAMLWeb 身分來源的身分擔任該角色。

對於 IAM 使用者,針對特定任務作業建立獨立的角色以及擔任這些角色來執行任務。請勿將 IAM 管理員使用者用於日常工作。

若要進一步了解角色術語,請參閱 角色術語和概念

授予最低權限

當您建立 IAM 政策時,請遵循授予最低權限的標準安全建議,或者只授予執行任務所需的許可。決定使用者 (和角色) 需要執行哪些任務,然後為他們打造政策,讓使用者「只」執行這些任務。

以最小一組許可開始,然後依需要授予額外的許可。這比一開始使用太寬鬆的許可,稍後再嘗試將他們限縮更為安全。

作為最低權限的替代方案,您可以使用 AWS 受管政策或具有萬用字元 * 許可的政策,以開始使用政策。若授與委託人的許可超出執行任務所需的許可,需考量其相關的安全性風險。監控這些委託人,以了解他們正在使用的許可。然後寫入最低權限政策。

IAM 提供數個選項,協助您精簡您授予的許可。

  • 了解存取層級群組 – 您可以使用存取層級的方法進行分組,以了解政策授予的存取層級。政策動作分為 ListReadWritePermissions managementTagging。例如,您可以從 ListRead 存取層級選擇動作以授予唯讀存取權給您的使用者。若要了解如何使用政策摘要,以理解存取層級許可,請參閱使用存取層級來檢閱 IAM 許可

  • 驗證您的政策 – 您可以在建立和編輯 JSON 政策時,使用 IAM Access Analyzer 執行政策驗證。我們建議您檢閱並驗證所有現有政策。IAM Access Analyzer 提供超過 100 項的政策檢查,以驗證您的政策。當您政策中的聲明允許我們認為過度寬鬆的存取權時,即會產生安全性警告。在授予最低權限時,您可以使用透過安全性警告提供的可操作建議。若要進一步了解有關 IAM Access Analyzer 所提供的政策檢查,請參閱 IAM Access Analyzer 政策驗證

  • 根據存取活動產生政策 – 為了協助您精簡所授予的許可,您可以根據 IAM 實體 (使用者或角色) 的存取活動產生 IAM 政策。IAM Access Analyzer 會審查您的 AWS CloudTrail 日誌並產生政策範本,它包含實體在指定時間範圍內所使用的許可。您可以使用範本建立具有精細許可的受管政策,然後將其連接至 IAM 實體。如此一來,您只會授予使用者或角色與特定使用案例的 AWS 資源互動所需的許可。如需進一步了解,請參閱根據存取活動產生政策

  • 使用上次存取的資訊 – 另一個有所助益的功能是上次存取的資訊。在 IAM 主控台詳細資訊頁面的 Access Advisor (存取 Advisor) 索引標籤上檢視 IAM 使用者、群組、角色或政策的此資料。上次存取的資訊也包括上次存取某些服務之動作的相關資訊,例如 Amazon EC2、IAM、Lambda 和 Amazon S3。如果您使用 AWS Organizations 管理帳戶憑證登入,則可以在 IAM 主控台 AWS Organizations 區段中檢視上次存取的服務資訊。您也可以使用 AWS CLI 或 AWS API 來為 IAM 或 Organizations 中的實體或政策擷取上次存取資訊的報告。您可以使用此資訊來找出不必要的許可,以便您能夠微調 IAM 或 Organizations 政策以更完善地遵循最低權限的原則。如需詳細資訊,請參閱 使用上次存取的資訊精簡 AWS 的許可

  • 檢閱 AWS CloudTrail 中的帳戶事件 – 若要進一步降低許可,您可以在 AWS CloudTrail 事件歷史記錄中檢視您帳戶的事件。CloudTrail 事件日誌包含可供您用來縮減政策之許可的詳細事件資訊。此日誌只包含 IAM 實體所需的動作和資源。如需詳細資訊,請參閱《AWS CloudTrail 使用者指南》中的在 CloudTrail 主控台中檢視 CloudTrail 事件

如需詳細資訊,請參閱下列內容:

開始使用許可搭配 AWS 受管政策

我們建議使用授予最低權限的政策,或僅授予執行任務所需的權限。授予最低權限的最安全方式是撰寫僅具有團隊所需許可的自訂政策。您必須建立程序,以允許您的團隊在必要時要求更多許可。建立 IAM 客戶受管政策需要時間和專業知識,而受管政策可為您的團隊提供其所需的許可。

若要開始為 IAM 身分 (使用者、使用者群組和角色) 新增許可,您可以使用 AWS 受管政策。AWS 受管政策涵蓋了常見的使用案例,並可在您的 AWS 帳戶中使用。AWS 受管的政策不會授予最低權限的許可。若授予委託人的許可超出執行任務所需的許可,您必須考量其相關的安全性風險。

您可以將 AWS 受管政策 (包括任務角色) 連接至任何 IAM 身分。若要切換至最低權限許可,您可執行 AWS Identity and Access Management Access Analyzer 以使用 AWS 受管政策來監控委託人。了解他們正在使用哪些許可後,您可以撰寫自訂政策或產生僅具有團隊所需許可的政策。這不太安全,但可在您了解團隊如何使用 AWS 時提供更大的靈活性。

AWS 受管政策可用於為許多常用案例提供許可。如需有關專為特定任務角色設計的 AWS 受管理政策的詳細資訊,請參閱 AWS任務職能的 受管政策

驗證您的政策

最佳實務是驗證您建立的政策。您可以在建立和編輯 JSON 政策時執行政策驗證。IAM 會識別任何 JSON 語法錯誤,而 IAM Access Analyzer 提供超過 100 項的政策檢查及可操作的建議,協助您編寫安全且實用的政策。我們建議您檢閱並驗證所有現有政策。若要進一步了解政策驗證的資訊,請參閱 驗證 IAM 政策。若要進一步了解有關 IAM Access Analyzer 所提供的政策檢查,請參閱 IAM Access Analyzer 政策驗證

使用客戶受管政策而不是內嵌政策

針對自訂政策,我們建議使用受管政策而非內嵌政策。使用這些政策的主要優點是,您可以在主控台的同一位置查看所有受管政策。您也可以使用單一 AWS CLI 或 AWS API 操作查看此資訊。內嵌政策是只存在於 IAM 身分 (使用者、使用者群組或角色) 的政策。受管政策是獨立的 IAM 資源,您可以將它們連接到多個身分。如需詳細資訊,請參閱 受管政策與內嵌政策

在某些情況下,我們建議您選擇內嵌政策,而不是受管政策。如需詳細資訊,請參閱在受管政策與內嵌政策之間進行選擇

您可以將內嵌政策轉換為受管政策。如需詳細資訊,請參閱 將內嵌政策轉換為受管政策

使用存取層級來檢閱 IAM 許可

為提升您 AWS 帳戶的安全性,建議您定期檢閱和監控每個 IAM 政策。請確定您的政策僅授與執行必要動作所需的最低權限

當您檢閱政策時,您可以檢視政策摘要,其中包含該政策中每個服務存取層級的摘要。AWS 根據每個動作執行的作業,將每個服務動作分為五個「存取層級」中的其中一種:ListReadWritePermissions managementTagging。您可以使用這些存取層級,來判斷哪些動作要包含到您的政策中。

例如,在 Amazon S3 服務中,您可能會想允許大型群組的使用者存取 ListRead 動作。這類動作允許這些使用者列出儲存貯體並取得 Amazon S3 中的物件。但是,您應該只允許小型群組的使用者存取 Amazon S3 Write 動作,刪除儲存貯體或將物件放入 S3 儲存貯體。此外,您應該將許可降低為僅允許管理員存取 Amazon S3 Permissions management 動作。這可確保僅有限數量的人員可以管理 Amazon S3 中的儲存貯體政策。這對 IAM 和 AWS Organizations 服務中的 Permissions management 動作特別重要。允許 Tagging 動作會授予使用者執行僅修改資源標籤之動作的許可。不過,一些 Write 動作 (例如 CreateRole) 允許當您建立該資源或修改該資源的其他屬性時標記資源。因此,拒絕 Tagging 動作的存取不會讓使用者無法標記資源。如需存取層級分類的詳細資訊和範例,請參閱了解政策摘要內的存取層級摘要

若要檢視指派給服務中每個動作的存取層級分類,請參閱適用於 AWS 服務的動作、資源和條件索引鍵

若要查看政策的存取層級,您必須先找出政策的摘要。政策摘要包含在受管政策的 Policies (政策) 頁面,以及連接到使用者政策的 Users (使用者) 頁面。如需詳細資訊,請參閱 政策摘要 (服務清單)

在政策摘要內,Access level (存取層級) 欄顯示政策提供 Full (完整)Limited (有限) 存取給四個 AWS 服務存取層級中的一或多個。或者,它可能顯示政策提供 Full access (完整存取權) 給服務內的所有動作。您可以使用此 Access level (存取層級) 欄內的資訊,來了解政策提供的存取層級。然後,您可以採取動作,讓您的 AWS 帳戶更安全。如需存取層級分類的詳細資訊和範例,請參閱了解政策摘要內的存取層級摘要

為您的使用者設定高強度密碼政策

如果您允許使用者變更自己的密碼,請建立自訂密碼政策,要求其建立強式密碼並定期輪換密碼。在 IAM 主控台的 Account Settings (帳戶設定) 頁面上,您可以為您的帳戶建立自訂密碼政策。您可以從 AWS 預設密碼政策升級,以定義密碼要求,例如:長度下限、是否需要非字母字元以及必須輪換的頻率。如需詳細資訊,請參閱 設定 IAM 使用者的帳戶密碼政策

啟用 MFA

為了提高安全性,我們建議您要求帳戶中的所有使用者進行多重要素驗證 (MFA)。使用 MFA,使用者便可擁有一個裝置,針對身分驗證查問產生回應。同時擁有使用者憑證及裝置產生的回應,才能完成登入程序。如果使用者的密碼或存取金鑰遭到盜用,因為額外的身分驗證要求,您的帳戶資源仍安全無虞。

回應會以下列其中一種方法產生:

  • 虛擬及硬體 MFA 裝置會產生代碼,讓您在應用程式或裝置上檢視,然後在登入畫面上輸入。

  • U2F 安全性金鑰會在您點選裝置時產生回應。使用者不會在登入畫面上手動輸入代碼。

對於允許存取敏感資源或 API 操作的特殊權限 IAM 使用者,我們建議使用 U2F 或硬體 MFA 裝置。

如需有關 MFA 的詳細資訊,請參閱 使用 AWS 中的多重要素驗證 (MFA)

若要了解如何為存取金鑰設定 MFA 保護的 API 存取,請參閱設定受 MFA 保護的 API 存取

使用在 Amazon EC2 執行個體上執行的應用程式的角色

在 Amazon EC2 執行個體上執行的應用程式需要憑證,才能存取其他 AWS 服務。為了以安全的方式提供憑證給應用程式,請使用 IAM 角色。角色是一個擁有自己的一組許可的實體,但不是使用者或使用者群組。角色也不需要像 IAM 使用者一樣擁有自己的一組永久性憑證。在 Amazon EC2 的情況下,IAM 會動態提供暫時憑證給 EC2 執行個體,並且這些憑證會自動為您進行輪換。

當您啟動 EC2 執行個體時,您可以為執行個體指定角色做為啟動參數。在 EC2 執行個體上執行的應用程式,可以在其存取 AWS 資源時使用角色的憑證。此角色的許可決定允許應用程式執行什麼。

如需詳細資訊,請參閱 使用 IAM 角色為在 Amazon EC2 執行個體上執行的應用程式授予許可

請勿分享存取金鑰

存取金鑰提供 AWS 程式設計存取權。請勿將存取金鑰嵌入未加密程式碼或將安全性憑證分享給您 AWS 帳戶中的使用者。對於需要存取 AWS 的應用程式,請使用 IAM 角色設定程式擷取暫時安全憑證。用個人存取金鑰建立 IAM 使用者,允許您的使用者個別程式設計存取。

如需詳細資訊,請參閱 切換到 IAM 角色 (AWS API)管理 IAM 使用者的存取金鑰

定期輪換憑證

定期變更您自己的密碼和存取金鑰,並確認您帳戶中的所有 IAM 使用者定期也這麼做。如此一來,如果密碼或存取金鑰在您不知情下遭到盜用,您可限制憑證可使用多久來存取您的資源。您可以將自訂密碼政策套用到您的帳戶,要求所有 IAM 使用者輪換他們的 AWS Management Console 密碼。您也可以選擇他們必須這樣做的頻率。

如需有關在您的帳戶設定自訂密碼政策的詳細資訊,請參閱 設定 IAM 使用者的帳戶密碼政策

如需有關為 IAM 使用者輪換存取金鑰的詳細資訊,請參閱 輪換存取金鑰

移除不必要的憑證

移除不需要的 IAM 使用者憑證 (即密碼和存取金鑰)。例如,如果您為不使用主控台的應用程式建立 IAM 使用者,則 IAM 使用者就不需要密碼。同樣地,如果使用者只使用主控台,請移除他們的存取金鑰。最近未使用的密碼和存取金鑰可能就是待移除的項目。您可以使用主控台、CLI 或 API 或透過下載憑證報告,來尋找未使用的密碼或存取金鑰。

如需有關尋找最近未使用的 IAM 使用者憑證的詳細資訊,請參閱 尋找未使用的憑證

如需有關刪除 IAM 使用者的密碼的詳細資訊,請參閱 管理 IAM 使用者密碼

如需有關停用或刪除 IAM 使用者的存取金鑰的詳細資訊,請參閱 管理 IAM 使用者的存取金鑰

如需有關 IAM 憑證報告的詳細資訊,請參閱 取得 AWS 帳戶的憑證報告

為擁有額外的安全使用政策條件

在切實可行的範圍中,於允許存取資源的 IAM 政策下定義條件。例如,您可以撰寫條件,指定請求必須來自一定的允許 IP 地址範圍。您也可以指定該請求只有在指定的日期範圍或時間範圍內才允許。您也可以設定條件,要求使用 SSL 或 MFA (多重要素驗證)。例如,您可以要求使用者已透過 MFA 裝置進行驗證,以允許終止 Amazon EC2 執行個體。

如需詳細資訊,請參閱 IAM 政策參考中的 IAM JSON 政策元素:Condition

監控 AWS 帳戶中的活動

您可以使用 AWS 中的記錄功能,來判斷使用者已經在您的帳戶中採取的動作和所使用的資源。日誌檔顯示動作的時間和日期、動作的來源 IP、因許可不足而失敗的動作等等。

以下 AWS 服務提供記錄功能: