

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

# 中的安全最佳實務 AWS CloudTrail
<a name="best-practices-security"></a>

AWS CloudTrail 提供許多安全功能，供您在開發和實作自己的安全政策時考慮。以下最佳實務為一般準則，並不代表完整的安全解決方案。這些最佳實務可能不適用或無法滿足您的環境需求，因此請將其視為實用建議就好，而不要當作是指示。

**Topics**
+ [CloudTrail 偵測性安全最佳實務](#best-practices-security-detective)
+ [CloudTrail 預防性安全最佳實務](#best-practices-security-preventative)

## CloudTrail 偵測性安全最佳實務
<a name="best-practices-security-detective"></a>

**建立線索**

若要持續記錄 AWS 帳戶中的事件，您必須建立追蹤。雖然 CloudTrail 提供 CloudTrail 主控台 90 天的事件歷史記錄資訊供管理事件且無須建立線索，但這不是永久記錄，而且這不提供所有可能類型事件的資訊。針對持續記錄，以及記錄包含所有您指定的事件類型，您必須建立線索，將日誌檔案傳遞到指定的 Amazon S3 儲存貯體。

為了協助管理您的 CloudTrail 資料，請考慮建立一個記錄所有管理事件的線索 AWS 區域，然後建立其他線索來記錄資源的特定事件類型，例如 Amazon S3 儲存貯體活動或 AWS Lambda 函數。

以下是您可進行的一些步驟：
+ [為您的 AWS 帳戶建立線索。](cloudtrail-create-a-trail-using-the-console-first-time.md#creating-a-trail-in-the-console)
+ [為組織建立線索。](creating-trail-organization.md)

**建立多區域追蹤**

若要取得您 AWS 帳戶中 IAM 身分或服務所採取事件的完整記錄，請建立多區域追蹤。多區域追蹤 AWS 區域 會在您的 中[啟用](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html#manage-acct-regions-enable-standalone)的所有 中記錄事件 AWS 帳戶。透過在所有已啟用的 中記錄事件 AWS 區域，您可以確保在 中的所有已啟用區域中擷取活動 AWS 帳戶。這包括記錄[全域服務事件](cloudtrail-concepts.md#cloudtrail-concepts-global-service-events)，這些事件會記錄到該服務 AWS 區域 特定的 。使用 CloudTrail 主控台建立的所有線索都是多區域線索。

以下是您可進行的一些步驟：
+ [為您的 AWS 帳戶建立線索。](cloudtrail-create-a-trail-using-the-console-first-time.md#creating-a-trail-in-the-console)
+ [將現有的單一區域追蹤轉換為](cloudtrail-update-a-trail-console.md)多區域追蹤。
+ 實作持續的偵測性控制，以協助確保建立的所有線索都 AWS 區域 使用[multi-region-cloud-trail-enabled](https://docs.aws.amazon.com/config/latest/developerguide/multi-region-cloudtrail-enabled.html)規則記錄所有 中的事件 AWS Config。

**啟用 CloudTrail 日誌檔案完整性**

驗證過的日誌檔案對於安全和鑑識調查尤其重要。例如，驗證過的日誌檔案可讓您積極宣告日誌檔案本身尚未變更，或該特定 IAM 身分登入資料已執行特定 API 活動。CloudTrail 日誌檔案完整性驗證程序也可讓您知道日誌檔案是否已刪除或變更，或積極宣告在指定的一段期間沒有日誌檔案交付至您的帳戶。CloudTrail 日誌檔案完整性驗證使用產業標準演算法：SHA-256 進行雜湊，而使用含 RSA 的 SHA-256 進行數位簽署。這可透過運算方式防止修改、刪除或偽造 CloudTrail 日誌檔案，而無需偵測。如需詳細資訊，請參閱 [啟用驗證並驗證檔案](cloudtrail-log-file-validation-intro.md#cloudtrail-log-file-validation-intro-enabling-and-using)。

**與 Amazon CloudWatch Logs 整合**

CloudWatch Logs 可讓您監控和接收透過 CloudTrail 擷取特定事件的警示。傳送至 CloudWatch Logs 的事件是設定為由追蹤記錄的事件，因此請確定您已設定您的追蹤記錄您有興趣監控的事件類型 （管理事件資料事件和/或網路活動事件）。

例如，您可以監控金鑰安全和網路相關管理事件，例如[失敗的 AWS 管理主控台 登入事件](cloudwatch-alarms-for-cloudtrail.md#cloudwatch-alarms-for-cloudtrail-signin)。

以下是您可進行的一些步驟：
+ 檢閱範例 [ CloudTrail 的 CloudWatch Logs 整合](cloudwatch-alarms-for-cloudtrail.md)。
+ 設定您的線索到 [傳送事件到 CloudWatch Logs](monitor-cloudtrail-log-files-with-cloudwatch-logs.md)。
+ 考慮實作持續的偵測性控制，以協助確保所有線索傳送事件到 CloudWatch Logs 以進行監控，方法是使用[cloud-trail-cloud-watch-logs-enabled](https://docs.aws.amazon.com/config/latest/developerguide/cloud-trail-cloud-watch-logs-enabled.html)規則 AWS Config。

**使用 Amazon GuardDuty**

Amazon GuardDuty 是一種威脅偵測服務，可協助您保護 AWS 環境中的帳戶、容器、工作負載和資料。透過使用機器學習 (ML) 模型，以及異常和威脅偵測功能，GuardDuty 會持續監控不同的日誌來源，以識別環境中的潛在安全風險和惡意活動的優先順序。

例如，如果 GuardDuty 透過執行個體啟動角色偵測專門為 Amazon EC2 執行個體建立的登入資料，但正從 中的另一個帳戶使用，GuardDuty 會偵測潛在的登入資料洩漏 AWS。如需詳細資訊，請參閱 [https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html](https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html)。

**使用 AWS Security Hub CSPM**

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

## CloudTrail 預防性安全最佳實務
<a name="best-practices-security-preventative"></a>

以下 CloudTrail 最佳實務有助於預防安全事件的發生。

**記錄到專用和集中式的 Amazon S3 儲存貯體**

CloudTrail 日誌檔案為 IAM 身分或 AWS 服務所執行動作的稽核日誌。這些日誌的完整性、完成度和可用性對於趨勢的增長和稽核目的相當重要。透過記錄到專用和集中式的 Amazon S3 儲存貯體，您可以強制執行嚴格的安全控制、存取和職責劃分。

以下是您可進行的一些步驟：
+ 建立個別 AWS 帳戶做為日誌封存帳戶。如果您使用 AWS Organizations，請在組織中註冊此帳戶，並考慮[建立組織追蹤](creating-trail-organization.md)來記錄組織中所有 AWS 帳戶的資料。
+ 如果您不使用 Organizations，但想要記錄多個 AWS 帳戶的資料，[請建立線](cloudtrail-create-a-trail-using-the-console-first-time.md#creating-a-trail-in-the-console)索來記錄此日誌封存帳戶中的活動。限制存取此帳戶為信任的管理使用者，具備帳戶和稽核資料的存取權。
+ 在建立線索時，無論是組織線索還是單一 AWS 帳戶的線索，請建立專用 Amazon S3 儲存貯體來存放此線索的日誌檔案。
+ 如果您想要記錄多個 AWS 帳戶的活動，[請修改儲存貯體政策](cloudtrail-set-bucket-policy-for-multiple-accounts.md)，以允許記錄和儲存您要記錄 AWS 帳戶活動之所有 AWS 帳戶的日誌檔案。
+ 如果您不是使用組織線索、為您所有 AWS 帳戶建立線索，從日誌存檔帳戶中指定 Amazon S3 儲存貯體。

**搭配 AWS KMS 受管金鑰使用伺服器端加密**

根據預設，CloudTrail 交付至 S3 儲存貯體的日誌檔案會使用[伺服器端加密搭配 KMS 金鑰 (SSE-KMS) 進行加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)。若要將 SSE-KMS 搭配 CloudTrail 使用，您可以建立並管理 [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)，也稱為 KMS 金鑰。

**注意**  
如果您使用 SSE-KMS 和日誌檔案驗證，而您修改 Amazon S3 儲存貯體政策僅允許 SSE-KMS 加密檔案，您將無法建立利用儲存貯體的線索，除非您修改儲存貯體政策為允許 AES256 加密，如下列範例政策所示。  

```
"StringNotEquals": { "s3:x-amz-server-side-encryption": ["aws:kms", "AES256"] } 
```

以下是您可進行的一些步驟：
+ [檢閱使用 SSE-KMS 加密日誌檔案的優勢](encrypting-cloudtrail-log-files-with-aws-kms.md)。
+ [建立用於加密日誌檔案的 KMS 金鑰](create-kms-key-policy-for-cloudtrail.md)。
+ [設定日誌檔案加密您的線索。](create-kms-key-policy-for-cloudtrail-update-trail.md)
+ 請考慮實作持續的偵測性控制，以協助確保所有線索使用啟用 [cloud-trail-encryption-enabled](https://docs.aws.amazon.com/config/latest/developerguide/cloud-trail-encryption-enabled.html)規則來加密 SSE-KMS 的日誌檔案 AWS Config。

**將條件索引鍵新增至預設的 Amazon SNS 主題政策**

當您設定追蹤以傳送通知至 Amazon SNS 時，CloudTrail 會在您的 SNS 主題存取政策新增政策聲明，讓 CloudTrail 能夠將內容傳送至 SNS 主題。作為安全最佳實務，我們建議將 `aws:SourceArn`（或選用的 `aws:SourceAccount`) 條件金鑰新增至 Amazon SNS 主題政策陳述式。這有助於防止未經授權的帳戶存取您的 SNS 主題。如需詳細資訊，請參閱 [適用於 CloudTrail 索的 Amazon SNS 主題政策](cloudtrail-permissions-for-sns-notifications.md)。

**實作最低權限存取到 Amazon S3 儲存貯體，就是存放日誌檔案的位置**

CloudTrail 追蹤記錄事件到您指定的 Amazon S3 儲存貯體。這些日誌檔案包含 IAM 身分 AWS 和服務所採取動作的稽核日誌。這些日誌檔案的完整性和完程度對於稽核和鑑定目的相當重要。為了協助確保完整性，當您建立或修改存取任何 Amazon S3 儲存貯體用於存放 CloudTrail 日誌檔案時，應該遵循最低權限原則。

採取下列步驟：
+ 檢閱 [Amazon S3 儲存貯體政策](create-s3-bucket-policy-for-cloudtrail.md) 任何存放日誌檔案的儲存貯體，並調整其在必要時移除任何不必要的存取。如果您使用 CloudTrail 主控台建立線索，會為您產生此儲存貯體政策，但也可以手動建立和管理。
+ 安全最佳實務是務必手動將 `aws:SourceArn` 條件金鑰新增至儲存貯體政策。如需詳細資訊，請參閱 [適用於 CloudTrail 的 Amazon S3 儲存貯體政策](create-s3-bucket-policy-for-cloudtrail.md)。
+ 如果您使用相同的 Amazon S3 儲存貯體存放多個 AWS 帳戶的日誌檔案，請遵循[接收多個帳戶日誌檔案](cloudtrail-receive-logs-from-multiple-accounts.md)的指引。
+ 如果您使用組織線索，確保您遵循[組織線索](creating-trail-organization.md)，並檢閱 [使用 為組織建立線索 AWS CLI](cloudtrail-create-and-update-an-organizational-trail-by-using-the-aws-cli.md) 中組織線索 Amazon S3 儲存貯體的範例政策。
+ 檢閱 [Amazon S3 安全文件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security.html)和[逐步解說保護儲存貯體的範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/walkthrough1.html)。

**在您儲存日誌檔案的 Amazon S3 儲存貯體上啟用 MFA Delete**

在設定多重要素驗證 (MFA) 時，嘗試變更儲存貯體的版本控制狀態或刪除某個儲存貯體中的物件版本需要額外的身分驗證。如此一來，即時使用者取得具有永久刪除 Amazon S3 物件許可之 IAM 使用者的密碼，您仍然可以防止可能損壞您的日誌檔案的操作。

以下是您可進行的一些步驟：
+ 檢閱《Amazon Simple Storage Service 使用者指南》**中的 [MFA Delete](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiFactorAuthenticationDelete.html) 指引。
+ [新增 Amazon S3 儲存貯體政策需要 MFA](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-MFA)。

**注意**  
您無法搭配使用 MFA 刪除與生命週期組態。如需有關生命週期組態以及它們如何與其他組態互動的詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的[生命週期與其他儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-and-other-bucket-config.html)。

**設定 Amazon S3 儲存貯體上的物件生命週期，也就是存放日誌檔案的地方**

CloudTrail 線索預設是在 Amazon S3 為線索設定的儲存貯體中無限期存放日誌檔案。您可以使用 [Amazon S3 物件生命週期管理規則](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) 來定義自己的保留政策，以便更能滿足您的業務和稽核需求。例如，您可能想要存檔一年以上的日誌檔案到 Amazon Glacier，或刪除超過特定時間的日誌檔案。

**注意**  
已啟用 Multi-Factor Authentication (MFA) 之儲存貯體上不支援生命週期組態。

**限制存取 AWSCloudTrail\_FullAccess 政策**

具有 [AWSCloudTrail\_FullAccess](security_iam_id-based-policy-examples.md#grant-custom-permissions-for-cloudtrail-users-full-access) 政策的使用者能夠停用或重新設定 AWS 帳戶中最敏感和重要的稽核函數。此政策在您的 AWS 帳戶中不應共用或廣泛套用至 IAM 身分。將此政策的套用限制為盡可能少的個人，也就是您預期作為 AWS 帳戶管理員的人員。