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.
Temas
- Limitaciones
- Habilitación de los registros de auditoría
- Habilite el registro de auditoría con la AWS CLI
- Habilite el registro de auditoría con la API de configuración
- Categorías y capas de registro de auditoría
- Configuración de registros de auditoría
- Ejemplo de registro de auditoría
- Configuración de registros de auditoría mediante la API REST
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)
-
Seleccione el dominio para abrir su configuración y, a continuación, vaya a la pestaña Registros.
-
Seleccione Registros de auditoría y, luego Habilitar.
-
Cree un grupo de registros CloudWatch Logs o elija uno existente.
-
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
yaws: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
" } } -
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.
-
Abra OpenSearch Dashboards y seleccione Seguridad del menú a la izquierda.
-
Seleccione Registros de auditoría.
-
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ó. | Sí | Sí |
MISSING_PRIVILEGES |
Un usuario no poseía los privilegios para realizar la solicitud. | Sí | Sí |
GRANTED_PRIVILEGES |
Un usuario poseía los privilegios para realizar la solicitud. | Sí | Sí |
OPENSEARCH_SECURITY_INDEX_ATTEMPT |
Una solicitud intentó modificar el índice .opendistro_security . |
No | Sí |
AUTHENTICATED |
Una solicitud contenía credenciales válidas y la autenticación se realizó correctamente. | Sí | Sí |
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 | Sí |
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 |
COMPLIANCE_INTERNAL_CONFIG_WRITE |
Una solicitud realizó un evento de escritura en el índice |
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 |
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:
|
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.
-
En Configuración general, seleccione Configurar y asegúrese de que la capa REST esté habilitada.
-
En Configuración de la conformidad, seleccione Configurar.
-
En Escritura, en Campos observados, agregue
accounts
para todos los eventos de escritura en este índice. -
En Lectura, en Campos observados, agregue los campos
ssn
yid-
del índiceaccounts
:{ "accounts-": [ "ssn", "id-" ] }
Paso 2: realizar eventos de lectura y escritura
-
Vaya a OpenSearch Dashboards, seleccione Herramientas para desarrolladores e indexe un documento de ejemplo:
PUT accounts/_doc/0 { "ssn": "123", "id-": "456" }
-
Para probar un evento de lectura, envíe la siguiente solicitud:
GET accounts/_search { "query": { "match_all": {} } }
Paso 3: observar los registros
-
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. -
En el panel de navegación, seleccione Grupos de registro.
-
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.
-
En Flujos de registros, seleccione Buscar todos.
-
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
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" ] } }