

# Supervisión de AWS Identity and Access Management Access Analyzer con Amazon EventBridge
<a name="access-analyzer-eventbridge"></a>

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
<a name="access-analyzer-events-findings"></a>

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. Los detalles sobre la política de control de recursos (RCP) están disponibles en la sección de detalles del evento.

## Acceso a eventos de vista previa
<a name="access-analyzer-access-preview-events"></a>

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
<a name="access-analyzer-event-frequency"></a>

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
<a name="access-analyzer-event-example"></a>

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](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html).

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:::amzn-s3-demo-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:::amzn-s3-demo-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"
}
```

## Ejemplo de eventos de resultados de acceso interno
<a name="access-analyzer-event-example-internal-access-findings-events"></a>

El siguiente es un evento de ejemplo de resultado de acceso interno 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](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html).

En el objeto `detail`, los valores de los atributos `accountId` y `principalOwnerAccount` hacen referencia a la cuenta de la entidad principal notificada en el resultado. El atributo `isDeleted` indica si el evento era del resultado que se eliminó. El `id` es el ID del resultado. El `resource` es el ARN del analizador que generó el resultado.

```
{
    "version": "0",
    "id": "b45c3678-c278-b593-6121-c155259ce1b5",
    "detail-type": "Internal Access Finding",
    "source": "aws.access-analyzer",
    "account": "111122223333",
    "time": "2025-04-08T19:42:49Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:access-analyzer:us-east-1:111122223333:analyzer/testAnalyzer"
    ],
    "detail": {
        "accessType": "INTRA_ACCOUNT",
        "action": [
            "s3:GetObject"
        ],
        "analyzedAt": "2025-04-08T03:18:43.509465073Z", 
        "condition": {},
        "createdAt": "2025-04-07T21:33:49.914099224Z",
        "id": "11111111-2222-4444-aaaa-333333333333",
        "isDeleted": false,
        "findingType": "InternalAccess",
        "principal": {
            "AWS": "arn:aws:iam::111122223333:role/MyRole_6"
        },
        "principalOwnerAccount": "111122223333",
        "principalType": "IAM_ROLE",
        "resource": "arn:aws:s3:::critical-data",
        "resourceControlPolicyRestrictionType": "NOT_APPLICABLE",
        "accountId": "111122223333",
        "resourceType": "AWS::S3::Bucket",
        "serviceControlPolicyRestrictionType": "NOT_APPLICABLE",
        "status": "ACTIVE",
        "updatedAt": "2025-04-08T03:22:12.654688231Z",
        "version": "1.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.

```
{
    "version": "0",
    "id": "5a94b99b-e87d-a6a7-58c7-f47871532860",
    "detail-type": "Internal Access Finding",
    "source": "aws.access-analyzer-test",
    "account": "444455556666",
    "time": "2025-05-07T11:57:54Z",
    "region": "us-west-2",
    "resources": ["arn:aws:access-analyzer-beta:us-west-2:444455556666:analyzer/example-analyzer"],
    "detail": {
        "analyzedAt": "2025-03-24T19:58:52.512329448Z",
        "createdAt": "2025-03-22T03:30:46.920200692Z",
        "id": "ef573afd-12a5-4095-87a6-bf2f25109895",
        "isDeleted": false,
        "findingType": "InternalAccess",
        "resource": "arn:aws:s3:::test-entity-88",
        "accountId": "111122223333",
        "resourceControlPolicyRestrictionType": "NOT_APPLICABLE",
        "resourceType": "AWS::S3::Bucket",
        "serviceControlPolicyRestrictionType": "NOT_APPLICABLE",
        "error": "ACCESS_DENIED", // can be INTERNAL_ERROR and ACCESS_DENIED
        "status": "ACTIVE",
        "updatedAt": "2025-03-24T20:09:39.176075014Z",
        "version": "1.0"
    }
}
```

## Ejemplo de eventos relacionados con los resultados de acceso no utilizados
<a name="access-analyzer-example-unused-access-findings-related-events"></a>

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](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html).

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
<a name="access-analyzer-example-access-preview-events"></a>

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:::amzn-s3-demo-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:::amzn-s3-demo-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:::amzn-s3-demo-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
<a name="access-analyzer-create-rule"></a>

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/](https://console.aws.amazon.com/events/).

1. 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 IAM Access Analyzer, utilice el siguiente ejemplo de patrón:

       ```
       {
         "source": [
           "aws.access-analyzer"
         ]
       }
       ```
     + Para crear una regla basada en un evento de resultados de acceso externo, interno o no utilizado, utilice el siguiente ejemplo de patrón:

       ```
       {
         "source": [
           "aws.access-analyzer"
         ],
         "detail-type": [
           "Access Analyzer Finding",
           "Internal Access Finding",
           "Unused Access Finding for IAM entities"
         ]
       }
       ```
     + Para crear una regla basada únicamente en un evento de resultados de 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 interno, utilice el siguiente ejemplo de patrón:

       ```
       {
         "source": [
           "aws.access-analyzer"
         ],
         "detail-type": [
           "Internal Access 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"
         ]
       }
       ```
     + 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](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html) en la *Guía de usuario de Amazon EventBridge*.

### Creación de una regla de evento mediante la CLI
<a name="access-analyzer-create-rule-cli"></a>

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\"]}"
   ```

1. 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\"]}}"
   ```

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

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