我的客戶使用舊版 TLS。當他們存取在我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體中的內容時,我想要強制他們使用最新的 TLS 版本。
簡短描述
最佳實務是對傳輸中的資料使用最新加密通訊協定。若為連線到 Amazon S3 要強制使用 TLS 1.2 版或更新版本,請更新儲存貯體的安全政策。
**注意:**客戶必須使用 TLS 1.2 版或更新版本,以存取存放在 S3 儲存貯體中的內容。
如需 AWS 的 TLS 棄用版本的相關資訊,請參閱 TLS 1.2 成為所有 AWS API 端點的最低 TLS 通訊協定層級。
解決方法
使用連接至儲存貯體的資源型政策,以強制對 S3 儲存貯體的所有連線使用 TLS 1.2 或更新版本。
若要連接需要 TLS 1.2 版或更新版本的儲存貯體政策,請完成下列步驟:
-
開啟 Amazon S3 主控台。
-
從清單中選取儲存貯體。
-
選擇權限標籤。
-
在儲存貯體政策下,選擇編輯。
-
新增政策以拒絕您想要防止對加密通訊協定的存取。例如,使用下列政策拒絕所有使用低於 TLS 1.2 版本的 HTTPS 請求:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EnforceTLSv12orHigher",
"Principal": {
"AWS": "*"
},
"Action": [
"s3:*"
],
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::DOC_EXAMPLE_BUCKET/*",
"arn:aws:s3:::DOC_EXAMPLE_BUCKET"
],
"Condition": {
"NumericLessThan": {
"s3:TlsVersion": 1.2
}
}
}
]
}
本政策強制執行 HTTPS 為傳輸中的資料提高安全性。
如果您的工作負載需要傳送至 Amazon S3 的 HTTP 流量,請使用下列政策。此政策允許 HTTP 流量並封鎖低於 TLS 1.2 版本的 HTTPS 流量:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "UpdateTLSv12",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::DOC_EXAMPLE_BUCKET/*",
"Condition": {
"Bool": {
"aws:SecureTransport": "true"
},
"NumericLessThan": {
"s3:TlsVersion": "1.2"
}
}
}
]
}
確認您使用的是適用於 S3 的最新加密通訊協定
若要測試新政策,請執行下列 curl 命令範例,即可使用特定舊版通訊協定發送 HTTPS 請求:
curl https://${BUCKET\_NAME}.s3.us-east-1.amazonaws.com/image.png -v --tlsv1.0 --tls-max 1.0
curl 命令範例會傳回存取遭拒,因為 Amazon S3 偵測到您的請求未使用 TLS 1.2 版或更新版本。
注意: 依預設,curl 會傳送匿名請求。如果您的儲存貯體為私有,則您會收到任何 TLS 版本的 403 存取遭拒錯誤。使用 curl 進行測試時,請產生 Amazon S3 預先簽章的網址以取得對私有物件的存取權。
最佳實務是使用 AWS CloudTrail Lake 識別舊版 TLS 到 AWS 服務端點的連線。您可以設定 CloudTrail Lake 事件資料存放區,以擷取管理事件或資料事件。