記錄互動和緩解措施 - AWS 方案指引

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

記錄互動和緩解措施

預先簽章的 URL 包含簽章,可在過期前的期間內用來執行其簽署的特定 API 操作。它應該被視為臨時存取登入資料。只有需要知道的一方才能保持簽章的私密性。在大多數環境中,這是傳送請求的用戶端和接收請求的伺服器。在直接 HTTPS 工作階段中傳送簽章會維護其私有性質,因為只有 HTTPS 工作階段的參與者可以查看傳輸簽章的 URI。

對於預先簽章URLs,簽章會傳輸為X-Amz-Signature查詢字串參數。查詢字串參數是 URI 的元件。風險是用戶端可以記錄 URI 和簽章。用戶端可以存取整個 HTTP 請求,並可記錄請求、資料和標頭的任何部分 (包括身分驗證標頭)。不過,這是較不常見的慣例。URI 記錄比較常見,在存取記錄等情況下是必要的。在記錄 URIs之前,用戶端應使用修訂或遮罩來移除簽章。

在某些環境中,使用者允許中介裝置 (代理) 取得其 HTTPS 工作階段的可見性。啟用代理需要對用戶端系統進行高層級的特權存取,因為它們需要組態和信任的憑證。在用戶端中介環境的本機內容中安裝代理組態和信任的憑證,可允許非常高層級的權限。因此,應嚴格控制對這類中介裝置的存取。

中介裝置的用途通常是封鎖不需要的輸出,並追蹤其他輸出。因此,這類中介裝置通常會記錄請求。雖然中介裝置可以像用戶端一樣記錄任何內容、標頭和資料 (所有內容都非常敏感),但他們更常記錄 URIs,例如包含X-Amz-Signature查詢字串參數的 URI。

緩解措施

我們建議 URI 記錄會修訂X-Amz-Signature查詢字串參數、修訂整個查詢字串,或將資訊視為高度機密,就像直接存取中介伺服器一樣。雖然強烈建議採用這些保護,但預先簽章 URLs過期的事實可降低日誌暴露的風險,只要暴露時間延遲到足以讓簽章過期的時間。

Amazon S3 也會看到簽章,且必須妥善處理。Amazon S3 伺服器存取日誌包含請求 URIX-Amz-Signature,但會依建議修改 。為 Amazon S3 記錄 CloudTrail 資料事件時也是如此。您可以使用自訂資料識別符設定 Amazon CloudWatch Logs 來遮罩資料。 https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL-custom-data-identifiers.html

下列規則表達式符合 URI 中顯示的 X-Amz-Signature

X-Amz-Signature=[a-f0-9]{64}

以下規則表達式新增分組模式,以識別要更具體取代的文字:

(?:X-Amz-Signature=)([a-f0-9]{64})

如果您有如下的存取日誌項目:

X-Amz-Signature=733255ef022bec3f2a8701cd61d4b371f3f28c9f193a1f02279211d48d5193d7

第一個規則表達式會將存取日誌項目轉譯為:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

在支援非擷取群組的系統上,第二個規則表達式會將存取日誌項目轉譯為:

X-Amz-Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX