Monitoreo de registros de auditoría en Amazon OpenSearch Service - Amazon OpenSearch Service

Monitoreo de registros de auditoría en Amazon OpenSearch Service

Si el dominio de Amazon OpenSearch Service utiliza un control de acceso detallado, puede habilitar registros de auditoría para los datos. Los registros de auditoría se pueden personalizar en gran medida y permiten realizar un seguimiento de la actividad de los usuarios en los clústeres de OpenSearch, incluidos los aciertos y los errores de autenticación, las solicitudes a OpenSearch, los cambios de índice y las consultas de búsqueda entrantes. La configuración predeterminada realiza un seguimiento de un conjunto común de acciones de usuario, pero recomendamos adaptar la configuración a las necesidades exactas.

Al igual que con los Registros de aplicaciones y registros lentos de OpenSearch, OpenSearch Service publica registros de auditoría en CloudWatch Logs. Si están habilitados, se aplica el precio estándar de CloudWatch.

nota

Para habilitar los registros de auditoría, el rol de usuario debe ser asignado al rol security_manager, que brinda acceso a la API REST plugins/_security de OpenSearch. Para obtener más información, consulte Modificar el usuario maestro.

Limitaciones

Los registros de auditoría presentan las siguientes limitaciones:

  • Los registros de auditoría no incluyen peticiones de búsqueda entre clústeres rechazadas por la política de acceso al dominio de destino.

  • El tamaño máximo de cada mensaje de registro de auditoría es de 10 000 caracteres. El mensaje del registro de auditoría se trunca si se supera este límite.

Habilitación de los registros de auditoría

La habilitación de registros de auditoría es un proceso de dos pasos. Primero, debe configurar el dominio para publicar registros de auditoría en CloudWatch Logs. Después, debe habilitar los registros de auditoría en OpenSearch Dashboards y configurarlos según sus necesidades.

importante

Si encuentra un error al seguir estos pasos, consulte No se pueden habilitar los registros de auditoría para obtener información para la resolución de problemas.

Paso 1: Habilitar los registros de auditoría y configurar una política de acceso

En estos pasos se describe cómo habilitar los registros de auditoría con la consola. También puede habilitarlos mediante la AWS CLI o la API del servicio OpenSearch.

Para habilitar los registros de auditoría para un dominio de OpenSearch Service (consola)
  1. Seleccione el dominio para abrir su configuración y, a continuación, vaya a la pestaña Registros.

  2. Seleccione Registros de auditoría y, luego Habilitar.

  3. Cree un grupo de registros CloudWatch Logs o elija uno existente.

  4. Seleccione una política de acceso que contenga los permisos adecuados o cree una política mediante el JSON que proporciona la consola:

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

    Le recomendamos que agregue las claves de condición aws:SourceAccount y aws:SourceArn para protegerse contra la política problema del suplente confuso. La cuenta de origen es la propietaria del dominio y el ARN de origen es el ARN del dominio. Su dominio debe estar en el software de servicio R20211203 o posterior para agregar estas claves de condición.

    Por ejemplo, podría agregar el siguiente bloque de condición a la política:

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

Paso 2: Activar los registros de auditoría en OpenSearch Dashboards

Después de habilitar los registros de auditoría en la consola de OpenSearch Service, también debe habilitarlos en OpenSearch Dashboards y configurarlos según sus necesidades.

  1. Abra OpenSearch Dashboards y seleccione Seguridad del menú a la izquierda.

  2. Seleccione Registros de auditoría.

  3. Seleccione Habilitar registro de auditoría.

La interfaz de usuario de Dashboards ofrece un control total de la configuración del registro de auditoría en Configuración general y en Configuración de la conformidad. Para obtener una descripción de todas las opciones de configuración, consulte Configuración del registro de auditoría.

Habilite el registro de auditoría con la AWS CLI

El siguiente comando de la AWS CLI habilita los registros de auditoría en un dominio 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}"

También puede habilitar registros de auditoría al crear un dominio. Para obtener más información, consulte la Referencia de comandos de la AWS CLI.

Habilite el registro de auditoría con la API de configuración

La siguiente solicitud a la API de configuración habilita los registros de auditoría en un dominio 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 obtener más información, consulte la Referencia de la API de Amazon OpenSearch Service.

Categorías y capas de registro de auditoría

La comunicación del clúster se produce a través de dos capas independientes: la capa REST y la capa de transporte.

  • La capa REST se encarga de la comunicación con clientes HTTP como curl, Logstash, OpenSearch Dashboards, el cliente REST de alto nivel de Java, la biblioteca de solicitudes de Python; todas las solicitudes HTTP que llegan al clúster.

  • La capa de transporte se encarga de la comunicación entre nodos. Por ejemplo, después de que una petición de búsqueda llega al clúster (en la capa REST), el nodo de coordinación que se encarga de la solicitud envía la consulta a otros nodos, recibe sus respuestas, reúne los documentos necesarios y los reúne en la respuesta final. Las operaciones como la asignación de particiones y el reequilibrio también se producen en la capa de transporte.

Puede habilitar o deshabilitar los registros de auditoría para capas enteras, así como las categorías de auditoría individuales de una capa. La siguiente tabla contiene un resumen de las categorías de auditoría y las capas para las que están disponibles.

Categoría Descripción Disponible para REST Disponible para transporte

FAILED_LOGIN

Una solicitud contenía credenciales no válidas y la autenticación falló.

MISSING_PRIVILEGES

Un usuario no poseía los privilegios para realizar la solicitud.

GRANTED_PRIVILEGES

Un usuario poseía los privilegios para realizar la solicitud.

OPENSEARCH_SECURITY_INDEX_ATTEMPT

Una solicitud intentó modificar el índice .opendistro_security. No

AUTHENTICATED

Una solicitud contenía credenciales válidas y la autenticación se realizó correctamente.

INDEX_EVENT

Una solicitud realizó una operación administrativa con un índice, como crearlo, establecer un alias o realizar una combinación de fuerza. La lista completa de acciones indices:admin/ que incluye esta categoría están disponibles en la documentación de OpenSearch. No

Además de estas categorías estándar, el control de acceso detallado ofrece varias categorías adicionales diseñadas para cumplir con los requisitos de conformidad de los datos.

Categoría Descripción

COMPLIANCE_DOC_READ

Una solicitud realizó un evento de lectura en un documento en un índice.

COMPLIANCE_DOC_WRITE

Una solicitud realizó un evento de escritura en un documento en un índice.

COMPLIANCE_INTERNAL_CONFIG_READ

Una solicitud realizó un evento de lectura en el índice .opendistro_security.

COMPLIANCE_INTERNAL_CONFIG_WRITE

Una solicitud realizó un evento de escritura en el índice .opendistro_security.

Puede utilizar cualquier combinación de categorías y atributos de mensaje. Por ejemplo, si envía una solicitud REST para indexar un documento, podría ver las siguientes líneas en los registros de auditoría:

  • AUTHENTICATED en la capa REST (autenticación)

  • GRANTED_PRIVILEGE en la capa de transporte (autorización)

  • COMPLIANCE_DOC_WRITE (documento escrito en un índice)

Configuración de registros de auditoría

Los registros de auditoría cuentan con numerosas opciones de configuración.

Configuración general

La configuración general permite habilitar o deshabilitar categorías individuales o capas enteras. Recomendamos encarecidamente mantener GRANTED_PRIVILEGES y AUTHENTICATED como categorías excluidas. De lo contrario, estas categorías se registran en cada solicitud válida al clúster.

Nombre Configuración del backend Descripción

Capa REST

enable_rest

Habilite o deshabilite los eventos que se producen en la capa REST.

Categorías REST deshabilitadas

disabled_rest_categories

Especifique las categorías de auditoría que se omitirán en la capa REST. La modificación de estas categorías puede aumentar drásticamente el tamaño de los registros de auditoría.

Capa de transporte

enable_transport

Habilite o deshabilite eventos que ocurren en la capa de transporte.

Categorías de transporte deshabilitadas

disabled_transport_categories

Especifique las categorías de auditoría que deben omitirse en la capa de transporte. La modificación de estas categorías puede aumentar drásticamente el tamaño de los registros de auditoría.

La configuración de atributos permite personalizar la cantidad de detalles en cada línea de registro.

Nombre Configuración del backend Descripción

Solicitudes masivas

resolve_bulk_requests

Habilitar esta configuración genera un registro para cada documento de una solicitud masiva, lo que puede aumentar drásticamente el tamaño de los registros de auditoría.

Cuerpo de la solicitud

log_request_body

Incluya el cuerpo de la solicitud de las solicitudes.

Resolver índices

resolve_indices

Resolver alias a índices.

Utilice la configuración de ignorar para excluir un conjunto de usuarios o rutas de API:

Nombre Configuración del backend Descripción

Usuarios ignorados

ignore_users

Especifique los usuarios que desea excluir.

Solicitudes ignoradas

ignore_requests

Especifique los patrones de solicitud que desea excluir.

Configuración de la conformidad

La configuración de la conformidad permite ajustar el acceso a nivel del índice, del documento o del campo.

Nombre Configuración del backend Descripción

Registro de conformidad

enable_compliance

Para habilitar o deshabilitar el registro de conformidad.

Puede especificar la siguiente configuración para el registro de eventos de lectura y escritura.

Nombre Configuración del backend Descripción

Registro de configuración interno

internal_config

Habilite o deshabilite el registro de eventos en el índice .opendistro_security.

Puede especificar la siguiente configuración para el registro de eventos de lectura.

Nombre Configuración del backend Descripción

Metadatos de lectura

read_metadata_only

Incluya solo metadatos para eventos de lectura. No incluya ningún campo de documento.

Usuarios ignorados

read_ignore_users

No incluya ciertos usuarios para eventos de lectura.

Campos observados

read_watched_fields

Especifique los índices y campos que se van a observar en busca de eventos de lectura. Agregar campos vigilados genera un registro por cada acceso a los documentos, lo que puede aumentar drásticamente el tamaño de los registros de auditoría. Los campos observados admiten patrones de índice y patrones de campo:

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

Puede especificar la siguiente configuración para eventos de escritura.

Nombre Configuración del backend Descripción

Metadatos de escritura

write_metadata_only

Incluya solo metadatos para eventos de escritura. No incluya ningún campo de documento.

Diferencias de registro

write_log_diffs

Si write_metadata_only es falso, incluya solo las diferencias entre los eventos de escritura.

Usuarios ignorados

write_ignore_users

No incluya ciertos usuarios para eventos de escritura.

Índices de seguimiento

write_watched_indices

Especifique los índices o patrones de índice para observar los eventos de escritura. Agregar campos vigilados genera un registro por cada acceso a los documentos, lo que puede aumentar drásticamente el tamaño de los registros de auditoría.

Ejemplo de registro de auditoría

Esta sección incluye un ejemplo de configuración, una petición de búsqueda y el registro de auditoría resultante para todos los eventos de lectura y escritura de un índice.

Paso 1: configurar los registros de auditoría

Después de habilitar la publicación de registros de auditoría en un grupo de CloudWatch Logs, vaya a la página de registro de auditoría de OpenSearch Dashboards y elija Habilitar registro de auditoría.

  1. En Configuración general, seleccione Configurar y asegúrese de que la capa REST esté habilitada.

  2. En Configuración de la conformidad, seleccione Configurar.

  3. En Escritura, en Campos observados, agregue accounts para todos los eventos de escritura en este índice.

  4. En Lectura, en Campos observados, agregue los campos ssn y id- del índiceaccounts:

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

Paso 2: realizar eventos de lectura y escritura

  1. Vaya a OpenSearch Dashboards, seleccione Herramientas para desarrolladores e indexe un documento de ejemplo:

    PUT accounts/_doc/0 { "ssn": "123", "id-": "456" }
  2. Para probar un evento de lectura, envíe la siguiente solicitud:

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

Paso 3: observar los registros

  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación, seleccione Grupos de registro.

  3. Seleccione el grupo de registros que especificó al habilitar registros de auditoría. Dentro del grupo de registros, OpenSearch Service crea un flujo de registros para cada nodo del dominio.

  4. En Flujos de registros, seleccione Buscar todos.

  5. Para los eventos de lectura y escritura, consulte los registros correspondientes. Puede existir una demora de 5 segundos antes de que aparezca el registro.

    Ejemplo de registro de auditoría de escritura

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

    Ejemplo de registro de auditoría de lectura

    { "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 el cuerpo de la solicitud, vuelva a Configuración de la conformidad en OpenSearch Dashboards y deshabilite Metadatos de escritura. Para excluir eventos de un usuario específico, agregue el usuario a Usuarios ignorados.

Para obtener una descripción de cada campo de registro de auditoría, consulte la Referencia de campo del registro de auditoría. Para obtener información sobre cómo buscar y analizar los datos del registro de auditoría, consulte Análisis de los datos de registros con Información de registros de Amazon CloudWatch en la Guía del usuario de Registros de Amazon CloudWatch.

Configuración de registros de auditoría mediante la API REST

Recomendamos utilizar OpenSearch Dashboards para configurar los registros de auditoría, pero también puede utilizar la API REST de control de acceso detallado. Esta sección contiene una solicitud de ejemplo. La documentación completa sobre la API REST está disponible en la documentación de OpenSearch.

PUT _opendistro/_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" ] } }