Auditoría de eventos de Amazon DocumentDB - Amazon DocumentDB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Auditoría de eventos de Amazon DocumentDB

Con Amazon DocumentDB (con compatibilidad con MongoDB), puede auditar eventos que se realizaron en su clúster. Los intentos de autenticación correctos e incorrectos, la eliminación de una colección en una base de datos o la creación de un índice son algunos ejemplos de eventos registrados. De forma predeterminada, la auditoría está deshabilitada en Amazon DocumentDB y, para utilizar esta característica, es necesario suscribirse.

Cuando la auditoría está habilitada, Amazon DocumentDB registra los eventos del lenguaje de definición de datos (DDL), el lenguaje de manipulación de datos (DML), la autenticación, la autorización y la administración de usuarios en Amazon CloudWatch Logs. Cuando la auditoría está habilitada, Amazon DocumentDB exporta los registros de auditoría (JSONdocumentos) del clúster a Amazon CloudWatch Logs. Puede utilizar Amazon CloudWatch Logs para analizar, supervisar y archivar sus eventos de auditoría de Amazon DocumentDB.

Aunque Amazon DocumentDB no cobra ningún coste adicional por habilitar la auditoría, se le cobran tarifas estándar por el uso de CloudWatch Logs. Para obtener información sobre CloudWatch los precios de Logs, consulta CloudWatch los precios de Amazon.

La función de auditoría de Amazon DocumentDB es claramente diferente del uso de los recursos de servicio con el que se supervisa. AWS CloudTrail CloudTrail registra las operaciones que se realizan con AWS Command Line Interface (AWS CLI) o AWS Management Console en recursos como clústeres, instancias, grupos de parámetros e instantáneas. La auditoría de los recursos CloudTrail está activada de forma predeterminada y no se puede deshabilitar. La característica de auditoría de Amazon DocumentDB es opcional. Registra las operaciones que tienen lugar dentro del clúster en los distintos objetos, como, por ejemplo, bases de datos, colecciones, índices y usuarios.

Eventos admitidos

La auditoría de Amazon DocumentDB admite las siguientes categorías de eventos:

  • Lenguaje de definición de datos (DDL): incluye las operaciones de administración de bases de datos, las conexiones, la administración de usuarios y la autorización.

  • Eventos de lectura (DMLlecturas) del lenguaje de manipulación de datos: incluye find() los distintos operadores de agregación, operadores aritméticos, operadores booleanos y otros operadores de consulta de lectura.

  • El lenguaje de manipulación de datos escribe eventos (DMLescribe): incluye operadores insert(), update(), delete(), bulkWrite()

Los tipos de eventos son los siguientes.

Tipo de evento Categoría Descripción
authCheck Autorización Código de resultado 0: éxito
Código de resultado 13: intentos no autorizados de realizar una operación.
authenticate Connection Intentos de autenticación correctos e incorrectos en una nueva conexión.
auditConfigure DDL Configuración del filtro de auditoría.
createDatabase DDL Creación de una nueva base de datos.
createCollection DDL Creación de una nueva colección en una base de datos.
createIndex DDL Creación de un nuevo índice en una colección.
dropCollection DDL Eliminación de una nueva colección en una base de datos.
dropDatabase DDL Eliminación de una base de datos.
dropIndex DDL Eliminación de un índice en una colección.
modifyChangeStreams DDL Se creó el flujo de cambios.
renameCollection DDL Renombrar una nueva colección en una base de datos.
createRole Administración de roles Creación de un rol.
dropAllRolesFromDatabase Administración de roles Eliminación de todos los roles en una base de datos.
dropRole Administración de roles Descartando un rol.
grantPrivilegesToRole Administración de roles Concediendo privilegios a un rol.
grantRolesToRole Administración de roles Concediendo roles a un rol definido por el usuario.
revokePrivilegesFromRole Administración de roles Revocando los privilegios de un rol.
revokeRolesFromRole Administración de roles Revocando roles de un rol definido por el usuario.
updateRole Administración de roles Actualización de un rol.
createUser Administración de usuarios Creación de un nuevo usuario.
dropAllUsersFromDatabase Administración de usuarios Eliminación de todos los usuarios en una base de datos.
dropUser Administración de usuarios Eliminación de un usuario existente.
grantRolesToUser Administración de usuarios Concesión de roles a un usuario.
revokeRolesFromUser Administración de usuarios Revocando roles de un usuario.
updateUser UserManagement Actualización de un usuario existente.
insert DMLescribir Inserta uno o varios documentos en una colección.
delete DMLescribir Elimina uno o varios documentos de una colección.
update DMLescribir Modifica uno o varios documentos existentes en una colección.
bulkWrite DMLescribir Realiza múltiples operaciones de escritura con controles para determinar el orden de ejecución.
setAuditConfig DMLescribir Establezca un nuevo filtro para la DML auditoría.
count DMLleer Devuelve el recuento de documentos que coincidirían con una consulta find() de la colección o vista.
countDocuments DMLleer Devuelve el recuento de documentos que coinciden con una consulta para una colección o vista.
find DMLleer Selecciona los documentos de una colección o vista y devuelve el cursor a los documentos seleccionados.
getAuditConfig DMLleer Recupera el filtro actual para DML auditarlo.
findAndModify DMLleer y DML escribir Modifica y devuelve un único documento.
findOneAndDelete DMLleer y DML escribir Elimina un solo documento en función de los criterios de filtro y clasificación y devuelve el documento eliminado.
findOneAndReplace DMLleer y DML escribir Sustituye un único documento en función del filtro especificado.
findOneAndUpdate DMLleer y DML escribir Actualiza un único documento en función de los criterios de filtrado y clasificación.
aggregate DMLleer y DML escribir Soporta APIs la canalización de agregación.
distinct DMLleer Busca los valores distintos de un campo especificado en una sola colección o vista y devuelve los resultados en una matriz.
nota

Los valores del campo de parámetros del documento de DML eventos tienen un límite de tamaño de 1 KB. Amazon DocumentDB trunca el valor si supera 1 KB.

nota

TTLlos eventos de eliminación no se auditan en este momento.

Habilitar la auditoría

Para habilitar la auditoría en un clúster, hay que seguir un proceso de dos pasos. Asegúrese de completar ambos pasos o los registros de auditoría no se enviarán a CloudWatch Logs.

Paso 1. Habilitación del parámetro de clúster audit_logs

Para habilitar la auditoría, debe modificar el parámetro audit_logs en el grupo de parámetros. audit_logs es una lista delimitada por comas de los eventos que se deben registrar. Los eventos se deben especificar en minúsculas y no debe haber espacios en blanco entre los elementos de la lista.

Puede especificar los siguientes valores para el grupo de parámetro:

Valor Descripción
ddl Al configurarlo, se habilitará la auditoría de DDL eventos como createDatabase dropDatabasecreateCollection,dropCollection,createIndex,dropIndex,authCheck,, autenticarcreateUser,dropUser,, grantRolesTo revokeRolesFrom UsuarioupdateUser, Usuario y dropAllUsers FromDatabase
dml_read Al configurar esto, se habilitará la auditoría de eventos de DML lectura como find, sort count, distinct, group, projecta, unwind geoIntersects y geoWithin otros operadores de consulta de lectura de MongoDB. geoNear
dml_write Si lo configuras, se habilitará la auditoría de eventos de DML escritura como insert (), update (), delete () y () bulkWrite
all Al configurarlo, se habilitará la auditoría de los eventos de la base de datos, como las consultas de lectura y escritura, las acciones de la base de datos y las acciones del administrador.
none Si lo configura, se deshabilitará la auditoría
enabled (heredado) Se trata de una configuración de parámetros antigua que equivale a “ddl”. Al configurarlo, se habilitará la auditoría de DDL eventos como createDatabase dropDatabase createCollectiondropCollection,createIndex,dropIndex,authCheck,,, autenticar createUserdropUser,,, grantRolesTo revokeRolesFrom UsuarioupdateUser, y dropAllUsersFromDatabase. No se recomienda utilizar este ajuste porque se trata de un ajuste heredado.
disabled (heredado) Se trata de una configuración de parámetros antigua que equivale a “none”. No se recomienda utilizar este ajuste porque se trata de un ajuste heredado.
nota

El valor predeterminado del parámetro de clúster audit_logs es none (“disabled” heredado).

También puede utilizar los valores mencionados anteriormente en combinaciones.

Valor Descripción
ddl, dml_read Al configurar esto, se habilitará la auditoría de DDL eventos y la DML lectura de eventos.
ddl, dml_write Si lo configuras, se habilitará la audición de DDL eventos y la escritura DML
dml_read, dml_write Si lo configura, se habilitará la auditoría de todos los eventos DML
nota

No es posible modificar un grupo de parámetros predeterminado.

Para más información, consulte los siguientes temas:

Paso 2. Habilitar la exportación CloudWatch de Amazon Logs

Si el valor del parámetro de audit_logs clúster esenabled,ddl, o dml_readdml_write, también debe habilitar Amazon DocumentDB para exportar los registros a Amazon. CloudWatch Si omite alguno de estos pasos, no se enviarán los registros de auditoría a. CloudWatch

Al crear un clúster, realizar una point-in-time-restore instantánea o restaurar una instantánea, puede habilitar CloudWatch los registros siguiendo estos pasos.

Using the AWS Management Console

Para permitir que Amazon DocumentDB exporte registros CloudWatch mediante la consola, consulte los siguientes temas:

Using the AWS CLI
Para habilitar los registros de auditoría al crear un nuevo clúster

El siguiente código crea el clúster sample-cluster y habilita los registros CloudWatch de auditoría.

Para Linux, macOS o Unix:

aws docdb create-db-cluster \ --db-cluster-identifier sample-cluster \ --port 27017 \ --engine docdb \ --master-username master-username \ --master-user-password password \ --db-subnet-group-name default \ --enable-cloudwatch-logs-exports audit

Para Windows:

aws docdb create-db-cluster ^ --db-cluster-identifier sample-cluster ^ --port 27017 ^ --engine docdb ^ --master-username master-username ^ --master-user-password password ^ --db-subnet-group-name default ^ --enable-cloudwatch-logs-exports audit
Para habilitar los registros de auditoría al modificar un clúster existente

El siguiente código modifica el clúster sample-cluster y habilita los registros de CloudWatch auditoría.

Para Linux, macOS o Unix:

aws docdb modify-db-cluster \ --db-cluster-identifier sample-cluster \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit"]}'

Para Windows:

aws docdb modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit"]}'

El resultado de estas operaciones tiene un aspecto parecido al siguiente (JSONformato).

{ "DBCluster": { "HostedZoneId": "ZNKXH85TT8WVW", "StorageEncrypted": false, "DBClusterParameterGroup": "default.docdb4.0", "MasterUsername": "<user-name>", "BackupRetentionPeriod": 1, "Port": 27017, "VpcSecurityGroups": [ { "Status": "active", "VpcSecurityGroupId": "sg-77186e0d" } ], "DBClusterArn": "arn:aws:rds:us-east-1:900083794985:cluster:sample-cluster", "Status": "creating", "Engine": "docdb", "EngineVersion": "4.0.0", "MultiAZ": false, "AvailabilityZones": [ "us-east-1a", "us-east-1c", "us-east-1f" ], "DBSubnetGroup": "default", "DBClusterMembers": [], "ReaderEndpoint": "sample-cluster.cluster-ro-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "EnabledCloudwatchLogsExports": [ "audit" ], "PreferredMaintenanceWindow": "wed:03:08-wed:03:38", "AssociatedRoles": [], "ClusterCreateTime": "2019-02-13T16:35:04.756Z", "DbClusterResourceId": "cluster-YOS52CUXGDTNKDQ7DH72I4LED4", "Endpoint": "sample-cluster.cluster-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "PreferredBackupWindow": "07:16-07:46", "DBClusterIdentifier": "sample-cluster" } }

Deshabilitar la auditoría

Puede deshabilitar la auditoría deshabilitando la exportación de CloudWatch registros y deshabilitando el audit_logs parámetro.

Desactivar CloudWatch la exportación de registros

Puede deshabilitar la exportación de registros de auditoría mediante el AWS Management Console o el AWS CLI.

Using the AWS Management Console

El siguiente procedimiento utiliza el AWS Management Console para deshabilitar la exportación de registros a Amazon DocumentDB. CloudWatch

Para deshabilitar los registros de auditoría
  1. Inicie sesión en y abra la AWS Management Console consola de Amazon DocumentDB en https://console.aws.amazon.com /docdb.

  2. En el panel de navegación, seleccione Clusters (Clústeres). A continuación, elija el botón situado a la izquierda del nombre del clúster para el que desea deshabilitar la exportación de registros.

  3. Elija Actions (Acciones) y después Modify (Modificar).

  4. Desplácese hacia abajo hasta la sección Log exports (Exportaciones de registros) y, a continuación, elija Disabled (Deshabilitado).

  5. Elija Continuar.

  6. Revise los cambios y, a continuación, elija cuándo desea que se aplique este cambio en su clúster.

    • Apply during the next scheduled maintenance window (Aplicar durante el siguiente periodo de mantenimiento programado)

    • Apply immediately (Aplicar inmediatamente)

  7. Elija Modify clúster (Modificar clúster).

Using the AWS CLI

El siguiente código modifica el clúster sample-cluster e inhabilita los registros de auditoría. CloudWatch

Para Linux, macOS o Unix:

aws docdb modify-db-cluster \ --db-cluster-identifier sample-cluster \ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit"]}'

Para Windows:

aws docdb modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit"]}'

El resultado de esta operación tiene un aspecto parecido al siguiente (JSONformato).

{ "DBCluster": { "DBClusterParameterGroup": "default.docdb4.0", "HostedZoneId": "ZNKXH85TT8WVW", "MasterUsername": "<user-name>", "Status": "available", "Engine": "docdb", "Port": 27017, "AvailabilityZones": [ "us-east-1a", "us-east-1c", "us-east-1f" ], "EarliestRestorableTime": "2019-02-13T16:35:50.387Z", "DBSubnetGroup": "default", "LatestRestorableTime": "2019-02-13T16:35:50.387Z", "DBClusterArn": "arn:aws:rds:us-east-1:900083794985:cluster:sample-cluster2", "Endpoint": "sample-cluster2.cluster-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "ReaderEndpoint": "sample-cluster2.cluster-ro-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "BackupRetentionPeriod": 1, "EngineVersion": "4.0.0", "MultiAZ": false, "ClusterCreateTime": "2019-02-13T16:35:04.756Z", "DBClusterIdentifier": "sample-cluster2", "AssociatedRoles": [], "PreferredBackupWindow": "07:16-07:46", "DbClusterResourceId": "cluster-YOS52CUXGDTNKDQ7DH72I4LED4", "StorageEncrypted": false, "PreferredMaintenanceWindow": "wed:03:08-wed:03:38", "DBClusterMembers": [], "VpcSecurityGroups": [ { "Status": "active", "VpcSecurityGroupId": "sg-77186e0d" } ] } }

Deshabilitar el parámetro audit_logs

Para deshabilitar el parámetro audit_logs del clúster, puede modificar el clúster para que utilice un grupo de parámetros donde el valor del parámetro audit_logs esté disabled. O bien, puede modificar el valor del parámetro audit_logs en el grupo de parámetros del clúster para que esté disabled.

Para obtener más información, consulte los temas siguientes:

Acceder a sus eventos de auditoría

Sigue los siguientes pasos para acceder a tus eventos de auditoría en Amazon CloudWatch.

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

  2. Asegúrese de que se encuentra en la misma región que el clúster de Amazon DocumentDB.

  3. En el panel de navegación, elija Logs (Registros).

  4. Para buscar los registros de auditoría del clúster, busque y elija en la lista /aws/docdb/yourClusterName/audit.

    Los eventos de auditoría de cada una de las instancias están disponibles debajo del nombre de instancia correspondiente.

Filtrar eventos DML de auditoría

Cómo empezar con el filtrado DML de auditorías

DMLlos eventos de auditoría se pueden filtrar antes de que se escriban en Amazon CloudWatch. Para utilizar esta función, el registro y DML el registro de auditoría deben estar habilitados. Amazon DocumentDB admite el filtrado deatype, command usernamespace, y. auditAuthorizationSuccess

nota

DDLlos eventos no se filtran.

Puede activar el filtrado de auditoría en cualquier momento especificando el filtro de auditoría mediante los auditAuthorizationSuccess parámetros setAuditConfigfilter, y de la db.adminCommand( { command } ) operación:

db.admin.runCommand( { setAuditConfig: 1, filter: { //filter conditions }, auditAuthorizationSuccess: true | false } )

También puede recuperar la configuración del filtro de auditoría ejecutando el siguiente comando:

db.admin.runCommand( { getAuditConfig: 1})

Requisitos de seguridad

Solo los usuarios o roles de la base de datos con acciones privilegiadas auditConfigure pueden ejecutar los comandos anteriores admindb al configurar o enumerar los filtros de DML auditoría. Puede utilizar uno de los roles integrados de [clusterAdmin,hostManager,root] o crear roles personalizados con privilegios. auditConfigure A continuación se muestra un ejemplo del uso de los roles existentes con el auditConfigure privilegio y un ejemplo con los roles personalizados.

Usuario con función integrada:

use admin db.createUser( { user: "myClusterAdmin", pwd: "password123", roles: [ { role: "clusterAdmin", db: "admin" } ] } )

Usuario con roles personalizados:

use admin db.createRole( { role: "myRole", privileges: [ { resource: { cluster: true }, actions: [ "auditConfigure" ] } ], roles: [] } ) db.createUser( { user: "myUser", pwd: "myPassword", roles: [ { role: "myRole", db: "admin" } ] } )

Filtrado de casos de uso

Ejemplo: filtrar eventos por comandos

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.command": { $in: [ "find","count", "insert", "delete", "update", "findandmodify" ] } } ] }, auditAuthorizationSuccess: true } )

Ejemplo: filtrar eventos por nombre de usuario

En este ejemplo, solo se registrará el usuario myUser "»:

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.user": { $in: [ "myUser" ] } } ]}, auditAuthorizationSuccess: true})

Ejemplo: filtrar por atype

db.admin.runCommand( { setAuditConfig: 1, filter: {atype: "authCheck"}, auditAuthorizationSuccess: true })
nota

Todos los DML registros tienen authCheck comoatype. Solo DDL tiene una diferenteatype. Si pones un valor que no sea el indicado authCheck enfilter, no se producirá un DML inicio de sesión CloudWatch.

Ejemplo: filtrar mediante varios filtros unidos por operadores

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.command": { $in: [ "find","count", "insert", "delete", "update", "findandmodify" ] } } ], "$nor": [ { "param.command": { $in: ["count", "insert", "delete", "update", "findandmodify" ] } }] }, auditAuthorizationSuccess: true})
nota

Solo en el nivel superior $and$or, y $nor son compatibles. Cualquier otro operador no es compatible y provocará un error.

Ejemplo: filtrar por eventos por auditAuthorizationSuccess

En este filtro, no se registrarán todos los comandos que hayan pasado la autorización correctamente:

db.admin.runCommand( { setAuditConfig: 1, filter: {}, auditAuthorizationSuccess: false } )

Ejemplo: filtrar con $nin condiciones $in y

Si se utilizan $in tanto en como$nin, el comando no se registrará, ya que habrá un «y» implícito entre las condiciones. En este ejemplo, regex bloqueará el find comando para que no se registre nada:

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findandmodify" ], $nin: ["count", "insert", "delete", "update", "findandmodify" ], $not: /^^find.*/ } }, ], "$or": [ { "param.command": { $nin: ["count", "insert", "delete", "update", "findandmodify" ] } }] }, auditAuthorizationSuccess: true})

Ejemplo: filtrar por namespace

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.ns": { $in: [ "test.foo" ] } } ]}, auditAuthorizationSuccess: true})

Ejemplo: restablecer el filtro predeterminado

Si se restablece el valor predeterminado, se registrarán todos los eventos de DML auditoría. Para restablecer el filtrado al valor predeterminado, ejecute el siguiente comando:

db.admin.runCommand( { setAuditConfig: 1, filter: {}, auditAuthorizationSuccess: true } )