Amazon S3 的安全最佳實務 - Amazon Simple Storage Service

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

Amazon S3 的安全最佳實務

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

Amazon S3 安全最佳實務

下列 Amazon S3 最佳實務有助於預防安全事件的發生。

停用存取控制清單 (ACL)

S3 物件擁有權是一項 Amazon S3 儲存貯體層級設定,您可以用來控制上傳至儲存貯體之物件的擁有權,以及停用或啟用 ACL。根據預設,物件擁有權設定為「儲存貯體擁有者強制執行」設定,而且所有 ACL 都會停用。停用 ACL 時,儲存貯體擁有者會擁有儲存貯體中的所有物件,並使用存取管理政策專門管理對資料的存取。

Amazon S3 中的大多數現代使用案例不再需要使用存取控制清單 (ACL)。建議您停用 ACL,除非在異常情況下必須個別控制每個物件的存取。若要停用 ACL 並取得儲存貯體中每個物件的擁有權,請針對 S3 物件擁有權套用儲存貯體擁有者強制執行設定。停用 ACL 時,您可以輕鬆地維護具有由不同 AWS 帳戶上傳之物件的儲存貯體。

停用 ACL 時,您資料的存取控制是以政策為基礎,如下所示:

  • AWS Identity and Access Management (IAM) 使用者政策

  • S3 儲存貯體政策

  • 虛擬私有雲端 (VPC) 端點政策

  • AWS Organizations 服務控制政策 (SCP)

停用 ACL 可簡化許可管理和稽核。新的儲存貯體預設會停用 ACL。您也可以停用現有儲存貯體的 ACL。如果您具有的現有儲存貯體中已有物件,則在您停用 ACL 之後,物件和儲存貯體 ACL 不再是存取評估程序的一部分。相反地,會根據原則授予或拒絕存取權。

在您可以停用 ACL 之前,請務必執行下列動作:

  • 檢閱您的儲存貯體政策,以確保其涵蓋您打算將存取權授予帳戶外儲存貯體的所有方式。

  • 將儲存貯體 ACL 重設為預設值 (對儲存貯體擁有者的完全控制)。

停用 ACL 之後,會發生下列行為:

  • 您的儲存貯體只接受未指定 ACL 的 PUT 請求,或具有儲存貯體擁有者完全控制 ACL 的 PUT 請求。這些 ACL 包括 bucket-owner-full-control 固定 ACL,或以 XML 表示此 ACL 的對等形式。

  • 支援儲存貯體擁有者完整控制 ACL 的現有應用程式沒有任何影響。

  • PUT包含其他 ACL (例如,特定的自訂授權 AWS 帳戶) 的要求會失敗,並傳回含有錯誤碼400 (Bad Request)的 HTTP 狀態碼AccessControlListNotSupported

如需詳細資訊,請參閱 控制物件的擁有權並停用儲存貯體的 ACL

確保 Amazon S3 儲存貯體使用正確的政策且不可公開存取

除非您有明確要求網際網路上的任何人都能讀取或寫入您的 S3 儲存貯體,否則請確保您的 S3 儲存貯體不是公用儲存貯體。以下是您可以採取以封鎖公開存取的一些步驟:

  • 使用 S3 封鎖公開存取。使用 S3 封鎖公開存取,您可以輕鬆地設定集中控制,來限制對 Amazon S3 的公開存取。無論資源的建立方式為何,都會強制執行這些集中控制。如需詳細資訊,請參閱 封鎖對 Amazon S3 儲存體的公開存取權

  • 識別允許萬用字元身分 (例如 "Principal": "*",這實際上意味著「任何人」) 的 Amazon S3 儲存貯體政策。此外,請尋找允許萬用字元動作 "*" (實際上允許使用者在 Amazon S3 儲存貯體中執行任何動作) 的政策。

  • 同樣地,尋找 Amazon S3 儲存貯體存取控制清單 (ACL),這些清單提供對「所有人」或「任何經過驗證的 AWS 使用者」的讀取、寫入或完整存取權。

  • 使用 ListBuckets API 操作掃描所有的 Amazon S3 儲存貯體。然後,使用 GetBucketAclGetBucketWebsiteGetBucketPolicy 來判斷每個儲存貯體的存取控制和組態是否符合規範。

  • 使用 AWS Trusted Advisor 檢查您的 Amazon S3 實作。

  • 考慮藉由使用 s3-bucket-public-read-prohibiteds3-bucket-public-write-prohibited 受管 AWS Config 規則實作不間斷的偵測性控制。

如需詳細資訊,請參閱 適用於 Amazon S3 的 Identity and Access Management

使用 Amazon 識別對您的 Amazon S3 儲存貯體的潛在威脅 GuardDuty

Amazon GuardDuty 是一種威脅偵測服務,可識別您的帳戶、容器、工作負載和 AWS 環境中資料的潛在威脅。透過使用機器學習 (ML) 模型以及異常和威脅偵測功能,Amazon 會 GuardDuty 持續監控不同的資料來源,以識別環境中潛在的安全風險和惡意活動並排定優先順序。啟用時 GuardDuty,它會針對包含AWS CloudTrail 管理事件、VPC 流程記錄和 DNS 記錄的基礎資料來源提供威脅偵測。若要將威脅偵測延伸至 S3 儲存貯體中的資料平面事件,您可以啟用 GuardDuty S3 保護功能。此功能可偵測威脅,例如資料洩漏和透過 Tor 節點存取 S3 儲存貯體的可疑資料。 GuardDuty也會在您的環境中建立一個正常的基準模式,當它識別出可能的異常行為時,它會提供內容相關資訊,協助您修復可能受損的 S3 儲存貯體或 AWS 登入資料。如需詳細資訊,請參閱GuardDuty

實作最低權限存取

當您授予許可時,需決定哪些使用者會取得哪些 Amazon S3 資源的許可。您還需針對這些資源啟用允許執行的動作,因此,建議您只授予執行任務所需的許可。對降低錯誤或惡意意圖所引起的安全風險和影響而言,實作最低權限存取是相當重要的一環。

下列工具可用來實作最低權限存取:

如需選擇上述一或多個機制時應考量事項的指導方針,請參閱 適用於 Amazon S3 的 Identity and Access Management

針對需要 Amazon S3 存取的應 AWS 服務 用程式使用 IAM 角色

為了讓在 Amazon EC2 或其他地方執行的應用程式能 AWS 服務 夠存取 Amazon S3 資源,這些應用程式必須在其 AWS API 請求中包含有效的 AWS 登入資料。建議您不要將 AWS 登入資料直接存放在應用程式或 Amazon EC2 執行個體中。這些是不會自動輪換的長期憑證,如果遭到盜用,可能會對業務造成嚴重的影響。

反之,請使用 IAM 角色,為需要存取 Amazon S3 的應用程式和服務管理臨時憑證。使用角色時,您不需要將長期登入資料 (例如使用者名稱和密碼或存取金鑰) 分發到 Amazon EC2 執行個體或 AWS 服務例如 AWS Lambda. 該角色提供應用程式在呼叫其他 AWS 資源時可以使用的臨時權限。

如需詳細資訊,請參閱《IAM 使用者指南》中的以下主題:

考慮靜態資料加密

下列選項皆可讓您保護 Amazon S3 中的靜態資料:

  • 伺服器端加密 — 所有 Amazon S3 儲存貯體預設都已設定加密,所有上傳到 S3 儲存貯體的新物件都會在靜態時自動加密。伺服器端加密與 Amazon S3 受管金鑰 (SSE-S3) 是 Amazon S3 中每個儲存貯體的預設加密組態。若要使用不同類型的加密,您可以指定 S3 PUT 請求中要使用的伺服器端加密類型,也可以在目的地儲存貯體中設定預設加密組態。

    Amazon S3 也提供下列伺服器端加密選項:

    • 使用 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 進行伺服器端加密

    • 使用 AWS Key Management Service (AWS KMS) 金鑰 (DSSE-KMS) 進行雙層伺服器端加密

    • 使用客戶提供金鑰 (SSE-C) 的伺服器端加密

    如需詳細資訊,請參閱 使用伺服器端加密保護資料

  • 用戶端加密 - 加密用戶端資料,並將加密的資料上傳至 Amazon S3。在這種情況下,您可以管理加密程序、加密金鑰和相關工具。和伺服器端加密的運作方式一樣,用戶端加密不會使用資料本身所在機制中存放的金鑰來加密資料,而是使用存放在另一套機制中的金鑰,藉此幫助您減少風險。

    Amazon S3 提供多個用戶端加密選項。如需詳細資訊,請參閱 使用用戶端加密保護資料

強制加密傳輸中的資料

您可以使用 HTTPS (TLS) 來協助防止潛在攻擊者透過使 person-in-the-middle 用或類似攻擊竊取網路流量或操控網路流量。建議在您的 Amazon S3 儲存貯體政策中使用 aws:SecureTransport,僅允許透過 HTTPS (TLS) 進行加密連線。

重要

我們建議您的應用程式不要釘選 Amazon S3 TLS 憑證,因為 AWS 不支援釘選公開信任的憑證。S3 會自動更新憑證,並且可以在憑證到期前的任何時間進行續訂。續訂憑證會產生新的公開-私 key pair。如果您釘選了最近使用新公開金鑰更新的 S3 憑證,則在應用程式使用新憑證之前,您將無法連線到 S3。

此外,考慮藉由使用 s3-bucket-ssl-requests-only 受管 AWS Config 規則實作不間斷的偵測性控制。

考慮使用 S3 物件鎖定

搭配 S3 物件鎖定,您可以使用「單寫多讀」(WORM) 模型來存放物件。S3 物件鎖定功能有助於避免資料不慎遭刪除或遭到不當刪除的現象。例如,您可以使用 S3 物件鎖定來協助保護您的 AWS CloudTrail 日誌。

如需詳細資訊,請參閱 使用 S3 物件鎖定

啟用 S3 版本控制

S3 版本控制是在相同儲存貯體中保留多個物件版本的方式。您可以使用版本控制功能來保留、擷取和恢復在 儲存貯體中所存放每個物件的各個版本。透過版本控制,您就可以輕鬆地復原失誤的使用者動作和故障的應用程式。

此外,考慮藉由使用 s3-bucket-versioning-enabled 受管 AWS Config 規則實作不間斷的偵測性控制。

如需詳細資訊,請參閱 在 S3 儲存貯體中使用版本控制

考慮使用 S3 跨區域複寫

雖然 Amazon S3 預設會跨多個地理位置不同的可用區域存放資料,但合規要求可能會需要您在更遠的距離下存放資料。使用 S3 跨區域複寫 (CRR),您可以在遙遠之間複寫資料,以協 AWS 區域 助滿足這些需求。CRR 可讓不同值區中的物件自動、非同 AWS 區域步複製。如需詳細資訊,請參閱 複製物件概觀

注意

CRR 要求來源和目的地 S3 儲存貯體都必須啟用版本控制。

此外,考慮藉由使用 s3-bucket-replication-enabled 受管 AWS Config 規則實作不間斷的偵測性控制。

考慮使用 VPC 端點進行 Amazon S3 存取

適用於 Amazon S3 的 Virtual Private Cloud (VPC) 端點是 VPC 中的邏輯實體,僅允許連線到 Amazon S3。VPC 端點可協助防止流量周遊開放的網際網路。

適用於 Amazon S3 的 VPC 端點提供多種方式來控制對 Amazon S3 資料的存取:

  • 您可以使用 S3 儲存貯體政策,控制經由特定 VPC 端點允許的請求、使用者或群組。

  • 您可以使用 S3 儲存貯體政策來控制能存取 S3 儲存貯體的 VPC 或 VPC 端點。

  • 您可以使用不具備網際網路閘道的 VPC 來防止資料外洩。

如需詳細資訊,請參閱 使用儲存貯體政策控制來自 VPC 端點的存取

使用託管 AWS 安全服務監控數據安全

多種受管 AWS 安全服務可協助您識別、評估和監控 Amazon S3 資料的安全與合規風險。這些服務也可以協助您保護資料免於這些風險。這些服務包括自動偵測、監控和保護功能,這些功能旨在從 Amazon S3 資源擴展 AWS 帳戶 到適用於跨數千個帳戶的組織的資源。

如需詳細資訊,請參閱 使用託管安全服務監控數據 AWS 安全

Amazon S3 監控和稽核最佳實務

下列 Amazon S3 最佳實務有助於偵測潛在安全弱點與事件。

識別並稽核所有 Amazon S3 儲存貯體

識別 IT 資產是控管和保障安全的重要環節。您必須掌握所有 Amazon S3 資源,才能存取其安全狀態並對潛在弱點採取行動。若要稽核您的資源,建議您執行下列動作:

  • 使用標籤編輯器來識別並標記重視安全性或重視稽核的資源,接著在需要搜尋這些資源時使用這些標籤。若要取得更多資訊,請參閱〈標記資源使用指南〉中的〈搜尋要標記的 AWS 資源〉

  • 使用 S3 清查來稽核與回報物件的複寫和加密狀態,以滿足業務、合規及法規需求。如需詳細資訊,請參閱 Amazon S3 清查

  • 為 Amazon S3 資源建立資源群組。如需詳細資訊,請參閱《AWS Resource Groups 使用者指南》中的什麼是 Resource Groups?

使用監視工具實作 AWS 監控

監控是維護 Amazon S3 和 AWS 解決方案的可靠性、安全性、可用性和效能的重要組成部分。 AWS 提供多種工具和服務,協助您監控 Amazon S3 和您的其他工具 AWS 服務。例如,您可以監控 Amazon S3 的 Amazon CloudWatch 指標,尤其是PutRequestsGetRequests4xxErrors、和DeleteRequests指標。如需詳細資訊,請參閱 使用 Amazon 監控指標 CloudWatch監控 Amazon S3

如需第二個範例,請參閱範例:Amazon S3 儲存貯體活動。此範例說明如何建立在 Amazon S3 API 呼叫或儲存貯體政策、儲存貯體生命週期PUTDELETE儲存貯體複寫組態或儲存貯體 ACL 時觸發PUT的 CloudWatch 警示。

啟用 Amazon S3 伺服器存取記錄

伺服器存取記錄會根據向儲存貯體發出的請求來提供詳細記錄。伺服器存取日誌可幫助您進行安全與存取稽核,讓您了解自己的客戶群並掌握 Amazon S3 帳單。如需啟用伺服器存取日誌的操作說明,請參閱 使用伺服器存取記錄記錄要求

也可以考慮使用s3-bucket-logging-enabled AWS Config 受管規則來實作持續的偵測控制項。

使用 AWS CloudTrail

AWS CloudTrail 提供使用者、角色或 Amazon S3 AWS 服務 中所採取的動作記錄。您可以使用收集的信息 CloudTrail 來確定以下內容:

  • 對 Amazon S3 提出的請求

  • 提出請求的 IP 地址

  • 提出要求的人員

  • 提出請求的時間

  • 有關請求的其他詳細資訊

例如,您可以識別影響資料存取的PUT動作 CloudTrail 項目PutBucketAcl,特別是PutObjectAclPutBucketPolicy、、和PutBucketWebsite

設置時 AWS 帳戶,默認情況下 CloudTrail 處於啟用狀態。您可以在 CloudTrail 主控台中檢視最近的事件。若要為 Amazon S3 儲存貯體建立持續的活動和事件記錄,您可以在 CloudTrail 主控台中建立追蹤。如需詳細資訊,請參閱《AWS CloudTrail 使用者指南》中的記錄資料事件

建立追蹤時,您可以設定 CloudTrail 為記錄資料事件。資料事件是在資源上或在資源內執行的資源操作記錄。在 Amazon S3 中,資料事件會記錄個別儲存貯體的物件層級 API 活動。 CloudTrail 支援 Amazon S3 物件層級 API 操作的一個子集,例如GetObjectDeleteObject、和PutObject。如需有關如何使 CloudTrail 用 Amazon S3 的詳細資訊,請參閱使用記錄 Amazon S3 API 呼叫 AWS CloudTrail。在 Amazon S3 主控台中,您也可以將 S3 儲存貯體設為 啟用 S3 儲存貯體和物件的 CloudTrail 事件記錄

AWS Config 提供受管規則 (cloudtrail-s3-dataevents-enabled),您可以用來確認至少有一個 CloudTrail 追蹤正在記錄 S3 儲存貯體的資料事件。如需詳細資訊,請參閱《AWS Config 開發人員指南》中的 cloudtrail-s3-dataevents-enabled

啟用 AWS Config

本主題中列出的數個最佳作法建議您建立 AWS Config 規則。 AWS Config 協助您評估、稽核和評估資 AWS 源的組態。 AWS Config 監控資源配置,以便您可以根據所需的安全配置評估記錄的配置。使用 AWS Config,您可以執行下列動作:

  • 檢閱 AWS 資源之間組態和關係的變更。

  • 調查詳細的資源組態歷史記錄

  • 判斷您對內部指導方針中所指定組態的整體合規情形。

使用 AWS Config 可協助您簡化法規遵循稽核、安全性分析、變更管理及作業疑難排解。如需詳細資訊,請參AWS Config 開發人員指南中的 AWS Config 使用主控台進行設定。當您指定要記錄的資源類型時,請確定其中包含 Amazon S3 資源。

重要

AWS Config 受管規則僅在評估 Amazon S3 資源時支援一般用途儲存貯體。 AWS Config 不會記錄目錄值區的組態變更。如需詳細資訊,請參閱AWS ConfigAWS Config 開發人員指南中的 AWS Config 受管規則和受管規則清單。

如需如何使用的範例 AWS Config,請參閱AWS 安全部落格上的如 AWS Config 何使用監控和回應允許公用存取的 Amazon S3 儲存貯體。

使用 Amazon Macie 探索敏感資料

Amazon Macie 是一種安全服務,透過使用機器學習和模式比對來探索敏感資料。Macie 提供資料安全風險的可見性,並啟用自動防護來防範這些風險。使用 Macie,您可以自動探索和報告 Amazon S3 資料資產中的敏感資料,以更加了解貴組織存放在 S3 中的資料。

若要使用 Macie 偵測敏感資料,您可以使用內建準則和技術,其旨在偵測許多國家和地區的龐大和不斷增長的敏感資料類型。這些敏感資料類型包括多種類型的個人身分識別資訊 (PII)、財務資料和憑證資料。您也可以使用您定義的自訂準則,即定義要比對之文字模式的規則表達式,以及可選擇的字元序列和精簡結果的鄰近規則。

如果 Macie 在 S3 物件中偵測到敏感資料,Macie 會產生安全調查結果以通知您。此調查結果提供受影響物件的相關資訊、Macie 所找到敏感資料的類型和出現次數,以及協助您調查受影響 S3 儲存貯體和物件的其他詳細資訊。如需詳細資訊,請參閱 Amazon Macie 使用者指南

使用 S3 Storage Lens

S3 Storage Lens 是一種雲端儲存體分析功能,您可以用來了解整個組織使用物件儲存體的情況及其活動情形。S3 Storage Lens 也會分析指標,以提供內容相關建議,您可以用來最佳化儲存成本,並套用最佳實務保護您的資料。

透過 S3 Storage Len,您可以使用指標產生摘要洞見,例如了解您在整個組織中擁有多少儲存體,或是成長速度最快的儲存貯體和字首有哪些。您也可以使用 S3 Storage Lens 指標,識別成本最佳化機會、實作資料保護和存取管理最佳實務,以及改善應用程式工作負載的效能。

例如,您可以識別沒有 S3 生命週期規則的儲存貯體,這些規則可中止超過 7 天未完成的分段上傳。您也可以識別未遵循資料保護最佳實務的儲存貯體,例如使用 S3 複寫或 S3 版本控制。如需詳細資訊,請參閱瞭解 Amazon S3 Storage Lens

監控 AWS 安全建議

建議您定期檢查針對 AWS 帳戶張貼在 Trusted Advisor 中的安全建議。尤其,尋找具有「開放式存取許可」之 Amazon S3 儲存貯體的相關警告。您可以使用 describe-trusted-advisor-checks,以程式設計方式執行此動作。

此外,主動監控您每個人註冊的主要電子郵件地址 AWS 帳戶。 AWS 使用此電子郵件地址與您聯繫,以了解可能會影響您的新興安全問題。

AWS 具有廣泛影響的操作問題張貼在 AWS Health Dashboard -服務健康狀態上。也會透過 AWS Health Dashboard將操作問題張貼至個別帳戶。如需詳細資訊,請參閱 AWS Health 文件