Coletar registros do IAM da AWS

Compatível com:

Este documento explica como ingerir registros do AWS IAM no Google Security Operations. O analisador transforma registros brutos formatados em JSON em um modelo de dados unificado (UDM) estruturado. Ele extrai campos relevantes, como detalhes do usuário, informações de função, permissões e carimbos de data/hora, mapeando-os para os campos correspondentes do UDM para uma análise de segurança consistente.

Antes de começar

Verifique se você atende os seguintes pré-requisitos:

  • Uma instância do Google SecOps
  • Acesso privilegiado ao console da AWS
  • Permissões para criar usuários, papéis e políticas do IAM

Escolher o método de integração

O Google SecOps oferece suporte a dois métodos para ingerir dados do AWS IAM:

Método A: CloudTrail + Amazon S3 (registros de atividades)

  • O que ele coleta: registros de atividade do IAM (quem realizou quais ações)
  • Fonte de dados: eventos do AWS CloudTrail
  • Latência: vários minutos (baseada em polling)
  • Caso de uso: trilha de auditoria histórica, relatórios de compliance
  • Tipo de origem do feed: Amazon S3 V2

Método B: API de terceiros (snapshot de configuração)

  • O que ele coleta: dados de configuração do IAM (usuários, grupos, papéis, políticas)
  • Fonte de dados: chamadas diretas da API do AWS IAM
  • Latência: quase em tempo real (polling periódico)
  • Caso de uso: monitoramento da configuração do IAM em tempo real, revisão de acesso
  • Tipo de origem do feed: API de terceiros

Método A: integração do CloudTrail e do Amazon S3

Esse método usa o AWS CloudTrail para capturar a atividade do IAM e armazena registros no Amazon S3, que o Google SecOps ingere.

Criar um bucket do Amazon S3

  1. Crie um bucket do Amazon S3 seguindo este guia do usuário: Como criar um bucket.
  2. Salve o Nome e a Região do bucket para referência futura (por exemplo, iam-activity-logs-bucket).

Configurar a política do bucket do S3 para o CloudTrail

O CloudTrail precisa de permissões para gravar registros no seu bucket do S3.

  1. No console do Amazon S3, selecione seu bucket.
  2. Acesse Permissões > Política do bucket.
  3. Clique em Editar e adicione a seguinte política:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "CloudTrailAclCheck",
          "Effect": "Allow",
          "Principal": {
            "Service": "cloudtrail.amazonaws.com"
          },
          "Action": "s3:GetBucketAcl",
          "Resource": "arn:aws:s3:::iam-activity-logs-bucket"
        },
        {
          "Sid": "CloudTrailWrite",
          "Effect": "Allow",
          "Principal": {
            "Service": "cloudtrail.amazonaws.com"
          },
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::iam-activity-logs-bucket/AWSLogs/*",
          "Condition": {
            "StringEquals": {
              "s3:x-amz-acl": "bucket-owner-full-control"
            }
          }
        }
      ]
    }
    
    • Substitua iam-activity-logs-bucket pelo nome real do bucket.
  4. Clique em Salvar alterações.

Configurar o CloudTrail para capturar a atividade do IAM

  1. Faça login no Console de Gerenciamento da AWS.
  2. Na barra de pesquisa, digite e selecione CloudTrail na lista de serviços.
  3. Clique em Criar rastreamento.
  4. Informe os seguintes detalhes de configuração:
    • Nome do teste: insira um nome descritivo (por exemplo, IAMActivityTrail).
    • Aplicar rastreamento a todas as regiões: selecione Sim para capturar atividades em todas as regiões.
    • Local de armazenamento: selecione Usar bucket do S3 atual e escolha o bucket criado anteriormente.
    • Prefixo do arquivo de registro (opcional): insira um prefixo (por exemplo, iam-logs/).
    • Criptografia SSE-KMS do arquivo de registros: opcional. Se ativada, crie ou selecione uma chave do KMS.
  5. Clique em Próxima.
  6. Configurar a seleção de eventos:
    • Eventos de gerenciamento: selecione Leitura e Gravação para capturar eventos de leitura e gravação em recursos do IAM.
    • Eventos de dados: opcional. Ative os eventos de dados do S3 e do Lambda, se necessário.
    • Eventos de insights: opcional. Ative para detecção de atividades incomuns.
  7. Clique em Próxima.
  8. Revise a configuração e clique em Criar rastreamento.
  1. No console do Amazon S3, selecione seu bucket.
  2. Acesse Propriedades > Controle de versões do bucket.
  3. Clique em Editar.
  4. Selecione Ativar.
  5. Clique em Salvar alterações.

Criar um usuário do IAM para acesso ao S3 do Google SecOps

  1. Crie um usuário seguindo este guia: Como criar um usuário do IAM.
  2. Selecione o usuário criado.
  3. Selecione a guia Credenciais de segurança.
  4. Clique em Criar chave de acesso na seção Chaves de acesso.
  5. Selecione Serviço de terceiros como Caso de uso.
  6. Clique em Próxima.
  7. Opcional: adicione uma tag de descrição.
  8. Clique em Criar chave de acesso.
  9. Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para referência futura.
  10. Clique em Concluído.
  11. Selecione a guia Permissões.
  12. Clique em Adicionar permissões na seção Políticas de permissões.
  13. Selecione Adicionar permissões.
  14. Selecione Anexar políticas diretamente.
  15. Clique em Criar política em uma nova guia.
  16. No Editor de políticas, selecione a guia JSON.
  17. Insira a seguinte política:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:GetObject",
            "s3:ListBucket"
          ],
          "Resource": [
            "arn:aws:s3:::iam-activity-logs-bucket",
            "arn:aws:s3:::iam-activity-logs-bucket/*"
          ]
        }
      ]
    }
    
    • Substitua iam-activity-logs-bucket pelo nome real do bucket.
  18. Clique em Próxima.

  19. Nomeie a política como chronicle-s3-read-policy.

  20. Clique em Criar política.

  21. Volte para a guia de criação de usuários e atualize a lista de políticas.

  22. Pesquise e selecione chronicle-s3-read-policy.

  23. Clique em Próxima.

  24. Clique em Adicionar permissões

Opcional: criar a função do Lambda para exportação em tempo real

Se você precisar de uma exportação quase em tempo real dos registros do CloudTrail para o S3:

  1. No console da AWS, acesse Lambda > Functions > Create function.
  2. Clique em Criar do zero.
  3. Informe os seguintes detalhes de configuração:

    Configuração Valor
    Nome ExportIAMLogsToS3
    Ambiente de execução Python 3.13
    Arquitetura x86_64
    Função de execução Criar uma nova função com permissões básicas do Lambda
  4. Clique em Criar função.

  5. Depois que a função for criada, abra a guia Código, exclua o stub e insira o seguinte código:

    import boto3
    import gzip
    from io import BytesIO
    
    s3 = boto3.client('s3')
    logs = boto3.client('logs')
    
    def lambda_handler(event, context):
        log_group = event['logGroup']
        log_stream = event['logStream']
    
        log_events = logs.get_log_events(
            logGroupName=log_group,
            logStreamName=log_stream,
            startFromHead=True
        )
    
        log_data = "\n".join([event['message'] for event in log_events['events']])
    
        # Compress and upload to S3
        compressed_data = gzip.compress(log_data.encode('utf-8'))
        s3.put_object(
            Bucket='iam-activity-logs-bucket',
            Key=f'iam-logs/{log_stream}.gz',
            Body=compressed_data
        )
    
        return {
            'statusCode': 200,
            'body': 'Logs exported successfully'
        }
    
    • Substitua iam-activity-logs-bucket pelo nome do seu bucket.
  6. Clique em Implantar para salvar o código da função.

Opcional: configurar permissões de função de execução do Lambda

  1. Na mesma função, selecione a guia Configuração.
  2. Selecione Permissões no menu à esquerda.
  3. Clique no nome da função de execução para abrir no console do IAM.
  4. Clique em Adicionar permissões > Anexar políticas.
  5. Clique em Criar política em uma nova guia.
  6. Selecione a guia JSON e cole a seguinte política:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "logs:GetLogEvents",
            "logs:FilterLogEvents",
            "logs:DescribeLogGroups",
            "logs:DescribeLogStreams"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "s3:PutObject"
          ],
          "Resource": "arn:aws:s3:::iam-activity-logs-bucket/*"
        }
      ]
    }
    
    • Substitua iam-activity-logs-bucket pelo nome do seu bucket.
  7. Clique em Próxima.

  8. Nomeie a política como lambda-iam-logs-export-policy.

  9. Clique em Criar política.

  10. Volte para a guia "Função" e atualize.

  11. Pesquise e selecione lambda-iam-logs-export-policy.

  12. Clique em Adicionar permissões

Opcional: configurar o tempo limite do Lambda

  1. Na função do Lambda, permaneça na guia Configuração.
  2. Selecione Configuração geral no menu à esquerda.
  3. Clique em Editar.
  4. Mude Tempo limite para 5 minutos (300 segundos).
  5. Clique em Salvar.

Opcional: configurar o gatilho do Lambda para os registros do CloudWatch

  1. Na função do Lambda, selecione a seção Visão geral da função na parte de cima.
  2. Clique em Adicionar acionador.
  3. No menu suspenso Configuração do acionador, selecione Registros do CloudWatch.
  4. Informe os seguintes detalhes de configuração:
    • Grupo de registros: selecione ou insira o grupo de registros do CloudWatch Logs associado ao CloudTrail (por exemplo, /aws/cloudtrail/).
    • Nome do filtro: insira um nome descritivo, por exemplo, IAM-events-filter.
    • Padrão de filtro: deixe em branco para capturar todos os eventos ou insira um padrão específico.
  5. Clique em Adicionar.

Configurar feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:

  • Configurações do SIEM > Feeds > Adicionar novo feed
  • Hub de conteúdo > Pacotes de conteúdo > Comece já

Como configurar o feed do AWS IAM

  1. Clique no pacote Amazon Cloud Platform.
  2. Localize o tipo de registro IAM da AWS.
  3. Especifique os valores nos campos a seguir.

    • Tipo de origem: API de terceiros
    • Nome de usuário: nome de usuário para autenticação
    • Secret: chave secreta para autenticação.

    Opções avançadas

    • Nome do feed: um valor pré-preenchido que identifica o feed.
    • Namespace do recurso: namespace associado ao feed.
    • Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.
  4. Clique em Criar feed.

Para mais informações sobre como configurar vários feeds para diferentes tipos de registros nessa família de produtos, consulte Configurar feeds por produto.

Como usar as configurações do SIEM

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed (por exemplo, AWS IAM CloudTrail Logs).
  5. Selecione Amazon S3 V2 como o Tipo de origem.
  6. Selecione AWS IAM como o Tipo de registro.
  7. Clique em Próxima.
  8. Especifique valores para os seguintes parâmetros de entrada:

    • URI do S3: s3://iam-activity-logs-bucket/

      • Substitua iam-activity-logs-bucket pelo nome real do bucket.
    • Opção de exclusão da fonte: selecione a opção de exclusão de acordo com sua preferência:

      • Nunca: nunca exclui arquivos após as transferências (recomendado para testes).
      • Em caso de sucesso: exclui todos os arquivos e diretórios vazios após a transferência bem-sucedida (para otimização de custos).
    • Idade máxima do arquivo: inclui arquivos modificados no último número de dias. O padrão é de 180 dias.

    • ID da chave de acesso: chave de acesso do usuário com acesso ao bucket do S3.

    • Chave de acesso secreta: chave secreta do usuário com acesso ao bucket do S3.

    • Namespace do recurso: o namespace do recurso.

    • Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.

  9. Clique em Próxima.

  10. Revise a nova configuração do feed na tela Finalizar e clique em Enviar.

Método B: integração de API de terceiros

Esse método usa chamadas diretas da API do IAM da AWS para coletar dados de configuração atuais do IAM (usuários, grupos, papéis, políticas).

Receber intervalos de IP do Google SecOps

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Observe os intervalos de IP mostrados na parte de cima da página.
  4. Também é possível recuperar intervalos de IP de maneira programática usando a API Feed Management.

Criar um usuário do IAM com as permissões necessárias

  1. Crie um usuário seguindo este guia: Como criar um usuário do IAM.
  2. Selecione o usuário criado.
  3. Selecione a guia Credenciais de segurança.
  4. Clique em Criar chave de acesso na seção Chaves de acesso.
  5. Selecione Serviço de terceiros como Caso de uso.
  6. Clique em Próxima.
  7. Opcional: adicione uma tag de descrição.
  8. Clique em Criar chave de acesso.
  9. Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para referência futura.
  10. Clique em Concluído.
  11. Selecione a guia Permissões.
  12. Clique em Adicionar permissões na seção Políticas de permissões.
  13. Selecione Adicionar permissões.
  14. Selecione Anexar políticas diretamente.
  15. Pesquise IAMReadOnlyAccess (política gerenciada pela AWS).
  16. Selecione a política.
  17. Clique em Próxima.
  18. Clique em Adicionar permissões

Importante:a política IAMReadOnlyAccess inclui todas as permissões necessárias:

  • iam:GetUser
  • iam:ListUsers
  • iam:GetGroup
  • iam:ListGroups
  • iam:GetPolicy
  • iam:ListPolicies
  • iam:GetRole
  • iam:ListRoles
  • iam:ListAttachedUserPolicies
  • iam:ListAttachedGroupPolicies
  • iam:ListAttachedRolePolicies
  • iam:GetAccountSummary

Opção B: criar uma política personalizada (privilégio mínimo)

Se a sua política de segurança exigir permissões mínimas em vez da política gerenciada:

  1. No console da AWS, acesse IAM > Políticas > Criar política > guia JSON.
  2. Cole a seguinte política:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "iam:GetUser",
            "iam:ListUsers",
            "iam:GetGroup",
            "iam:ListGroups",
            "iam:GetPolicy",
            "iam:ListPolicies",
            "iam:GetRole",
            "iam:ListRoles",
            "iam:ListAttachedUserPolicies",
            "iam:ListAttachedGroupPolicies",
            "iam:ListAttachedRolePolicies",
            "iam:GetAccountSummary"
          ],
          "Resource": "*"
        }
      ]
    }
    
  3. Clique em Próxima.

  4. Nomeie a política como chronicle-iam-api-read-policy.

  5. Clique em Criar política.

  6. Crie um usuário seguindo este guia: Como criar um usuário do IAM.

  7. Selecione o usuário criado.

  8. Selecione a guia Credenciais de segurança.

  9. Clique em Criar chave de acesso na seção Chaves de acesso.

  10. Selecione Serviço de terceiros como Caso de uso.

  11. Clique em Próxima.

  12. Opcional: adicione uma tag de descrição.

  13. Clique em Criar chave de acesso.

  14. Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para referência futura.

  15. Clique em Concluído.

  16. Selecione a guia Permissões.

  17. Clique em Adicionar permissões na seção Políticas de permissões.

  18. Selecione Adicionar permissões.

  19. Selecione Anexar políticas diretamente.

  20. Pesquise e selecione chronicle-iam-api-read-policy.

  21. Clique em Próxima.

  22. Clique em Adicionar permissões

Configurar um feed no Google SecOps para ingerir dados de configuração do IAM

  1. Acesse Hub de conteúdo > Pacotes de conteúdo > Comece já.
  2. Clique no pacote Amazon Cloud Platform.
  3. Localize o tipo de registro IAM da AWS.
  4. Selecione API de terceiros no menu suspenso Tipo de origem.
  5. Informe os seguintes detalhes de configuração:
    • Nome de usuário: o ID da chave de acesso do usuário do IAM criado anteriormente.
    • Secret: a chave de acesso secreta do usuário do IAM criada anteriormente.
    • Nome do feed: um valor pré-preenchido que identifica o feed (por exemplo, AWS IAM API Configuration).
    • Namespace do recurso: namespace associado ao feed.
    • Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.
  6. Clique em Criar feed.

Para mais informações sobre como configurar vários feeds para diferentes tipos de registros nessa família de produtos, consulte Configurar feeds por produto.

Como usar as configurações do SIEM

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed (por exemplo, AWS IAM API Configuration).
  5. Selecione API de terceiros como o Tipo de fonte.
  6. Selecione AWS IAM como o Tipo de registro.
  7. Clique em Próxima.
  8. Especifique valores para os seguintes parâmetros de entrada:

    • Nome de usuário: o ID da chave de acesso do usuário do IAM criado anteriormente.
    • Secret: a chave de acesso secreta do usuário do IAM criada anteriormente.
    • Região: a região da AWS (por exemplo, us-east-1).
    • Namespace do recurso: o namespace do recurso.
    • Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.
  9. Clique em Próxima.

  10. Revise a nova configuração do feed na tela Finalizar e clique em Enviar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
Arn entity.entity.resource.name Mapeado diretamente do campo ARN. Aplicado a vários tipos de entidade. Para o tipo de entidade GROUP, mapeado de Group.Arn.
AssumeRolePolicyDocument entity.entity.resource.attribute.permissions.name Mapeado diretamente do campo "AssumeRolePolicyDocument", mas apenas para o tipo de entidade "RESOURCE".
CreateDate entity.entity.user.attribute.creation_time Mapeado diretamente do campo "CreateDate" e convertido para o formato de carimbo de data/hora do Chronicle.
CreateDate entity.entity.resource.attribute.creation_time Mapeado diretamente do campo "CreateDate" e convertido para o formato de carimbo de data/hora do Chronicle.
Group.Arn entity.entity.resource.name Mapeado diretamente do campo "Group.Arn".
Group.CreateDate entity.entity.group.attribute.creation_time Mapeado diretamente do campo "Group.CreateDate" e convertido para o formato de carimbo de data/hora do Chronicle.
Group.GroupID entity.entity.group.product_object_id Mapeado diretamente do campo "Group.GroupID".
Group.GroupName entity.entity.group.group_display_name Mapeado diretamente do campo "Group.GroupName".
Group.GroupName entity.entity.group.email_addresses Mapeado diretamente do campo "Group.GroupName".
Group.Path entity.entity.group.attribute.labels.value Mapeada diretamente do campo "Group.Path", a chave é codificada como "path".
IsTruncated entity.entity.group.attribute.labels.value Mapeado diretamente do campo "IsTruncated" convertido em string, a chave é fixada no código como "is_truncated".
Marker entity.entity.group.attribute.labels.value Mapeado diretamente do campo "Marker", a chave é codificada como "marker".
PasswordLastUsed entity.entity.user.last_login_time Mapeado diretamente do campo "PasswordLastUsed" e convertido para o formato de carimbo de data/hora do Chronicle.
Path entity.entity.user.attribute.labels.value Mapeado diretamente do campo "Path" para o tipo de entidade "USER". A chave é codificada como "path".
Path entity.entity.resource.attribute.labels.value Mapeado diretamente do campo "Path" para o tipo de entidade "RESOURCE", a chave é codificada como "path".
PermissionsBoundary.PermissionsBoundaryArn entity.entity.resource.attribute.labels.value Mapeado diretamente do campo "PermissionsBoundary.PermissionsBoundaryArn". A chave é codificada como "permissions_boundary_arn".
PermissionsBoundary.PermissionsBoundaryType entity.entity.resource.attribute.labels.value Mapeado diretamente do campo "PermissionsBoundary.PermissionsBoundaryType", a chave é codificada como "permissions_boundary_type".
RoleID entity.entity.resource.product_object_id Mapeado diretamente do campo "RoleID".
RoleLastUsed.LastUsedDate entity.entity.resource.attribute.labels.value Mapeado diretamente do campo "RoleLastUsed.LastUsedDate". A chave é codificada como "role_last_used_date".
RoleLastUsed.Region entity.entity.location.name Mapeado diretamente do campo "RoleLastUsed.Region".
RoleName entity.entity.resource.attribute.roles.name Mapeado diretamente do campo "RoleName".
Tags.Key entity.entity.user.attribute.labels.key Usado como a chave dos rótulos na entidade do usuário.
Tags.Value entity.entity.user.attribute.labels.value Usado como o valor dos rótulos na entidade do usuário.
UserID entity.entity.user.product_object_id Mapeado diretamente do campo "UserID".
UserName entity.entity.user.userid Mapeado diretamente do campo "UserName".
Users.Arn relations.entity.resource.name Mapeado diretamente do campo "Users.Arn" na relação do usuário.
Users.CreateDate relations.entity.user.attribute.creation_time Mapeado diretamente do campo "Users.CreateDate" na relação do usuário e convertido para o formato de carimbo de data/hora do Chronicle.
Users.PasswordLastUsed relations.entity.user.last_login_time Mapeado diretamente do campo "Users.PasswordLastUsed" na relação de usuário e convertido para o formato de carimbo de data/hora do Chronicle.
Users.Path relations.entity.user.attribute.labels.value Mapeada diretamente do campo Users.Path na relação do usuário, a chave é codificada como caminho.
Users.PermissionsBoundary.PermissionsBoundaryArn relations.entity.resource.attribute.labels.value Mapeado diretamente do campo "Users.PermissionsBoundary.PermissionsBoundaryArn" na relação do usuário. A chave é codificada como "permissions_boundary_arn".
Users.PermissionsBoundary.PermissionsBoundaryType relations.entity.resource.attribute.labels.value Mapeado diretamente do campo "Users.PermissionsBoundary.PermissionsBoundaryType" na relação do usuário. A chave é codificada como "permissions_boundary_type".
Users.UserID relations.entity.user.product_object_id Mapeado diretamente do campo "Users.UserID" na relação do usuário.
Users.UserName relations.entity.user.userid Mapeado diretamente do campo "Users.UserName" na relação de usuário.
N/A entity.metadata.collected_timestamp Preenchido com o carimbo de data/hora da ingestão de eventos.
N/A entity.metadata.vendor_name Fixado no código como AWS.
N/A entity.metadata.product_name Codificado no IAM da AWS.
N/A entity.metadata.entity_type Determinado com base na presença de campos específicos: USER se UserID existir, RESOURCE se RoleID existir, GROUP se Group.GroupName existir.
N/A entity.entity.resource.resource_subtype Defina como "User" para USER e "Role" para RESOURCE.
N/A entity.entity.resource.resource_type Definido como ACCESS_POLICY para o tipo de entidade RESOURCE.
N/A entity.entity.resource.attribute.cloud.environment Fixado no código como AMAZON_WEB_SERVICES.
N/A relations.entity_type Codificado como USER para relações de usuário.
N/A relations.relationship Codificado como MEMBER para relações de grupo de usuários.
N/A relations.direction Fixado no código como UNIDIRECTIONAL.
N/A relations.entity.resource.resource_subtype Codificado como "User" para relações de usuário.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.