跳至內容

如何針對我的 Amazon S3 儲存貯體強制執行 TLS 1.2 或更新版本?

2 分的閱讀內容
0

我的客戶使用舊版 TLS。當他們存取在我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體中的內容時,我想要強制他們使用最新的 TLS 版本。

解決方法

注意: Amazon S3 需要 TLS 1.2 或更新版本,並且是 S3 API 端點的預設值。若要強制執行更新的加密通訊協定版本,例如 TLS 1.3 或更新版本,本文中的範例仍然適用。

使用連接至儲存貯體的資源型政策,以強制對 S3 儲存貯體的所有連線使用 TLS 1.2 或更新版本。

若要連接需要 TLS 1.2 版或更新版本的儲存貯體政策,請完成下列步驟:

  1. 開啟 Amazon S3 主控台

  2. 從清單中選取儲存貯體。

  3. 選擇權限標籤。

  4. 在儲存貯體政策下,選擇編輯

  5. 新增政策以拒絕您想要防止對加密通訊協定的存取。例如,使用下列政策拒絕所有使用低於 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

由於 Amazon S3 偵測到您的請求未使用 TLS 1.2 版或更新版本,因此 curl 命令傳回存取遭拒

注意: 依預設,curl 會傳送匿名請求。如果您的儲存貯體為私有,則您會收到任何 TLS 版本的 03 Access Denied (403 存取遭拒) 錯誤。使用 curl 進行測試時,請產生 Amazon S3 預先簽章的網址以取得對私有物件的存取權。

最佳實務是使用 AWS CloudTrail Lake 識別舊版 TLS 到 AWS 服務端點的連線。您可以設定 CloudTrail Lake 事件資料存放區,以擷取管理事件或資料事件。