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.
-
Abra o console do Amazon EventBridge em https://console.aws.amazon.com/events/
. -
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
-
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\"]}" -
É 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
paraCompleted
.aws events put-rule --name TestRule --event-pattern "{\"source\":[\"aws.access-analyzer\"],\"detail-type\":[\"Access Preview State Change\"],\"detail\":{\"status\":[\"COMPLETED\"]}}"
-
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
-
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