Observabilidad mediante registros de conexión - Amazon CloudFront

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)

  1. 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.

  2. En la lista de distribución, seleccione la distribución compatible con mTLS.

  3. Elija la pestaña Logging (Registro).

  4. Elija Agregar.

  5. Seleccione el servicio para recibir los registros:

    • Registros de CloudWatch

    • Firehose

    • Amazon S3

  6. 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)

  7. (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.

  8. 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