Exportação de logs dos grupos de usuários do Amazon Cognito - Amazon Cognito

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Exportação de logs dos grupos de usuários do Amazon Cognito

Você pode configurar seu grupo de usuários para enviar registros detalhados de alguma atividade adicional para outra pessoa AWS service (Serviço da AWS), como um grupo de CloudWatch registros. Esses registros têm uma granularidade mais fina do que os de dentro AWS CloudTrail e podem ser úteis para solucionar problemas do grupo de usuários e analisar a atividade de login do usuário com recursos avançados de segurança. Quando você quiser transmitir registros de erros de notificação por SMS e e-mail, seu grupo de usuários envia registros em ERROR nível de CloudWatch registro para um grupo de registros. Quando você quiser transmitir logs da atividade de login do usuário, seu grupo de usuários enviará logs em nível de INFO para um grupo de logs, um stream do Amazon Data Firehose ou um bucket do Amazon S3. É possível combinar as duas opções em um grupo de usuários.

O que é importante saber sobre exportação de logs

Impacto do custo

O Amazon Data Firehose, o Amazon S3 e o Logs incorrem em custos de ingestão CloudWatch e recuperação de dados. Sua configuração de registro pode afetar sua AWS fatura. Para obter mais informações, consulte:

As exportações de logs de atividades do usuário contêm avaliações de segurança e são uma função dos recursos avançados de segurança do grupo de usuários. O Amazon Cognito só gera esses logs quando recursos avançados de segurança estão ativos. Esses recursos aumentam o custo por usuário ativo mensal (MAU) em seu grupo de usuários. Para mais informações, consulte Preço do Amazon Cognito.

Os registros de atividades do usuário estão INFO nivelados

Os registros de atividade do usuário exportados estão somente no nível de INFO erro e fornecem informações para análise estatística e de segurança da atividade de autenticação. Mensagens nos níveis de ERROR erro WARNING e, por exemplo, erros de limitação, não estão incluídas nos registros exportados.

Entrega do melhor esforço

A entrega de logs do Amazon Cognito é o melhor esforço. O volume de registros que seu grupo de usuários fornece e suas cotas de serviço para CloudWatch Logs, Amazon S3 e Firehose podem afetar a entrega de registros.

Os logs externos existentes não são afetados

Essas opções de logs não substituem nem alteram as seguintes funções de log dos grupos de usuários:

  1. CloudTrail registros de atividades rotineiras do usuário, como inscrição e login.

  2. Análise da atividade do usuário em grande escala com CloudWatch métricas.

Separadamente, você também pode encontrar registros de Visualizando os resultados da importação do grupo de usuários no CloudWatch console e Como personalizar fluxos de trabalho do grupo de usuários com acionadores do Lambda em CloudWatch Registros. O Amazon Cognito e o Lambda armazenam esses logs em grupos de logs diferentes daqueles que você especifica para logs de atividades do usuário.

Aplica-se somente aos grupos de usuários

Não existem recursos de exportação de logs para bancos de identidades.

Requer permissões de usuário e perfil vinculado ao serviço

O AWS diretor que configura a exportação de registros deve ter permissões para modificar os recursos de destino, conforme descrito nos tópicos a seguir. O Amazon Cognito cria um perfil vinculado ao serviço em seu nome e assume a função de entregar logs ao recurso de destino.

Para obter mais informações sobre o modelo de autorização para envio de registros do Amazon Cognito, consulte Habilitar o registro Serviços da AWS no Guia do usuário do Amazon CloudWatch Logs.

O nível de log é exclusivo para o tipo de log

Os logs de entrega de mensagens são do tipo userNotification e do nível de erro ERROR. Os logs de atividades do usuário de segurança avançada são do tipo userAuthEvents e do nível de erro INFO. Você pode combinar dois membros doLogConfigurations, um userNotification para CloudWatch Logs e outro userAuthEvents para Firehose, Amazon S3 ou Logs. CloudWatch

Você não pode enviar logs de atividades do usuário para vários destinos. Você não pode enviar registros de notificação do usuário para nenhum destino que não seja o CloudWatch Logs.

Opções de configuração diferentes

Você só pode configurar logs de notificação de usuário com a API de grupos de usuários do Amazon Cognito ou um AWS SDK. Você pode configurar logs de atividades do usuário de segurança avançada com a API ou no console do Amazon Cognito. Para definir ambos, use a API conforme demonstrado na solicitação de exemplo em SetLogDeliveryConfiguration.

Configuração adicional necessária com grandes políticas baseadas em recursos

Para enviar logs a grupos de logs com uma política de recursos de tamanho maior que 5120 caracteres, configure um grupo de logs com um caminho que comece com /aws/vendedlogs. Para obter mais informações, consulte Habilitar o registro de determinados AWS serviços.

Criação automática de uma pasta no Amazon S3

Quando você configura a exportação do log de proteção contra ameaças para um bucket do Amazon S3, o Amazon Cognito pode criar AWSLogs uma pasta no seu bucket. Essa pasta não é criada em todos os casos, e a configuração pode ser bem-sucedida sem criá-la.

Exportar erros de entrega de e-mails e mensagens SMS

Para erros de entrega de mensagens de e-mail e SMS, você pode entregar logs de notificação de usuário no nível de Erro do grupo de usuários. Ao ativar esse atributo, é possível escolher o grupo de logs para o qual você deseja que o Amazon Cognito envie logs. O log de notificações do usuário é útil quando você deseja descobrir o status das mensagens de e-mail e SMS que o grupo de usuários entregou com o Amazon SNS e o Amazon SES. Essa opção de exportação de registros, diferentemente da exportação de atividades do usuário, não exige o plano de recursos Plus.

Você pode configurar registros de notificação detalhados com a API de grupos de usuários do Amazon Cognito em uma solicitação de SetLogDeliveryConfigurationAPI. Você pode ver a configuração de registro de um grupo de usuários em uma solicitação de GetLogDeliveryConfigurationAPI. Veja a seguir um exemplo de corpo da solicitação.

{ "LogConfigurations": [ { "CloudWatchLogsConfiguration": { "LogGroupArn": "arn:aws:logs:us-west-2:123456789012:log-group:example-user-pool-exported" }, "EventSource": "userNotification", "LogLevel": "ERROR" } ], "UserPoolId": "us-west-2_EXAMPLE" }

Você deve autorizar essas solicitações com AWS credenciais que tenham as seguintes permissões.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageUserPoolLogs", "Action": [ "cognito-idp:SetLogDeliveryConfiguration", "cognito-idp:GetLogDeliveryConfiguration" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "CognitoLog", "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "CognitoLoggingCWL", "Action": [ "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "*" ], "Effect": "Allow" } ] }

Veja a seguir um exemplo de evento de um grupo de usuários. Esse esquema de logs está sujeito a alterações. Alguns campos podem ser registrados em log com valores nulos.

{ "eventTimestamp": "1687297330677", "eventSource": "USER_NOTIFICATION", "logLevel": "ERROR", "message": { "details": "String" }, "logSourceId": { "userPoolId": "String" } }

Exportação de registros de atividades do usuário de proteção contra ameaças

Grupos de usuários com o plano de recursos Plus e a proteção contra ameaças registram eventos de atividade do usuário: os detalhes e a avaliação de segurança do login e saída do usuário e de outras operações de autenticação com seu grupo de usuários. Talvez você queira revisar os logs de atividades do usuário em seu próprio sistema de gerenciamento de logs ou criar um arquivo. Você pode exportar esses dados para um grupo de CloudWatch logs do Amazon Logs, um stream do Amazon Data Firehose ou um bucket do Amazon Simple Storage Service (Amazon S3). A partir daí, você pode ingerir esses dados em outros sistemas que analisam, normalizam ou processam dados de forma a ajustá-los aos seus processos operacionais. Para exportar dados desse tipo, seu grupo de usuários deve estar no plano de recursos Plus e os recursos avançados de segurança devem estar ativos em seu grupo de usuários.

Com as informações nesses logs de atividades do usuário, você pode ver um perfil das atividades de login e gerenciamento de contas do usuário. Por padrão, o Amazon Cognito captura esses eventos para um armazenamento baseado em seu grupo de usuários. O exemplo a seguir é de um evento de um usuário que fez login e recebeu uma avaliação de ausência de fatores de risco. Você pode recuperar essas informações com a operação da API AdminListUserAuthEvents. Veja a seguir um exemplo de saída:

{ "AuthEvents": [ { "EventId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "EventType": "SignIn", "CreationDate": "2024-06-27T10:49:59.139000-07:00", "EventResponse": "Pass", "EventRisk": { "RiskDecision": "NoRisk", "CompromisedCredentialsDetected": false }, "ChallengeResponses": [ { "ChallengeName": "Password", "ChallengeResponse": "Success" } ], "EventContextData": { "IpAddress": "192.0.2.1", "DeviceName": "Chrome 126, Windows 10", "Timezone": "-07:00", "City": "null", "Country": "United States" } } ], "NextToken": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222#2024-06-27T17:49:59.139Z" }

Você pode ativar a exportação de log para a atividade do usuário no console do Amazon Cognito ou com a operação da SetLogDeliveryConfigurationAPI.

AWS Management Console
  1. Se você ainda não tem um que queira usar, crie um bucket do S3, um stream do Firehose CloudWatch ou um grupo de registros.

  2. Faça login no console do Amazon Cognito.

  3. Escolha User Pools (Grupos de usuários).

  4. Escolha um grupo de usuários existente na lista ou crie um grupo de usuários.

  5. Escolha a guia Segurança avançada. Localize Exportar logs de atividades do usuário e escolha Editar

  6. Em Status de registro em log, marque a caixa de seleção ao lado de Ativar exportação do log de atividades do usuário.

  7. Em Logging destination, escolha o AWS service (Serviço da AWS) que você deseja manipular com seus registros: grupo de CloudWatch registros, stream do Amazon Data Firehose ou bucket do S3.

  8. Sua seleção preencherá o seletor de recursos com o tipo de recurso correspondente. Selecione um grupo de logs, stream ou bucket na lista. Você também pode selecionar o botão Criar para navegar até o serviço selecionado e criar um novo recurso. AWS Management Console

  9. Selecione Salvar alterações.

API

Escolha um tipo de destino para seus logs de atividades do usuário.

Veja a seguir um exemplo de corpo de solicitação SetLogDeliveryConfiguration que define um stream do Firehose como o destino do log.

{ "LogConfigurations": [ { "EventSource": "userAuthEvents", "FirehoseConfiguration": { "StreamArn": "arn:aws:firehose:us-west-2:123456789012:deliverystream/example-user-pool-activity-exported" }, "LogLevel": "INFO" } ], "UserPoolId": "us-west-2_EXAMPLE" }

Veja a seguir um exemplo de corpo de solicitação SetLogDeliveryConfiguration que define um bucket do Amazon S3 como o destino do log.

{ "LogConfigurations": [ { "EventSource": "userAuthEvents", "S3Configuration": { "BucketArn": "arn:aws:s3:::amzn-s3-demo-logging-bucket" }, "LogLevel": "INFO" } ], "UserPoolId": "us-west-2_EXAMPLE" }

Veja a seguir um exemplo de corpo de SetLogDeliveryConfiguration solicitação que define um grupo de CloudWatch registros como o destino do registro.

{ "LogConfigurations": [ { "EventSource": "userAuthEvents", "CloudWatchLogsConfiguration": { "LogGroupArn": "arn:aws:logs:us-west-2:123456789012:log-group:DOC-EXAMPLE-LOG-GROUP" }, "LogLevel": "INFO" } ], "UserPoolId": "us-west-2_EXAMPLE" }

O usuário que configura a entrega de logs deve ser administrador do grupo de usuários e ter as seguintes permissões adicionais:

Amazon S3
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageUserPoolLogs", "Action": [ "cognito-idp:SetLogDeliveryConfiguration", "cognito-idp:GetLogDeliveryConfiguration", ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "ManageLogsS3", "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "s3:PutBucketPolicy", "s3:GetBucketPolicy" ], "Resource": "*" } ] }
CloudWatch Logs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageUserPoolLogs", "Action": [ "cognito-idp:SetLogDeliveryConfiguration", "cognito-idp:GetLogDeliveryConfiguration", ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "ManageLogsCWL", "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "*" ], "Effect": "Allow" } ] }
Amazon Data Firehose
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageUserPoolLogs", "Action": [ "cognito-idp:SetLogDeliveryConfiguration", "cognito-idp:GetLogDeliveryConfiguration", ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "ManageUserPoolLogsFirehose", "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "iam:CreateServiceLinkedRole", "firehose:TagDeliveryStream" ], "Resource": "*" } ] }

Veja a seguir um exemplo de evento de um grupo de usuários. Esse esquema de logs está sujeito a alterações. Alguns campos podem ser registrados em log com valores nulos.

{ "eventTimestamp": "1687297330677", "eventSource": "USER_ACTIVITY", "logLevel": "INFO", "message": { "version": "1", "eventId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "eventType": "SignUp", "userSub": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "userName": "test-user", "userPoolId": "us-west-2_EXAMPLE", "clientId": "1example23456789", "creationDate": "Wed Jul 17 17:25:55 UTC 2024", "eventResponse": "InProgress", "riskLevel": "", "riskDecision": "PASS", "challenges": [], "deviceName": "Other, Other", "ipAddress": "192.0.2.1", "requestId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE33333", "idpName": "", "compromisedCredentialDetected": "false", "city": "Seattle", "country": "United States", "eventFeedbackValue": "", "eventFeedbackDate": "", "eventFeedbackProvider": "" }, "logSourceId": { "userPoolId": "us-west-2_EXAMPLE" } }