Observabilidad mediante registros de conexión
Los registros de conexión de CloudFront proporcionan una visibilidad detallada de los eventos de autenticación TLS mutua, lo que permite supervisar la validación de los certificados, realizar un seguimiento de los intentos de conexión y solucionar problemas de autenticación.
¿Qué son los registros de conexión?
Los registros de conexión recopilan información detallada sobre los establecimientos de comunicación de TLS y la validación de certificados en el caso de distribuciones mutuas compatibles con TLS. A diferencia de los registros de acceso estándar que registran la información de las solicitudes HTTP, los registros de conexión se centran específicamente en la fase de establecimiento de la conexión de TLS, e incluyen:
Estado de la conexión (éxito/error)
Detalles del certificado del cliente
Información de cifrado y protocolo TLS
Métricas de temporización de conexión
Datos personalizados de funciones de conexión
Estos registros proporcionan una visibilidad completa de los eventos de autenticación basados en certificados, lo que lo ayuda a supervisar la seguridad, solucionar problemas y cumplir con los requisitos de conformidad.
Habilitación de registros de conexión
Los registros de conexión solo están disponibles para las distribuciones con la autenticación TLS mutua habilitada. Puede enviar registros de conexión a varios destinos, incluidos registros de CloudWatch, Amazon Data Firehose y Amazon S3.
Requisitos previos
Antes de habilitar los registros de conexión:
Configure TLS mutua para la distribución de CloudFront.
Habilite los registros de conexión para la distribución de CloudFront.
Asegúrese de que dispone de los permisos necesarios para el destino de registro elegido.
Para realizar entregas entre cuentas, configure las políticas de IAM adecuadas.
Habilitación de registros de conexión (consola)
Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/v4/home
. -
En la lista de distribución, seleccione la distribución compatible con mTLS.
-
Elija la pestaña Logging (Registro).
-
Elija Agregar.
-
Seleccione el servicio para recibir los registros:
Registros de CloudWatch
Firehose
Amazon S3
-
Para Destino, seleccione el recurso para el servicio elegido:
Para registros de CloudWatch, ingrese el Nombre del grupo de registro.
Para Firehose, seleccione el Flujo de entrega de Firehose.
Para Amazon S3, ingrese el Nombre del bucket (opcionalmente con un prefijo)
-
(Opcional) Configure ajustes adicionales:
Selección de campos: seleccione los campos de registro específicos que desee incluir.
Formato de salida: elija entre JSON, Plain, w3c, Raw o Parquet (solo S3).
Delimitador de campo: especifique cómo separar los campos de registro.
-
Elija Guardar cambios.
Habilitación de los registros de conexión (CLI de AWS)
En el siguiente ejemplo, se muestra cómo habilitar registros de conexión mediante la API de CloudWatch:
# 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"
nota
Al utilizar la API de CloudWatch, debe especificar la región Este de EE. UU. (Norte de Virginia) (us-east-1), incluso al entregar registros a otras regiones.
Campos de registro de conexión
Los registros de conexión incluyen información detallada sobre cada intento de conexión de TLS:
| Campo | Descripción | Ejemplo |
|---|---|---|
eventTimestamp |
Marca temporal ISO 8601 de cuando se estableció la conexión o se produjo un error | 1731620046814 |
connectionId |
Identificador único para la conexión de TLS | oLHiEKbQSn8lkvJfA3D4gFowK3_iZ0g4i5nMUjE1Akod8TuAzn5nzg== |
connectionStatus |
El estado del intento de conexión de mTLS. |
Success o Failed |
clientIp |
La dirección IP del cliente que se conecta | 2001:0db8:85a3:0000:0000:8a2e:0370:7334 |
clientPort |
Puerto utilizado por el cliente | 12137 |
serverIp |
Dirección IP del servidor perimetral de CloudFront | 99.84.71.136 |
distributionId |
ID de distribución de CloudFront | E2DX1SLDPK0123 |
distributionTenantId |
ID de inquilino de distribución de CloudFront (cuando proceda) | dt_2te1Ura9X3R2iCGNjW123 |
tlsProtocol |
La versión del protocolo TLS usado | TLSv1.3 |
tlsCipher |
Conjunto de cifrado TLS utilizado para la conexión | TLS_AES_128_GCM_SHA256 |
tlsHandshakeDuration |
Duración del establecimiento de comunicación de TLS en milisegundos | 153 |
tlsSni |
Valor de indicación del nombre del servidor obtenido del establecimiento de comunicación de TLS | d111111abcdef8.cloudfront.net |
clientLeafCertSerialNumber |
Número de serie del certificado del cliente | 00:b1:43:ed:93:d2:d8:f3:9d |
clientLeafCertSubject |
Campo de asunto del certificado del cliente | C=US, ST=WA, L=Seattle, O=Amazon.com, OU=CloudFront,
CN=client.test.mtls.net |
clientLeafCertIssuer |
Campo de emisor del certificado del cliente | C=US, ST=WA, L=Seattle, O=Amazon.com, OU=CloudFront,
CN=test.mtls.net |
clientLeafCertValidity |
Periodo de validez del certificado del cliente | NotBefore=2025-06-05T23:28:21Z;NotAfter=2125-05-12T23:28:21Z |
connectionLogCustomData |
Datos personalizados agregados a través de las funciones de conexión | REVOKED:00:b1:43:ed:93:d2:d8:f3:9d |
Códigos de error de conexión
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
Cuando las conexiones producen un error, CloudFront registra códigos de motivo específicos:
| Código | Descripción |
|---|---|
| ClientCertMaxChainDepthExceeded | Se ha superado la profundidad máxima de la cadena de certificados |
| ClientCertMaxSizeExceeded | Se ha superado el tamaño máximo de certificado |
| ClientCertUntrusted | El certificado no es de confianza |
| ClientCertNotYetValid | El certificado aún no es válido |
| ClientCertExpired | El certificado ha caducado |
| ClientCertTypeUnsupported | El tipo de certificado de cliente no es compatible |
| ClientCertInvalid | El certificado no es válido |
| ClientCertIntentInvalid | La finalidad del certificado no es válida |
| ClientCertRejected | Se ha rechazado el certificado mediante validación personalizada |
| ClientCertMissing | Certificado faltante |
| TcpError |
Se ha producido un error al intentar establecer conexión |
| TcpTimeout |
No se pudo establecer la conexión dentro del periodo de espera |
| ConnectionFunctionError |
Se produjo una excepción no detectada durante la ejecución de la función de conexión |
| Interna |
Se ha producido un error de servicio interno |
| UnmappedConnectionError |
Se ha producido un error que no pertenece a ninguna de las otras categorías |