

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

# AWS 安全稽核準則
<a name="security-audit-guide"></a>

定期稽核您的安全組態，確保其符合您目前的業務需求。稽核的目的是讓您有機會移除不需要的 IAM 使用者、角色、群組和政策，確保使用者和軟體沒有過多的許可。

以下是系統性檢閱和監控 AWS 資源以取得安全最佳實務的指導方針。

**提示**  
透過使用 [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html) 監視您 IAM 的使用狀況，因為它關係到安全最佳實務。Security Hub CSPM 使用安全控制來評估資源組態和安全標準，以協助您遵守各種合規架構。如需使用 Security Hub CSPM 評估 IAM 資源的詳細資訊，請參閱 AWS Security Hub CSPM 《 使用者指南》中的 [AWS Identity and Access Management 控制項](https://docs.aws.amazon.com/securityhub/latest/userguide/iam-controls.html)。

**Topics**
+ [何時執行安全性稽核](#security-audit-guide-when-to-audit)
+ [稽核準則](#security-audit-general-guidelines)
+ [檢閱 AWS 您的帳戶登入資料](#security-audit-review-account)
+ [檢閱 IAM 使用者](#security-audit-review-users)
+ [檢閱 IAM 群組](#security-audit-groups)
+ [檢閱 IAM 角色](#security-audit-review-roles)
+ [檢閱 SAML 和 OpenID Connect (OIDC) 的 IAM 提供者](#security-audit-review-saml-providers)
+ [檢閱行動應用程式](#security-audit-review-mobile-apps)
+ [檢閱 IAM 政策的要訣](#security-audit-review-policy-tips)

## 何時執行安全性稽核
<a name="security-audit-guide-when-to-audit"></a>

在下列情況下稽核安全組態：
+ 定期。定期執行本文件中所述的步驟，做為確保安全性的最佳實務。
+ 如果組織內部有所變化，例如人員離職。
+ 如果您已停止使用一或多個個別 AWS 服務，以確認您已移除帳戶中使用者不再需要的許可。
+ 如果您已在帳戶中新增或移除軟體，例如 Amazon EC2 執行個體上的應用程式、 OpsWorks 堆疊、 CloudFormation 範本等。
+ 如果您懷疑未經授權的人員可能存取了您的帳戶。

## 稽核準則
<a name="security-audit-general-guidelines"></a>

當您檢閱帳戶的安全組態時，請依照以下指導方針：
+ **完整徹底**。查看安全組態的所有層面，包括很少使用的部分。
+ **絕不假設**。如果您不熟悉安全組態的某些部分 (例如，特定政策或角色存在背後的原因)，請查清楚業務的需要，直到理解潛在的風險為止。
+ **保持簡單**。為了讓稽核 (和管理) 能更輕鬆執行，請使用 IAM 群組、IAM 角色、一致的命名機制和直截了當的政策。

## 檢閱 AWS 您的帳戶登入資料
<a name="security-audit-review-account"></a>

當您稽核 AWS 帳戶登入資料時，請採取下列步驟：

1. 如果您有未使用根帳戶的存取金鑰，可移除它們。我們[強烈建議](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#root-password)您不要將根存取金鑰用於日常使用 AWS，而是使用具有臨時登入資料的使用者，例如 AWS IAM Identity Center 的使用者。

1. 如果您需要帳戶的存取金鑰，請確保[在需要時更新這些金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingCredentials.html#id-credentials-access-keys-update)。

## 檢閱 IAM 使用者
<a name="security-audit-review-users"></a>

在稽核現有的 IAM 使用者時，請採取以下步驟：

1. [列出您的使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_manage_list)，然後[刪除不需要的使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_DeletingUserFromAccount.html)。

1.  從不需要存取權的群組中[移除使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_AddOrRemoveUsersFromGroup.html)。

1. 檢閱使用者所在群組中所連接的政策。請參閱 [檢閱 IAM 政策的要訣](#security-audit-review-policy-tips)。

1. 刪除使用者不需要，或者可能已公開的安全登入資料。例如，用於應用程式的 IAM 使用者不需要密碼 （只需要登入 AWS 網站）。同樣地，如果使用者不使用存取金鑰，也就沒有理由具備存取金鑰。如需詳細資訊，請參閱[管理 IAM 使用者的密碼](https://docs.aws.amazon.com/IAM/latest/UserGuide/credentials-add-pwd-for-user.html)和[管理 IAM 使用者的存取金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingCredentials.html)。

   您可以產生並下載「憑證報告」，其中會列出帳戶中的所有 IAM 使用者，及其各種憑證的狀態，包括密碼、存取金鑰和 MFA 裝置。對於密碼和存取金鑰、憑證報告會顯示密碼或存取金鑰最近使用的日期和時間。請考慮從您的帳戶中移除最近未使用的憑證。(請勿移除您的緊急存取使用者。) 如需詳細資訊，請參閱[取得 AWS 您帳戶的登入資料報告](https://docs.aws.amazon.com/IAM/latest/UserGuide/credential-reports.html)。

1. 對於需要長期憑證的使用案例，請視需要更新密碼和存取金鑰。如需詳細資訊，請參閱[管理 IAM 使用者的密碼](https://docs.aws.amazon.com/IAM/latest/UserGuide/credentials-add-pwd-for-user.html)和[管理 IAM 使用者的存取金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingCredentials.html)。

1. 最佳實務是要求人類使用者使用聯合身分提供者，以 AWS 使用臨時憑證存取 。如果可能，請從 IAM 使用者轉換為聯合身分主體，例如 IAM Identity Center 中的使用者。保留應用程式所需的最少 IAM 使用者數量。

## 檢閱 IAM 群組
<a name="security-audit-groups"></a>

在稽核 IAM 群組時，請採取以下步驟：

1. [列出您的群組](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups_manage_list.html)，然後[刪除未使用的群組](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_DeleteGroup.html)。

1. [檢閱每個群組中的使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_manage_list)，並[移除不屬於該群組的使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_AddOrRemoveUsersFromGroup.html)。

1. 檢閱群組連接的政策。請參閱 [檢閱 IAM 政策的要訣](#security-audit-review-policy-tips)。

## 檢閱 IAM 角色
<a name="security-audit-review-roles"></a>

在稽核 IAM 角色時，請採取以下步驟：

1. [列出您的角色](https://docs.aws.amazon.com/cli/latest/reference/iam/list-roles.html)，然後[刪除未使用的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-deleting.html)。

1. [檢閱](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing.html)角色的信任政策。確認您知道委託人是誰，而且了解為什麼該帳戶或使用者必須要能擔任該角色。

1. [檢閱](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing.html)角色的存取政策，確認授與適當的權限給能擔任該角色的人，請參閱 [檢閱 IAM 政策的要訣](#security-audit-review-policy-tips)。

## 檢閱 SAML 和 OpenID Connect (OIDC) 的 IAM 提供者
<a name="security-audit-review-saml-providers"></a>

如果您為了建立 [SAML 或 OIDC 身分提供者 (IdP)](https://docs.aws.amazon.com/IAM/latest/UserGuide/identity-providers.html) 的信任而建立了 IAM 實體，請採取下列步驟：

1. 刪除未使用的供應商。

1. 下載並檢閱每個 SAML IdP 的 AWS 中繼資料文件，並確保這些文件反映您目前的業務需求。

1. 從 SAML IdP 取得最新的中繼資料文件，並[更新 IAM 中的提供者](https://docs.aws.amazon.com/IAM/latest/UserGuide/identity-providers-saml.html)。

## 檢閱行動應用程式
<a name="security-audit-review-mobile-apps"></a>

如果您已建立向 提出請求的行動應用程式 AWS，請採取下列步驟：

1. 確認行動應用程式不包含內嵌的存取金鑰，即使位於加密儲存裝置中也是如此。

1. 使用專屬用途的 API 取得應用程式的暫時憑證。

**注意**  
建議您使用 [Amazon Cognito](https://aws.amazon.com/cognito/) 來管理應用程式中的使用者身分。此服務可讓您使用 Login with Amazon、Facebook、Google 或任何與身分提供者相容的 OpenID Connect (OIDC)，驗證使用者的身分。如需詳細資訊，請參閱《Amazon Cognito 開發人員指南》**中的[Amazon Cognito 身分集區](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html)。

## 檢閱 IAM 政策的要訣
<a name="security-audit-review-policy-tips"></a>

政策是功能強大而且微妙的工具，因此請務必研究並了解每個政策所授予的許可。檢閱政策時，請使用以下指導方針：
+ 將政策連接至群組或角色，而非個別使用者。如果個別使用者具有政策，請確認您了解該使用者需要政策的原因。
+ 確保 IAM 使用者、群組和角色具有所需的許可，且沒有任何其他許可。
+ 使用 [IAM 政策模擬器](https://docs.aws.amazon.com/IAM/latest/UsingPolicySimulatorGuide/)測試連接到使用者或群組的政策。
+ 請記住，使用者的許可是所有適用政策的結果：身分型政策 （在使用者、群組或角色上） 和資源型政策 （在 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 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html#aws-managed-policies)，請確保帳戶中正在使用的 AWS 受管政策適用於您實際使用的 服務。若要了解您的帳戶正在使用哪些 AWS 受管政策，請使用 IAM [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountAuthorizationDetails.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountAuthorizationDetails.html) API (AWS CLI 命令：[https://docs.aws.amazon.com/cli/latest/reference/iam/get-account-authorization-details.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-account-authorization-details.html))。
+ 如果政策授予使用者許可，以啟動 Amazon EC2 執行個體，也可能會允許 `iam:PassRole` 動作，但若是如此，應該[明確列出](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-usingrole-ec2instance.html#roles-usingrole-ec2instance-passrole)使用者可傳遞到 Amazon EC2 執行個體的角色。
+ 檢查 `Action` 或 `Resource` 元素中包含 `*` 的任何值。如果可能，請授予使用者需要的個別動作和資源的 `Allow` 存取權。不過，以下原因說明為何在政策中適合使用 `*`：
  + 此政策旨在授予管理層級的許可。
  + 基於便利性考量，萬用字元會用於一組類似的動作 (例如，`Describe*`)，而且您放心以此方式參考的完整動作清單。
  + 萬用字元會用來以指示一個類別的資源或資源路徑 (例如，`arn:aws:iam::account-id:users/division_abc/*`)，而且您放心在該類別或路徑中授予所有資源的存取權。
  + 服務動作不支援資源層級權限，而資源的唯一選擇是 `*`。
+ 檢查政策名稱，確認其反映政策的功能。例如，雖然政策名稱中可能會有「唯讀」兩字，但是實際上該政策可能會授予寫入或變更的許可。

如需有關規劃安全性稽核的詳細資訊，請參閱《AWS 架構中心》**中的[安全性、身分與合規的最佳實務](https://aws.amazon.com/architecture/security-identity-compliance/)。