本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用連線日誌的可觀測性
CloudFront 連線日誌提供交互 TLS 身分驗證事件的詳細可見性,可讓您監控憑證驗證、追蹤連線嘗試,以及疑難排解身分驗證問題。
什麼是連線日誌?
連線日誌會擷取有關啟用交互 TLS 分佈的 TLS 交握和憑證驗證的詳細資訊。與記錄 HTTP 請求資訊的標準存取日誌不同,連線日誌特別著重於 TLS 連線建立階段,包括:
連線狀態 (成功/失敗)
用戶端憑證詳細資訊
TLS 通訊協定和密碼資訊
連線時間指標
來自 Connection Functions 的自訂資料
這些日誌提供憑證型身分驗證事件的完整可見性,協助您監控安全性、疑難排解問題,並符合合規要求。
啟用連線日誌
連線日誌僅適用於已啟用交互 TLS 身分驗證的分佈。您可以將連線日誌傳送至多個目的地,包括 CloudWatch Logs、Amazon Data Firehose 和 Amazon S3。
先決條件
啟用連線日誌之前:
為您的 CloudFront 分佈設定交互 TLS
為您的 CloudFront 分佈啟用連線日誌
確定您擁有所選記錄目的地的必要許可
對於跨帳戶交付,請設定適當的 IAM 政策
啟用連線日誌 (主控台)
登入 AWS 管理主控台 ,並在 開啟 CloudFront 主控台https://console.aws.amazon.com/cloudfront/v4/home
。 -
從分發清單中,選取已啟用 mTLS 的分發。
-
選擇 Logging (日誌記錄) 索引標籤。
-
選擇新增。
-
選取要接收日誌的服務:
CloudWatch Logs
Firehose
Amazon S3
-
針對目的地,選取所選服務的資源:
對於 CloudWatch Logs,輸入日誌群組名稱
對於 Firehose,選取 Firehose 交付串流
對於 Amazon S3,輸入儲存貯體名稱 (選擇性使用字首)
-
(選用) 設定其他設定:
欄位選擇:選取要包含的特定日誌欄位。
輸出格式:從 JSON、Plain、w3c、Raw 或 Parquet (僅限 S3) 中選擇。
欄位分隔符號:指定如何分隔日誌欄位。
-
選擇 Save changes (儲存變更)
啟用連線日誌 (AWS CLI)
下列範例示範如何使用 CloudWatch API 啟用連線日誌:
# Step 1: Create a delivery source aws logs put-delivery-source \ --name "cf-mtls-connection-logs" \ --resource-arn "arn:aws:cloudfront::123456789012:distribution/E1A2B3C4D5E6F7" \ --log-type CONNECTION_LOGS # Step 2: Create a delivery destination aws logs put-delivery-destination \ --name "s3-destination" \ --delivery-destination-configuration \ "destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket1" # Step 3: Create the delivery aws logs create-delivery \ --delivery-source-name "cf-mtls-connection-logs" \ --delivery-destination-arn "arn:aws:logs:us-east-1:123456789012:delivery-destination:s3-destination"
注意
使用 CloudWatch API 時,即使將日誌交付至其他區域,您也必須指定美國東部 (維吉尼亞北部) 區域 (us-east-1)。
連線日誌欄位
連線日誌包含每次 TLS 連線嘗試的詳細資訊:
| 欄位 | Description | 範例 |
|---|---|---|
eventTimestamp |
建立連線或失敗時的 ISO 8601 時間戳記 | 1731620046814 |
connectionId |
TLS 連線的唯一識別符 | oLHiEKbQSn8lkvJfA3D4gFowK3_iZ0g4i5nMUjE1Akod8TuAzn5nzg== |
connectionStatus |
mTLS 連線嘗試的狀態。 |
Success 或 Failed |
clientIp |
連線用戶端的 IP 地址 | 2001:0db8:85a3:0000:0000:8a2e:0370:7334 |
clientPort |
用戶端使用的連接埠 | 12137 |
serverIp |
CloudFront 邊緣伺服器的 IP 地址 | 99.84.71.136 |
distributionId |
CloudFront 分佈 ID | E2DX1SLDPK0123 |
distributionTenantId |
CloudFront 分佈租用戶 ID (如適用) | dt_2te1Ura9X3R2iCGNjW123 |
tlsProtocol |
使用的 TLS 通訊協定版本 | TLSv1.3 |
tlsCipher |
用於連線的 TLS 密碼套件 | TLS_AES_128_GCM_SHA256 |
tlsHandshakeDuration |
TLS 交握的持續時間,以毫秒為單位 | 153 |
tlsSni |
來自 TLS 交握的伺服器名稱指示值 | d111111abcdef8.cloudfront.net |
clientLeafCertSerialNumber |
用戶端憑證的序號 | 00:b1:43:ed:93:d2:d8:f3:9d |
clientLeafCertSubject |
用戶端憑證的主旨欄位 | C=US, ST=WA, L=Seattle, O=Amazon.com, OU=CloudFront,
CN=client.test.mtls.net |
clientLeafCertIssuer |
用戶端憑證的發行者欄位 | C=US, ST=WA, L=Seattle, O=Amazon.com, OU=CloudFront,
CN=test.mtls.net |
clientLeafCertValidity |
用戶端憑證的有效期 | NotBefore=2025-06-05T23:28:21Z;NotAfter=2125-05-12T23:28:21Z |
connectionLogCustomData |
透過 Connection Functions 新增的自訂資料 | REVOKED:00:b1:43:ed:93:d2:d8:f3:9d |
連線錯誤代碼
Failed:ClientCertMaxChainDepthExceeded Failed:ClientCertMaxSizeExceeded Failed:ClientCertUntrusted Failed:ClientCertNotYetValid Failed:ClientCertExpired Failed:ClientCertTypeUnsupported Failed:ClientCertInvalid Failed:ClientCertIntentInvalid Failed:ClientCertRejected Failed:ClientCertMissing Failed:TcpError Failed:TcpTimeout Failed:ConnectionFunctionError Failed:ConnectionFunctionDenied Failed:Internal Failed:UnmappedConnectionError
當連線失敗時,CloudFront 會記錄特定原因代碼:
| Code | Description |
|---|---|
| ClientCertMaxChainDepthExceeded | 超過憑證鏈深度上限 |
| ClientCertMaxSizeExceeded | 超過憑證大小上限 |
| ClientCertUntrusted | 憑證不受信任 |
| ClientCertNotYetValid | 憑證尚未有效 |
| ClientCertExpired | 憑證已過期 |
| ClientCertTypeUnsupported | 不支援憑證類型 |
| ClientCertInvalid | 憑證無效 |
| ClientCertIntentInvalid | 憑證意圖無效 |
| ClientCertRejected | 自訂驗證拒絕的憑證 |
| ClientCertMissing | 憑證遺失 |
| TcpError |
嘗試建立連線時發生錯誤 |
| TcpTimeout |
無法在逾時期間內建立連線 |
| ConnectionFunctionError |
在 Connection Function 執行期間擲回未攔截的例外狀況 |
| 內部 (Internal) |
發生內部服務錯誤 |
| UnmappedConnectionError |
發生錯誤,其不屬於任何其他類別 |