Monitorando registros de auditoria no Amazon OpenSearch Service - OpenSearch Serviço Amazon

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á.

Monitorando registros de auditoria no Amazon OpenSearch Service

Se o seu domínio do Amazon OpenSearch Service usa controle de acesso refinado, você pode habilitar registros de auditoria para seus dados. Os registros de auditoria são altamente personalizáveis e permitem que você acompanhe a atividade do usuário em seus OpenSearch clusters, incluindo sucesso e falhas de autenticação, solicitações OpenSearch, alterações de índice e consultas de pesquisa recebidas. A configuração padrão monitora um conjunto popular de ações do usuário, mas recomendamos adaptar as configurações às suas necessidades exatas.

Assim como os registros de OpenSearch aplicativos e os registros lentos, o OpenSearch Service publica registros de auditoria no CloudWatch Logs. Se ativado, o CloudWatch preço padrão se aplica.

nota

Para ativar os registros de auditoria, sua função de usuário deve ser mapeada para a security_manager função, o que lhe dá acesso à API OpenSearch plugins/_security REST. Para saber mais, consulte Modificação do usuário primário.

Limitações

Os logs de auditoria têm as seguintes limitações:

  • Os logs de auditoria não incluem solicitações de pesquisa entre clusters que foram rejeitadas pela política de acesso ao domínio do destino.

  • O tamanho máximo de cada mensagem do log de auditoria é 10.000 caracteres. A mensagem do log de auditoria será truncada se exceder esse limite.

Habilitação dos logs de auditoria

A habilitação dos logs de auditoria é um processo em duas etapas. Primeiro, você configura seu domínio para publicar registros de auditoria no CloudWatch Logs. Em seguida, você ativa os registros de auditoria nos OpenSearch painéis e os configura para atender às suas necessidades.

Importante

Se você encontrar um erro ao seguir essas etapas, consulte Não é possível habilitar logs de auditoria para obter informações de solução de problemas.

Etapa 1: ativar registros de log e configurar uma política de acesso

Estas etapas descrevem como habilitar logs de auditoria usando o console. Você também pode habilitá-los usando o AWS CLI, ou a API OpenSearch de serviço.

Para habilitar registros de auditoria para um domínio OpenSearch de serviço (console)
  1. Escolha o domínio para abrir sua configuração e, em seguida, acesse a guia Logs.

  2. Selecione Logs de auditoria e, em seguida, Habilitar.

  3. Crie um grupo de CloudWatch registros ou escolha um existente.

  4. Escolha uma política de acesso que contenha as permissões apropriadas ou crie uma política usando o JSON fornecido pelo console:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "cw_log_group_arn" } ] }

    Recomendamos que você adicione as chaves de condição aws:SourceAccount e aws:SourceArn na política para se proteger contra o problema confused deputy. A conta de origem é o proprietário do domínio e o ARN de origem é o ARN do domínio. Para adicionar essas chaves de condição, o seu domínio deve estar no software de serviço R20211203 ou superior.

    Por exemplo, você poderia adicionar o bloco de condições a seguir na política:

    "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:es:region:account-id:domain/domain-name" } }
  5. Escolha Habilitar.

Etapa 2: ativar os registros de auditoria nos OpenSearch painéis

Depois de habilitar os registros de auditoria no console de OpenSearch serviços, você também deve habilitá-los nos OpenSearch painéis e configurá-los para atender às suas necessidades.

  1. Abra OpenSearch Painéis e escolha Segurança no menu do lado esquerdo.

  2. Escolha Logs de auditoria.

  3. Escolha Habilitar log de auditoria.

A interface do usuário do Dashboars oferece controle total das configurações do log de auditoria emConfigurações gerais e Configurações de compatibilidade. Para obter uma descrição de todas as opções de configuração, consulte Configurações de log de auditoria.

Ative o registro de auditoria usando o AWS CLI

O AWS CLI comando a seguir ativa registros de auditoria em um domínio existente:

aws opensearch update-domain-config --domain-name my-domain --log-publishing-options "AUDIT_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-log-group,Enabled=true}"

Você também pode habilitar os logs de auditoria ao criar um domínio. Para obter mais informações, consulte a Referência de comandos daAWS CLI.

Habilitar o registro de auditoria em log usando a API de configuração

A seguinte solicitação para a API de configuração habilita os logs de auditoria em um domínio existente:

POST https://es.us-east-1.amazonaws.com/2021-01-01/opensearch/domain/my-domain/config { "LogPublishingOptions": { "AUDIT_LOGS": { "CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:123456789012:log-group1:sample-domain", "Enabled":true } } }

Para obter mais informações, consulte a referência da Amazon OpenSearch Service API.

Camadas e categorias do log de auditoria

A comunicação do cluster ocorre em duas camadas separadas: a camada REST e a camada de transporte.

  • A camada REST abrange a comunicação com clientes HTTP, como curl, Logstash, OpenSearch Dashboards, o cliente REST de alto nível Java, a biblioteca Python Requests — todas as solicitações HTTP que chegam ao cluster.

  • A camada de transporte cobre a comunicação entre nós. Por exemplo, depois que uma solicitação de pesquisa chega ao cluster (sobre a camada REST), o nó de coordenação que atende à solicitação envia a consulta para outros nós, recebe suas respostas, coleta os documentos necessários e os reúne na resposta final. Operações como alocação de fragmentos e rebalanceamento também ocorrem sobre a camada de transporte.

Você pode habilitar ou desabilitar logs de auditoria para camadas inteiras, bem como categorias de auditoria individuais para uma camada. A tabela a seguir contém um resumo das categorias de auditoria e das camadas para as quais elas estão disponíveis.

Categoria Descrição Disponível para REST Disponível para transporte

FAILED_LOGIN

Uma solicitação continha credenciais inválidas, e a autenticação falhou. Sim Sim

MISSING_PRIVILEGES

Um usuário não tinha os privilégios necessários para fazer a solicitação. Sim Sim

GRANTED_PRIVILEGES

Um usuário tinha os privilégios necessários para fazer a solicitação. Sim Sim

OPENSEARCH_SECURITY_INDEX_ATTEMPT

Uma solicitação tentou modificar o índice .opendistro_security. Não Sim

AUTHENTICATED

Uma solicitação continha credenciais válidas e a autenticação foi bem-sucedida. Sim Sim

INDEX_EVENT

Uma solicitação executou uma operação administrativa em um índice, como criar um, definir um alias ou executar uma mesclagem forçada. A lista completa de indices:admin/ ações que essa categoria inclui está disponível na OpenSearch documentação. Não Sim

Além dessas categorias padrão, o controle de acesso refinado oferece várias categorias adicionais projetadas para atender aos requisitos de conformidade de dados.

Categoria Descrição

COMPLIANCE_DOC_READ

Uma solicitação executou um evento de leitura em um documento em um índice.

COMPLIANCE_DOC_WRITE

Uma solicitação executou um evento de gravação em um documento em um índice.

COMPLIANCE_INTERNAL_CONFIG_READ

Uma solicitação executou um evento de leitura no índice .opendistro_security.

COMPLIANCE_INTERNAL_CONFIG_WRITE

Uma solicitação executou um evento de gravação no índice .opendistro_security.

Você pode ter qualquer combinação de categorias e atributos de mensagem. Por exemplo, se você enviar uma solicitação REST para indexar um documento, poderá ver as seguintes linhas nos logs de auditoria:

  • AUTHENTICATED na camada REST (autenticação)

  • GRANTED_PRIVILEGE na camada de transporte (autorização)

  • COMPLIANCE_DOC_WRITE (documento gravado em um índice)

Configurações do log de auditoria

Há várias opções de configuração para os logs de auditoria.

Configurações gerais

As configurações gerais permitem habilitar ou desabilitar categorias individuais ou camadas inteiras. Recomendamos enfaticamente manter GRANTED_PRIVILEGES e AUTHENTICATED como categorias excluídas. Caso contrário, essas categorias serão registradas para cada solicitação válida para o cluster.

Nome Configuração de backend Descrição

Camada REST

enable_rest

Habilite ou desabilite eventos que ocorrem na camada REST.

Categorias desabilitadas de REST

disabled_rest_categories

Especifique categorias de auditoria a serem ignoradas na camada REST. Modificar essas categorias pode aumentar drasticamente o tamanho dos logs de auditoria.

Transport Layer

enable_transport

Habilite ou desabilite eventos que acontecem na camada de transporte.

Categorias desabilitadas de transporte

disabled_transport_categories

Especifique categorias de auditoria que devem ser ignoradas na camada de transporte. Modificar essas categorias pode aumentar drasticamente o tamanho dos logs de auditoria.

As configurações de atributo permitem personalizar a quantidade de detalhes em cada linha de log.

Nome Configuração de backend Descrição

Solicitações em massa

resolve_bulk_requests

Habilitar essa configuração gera um log para cada documento em uma solicitação em massa, o que pode aumentar drasticamente o tamanho dos logs de auditoria.

Corpo da solicitação

log_request_body

Inclua o corpo da solicitação das solicitações.

Resolver índices

resolve_índices

Resolva aliases em índices.

Use as configurações de ignorar para excluir um conjunto de usuários ou caminhos de API:

Nome Configuração de backend Descrição

Usuários ignorados

ignore_users

Especifique os usuários que não deseja incluir.

Solicitações ignoradas

ignore_requests

Especifique padrões de solicitação que não deseja incluir.

Configurações de conformidade

As configurações de conformidade permitem ajustar o acesso ao índice, ao documento ou ao nível de campo.

Nome Configuração de backend Descrição

Log de compatibilidade

enable_compliance

Habilite ou desabilite o log de compatibilidade

Você pode especificar as configurações a seguir para o log de eventos de leitura e gravação.

Nome Configuração de backend Descrição

Log de configuração interno

internal_config

Habilite ou desabilite o log de eventos no índice .opendistro_security.

Você pode especificar as configurações a seguir para eventos de leitura.

Nome Configuração de backend Descrição

Ler metadados

read_metadata_only

Incluir apenas metadados para eventos de leitura. Não inclua campos de documento.

Usuários ignorados

read_ignore_users

Não inclua determinados usuários para eventos de leitura.

Campos observados

read_watched_fields

Especifique os índices e campos a serem observados para eventos de leitura. A adição de campos observados gera um log por acesso ao documento, o que pode aumentar drasticamente o tamanho dos logs de auditoria. Os campos observados oferecem suporte a padrões de índice e padrões de campo:

{ "index-name-pattern": [ "field-name-pattern" ], "logs*": [ "message" ], "twitter": [ "id", "user*" ] }

Você pode especificar as configurações a seguir para eventos de gravação.

Nome Configuração de backend Descrição

Metadados de gravação

write_metadata_only

Inclua metadados somente para eventos de gravação. Não inclua campos de documento.

Diferenças de log

write_log_diffs

Se write_metadata_only for false (falso), inclua somente as diferenças entre eventos de gravação.

Usuários ignorados

write_ignore_users

Não inclua determinados usuários para eventos de gravação.

Observar índices

write_watched_índices

Especifique os índices ou padrões de índice para observar eventos de gravação. A adição de campos observados gera um log por acesso ao documento, o que pode aumentar drasticamente o tamanho dos logs de auditoria.

Exemplo de log de auditoria

Esta seção inclui um exemplo de configuração, solicitação de pesquisa e o log de auditoria resultante para todos os eventos de leitura e gravação de um índice.

Etapa 1: Configurar logs de auditoria

Depois de habilitar a publicação de registros de auditoria em um grupo de CloudWatch registros, navegue até a página de registro de auditoria de OpenSearch painéis e escolha Habilitar registro de auditoria.

  1. Em Configurações gerais, escolha Configurar e certifique-se de que a opção Camada REST esteja habilitada.

  2. Em Configurações de compatibilidade, escolha Configurar.

  3. Em Gravação, em Campos observados, adicione accounts para todos os eventos de gravação neste índice.

  4. Em Leitura, na seção Campos observados, adicione os campos ssn e id- do índice accounts:

    { "accounts-": [ "ssn", "id-" ] }

Etapa 2: Executar eventos de leitura e gravação

  1. Navegue até OpenSearch Painéis, escolha Dev Tools e indexe um documento de amostra:

    PUT accounts/_doc/0 { "ssn": "123", "id-": "456" }
  2. Para testar um evento de leitura, envie a seguinte solicitação:

    GET accounts/_search { "query": { "match_all": {} } }

Etapa 3: Observar os logs

  1. Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/.

  2. No painel de navegação, escolha Grupos de logs.

  3. Escolha o grupo de logs que você especificou ao habilitar os logs de auditoria. Dentro do grupo de registros, o OpenSearch Service cria um fluxo de registros para cada nó em seu domínio.

  4. Em Fluxos de log, escolha Pesquisar tudo.

  5. Para os eventos de leitura e gravação, consulte os logs correspondentes. Um atraso de 5 segundos antes do log ser exibido é normal.

    Exemplo de gravação de log de auditoria

    { "audit_compliance_operation": "CREATE", "audit_cluster_name": "824471164578:audit-test", "audit_node_name": "be217225a0b77c2bd76147d3ed3ff83c", "audit_category": "COMPLIANCE_DOC_WRITE", "audit_request_origin": "REST", "audit_compliance_doc_version": 1, "audit_node_id": "3xNJhm4XS_yTzEgDWcGRjA", "@timestamp": "2020-08-23T05:28:02.285+00:00", "audit_format_version": 4, "audit_request_remote_address": "3.236.145.227", "audit_trace_doc_id": "lxnJGXQBqZSlDB91r_uZ", "audit_request_effective_user": "admin", "audit_trace_shard_id": 8, "audit_trace_indices": [ "accounts" ], "audit_trace_resolved_indices": [ "accounts" ] }

    Exemplo de leitura de log de auditoria

    { "audit_cluster_name": "824471164578:audit-docs", "audit_node_name": "806f6050cb45437e2401b07534a1452f", "audit_category": "COMPLIANCE_DOC_READ", "audit_request_origin": "REST", "audit_node_id": "saSevm9ASte0-pjAtYi2UA", "@timestamp": "2020-08-31T17:57:05.015+00:00", "audit_format_version": 4, "audit_request_remote_address": "54.240.197.228", "audit_trace_doc_id": "config:7.7.0", "audit_request_effective_user": "admin", "audit_trace_shard_id": 0, "audit_trace_indices": [ "accounts" ], "audit_trace_resolved_indices": [ "accounts" ] }

Para incluir o corpo da solicitação, retorne às configurações de conformidade nos OpenSearch painéis e desative a opção Gravar metadados. Para excluir eventos por um usuário específico, adicione o usuário a Usuários Ignorados.

Para obter uma descrição de cada campo do log de auditoria, consulte Referência de campos do log de auditoria. Para obter informações sobre como pesquisar e analisar seus dados de registro de auditoria, consulte Análise de dados de log com o CloudWatch Logs Insights no Guia do usuário do Amazon CloudWatch Logs.

Configuração de logs de auditoria usando a API REST

Recomendamos o uso de OpenSearch painéis para configurar registros de auditoria, mas você também pode usar a API REST de controle de acesso refinada. Esta seção contém uma solicitação de exemplo. A documentação completa sobre a API REST está disponível na OpenSearchdocumentação.

PUT _plugins/_security/api/audit/config { "enabled": true, "audit": { "enable_rest": true, "disabled_rest_categories": [ "GRANTED_PRIVILEGES", "AUTHENTICATED" ], "enable_transport": true, "disabled_transport_categories": [ "GRANTED_PRIVILEGES", "AUTHENTICATED" ], "resolve_bulk_requests": true, "log_request_body": true, "resolve_indices": true, "exclude_sensitive_headers": true, "ignore_users": [ "kibanaserver" ], "ignore_requests": [ "SearchRequest", "indices:data/read/*", "/_cluster/health" ] }, "compliance": { "enabled": true, "internal_config": true, "external_config": false, "read_metadata_only": true, "read_watched_fields": { "read-index-1": [ "field-1", "field-2" ], "read-index-2": [ "field-3" ] }, "read_ignore_users": [ "read-ignore-1" ], "write_metadata_only": true, "write_log_diffs": false, "write_watched_indices": [ "write-index-1", "write-index-2", "log-*", "*" ], "write_ignore_users": [ "write-ignore-1" ] } }