

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

# 記錄最佳實務
<a name="logging-best-practices"></a>

## 日誌記錄層級
<a name="logging-levels"></a>

請注意不要記錄過多的資料量。日誌應擷取有用且可操作的資料。過多的日誌記錄會對效能產生負面影響，且還會增加日誌記錄儲存和處理成本。過多的日誌記錄也可能會導致問題和安全事件未偵測到。

記錄 HTTP 回應狀態碼可能會產生大量日誌記錄資料，尤其是 200 層級 (成功) 和 300 層級 (重新導向) 狀態碼。我們建議您考慮僅記錄 400 層級 (用戶端錯誤) 和 500 層級 (伺服器端錯誤) 狀態碼。

應用程式日誌記錄架構提供不同層級的日誌記錄，例如**資訊**、**偵錯**或**錯誤**。對於開發環境，您可能要使用詳細日誌記錄 (例如包括**資訊**和**偵錯**)，以協助您的開發人員。但是，我們建議您對生產環境停用**資訊**和**偵錯**層級，因為這些層級可能會產生過多的日誌記錄資料。

## 注意事項和排除
<a name="cautions-exclusions"></a>
+ 確保您記錄的資料符合法律規定，特別是在您的組織營運所在的司法管轄區內。
+ 請勿排除來自已知使用者 (例如其他內部系統)、受信任的第三方、搜尋引擎機器人、正常執行時間或程序監控以及其他遠端監控系統的任何事件。但是，您可以在記錄的資料中包含每個旗標的分類旗標。請考慮應用程式產生的日誌檔案可能會被未授權檢視應用程式處理的任何敏感資料的各方 (例如第三方日誌監控解決方案或外部服務供應商) 使用。
+ 下列屬性不應直接記錄在日誌中。移除、遮罩、清理、雜湊或加密下列項目：
  + 應用程式原始程式碼
  + 工作階段識別值 (如果需要追蹤工作階段特定的事件，請考慮將其取代為雜湊值)
  + 存取權杖
  + 敏感個人資料和某些形式的個人身分識別資訊 (PII)，例如健康資訊或政府頒發的身分證明
  + 身分驗證密碼
  + 資料庫連線字串
  + 加密金鑰和其他主要密碼
  + 銀行帳戶或支付卡持有人資料
  + 允許存儲比日誌記錄系統更高的安全分類資料
  + 商業敏感資訊
  + 在相關司法管轄區內收集的非法資訊
  + 使用者已選擇退出或未明確同意收集的資訊
  + 同意收集的資訊已過期

## 特殊資料類型
<a name="special-data-types"></a>

有時，下列資料也可以記錄在日誌中。雖然它可以用於調查和疑難排解用途，但它可能會洩露有關系統的敏感資訊。在記錄事件之前，您可能需要匿名化、雜湊或加密這些資料類型：
+ 檔案路徑
+ 內部網路名稱和地址
+ 非敏感個人資料，例如個人姓名、電話號碼和電子郵件地址

如果日誌中不需要個人的真實身分或認為風險太大，請使用資料匿名化。

## 存取和變更管理
<a name="change-management"></a>
+ 非管理使用者不應具有停用事件日誌記錄的許可，尤其是滿足合規要求所需的事件日誌記錄。
+ 只有管理使用者才應具有暫停或停止日誌記錄服務或修改組態的許可。
+ 如果您的日誌記錄服務具有日誌檔案完整性驗證功能，請將其啟用。這有助於您偵測日誌檔案的修改，刪除或偽造。如需 中此功能的詳細資訊 AWS 服務，請參閱本指南[使用 CloudTrail](cloudtrail.md#using-cloudtrail)中的 。
+ 日誌記錄變更必須是應用程式固有的 (例如應用程式根據已核准的演算法自動進行的變更)，或遵循已核准的變更管理程序 (例如當您變更組態資料或修改原始程式碼時)。