如何允許不使用 TLS 1.2 或更高版本的客戶存取我的 Amazon S3 儲存貯體?
我的客戶不使用 TLS 第 1.2 版或更高版本,因此無法存取存放在我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體中的內容。如何允許這些客戶使用 TLS 1.0 或 1.1 存取我的 Amazon S3 儲存貯體中的內容?
簡短描述
AWS 正在強制執行在所有 AWS API 端點上使用 TLS 1.2 或更高版本。若要繼續連線到 AWS 服務,您必須更新所有使用 TLS 1.0 或 1.1 的軟體。
解決方案
Amazon CloudFront 允許使用較舊的 TLS 版本,只要從 CloudFront 分佈和 Amazon S3 之間使用的 TLS 通訊協定中將客戶擷取出來即可。
使用 OAC 建立 CloudFront 分佈
透過 CloudFront,您可以支援對 S3 儲存貯體的匿名和公開請求。或者,您可以將 S3 儲存貯體設為私有且只能透過 CloudFront 存取,要求需有簽署的請求才能存取 S3 儲存貯體。
支援對 S3 儲存貯體的匿名和公開請求
注意:下列範例假設您已有使用中的 S3 儲存貯體。如果您沒有 S3 儲存貯體,則請建立一個。
若要建立 CloudFront 分佈,請依照下列步驟執行:
- 開啟 CloudFront 主控台。
- 選擇建立分佈。
- 在來源項下,對於原始網域,請從下拉式清單中選擇 S3 儲存貯體的 REST API 端點。
- 對於檢視器通訊協定政策,請選取將 HTTP 重新導向至 HTTPS。
- 對於允許的 HTTP 端點,請選取 GET、標題、選項以支援讀取要求**。**
- 在原始存取權限區段中,請選取原始存取控制設定 (建議選項)。
- 選取建立主控台設定,並使用預設名稱。對於簽署行為,請選取簽署請求 (建議選項),然後選取建立。 OAC 建議的設定會自動驗證檢視器的請求。
- 在下拉式清單中選取身分**。** 建立分佈後**,**請更新儲存貯體政策以限制對 OAC 的存取。
- 在預設快取行為下的檢視器中,對於檢視器通訊協定政策,請選取將 HTTP 重新導向至 HTTPS,並將其他設定保留為預設值。
- 在快取金鑰與原始請求下,請選取快取政策與原始請求政策 (建議選項)。然後,將 CachingOptimized 用於快取政策,並將 CORS-S3Origin 用於來源請求政策。
- 選取建立分佈,然後等待其狀態更新為已啟用。
需要簽署的請求才能存取 S3 儲存貯體
透過僅支援簽署的請求,為 S3 儲存貯體新增安全性。使用簽署的請求,OAC 即會遵循您的驗證參數,並將它們轉送至 S3 來源,然後會拒絕匿名請求。
若要建立需要簽署的請求才能存取 S3 儲存貯體的 CloudFront 分佈,請依照下列步驟執行:
- 開啟 CloudFront 主控台。
- 選擇建立分佈。
- 在來源項下,對於原始網域,請從下拉式清單中選擇 S3 儲存貯體的 REST API 端點。
- 對於檢視器通訊協定政策,請選取將 HTTP 重新導向至 HTTPS。
- 對於允許的 HTTP 端點,請選取 GET、標題、選項以支援讀取要求**。**
- 在原始存取權限區段中,請選取原始存取控制設定 (建議選項)。
- 勾選請勿簽署請求選項,即可封鎖所有未簽署的請求。
**注意:**封鎖未簽署的請求需要每個客戶都簽署其請求,以便 S3 來源可評估許可。 - 建立自訂快取政策,以將客戶的授權標頭轉寄至來源。
- 在快取金鑰與原始請求下,請選取快取政策與原始請求政策 (建議選項)。
- 選取建立政策。
- 在名稱區段中輸入快取政策的名稱。
- 在快取金鑰設定下,前往標頭,然後選取包含下列標頭。
- 在新增標頭下,選取授權。
- 選取建立。
控制客戶的安全政策
若要在 CloudFront 中控制安全政策,您必須擁有自訂網域。最佳做法是為您的分佈指定替代網域名稱。使用 AWS Certificate Manager (ACM) 中設定的自訂 SSL 憑證也是最佳實務。這樣做可讓您更能掌控安全政策,客戶也能繼續使用 TLS 1.0。如需詳細資訊,請參閲檢視器與 CloudFront 之間受支援的通訊協定和密碼。
如果您使用預設的 *.cloudfront.net 網域名稱,則 CloudFront 會自動佈建憑證並設定安全政策,以允許 TLS 1.0 and 1.1。如需詳細資訊,請參閱分佈設定。
若要為您的 CloudFront 分佈設定替代網域名稱,請依照下列步驟執行:
- 登入 AWS 管理主控台,然後開啟 CloudFront 主控台。
- 針對您想要更新的分佈選擇 ID。
- 在一般索引標籤上,選擇編輯。
- 對於替代網域名稱 (CNAME),請選擇新增項目,然後輸入您的網域名稱。
**注意:**最佳做法是使用自訂的正規名稱記錄 (CNAME) 來存取您的資源。使用 CNAME 可讓您提高對路由的控制,並為您的客戶提供更好的轉換。 - 對於自訂 SSL 憑證,請從包含 CNAME 的下拉式清單中選擇自訂的 SSL 憑證,以將其指派給分佈。
**注意:**如需安裝憑證的詳細資訊,請參閱如何設定我的 CloudFront 分佈以使用 SSL/TLS 憑證? - 選擇建立分佈,然後等待其狀態更新為已啟用。
建立分佈之後,您必須允許 OAC 存取您的儲存貯體。完成以下步驟:
- 導覽至 CloudFront 主控台頁面,然後開啟您的 CloudFront 分佈。
- 選取來源索引標籤,選取您的來源,然後按一下編輯。
- 選擇複製政策,開啟儲存貯體許可,然後更新儲存貯體政策。
- 開啟前往 S3 儲存貯體許可頁面。
- 在儲存貯體政策下,選擇編輯。貼上您先前複製的政策,然後選擇儲存。如果您的儲存貯體政策要求不僅從 S3 讀取,則可以新增必要的 API。
如果您使用自訂的網域名稱,則請變更您的 DNS 項目以使用新的 CloudFront 分佈 URL。如果您不使用自訂的網域名稱,則必須向使用者提供新的 CloudFront 分佈 URL。此外,您還必須更新使用舊 URL 的任何用戶端或裝置軟體。
如果您使用 AWS SDK 存取 Amazon S3 物件,則必須變更程式碼以使用一般的 HTTPS 端點。此外,請確定您使用新的 CloudFront URL。如果物件不是公開的並需要提高控制,則您可以使用已簽署的 URL 和已簽署的 Cookie 來提供私人內容。
使用 S3 預先簽章的 URL 來存取物件
如果您的工作流程依賴 S3 預先簽章的 URL,則請使用 CloudFront 分佈將查詢轉送到 S3 來源。首先,請為您想要的物件產生預先簽章的 URL。然後,將 URL 中的主機以 CloudFront 端點取代,即可透過 CloudFront 傳遞呼叫,並自動升級加密通訊協定。若要測試並產生預先簽章的 URL,請執行下列 CLI 命令:
aws s3 presign s3://BUCKET_NAME/test.jpg
範例輸出:
https://bucket_name.s3.us-east-1.amazonaws.com/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=%5b...%5d%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=%5b...%5d&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature">https://BUCKET_NAME.s3.us-east-1.amazonaws.com/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=[...]%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=[...]&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature =[...]
現在,請將 S3 URL 變更為新的 CloudFront 端點。例如,取代下列 S3 URL:
BUCKET_NAME.s3.eu-west-1.amazonaws.com
使用此端點:
https://DISTRIBUTION_ID.cloudfront.net.
範例輸出:
https://<DISTRIBUTION_ID>.cloudfront.net /test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=[...]%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=[...]&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature=[...]
若要使用預先簽章的 URL,請套用下列 CloudFront 設定:
- 將 OAC 簽署行為設定為請勿簽署請求。
- 將 CloudFront 分佈來源請求政策設定為來源請求設定:標頭 – 無;Cookie – 無;查詢字串 – 全部。
- 將快取政策設定為標頭 – 無;Cookie – 無;查詢字串 – 無。
在 AWS CloudTrail 中,從 S3 預先簽章的 URL 下載的 GET 請求會顯示為產生預先簽章 URL 的身分。
如果您使用 AWS SDK 存取 S3 物件,則必須變更程式碼才能使用預先簽章的 URL。請改用一般 HTTPS 請求,並使用新的 CloudFront URL。
請確認您使用的是適用於 Amazon S3 的最新加密協定
若要測試新政策,請使用下列範例的 curl 命令,即可使用特定的舊版通訊協定發出 HTTPS 請求:
curl https://${CloudFront_Domain}/image.png -v --tlsv1.0 --tls-max 1.0
此範例的 curl 命令會使用 TLS 1.0 向 CloudFront 發出請求。這會使用 TLS 1.2 連線至 S3 來源,並成功下載檔案。
最佳做法是使用 AWS CloudTrail Lake 來識別舊版 TLS 到 AWS 服務端點的連線。您可以設定 CloudTrail Lake 事件資料存放區,以擷取管理事件或資料事件。CloudTrail Lake 中對應的 CloudTrail 事件顯示 TLS 版本 1.2,確認您的客戶使用最新的安全政策連線到 Amazon S3。

相關內容
- 已提問 4 個月前lg...
- 已提問 4 個月前lg...
- 已提問 4 個月前lg...
- 已提問 4 個月前lg...
- 已提問 4 個月前lg...
- AWS 官方已更新 3 個月前
- AWS 官方已更新 5 個月前