AWS 安全性稽核指南
定期稽核您的安全組態,確保其符合您目前的業務需求。稽核的目的是讓您有機會移除不需要的 IAM 使用者、角色、群組和政策,確保使用者和軟體沒有過多的許可。
以下是對於安全最佳實務,系統性檢閱並監控 AWS 資源的指導方針。
提示
透過使用 AWS Security Hub 監視您 IAM 的使用狀況,因為它關係到安全最佳實務。Security Hub 會透過安全控制來評估資源組態和安全標準,協助您遵守各種合規架構。如需有關使用 Security Hub 評估 IAM 資源的詳細資訊,請參閱《AWS Security Hub 使用者指南》中的 AWS Identity and Access Management 控制項。
目錄
何時執行安全性稽核
在下列情況下稽核安全組態:
-
定期。定期執行本文件中所述的步驟,做為確保安全性的最佳實務。
-
如果組織內部有所變化,例如人員離職。
-
如果您已停止使用一或多個個別 AWS 服務,以確認已移除帳戶中使用者不再需要的許可。
-
如果您已在帳戶中新增或移除軟體,例如 Amazon EC2 執行個體上的應用程式、AWS OpsWorks 堆疊、AWS CloudFormation 範本等等。
-
如果您懷疑未經授權的人員可能存取了您的帳戶。
稽核準則
當您檢閱帳戶的安全組態時,請依照以下指導方針:
-
完整徹底。查看安全組態的所有層面,包括很少使用的部分。
-
絕不假設。如果您不熟悉安全組態的某些部分 (例如,特定政策或角色存在背後的原因),請查清楚業務的需要,直到理解潛在的風險為止。
-
保持簡單。為了讓稽核 (和管理) 能更輕鬆執行,請使用 IAM 群組、IAM 角色、一致的命名機制和直截了當的政策。
檢閱 AWS 帳戶憑證
在稽核 AWS 帳戶登入資料時,請採取以下步驟:
-
如果您有未使用根帳戶的存取金鑰,可移除它們。強烈建議您不要在 AWS 的日常工作中使用根存取金鑰,請改為使用具有暫時憑證的使用者,例如 AWS IAM Identity Center 的使用者。
-
如果您需要帳戶的存取金鑰,請確保在需要時更新這些金鑰。
檢閱 IAM 使用者
在稽核現有的 IAM 使用者時,請採取以下步驟:
-
從不需要存取權的群組中移除使用者。
-
檢閱使用者所在群組中所連接的政策。請參閱檢閱 IAM 政策的要訣。
-
刪除使用者不需要,或者可能已公開的安全登入資料。例如,用於應用程式的 IAM 使用者不需要密碼 (只有在登入 AWS 網站時才需要)。同樣地,如果使用者不使用存取金鑰,也就沒有理由具備存取金鑰。如需詳細資訊,請參閱管理 IAM 使用者的密碼和管理 IAM 使用者的存取金鑰。
您可以產生並下載「憑證報告」,其中會列出帳戶中的所有 IAM 使用者,及其各種憑證的狀態,包括密碼、存取金鑰和 MFA 裝置。對於密碼和存取金鑰、憑證報告會顯示密碼或存取金鑰最近使用的日期和時間。請考慮從您的帳戶中移除最近未使用的憑證。(請勿移除您的緊急存取使用者。) 如需詳細資訊,請參閱取得 AWS 帳戶的憑證報告。
-
對於需要長期憑證的使用案例,請視需要更新密碼和存取金鑰。如需詳細資訊,請參閱管理 IAM 使用者的密碼和管理 IAM 使用者的存取金鑰。
-
其中一項最佳實務是,要求人類使用者搭配身分提供者使用聯合功能,以便使用暫時性憑證存取 AWS。如果可能,請從 IAM 使用者轉換為聯合身分使用者,例如 IAM Identity Center 的使用者。保留應用程式所需的最少 IAM 使用者數量。
檢閱 IAM 群組
在稽核 IAM 群組時,請採取以下步驟:
-
檢閱群組連接的政策。請參閱檢閱 IAM 政策的要訣。
檢閱 IAM 角色
在稽核 IAM 角色時,請採取以下步驟:
-
檢閱角色的信任政策。確認您知道委託人是誰,而且了解為什麼該帳戶或使用者必須要能擔任該角色。
-
檢閱角色的存取政策,確認授與適當的權限給能擔任該角色的人,請參閱 檢閱 IAM 政策的要訣。
檢閱 SAML 和 OpenID Connect (OIDC) 的 IAM 提供者
如果您為了建立 SAML 或 OIDC 身分提供者 (IdP) 的信任而建立了 IAM 實體,請採取下列步驟:
-
刪除未使用的供應商。
-
下載並檢閱每個 SAML IdP 的 AWS 中繼資料文件,確保文件反映您目前的業務需求。
-
從 SAML IdP 取得最新的中繼資料文件,並更新 IAM 中的提供者。
檢閱行動應用程式
如果您已建立向 AWS 提出請求的行動應用程式,請採取下列步驟:
-
確認行動應用程式不包含內嵌的存取金鑰,即使位於加密儲存裝置中也是如此。
-
使用專屬用途的 API 取得應用程式的暫時憑證。
注意
建議您使用 Amazon Cognito
檢閱 IAM 政策的要訣
政策是功能強大而且微妙的工具,因此請務必研究並了解每個政策所授予的許可。檢閱政策時,請使用以下指導方針:
-
將政策連接至群組或角色,而非個別使用者。如果個別使用者具有政策,請確認您了解該使用者需要政策的原因。
-
確保 IAM 使用者、群組和角色具有所需的許可,且沒有任何其他許可。
-
使用 IAM 政策模擬器測試連接到使用者或群組的政策。
-
請記住,使用者的許可是所有適用政策的結果 — 涵蓋以身分為基礎的政策 (在使用者、群組或角色上) 和以資源為基礎的政策 (在 Amazon S3 儲存貯體、Amazon SQS 佇列、Amazon SNS 主題和 AWS KMS 金鑰上的資源)。請務必檢查套用到使用者的所有政策,並了解授予個別使用者的完整權限集。
-
請注意,讓使用者建立 IAM 使用者、群組、角色或政策,並將政策連接至主體實體,即表示對該使用者有效授予帳戶中所有資源的所有許可。可以建立政策並將它們連接到使用者、群組或角色的使用者也會授予他們本身任何許可。一般而言,只要是您不信任的使用者或角色,就不要授予能完全存取帳戶中資源的 IAM 許可。執行安全稽核時,請確認將下列 IAM 許可授予受信任身分:
-
iam:PutGroupPolicy
-
iam:PutRolePolicy
-
iam:PutUserPolicy
-
iam:CreatePolicy
-
iam:CreatePolicyVersion
-
iam:AttachGroupPolicy
-
iam:AttachRolePolicy
-
iam:AttachUserPolicy
-
-
確認政策不會對您沒在使用的服務授予許可。例如,如果您使用 AWS 受管政策,請確認帳戶中目前使用的 AWS 受管政策是針對實際使用的服務。若要了解帳戶中使用哪些 AWS 受管政策,請使用 IAM
GetAccountAuthorizationDetails
API (AWS CLI 命令:aws iam get-account-authorization-details
)。 -
如果政策授予使用者許可,以啟動 Amazon EC2 執行個體,也可能會允許
iam:PassRole
動作,但若是如此,應該明確列出使用者可傳遞到 Amazon EC2 執行個體的角色。 -
檢查
Action
或Resource
元素中包含*
的任何值。如果可能,請授予使用者需要的個別動作和資源的Allow
存取權。不過,以下原因說明為何在政策中適合使用*
:-
此政策旨在授予管理層級的許可。
-
基於便利性考量,萬用字元會用於一組類似的動作 (例如,
Describe*
),而且您放心以此方式參考的完整動作清單。 -
萬用字元會用來以指示一個類別的資源或資源路徑 (例如,
arn:aws:iam::
),而且您放心在該類別或路徑中授予所有資源的存取權。account-id
:users/division_abc/* -
服務動作不支援資源層級權限,而資源的唯一選擇是
*
。
-
-
檢查政策名稱,確認其反映政策的功能。例如,雖然政策名稱中可能會有「唯讀」兩字,但是實際上該政策可能會授予寫入或變更的許可。
如需有關規劃安全性稽核的詳細資訊,請參閱《AWS 架構中心》中的安全性、身分與合規的最佳實務