Monitorar o AWS IAM Access Analyzer com o Amazon EventBridge - AWS Identity and Access Management

Monitorar o AWS IAM Access Analyzer com o Amazon EventBridge

Use as informações deste tópico para saber como monitorar as descobertas do Access Analyzer e acessar as pré-visualizações com o Amazon EventBridge. O EventBridge é a nova versão do Amazon CloudWatch Events.

Eventos de descobertas

O Access Analyzer envia um evento ao EventBridge para cada descoberta gerada, para uma alteração no status de uma descoberta existente e quando uma descoberta é excluída. Para receber descobertas e notificações sobre descobertas, é necessário criar uma regra de evento no Amazon EventBridge. Ao criar uma regra de evento, também é possível especificar uma ação de destino a ser acionada com base na regra. Por exemplo, você pode criar uma regra de evento que aciona um tópico do Amazon SNS quando um evento de uma nova descoberta é recebido do Access Analyzer.

Acessar eventos de pré-visualização

O Access Analyzer envia um evento ao EventBridge para cada pré-visualização de acesso e alteração de seu status. Isso inclui um evento quando a pré-visualização de acesso é criada pela primeira vez (status Creating [Criando]), quando a pré-visualização de acesso é concluída (status Completed [Concluída]) ou quando a criação da pré-visualização de acesso falha (status Failed [Falha]). Para receber notificações sobre pré-visualizações de acesso, você deve criar uma regra de evento no EventBridge. Ao criar uma regra de evento, é possível especificar uma ação de destino a ser acionada com base na regra. Por exemplo, você pode criar uma regra de evento que acione um tópico do Amazon SNS quando um evento para uma pré-visualização de acesso concluída for recebido do Access Analyzer.

Frequência das notificações de eventos

O Access Analyzer envia eventos para novas descobertas e descobertas com atualizações de status ao EventBridge em cerca de uma hora a partir do momento em que o evento ocorre na conta. O Access Analyzer também envia eventos ao EventBridge quando uma descoberta resolvida é excluída porque o período de retenção expirou. Para descobertas que são excluídas porque o analisador que as gerou foi excluído, o evento é enviado ao EventBridge aproximadamente 24 horas após a exclusão do analisador. Quando uma descoberta é excluída, o status da descoberta não é alterado. Em vez disso, o atributo isDeleted é definido como true. O Access Analyzer também envia eventos para pré-visualizações de acesso recém-criadas e alterações de status de pré-visualização de acesso ao EventBridge.

Exemplos de eventos de descobertas

Veja a seguir um exemplo de evento do Access Analyzer enviado ao EventBridge. O id listado é o ID do evento no EventBridge. Para saber mais, consulte Eventos e padrões de evento no EventBridge.

No objeto detail, os valores dos atributos accountId e region fazem referência à conta e à região informada na descoberta. O atributo isDeleted indica se o evento era da descoberta que está sendo excluída. O id é o ID da descoberta. A matriz resources é um singleton com o ARN do analisador que gerou a descoberta.

{ "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" }

O Access Analyzer também envia eventos ao EventBridge para descobertas de erro. Uma descoberta de erro é uma descoberta gerada quando o Access Analyzer não consegue analisar o recurso. Os eventos de descobertas de erro incluem um atributo error, conforme mostrado no exemplo a seguir.

{ "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" }

Exemplo de eventos de pré-visualização de acesso

O exemplo a seguir mostra dados do primeiro evento enviado ao EventBridge ao criar uma pré-visualização de acesso. A matriz resources é um singleton com o ARN do analisador ao qual a pré-visualização de acesso está associada. No objeto detail, o id refere-se ao ID de pré-visualização de acesso e configuredResources refere-se ao recurso para o qual a pré-visualização de acesso foi criada. O status é Creating e refere-se ao status de pré-visualização de acesso. O previousStatus não é especificado porque a pré-visualização de acesso acabou de ser criada.

{ "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" }

O exemplo a seguir mostra dados de um evento enviado ao EventBridge para uma pré-visualização de acesso com uma alteração de status de Creating para Completed. No objeto de detalhes, o id refere-se ao ID de pré-visualização de acesso. O status e previousStatus referem-se ao status de pré-visualização de acesso, em que o status anterior era Creating e o status atual é 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" }

O exemplo a seguir mostra dados de um evento enviado ao EventBridge para uma pré-visualização de acesso com uma alteração de status de Creating para Failed. No objeto detail, o id refere-se ao ID de pré-visualização de acesso. O status e previousStatus referem-se ao status de pré-visualização de acesso, em que o status anterior era Creating e o status atual é Failed. O campo statusReason fornece o código de motivo indicando que a pré-visualização de acesso falhou devido a uma configuração de recurso 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" }

Criar uma regra de evento usando o console

O procedimento a seguir descreve como criar uma regra de evento usando o console.

  1. Abra o console do Amazon EventBridge em https://console.aws.amazon.com/events/.

  2. Usando os valores a seguir, crie uma regra EventBridge que monitore os eventos de descobertas ou acesse os eventos de visualização:

    • Em Rule type (Tipo de regra), escolha Rule with an event pattern (Regra com um padrão de evento).

    • Em Event source (Origem do evento), escolha Other (Outra).

    • Em Event pattern (Padrão de evento), escolha Custom patterns (JSON editor), (Padrões personalizados [editor JSON]) e cole um dos seguintes exemplos de padrão de evento na área de texto:

      • Para criar uma regra baseada em um evento de descobertas, use o seguinte exemplo de padrão:

        { "source": [ "aws.access-analyzer" ], "detail-type": [ "Access Analyzer Finding" ] }
      • Para criar uma regra baseada em um evento de visualização de acesso, use o seguinte exemplo de padrão:

        { "source": [ "aws.access-analyzer" ], "detail-type": [ "Access Preview State Change" ] }
    • Em Target types (Tipos de destino), escolha AWS service (Serviço da AWS) e, em Select a target (Selecione um destino), escolha um destino, como um tópico do Amazon SNS ou uma função do AWS Lambda. O destino é acionado quando é recebido um evento que corresponde ao padrão de evento definido na regra.

    Para saber mais sobre a criação de regras, consulte Creating Amazon EventBridge rules that react to events (Criar regras do Amazon EventBridge que reajam a eventos) no Amazon EventBridge User Guide (Guia do usuário do Amazon EventBridge).

Criar uma regra de evento usando a CLI

  1. Use o seguinte para criar uma regra para o Amazon EventBridge usando a AWS CLI. Substitua o nome da regra TestRule pelo nome da sua regra.

    aws events put-rule --name TestRule --event-pattern "{\"source\":[\"aws.access-analyzer\"]}"
  2. É possível personalizar a regra para acionar ações de destino somente para um subconjunto de descobertas geradas, como descobertas com atributos específicos. O exemplo a seguir demonstra como criar uma regra que aciona uma ação de destino somente para descobertas com um status de Active (Ativa).

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

    O exemplo a seguir demonstra como criar uma regra que acione uma ação de destino apenas para pré-visualizações de acesso com um status de Creating para 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 uma função Lambda com um destino para a regra criada, use o exemplo de comando a seguir. Substitua a região e o nome da função no ARN conforme apropriado para o seu ambiente.

    aws events put-targets --rule TestRule --targets Id=1,Arn=arn:aws:lambda:us-east-1:111122223333:function:MyFunction
  4. Adicione as permissões necessárias para invocar o destino da regra. O exemplo a seguir demonstra como conceder permissões a uma função Lambda, seguindo os exemplos anteriores.

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