Supervisión de AWS Identity and Access Management Access Analyzer con Amazon EventBridge - AWS Identity and Access Management

Supervisión de AWS Identity and Access Management Access Analyzer con Amazon EventBridge

Utilice la información de este tema para aprender a supervisar resultados del Analizador de acceso de IAM y acceder a vistas previas con Amazon EventBridge. EventBridge es la nueva versión de Amazon CloudWatch Events.

Eventos de resultados

El Analizador de acceso de IAM envía un evento a Eventbridge para cada resultado generado, para un cambio en el estado de un resultado existente y cuando se elimina un resultado. Para recibir resultados y notificaciones sobre resultados, debe crear una regla de evento en Amazon EventBridge. Al crear una regla de evento, también puede especificar una acción de destino que se desencadenará en función de la regla. Por ejemplo, puede crear una regla de evento que desencadena un tema de Amazon SNS cuando se reciba un evento de un nuevo resultado del Analizador de acceso de IAM.

Acceso a eventos de vista previa

El Analizador de acceso de IAM envía un evento a EventBridge para cada vista previa y cambio de acceso de estado. Esto incluye un evento cuando se crea por primera vez la vista previa de acceso (estado Creación), cuando se completa la vista previa de acceso (estado Completado) o cuando la creación de la vista previa de acceso falló (estado Error). Para recibir notificaciones sobre acceso a vista previa, debe crear una regla de evento en Amazon EventBridge. Al crear una regla de evento, puede especificar una acción de destino que se desencadenará en función de la regla. Por ejemplo, puede crear una regla de evento que desencadena un tema de Amazon SNS cuando se reciba un evento de una vista previa de acceso completa desde el Analizador de acceso de IAM.

Frecuencia de notificación de eventos

El Analizador de acceso de IAM envía eventos sobre nuevos resultados y resultados con actualizaciones de estado a EventBridge aproximadamente una hora desde el momento en que se produce el evento en su cuenta. El Analizador de acceso de IAM también envía eventos a EventBridge cuando se elimina un resultado resuelto porque el período de retención ha expirado. Para los resultados que se eliminan porque se elimina el analizador que los generó, el evento se envía a Eventbridge aproximadamente 24 horas después de que se eliminara el analizador. Cuando se elimina un hallazgo, el estado del resultado no cambia. En su lugar, el atributo isDeleted se establece en true. El Analizador de acceso de IAM también envía eventos sobre las vistas previas de acceso recién creadas y los cambios de estado de la vista previa de acceso a EventBridge.

Ejemplo de eventos de resultados de acceso externo

El siguiente es un evento de ejemplo de resultado de acceso externo del Analizador de acceso de IAM enviado a EventBridge. El id listado es el ID del evento en Eventbridge. Para obtener más información, consulte Eventos y patrones de eventos en EventBridge.

En el objeto detail, los valores de los atributos accountId y region hacen referencia a la cuenta y la región notificados en el resultado. El atributo isDeleted indica si el evento era del resultado que se eliminó. El id es el ID del resultado. La matriz resources es un singleton con el ARN del analizador que generó el resultado.

{ "account": "111122223333", "detail": { "accountId": "111122223333", "action": [ "s3:GetObject" ], "analyzedAt": "2019-11-21T01:22:22Z", "condition": {}, "createdAt": "2019-11-20T04:58:50Z", "id": "22222222-dcba-4444-dcba-333333333333", "isDeleted": false, "isPublic": false, "principal": { "AWS": "999988887777" }, "region": "us-west-2", "resource": "arn:aws:s3:::my-bucket", "resourceType": "AWS::S3::Bucket", "status": "ACTIVE", "updatedAt": "2019-11-21T01:14:07Z", "version": "1.0" }, "detail-type": "Access Analyzer Finding", "id": "11111111-2222-4444-aaaa-333333333333", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:111122223333:analyzer/MyAnalyzer" ], "source": "aws.access-analyzer", "time": "2019-11-21T01:22:33Z", "version": "0" }

El Analizador de acceso de IAM también envía eventos a EventBridge sobre resultados erróneos. Un resultado erróneo es un resultado generado cuando el Analizador de acceso de IAM no puede analizar un recurso. Los eventos para resultados erróneos incluyen un atributo error como se muestra en el siguiente ejemplo.

{ "account": "111122223333", "detail": { "accountId": "111122223333", "analyzedAt": "2019-11-21T01:22:22Z", "createdAt": "2019-11-20T04:58:50Z", "error": "ACCESS_DENIED", "id": "22222222-dcba-4444-dcba-333333333333", "isDeleted": false, "region": "us-west-2", "resource": "arn:aws:s3:::my-bucket", "resourceType": "AWS::S3::Bucket", "status": "ACTIVE", "updatedAt": "2019-11-21T01:14:07Z", "version": "1.0" }, "detail-type": "Access Analyzer Finding", "id": "11111111-2222-4444-aaaa-333333333333", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:111122223333:analyzer/MyAnalyzer" ], "source": "aws.access-analyzer", "time": "2019-11-21T01:22:33Z", "version": "0" }

El siguiente es un evento de ejemplo de resultado de acceso no utilizado del Analizador de acceso de IAM enviado a EventBridge. El id listado es el ID del evento en Eventbridge. Para obtener más información, consulte Eventos y patrones de eventos en EventBridge.

En el objeto detail, los valores de los atributos accountId y region hacen referencia a la cuenta y la región notificados en el resultado. El atributo isDeleted indica si el evento era del resultado que se eliminó. El id es el ID del resultado.

{ "version": "0", "id": "dc7ce3ee-114b-3243-e249-7f10f9054b21", "detail-type": "Unused Access Finding for IAM entities", "source": "aws.access-analyzer", "account": "123456789012", "time": "2023-09-29T17:31:40Z", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:123456789012:analyzer/integTestLongLivingAnalyzer-DO-NOT-DELETE" ], "detail": { "findingId": "b8ae0460-5d29-4922-b92a-ba956c986277", "resource": "arn:aws:iam::111122223333:role/FindingIntegTestFakeRole", "resourceType": "AWS::IAM::Role", "accountId": "111122223333", "createdAt": "2023-09-29T17:29:18.758Z", "updatedAt": "2023-09-29T17:29:18.758Z", "analyzedAt": "2023-09-29T17:29:18.758Z", "previousStatus": "", "status": "ACTIVE", "version": "62160bda-8e94-46d6-ac97-9670930d8ffb", "isDeleted": false, "findingType": "UnusedPermission", "numberOfUnusedServices": 0, "numberOfUnusedActions": 1 } }

El Analizador de acceso de IAM también envía eventos a EventBridge sobre resultados erróneos. Un resultado erróneo es un resultado generado cuando el Analizador de acceso de IAM no puede analizar un recurso. Los eventos para resultados erróneos incluyen un atributo error como se muestra en el siguiente ejemplo.

{ "version": "0", "id": "c2e7aa1a-4df7-7652-f33e-64113b8997d4", "detail-type": "Unused Access Finding for IAM entities", "source": "aws.access-analyzer", "account": "111122223333", "time": "2023-10-31T20:26:12Z", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:111122223333:analyzer/ba811f91-de99-41a4-97c0-7481898b53f2" ], "detail": { "findingId": "b01a34f2-e118-46c9-aef8-0d8526b495c7", "resource": "arn:aws:iam::123456789012:role/TestRole", "resourceType": "AWS::IAM::Role", "accountId": "444455556666", "createdAt": "2023-10-31T20:26:08.647Z", "updatedAt": "2023-10-31T20:26:09.245Z", "analyzedAt": "2023-10-31T20:26:08.525Z", "previousStatus": "", "status": "ACTIVE", "version": "7c7a72a2-7963-4c59-ac71-f0be597010f7", "isDeleted": false, "findingType": "UnusedIAMRole", "error": "INTERNAL_ERROR" } }

Ejemplo de eventos de vista previa de acceso

En el ejemplo siguiente se muestran los datos del primer evento que se envía a EventBridge cuando se crea una vista previa de acceso. La matriz resources es solitaria con el ARN del analizador con el que está asociada la vista previa de acceso. En el objeto detail, id hace referencia al ID de vista previa de acceso y configuredResources hace referencia al recurso para el que se creó la vista previa de acceso. El status es Creating y hace referencia al estado de vista previa de acceso. El previousStatus no se especifica porque se acaba de crear la vista previa de acceso.

{ "account": "111122223333", "detail": { "accessPreviewId": "aaaabbbb-cccc-dddd-eeee-ffffaaaabbbb", "configuredResources": [ "arn:aws:s3:::example-bucket" ], "createdAt": "2020-02-20T00:00:00.00Z", "region": "us-west-2", "status": "CREATING", "version": "1.0" }, "detail-type": "Access Preview State Change", "id": "aaaabbbb-2222-3333-4444-555566667777", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:111122223333:analyzer/MyAnalyzer" ], "source": "aws.access-analyzer", "time": "2020-02-20T00:00:00.00Z", "version": "0" }

En el ejemplo siguiente se muestran los datos de un evento que se envía a EventBridge sobre una vista previa de acceso con un cambio de estado de Creating a Completed. En el objeto de detalle, el id hace referencia al ID de la vista previa de acceso. El status y previousStatus hacen referencia al estado de vista previa de acceso, donde el estado anterior era Creating y el estado actual es Completed.

{ "account": "111122223333", "detail": { "accessPreviewId": "aaaabbbb-cccc-dddd-eeee-ffffaaaabbbb", "configuredResources": [ "arn:aws:s3:::example-bucket" ], "createdAt": "2020-02-20T00:00:00.000Z", "previousStatus": "CREATING", "region": "us-west-2", "status": "COMPLETED", "version": "1.0" }, "detail-type": "Access Preview State Change", "id": "11112222-3333-4444-5555-666677778888", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:111122223333:analyzer/MyAnalyzer" ], "source": "aws.access-analyzer", "time": "2020-02-20T00:00:00.00Z", "version": "0" }

En el ejemplo siguiente se muestran los datos de un evento que se envía a EventBridge sobre una vista previa de acceso con un cambio de estado de Creating a Failed. En el objeto detail, el id hace referencia al ID de la vista previa de acceso. El status y previousStatus hacen referencia al estado de la vista previa de acceso, donde el estado anterior era Creating y el estado actual es Failed. El campo statusReason proporciona el código de motivo que indica que la vista previa de acceso falló debido a una configuración de recursos inválida.

{ "account": "111122223333", "detail": { "accessPreviewId": "aaaabbbb-cccc-dddd-eeee-ffffaaaabbbb", "configuredResources": [ "arn:aws:s3:::example-bucket" ], "createdAt": "2020-02-20T00:00:00.00Z", "previousStatus": "CREATING", "region": "us-west-2", "status": "FAILED", "statusReason": { "code": "INVALID_CONFIGURATION" }, "version": "1.0" }, "detail-type": "Access Preview State Change", "id": "99998888-7777-6666-5555-444433332222", "region": "us-west-2", "resources": [ "arn:aws:access-analyzer:us-west-2:111122223333:analyzer/MyAnalyzer" ], "source": "aws.access-analyzer", "time": "2020-02-20T00:00:00.00Z", "version": "0" }

Creación de una regla de evento mediante la consola

El siguiente procedimiento describe cómo crear regla de eventos utilizando la consola.

  1. Abra la consola de Amazon EventBridge en https://console.aws.amazon.com/events/.

  2. Con los siguientes valores, cree una regla de EventBridge que supervise la búsqueda de eventos o acceda a los eventos de vista previa:

    • En Tipo de regla, elija Regla con un patrón de evento.

    • En Origen del evento, elija Otro.

    • En Patrón del evento, elija Patrones personalizados (editor de JSON) y pegue uno de los siguientes ejemplos de patrones de eventos en el área de texto:

      • Para crear una regla basada en un evento de resultados de acceso no utilizado o acceso externo, utilice el siguiente ejemplo de patrón:

        { "source": [ "aws.access-analyzer" ], "detail-type": [ "Access Analyzer Finding" ] }
      • Para crear una regla basada únicamente en un evento de resultados de acceso no utilizado, utilice el siguiente ejemplo de patrón:

        { "source": [ "aws.access-analyzer" ], "detail-type": [ "Unused Access Finding for IAM entities" ] }
        nota

        No puede crear una regla basada únicamente en un evento de resultados de acceso externo.

      • Para crear una regla basada en un evento de vista previa de acceso, utilice el siguiente ejemplo de patrón:

        { "source": [ "aws.access-analyzer" ], "detail-type": [ "Access Preview State Change" ] }
    • En Tipos de destino, elija Servicio de AWS, y en Seleccionar un destino, elija un destino, como un tema de Amazon SNS o una función de AWS Lambda. El destino se activa cuando se recibe un evento que coincide con el patrón de eventos definido en la regla.

    Para más información sobre cómo crear reglas de eventos, consulte Creación de reglas de Amazon EventBridge que reaccionan a eventos en la Guía de usuario de Amazon EventBridge.

Creación de una regla de evento mediante la CLI

  1. Utilice lo siguiente para crear una regla para Amazon EventBridge mediante la AWS CLI. Reemplace el nombre de regla TestRule por el nombre de la regla.

    aws events put-rule --name TestRule --event-pattern "{\"source\":[\"aws.access-analyzer\"]}"
  2. Puede personalizar la regla para desencadenar acciones de destino solo para un subconjunto de resultados generados, como resultados con atributos específicos. En el ejemplo siguiente, se muestra cómo crear una regla que desencadena una acción de destino solo para los resultados con el estado Activo.

    aws events put-rule --name TestRule --event-pattern "{\"source\":[\"aws.access-analyzer\"],\"detail-type\":[\"Access Analyzer Finding\"],\"detail\":{\"status\":[\"ACTIVE\"]}}"

    En el ejemplo siguiente se muestra cómo crear una regla que desencadena una acción de destino solo para las vistas previas de acceso con estado de Creating a Completed.

    aws events put-rule --name TestRule --event-pattern "{\"source\":[\"aws.access-analyzer\"],\"detail-type\":[\"Access Preview State Change\"],\"detail\":{\"status\":[\"COMPLETED\"]}}"
  3. Para definir una función de Lambda como destino para la regla que ha creado, utilice el siguiente comando de ejemplo. Reemplace la Región y el nombre de la función en el ARN según corresponda para su entorno.

    aws events put-targets --rule TestRule --targets Id=1,Arn=arn:aws:lambda:us-east-1:111122223333:function:MyFunction
  4. Agregue los permisos necesarios para invocar el destino de regla. En el ejemplo siguiente se muestra cómo conceder permisos a una función de Lambda, siguiendo los ejemplos anteriores.

    aws lambda add-permission --function-name MyFunction --statement-id 1 --action 'lambda:InvokeFunction' --principal events.amazonaws.com