Blog de Amazon Web Services (AWS)

Soporte a eventos de administración de solo lectura en Amazon EventBridge

AWS anuncia el soporte a eventos de administración de solo lectura en Amazon EventBridge. Esta función permite a los clientes construir respuestas a eventos a partir de cualquier acción en la infraestructura de AWS para detectar vulnerabilidades de seguridad o identificar actividades sospechosas casi en tiempo real. Ahora puede obtener información de la actividad de todas sus cuentas AWS y responder a estos eventos apropiadamente.

Descripción general

EventBridge es un bus de eventos sin servidor utilizado para desacoplar productores y consumidores de eventos. Los productores de eventos publican eventos en un bus de eventos, que luego utiliza reglas para determinar hacia donde enviarlos. Estas reglas determinan los destinos que luego procesan los eventos, y EventBridge los direcciona adecuadamente.

EventBridge permite a los clientes monitorear, auditar y reaccionar, casi en tiempo real, a los cambios en sus entornos de AWS a través de eventos generados por AWS CloudTrail para las llamadas a las API de AWS. CloudTrail registra las acciones realizadas por un usuario, rol o un servicio AWS como un evento en un registro. Los eventos incluyen acciones realizadas en la consola de administración de AWS, la interfaz de línea de comandos de AWS (CLI) y los SDKs y APIs de AWS.

Previamente, solo se publicaban las llamadas a APIs desde CloudTrail a EventBridge para los cambios en el panel de control. Estas llamadas a APIs incluían aquellas que crean, actualizan o eliminan recursos. Los cambios en el panel de control también son referidos como eventos de administración. EventBridge ahora soporta llamadas de APIs de solo lectura para los eventos de administración sin coste adicional. Entre ellas, las que listan, obtienen o describen los recursos.

Los eventos de CloudTrail en EventBridge ahora permiten construir respuestas orientadas a eventos desde cualquier acción realizada en la infraestructura de AWS en tiempo real. Previamente, los clientes y asociados solían utilizar un modelo de sondeo para iterar sobre un lote de logs de CloudTrail desde buckets de Amazon S3 para detectar problemas, lo que ralentizaba la respuesta. El lanzamiento de los eventos de solo lectura le permite detectar y remediar problemas casi en tiempo real; y por lo tanto, mejorar la postura de seguridad general.

Habilitar los eventos de administración de solo lectura

Puede empezar a recibir eventos de administración de solo lectura si CloudTrail es configurado en su cuenta y si el selector del evento para ese registro es configurado con ReadWriteType como All o ReadOnly. Esto asegura que los eventos de administración de solo lectura son registrados en CloudTrail y luego enviados a EventBridge.

Por ejemplo, puede recibir una alerta si una cuenta de producción lista recursos desde una dirección IP fuera de su VPC. Otro ejemplo puede ser si una entidad (usuario root de AWS, rol IAM o usuario IAM) llama a las APIs ListInstanceProfilesForRole o DescribeInstances sin ningún registro previo de ello. Un actor malicioso podría utilizar credenciales robadas para llevar a cabo este reconocimiento y encontrar credenciales más valiosas o determinar las capacidades de las credenciales actuales.

Para habilitar eventos de administración de solo lectura con una regla de EventBridge, adicional a los eventos ya existentes, utilice el nuevo estado ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS al crear la regla.

YAML

Resources:

  SampleMgmtRule:

    Type: 'AWS::Events::Rule'

    Properties:

      Description: 'Ejemplo para habilitar eventos de solo lectura'

      State: ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS

      EventPattern:

        source:

          - aws.s3

        detail:

          - AWS API Call via CloudTrail

      Targets:

        - Arn: 'arn:aws:sns:us-east-1:123456789012:notificationTopic'

          Id: 'NotificationTarget'

También puede crear una regla en un bus de eventos para especificar una acción API concreta utilizando el atributo eventName bajo la llave detail:

Bash

aws events put-rule --name "SampleTestRule" \

--event-pattern '{"detail": {"eventName": ["ListBuckets"]}}' \

--state ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS --region us-east-1

Escenarios y casos de uso comunes

En la siguiente sección se describen algunos escenarios donde puede habilitar las reglas de EventBridge y tomar acción en eventos de administración de solo lectura.

Detección de llamadas anómalas a la API GetSecretValue de Secrets Manager

Considere que el equipo de seguridad de su organización quiere una notificación cada vez que una llamada a la API GetSecretValue de AWS Secrets Manager es realizada a través del CLI. Ellos pueden investigar si estas llamadas son realizadas por identidades fuera de su organización o por un usuario no autorizado, y tomar acciones correctivas para denegar dichas solicitudes.

Cuando una aplicación llama a la API GetSecretValue para recuperar secretos vía el CLI, se genera un evento como el siguiente:

JSON

{

    "version": "0",

    "id": "d3368cc1-e6d6-e4bf-e58e-030f03b6eae3",

    "detail-type": "AWS API Call via CloudTrail",

    "source": "aws.secretsmanager",

    "account": "111111111111",

    "time": "2023-11-08T19:58:38Z",

    "region": "us-east-1",

    "resources": [],

    "detail": {

        "eventVersion": "1.08",

        "userIdentity": {

            "type": "IAMUser",

            "principalId": "AAAAAAAAAAAAA",

            "arn": "arn:aws:iam:: 111111111111:user/USERNAME"

            // ... campos de detalle adicionales

        },

        "eventTime": "2023-11-08T19:58:38Z",

        "eventSource": "secretsmanager.amazonaws.com",

        "eventName": "GetSecretValue",

        "awsRegion": "us-east-1",

        "userAgent": "aws-cli/2.13.15 Python/3.11.4 Darwin/22.6.0 exe/x86_64 prompt/off command/secretsmanager.get-secret-value"

        // ... campos de detalle adicionales

    }

}

Establezca el siguiente patrón de eventos en la regla para filtrar los eventos entrantes para consumidores específicos. Este ejemplo también utiliza el recientemente lanzado filtro wildcard para la coincidencia de eventos.

JSON

{

    "source": [

        "aws.secretsmanager"

    ],

    "detail-type": [

        "AWS API Call via CloudTrail"

    ],

    "detail": {

        "eventName": [

            "GetSecretValue"

        ],

        "userAgent": [

            {

                "wildcard": "aws-cli/*"

            }

        ]

    }

}

Puede crear una regla que coincida con una combinación de las propiedades del evento. En este caso, busca “aws.secretsmanager” como source, “AWS API Call via CloudTrail” como detail-type, “GetSecretValue” como detail.EventName y el patrón wildcard en detail.userAgent como “aws-cli/*”. Puede filtrar detail.userAgent con un wildcard para detectar eventos que provengan de una aplicación o de un usuario particular.

A continuación, puede dirigir estos eventos a un destino como un log stream de Amazon CloudWatch para registrar el cambio. También puede dirigirlo hacia Amazon SNS para enviar una notificación via una suscripción de correo electrónico. También puede enrutarlos a una función de AWS Lambda donde puede ejecutar una lógica de negocio personalizada.

Crear una regla de EventBridge para eventos de administración de solo lectura

  1. Cree una regla en el bus de eventos predeterminado utilizando el nuevo estado ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS.

Bash

aws events put-rule --name "monitor-secretsmanager" \

--event-pattern '{"source": ["aws.secretsmanager"], "detail-type": ["AWS API Call via CloudTrail"], "detail": {"eventName": ["GetSecretValue"], "userAgent": [{ "wildcard": "aws-cli/*"} ]}}' \

--state ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS --region us-east-1

Rule details

Detalles de la regla

  1. Configure un destino. En este caso el destino es el servicio CloudWatch Logs, pero puede configurar cualquier de los destinos soportados.

Bash

aws events put-targets --rule monitor-secretsmanager --targets Id=1,Arn=arn:aws:logs:us-east-1:ACCOUNT_ID:log-group:/aws/events/getsecretvaluelogs --region us-east-1

Target details

Detalles del destino

A continuación, puede utilizar CloudWatch Log Insights para buscar y analizar logs utilizando la sintaxis de consultas donde puede recuperar el usuario que realizó las llamadas.

Identificación de comportamientos sospechosos de exfiltración de datos

Considere el equipo de seguridad de datos que quiere asegurar los datos que residen en los buckets de Amazon S3. El equipo requiere ser notificado cuando se realice una llamada a la API para listar los buckets u objetos de S3.

Cuando un usuario o aplicación llama a la API ListBuckets para descubrir los buckets disponibles, se genera el siguiente evento de CloudTrail:

JSON

{

    "version": "0",

    "id": "345ca690-6510-85b2-ff02-090493a33cf1",

    "detail-type": "AWS API Call via CloudTrail",

    "source": "aws.s3",

    "account": "111111111111",

    "time": "2023-11-14T17:25:30Z",

    "region": "us-east-1",

    "resources": [],

    "detail": {

        "eventVersion": "1.09",

        "userIdentity": {

            "type": "IAMUser",

            "principalId": "principal-identity-uuid",

            "arn": "arn:aws:iam::111111111111:user/exploited-user",

            "accountId": "111111111111",

            "accessKeyId": "AAAABBBBCCCCDDDDEEEE",

            "userName": "exploited-user"

        },

        "eventTime": "2023-11-14T17:25:30Z",

        "eventSource": "s3.amazonaws.com",

        "eventName": "ListBuckets",

        "awsRegion": "us-east-1",

        "sourceIPAddress": "11.22.33.44",

        "userAgent": "[aws-cli/2.13.29 Python/3.11.6 Darwin/22.6.0 exe/x86_64 prompt/off command/s3api.list-buckets]",

        "requestParameters": {

            "Host": "s3.us-east-1.amazonaws.com"

        },

        "readOnly": true,

        "eventType": "AwsApiCall",

        "managementEvent": true

        // additional detail fields

    }

}

En este escenario, puede crear una regla en EventBridge que coincida con “aws.s3” para el campo source, y “ListBuckets” para detail.eventName.

JSON

{

    "source": [

        "aws.s3"

    ],

    "detail-type": [

        "AWS API Call via CloudTrail"

    ],

    "detail": {

        "eventName": [

            "ListBuckets "

        ]

    }

}

Sin embargo, listar objetos por sí solo puede ser sólo el comienzo de un potencial intento de exfiltración de datos. También puede comprobar si ListObjects o ListObjectsV2 son la siguiente acción, seguido por un gran número de llamadas a la API GetObject. Puede crear la siguiente regla para coincidir estas acciones.

JSON

{

    "source": [

        "aws.s3"

    ],

    "detail-type": [

        "AWS API Call via CloudTrail"

    ],

    "detail": {

        "eventName": [

            "ListObjects",

            "ListObjectsV2",

            "GetObject"

        ]

    }

}

Podría enviar esta información a su solución central de logs o utilizar modelos de machine learning de detección de anomalías para evaluar los eventos y determinar las respuestas apropiadas.

Configuración del enrutamiento de eventos entre cuentas y regiones

Puede crear reglas para recibir eventos de solo lectura entre cuentas o regiones para centralizar sus eventos de AWS en una región o cuenta para fines de auditoría y monitoreo. Por ejemplo, capturar todos los eventos de cargas de trabajo de múltiples regiones en eu-west-1 para reportes de cumplimiento.

Cross Account example for default event bus and custom event bus

Ejemplo entre cuentas para bus de eventos predeterminado y personalizados

Para ello, cree una regla con el nuevo estado ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS en el bus de eventos predeterminado de la cuenta o región origen, apuntando hacia un bus de eventos predeterminado o personalizado de una cuenta o región destino. Debe asegurarse también que tiene una regla configurada con ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS para poder invocar los destinos en la cuenta o región destino.

Cross-Region setup for CloudTrail read-only events

Configuración entre cuentas para eventos de solo lectura de CloudTrail

Conclusión

Este blog muestra como los clientes pueden construir respuestas a eventos enriquecidas con el nuevo soporte a eventos de solo lectura. Ahora puede observar eventos como señales potenciales de actividades de reconocimiento y exfiltración de datos de cualquier acción realizada en la infraestructura de AWS casi en tiempo real. También puede utilizar la funcionalidad entre regiones y cuentas para enviar los eventos de solo lectura a una cuenta o región de AWS centralizada, lo que mejora la capacidad de auditoría y monitoreo en todos sus entornos de AWS.

Para más recursos de aprendizaje en serverless, visite Serverless Land.

Este blog en español es una traducción de la publicación original del blog en inglés (Enlace aquí).
Traductor: Michael Garcia | Solutions Architect en AWS – Lima, Perú