接続ログを使用したオブザーバビリティ - Amazon CloudFront

接続ログを使用したオブザーバビリティ

CloudFront 接続ログは相互 TLS 認証イベントを詳細に可視化するため、証明書の検証のモニタリング、接続試行の追跡、認証問題のトラブルシューティングを行うことができます。

接続ログとは

接続ログは、相互 TLS 対応ディストリビューションの TLS ハンドシェイクと証明書の検証に関する詳細情報をキャプチャします。HTTP リクエスト情報を記録する標準アクセスログとは異なり、接続ログは、以下を含む TLS 接続確立フェーズに特に重点を置いています。

  • 接続ステータス (成功/失敗)

  • クライアント証明書の詳細

  • TLS プロトコルと暗号情報

  • 接続タイミングのメトリクス

  • Connection Functions からのカスタムデータ

これらのログは、証明書ベースの認証イベントを包括的に可視化し、セキュリティのモニタリング、問題のトラブルシューティングを行い、コンプライアンス要件を満たすのに役立ちます。

接続ログを有効にする

接続ログは、相互 TLS 認証が有効になっているディストリビューションでのみ利用可能です。CloudWatch Logs、Amazon Data Firehose、Amazon S3 など、複数の宛先に接続ログを送信できます。

前提条件

接続ログを有効にする前に

  • CloudFront ディストリビューションの相互 TLS を設定します

  • CloudFront ディストリビューションの接続ログを有効にします

  • 選択したログ記録先に必要なアクセス許可があることを確認します

  • クロスアカウント配信の場合、適切な IAM ポリシーを設定します

接続ログを有効にするには (コンソール)

  1. AWS マネジメントコンソールにサインインし、https://console.aws.amazon.com/cloudfront/v4/home で CloudFront コンソールを開きます。

  2. ディストリビューションリストから、mTLS 対応ディストリビューションを選択します。

  3. [Logging] (ログ) タブを選択します。

  4. [Add] (追加) を選択します。

  5. ログを受信するサービスを選択します。

    • CloudWatch Logs

    • Firehose

    • Amazon S3:

  6. [送信先] で、選択したサービスのリソースを選択します。

    • CloudWatch Logs の場合は、[ロググループ名] に入力します。

    • Firehose の場合、[Firehose 配信ストリーム] を選択します。

    • Amazon S3 の場合、[バケット名] を入力します (オプションでプレフィックスを使用)。

  7. (オプション) 追加の設定を行います。

    • フィールドの選択: 含める特定のログフィールドを選択します。

    • 出力形式: JSON、プレーン、w3c、Raw、または Parquet (S3 のみ) から選択します。

    • フィールド区切り文字: ログフィールドを区切る方法を指定します。

  8. [変更を保存] を選択します。

接続ログを有効にするには (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 接続試行に関する詳細情報が含まれます。

フィールド 説明
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 ハンドシェイクからの Server Name Indication の値 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 説明
ClientCertMaxChainDepthExceeded 証明書チェーンの最大深度を超えました
ClientCertMaxSizeExceeded 最大証明書サイズを超えました
ClientCertUntrusted 証明書は信頼されていません
ClientCertNotYetValid 証明書はまだ有効ではありません
ClientCertExpired 証明書の有効期限が切れています
ClientCertTypeUnsupported 証明書のタイプがサポートされていません
ClientCertInvalid 証明書が無効です
ClientCertIntentInvalid 証明書のインテントが無効です
ClientCertRejected カスタム検証によって拒否された証明書
ClientCertMissing 証明書がありません
TcpError

接続確立の試行中にエラーが発生しました

TcpTimeout

タイムアウト期間内に接続を確立できませんでした

ConnectionFunctionError

Connection Function の実行中に、キャッチされない例外がスローされました

内部

内部サービスエラーが発生しました。

UnmappedConnectionError

他のいずれのカテゴリにも該当しないエラーが発生しました