De forma predeterminada, los registros estándar de Amazon CloudFront capturan datos confidenciales para algunos de sus campos. Por motivos de privacidad, quiero eliminar esta parte de los registros.
Descripción breve
Nota: Este artículo utiliza el ejemplo del campo Client-IP (c-ip).
Los registros de CloudFront capturan c-ip como uno de sus campos de forma predeterminada. Hay tres maneras de eliminar c-ip de tus registros.
- Activa una función de AWS Lambda que elimine el campo de la entrega de registros a Amazon Simple Storage Service (Amazon S3).
- Haz un proceso de Amazon Elastic Compute Cloud (Amazon EC2) se ejecute a intervalos determinados para eliminar el campo.
- Utiliza los registros en tiempo real de CloudFront y elimina el campo confidencial antes de enviar los datos de registro a Amazon S3.
Nota: Para activar los registros estándar, debes usar el plan pro o el plan de pago por uso. Para obtener más información, consulta los precios de Amazon CloudFront.
Resolución
Activación de una función de Lambda
Una forma de eliminar el campo c-ip es utilizar los eventos de notificación de Amazon S3. Cuando CloudFront entregue el archivo de registro en el bucket de Amazon S3, configura tu bucket para activar una función de Lambda.
Cómo crear una función de Lambda
1. Abre la consola de AWS Lambda.
2. En Funciones, crea una nueva función de Lambda que tenga las siguientes configuraciones:
- Usa el nombre del objeto del evento Amazon S3.
- Obtiene el objeto del bucket de S3.
3. Elimina la columna c-ip o sustituye los valores por datos anónimos.
Nota: Sustituye los valores para mantener el mismo formato en caso de que otras aplicaciones procesen los registros posteriormente.
4. Guarda y vuelve a cargar el registro en Amazon S3.
Cómo crear un nuevo evento
1. En el bucket de destino de los registros, ve a Propiedades.
2. En Notificaciones de eventos, crea un nuevo evento.
3. Selecciona el tipo de evento Put y la función de Lambda de destino.
4. Selecciona la función de Lambda creada en el paso 1 y, a continuación, selecciona Guardar.
Importante: Para evitar una invocación recursiva (bucle infinito) con la función de Lambda, realiza las siguientes acciones:
- Haz que tus registros de CloudFront se entreguen con un prefijo de preparación inicial. Por ejemplo, "original".
- Haz que el evento Amazon S3 se active únicamente en ese prefijo.
- Haz que la función de Lambda entregue los registros en un prefijo diferente. Por ejemplo, "processed".
Si entregas los registros en el mismo prefijo, la función de Lambda se activa de nuevo y crea una invocación recursiva. Para obtener más información, consulta Avoiding recursive invocation with Amazon S3 and AWS Lambda (Cómo evitar la invocación recursiva con Amazon S3 y AWS Lambda).
Nota: Para mantener bajos los costes de Amazon S3, configura una política de ciclo de vida de Amazon S3 para que los registros originales caduquen después de un periodo de tiempo determinado.
Cómo disponer de un proceso de Amazon EC2
Utiliza Amazon EventBridge para crear una regla programada (cron) que inicie una instancia de EC2 y procese los archivos de registro con una periodicidad programada. Por ejemplo, una vez al día. Cuando finalice el proceso, detén la instancia de EC2 hasta la próxima repetición para ahorrar costes.
1. Configura EventBridge y Lambda para iniciar una instancia de EC2 en un momento determinado. Para obtener más información, consulta ¿Cómo detengo e inicio las instancias de Amazon EC2 a intervalos regulares con Lambda?
2. En la instancia de EC2, despliega un código que descargue los registros durante un periodo de tiempo determinado. Por ejemplo, un día completo. Elimina la columna c-ip para procesar los registros o sustituye los valores de la columna por datos anónimos. Vuelve a cargar los registros procesados al bucket de S3.
Opcional: Combina todos los registros procesados en un solo archivo para ahorrar en los costes de las transiciones del ciclo de vida de Amazon S3. Este proceso es útil si tienes la intención de almacenar los registros durante periodos de tiempo prolongados.
Uso de Amazon Kinesis Data Firehose
Utiliza los registros en tiempo real de CloudFront para seleccionar los campos que deseas guardar. Más adelante, haz que Amazon Kinesis Data Firehose envíe los datos de registro a Amazon S3.
Al configurar los registros en tiempo real de CloudFront, está disponible una lista de campos que se incluyen en cada registro en tiempo real. Cada registro contiene hasta 40 campos. Tienes la opción de recibir todos los campos disponibles o solo los campos que debes supervisar y analizar en cuanto a rendimiento. Desactiva el campo c-ip para excluirlo de tus registros.
Nota: Debido al uso de Amazon Kinesis Data Streams, esta opción puede resultar cara. Considera las otras dos opciones (Activación de una función de Lambda o Cómo disponer de un proceso de Amazon EC2) para obtener una solución más rentable.