

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
<a name="event-auditing"></a>

Con Amazon DocumentDB (compatible 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 de lenguaje de definición de datos (DDL), lenguaje de manipulación de datos (DML), autenticación, autorización y administración de usuarios en Amazon Logs. CloudWatch Cuando la auditoría está habilitada, Amazon DocumentDB exporta los registros de auditoría del clúster (documentos JSON) 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](https://aws.amazon.com/cloudwatch/pricing/).

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 Consola de administración de AWS 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.

**Topics**
+ [Eventos admitidos](#auditing-events)
+ [Habilitación de auditorías](#event-auditing-enabling-auditing)
+ [Deshabilitación de auditorías](#event-auditing-disabling-auditing)
+ [Acceso a los eventos de auditoría](#event-auditing-accessing)
+ [Filtrado de eventos de auditoría de DML](#filtering-dml-events)

## Eventos admitidos
<a name="auditing-events"></a>

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 del lenguaje de manipulación de datos (lecturas DML)**: incluye `find()` y los distintos operadores de agregación, operadores aritméticos, operadores booleanos y otros operadores de consulta de lectura. 
+ **Eventos de escritura del lenguaje de manipulación de datos (escrituras en DML)**: incluye operadores `insert(), update(), delete(),` y `bulkWrite()` 

Los tipos de eventos son los siguientes.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/documentdb/latest/developerguide/event-auditing.html)

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

**nota**  
Los eventos de eliminación de TTL no se auditan en este momento.

## Habilitación de auditorías
<a name="event-auditing-enabling-auditing"></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\$1logs
<a name="event-auditing-enable-audit_logs"></a>

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 | Description (Descripción) | 
| --- | --- | 
| ddl | Al configurarlo, se habilitará la auditoría de eventos DDL como CreateDatabase, DropDatabase, CreateCollection, DropCollection, CreateIndex, DropIndex, AuthCheck, authenticate, CreateUser, DropUser, User, User, UpdateUser y grantRolesTo revokeRolesFrom dropAllUsers FromDatabase | 
| dml\$1read | Cuando configura esto, se habilita la auditoría de eventos de lectura de DML como find, sort count, distinct, group, projecta, unwind, geoNear, geoIntersects, geoWithin y otros operadores de consulta de lectura de MongoDB. | 
| dml\$1write | Al configurarlo, se habilitará la auditoría de eventos de escritura de DML 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 eventos DDL como CreateDatabase, DropDatabase, CreateCollection, DropCollection, CreateIndex, DropIndex, AuthCheck, authenticate, CreateUser, DropUser, User, User, UpdateUser y. grantRolesTo revokeRolesFrom dropAllUsers FromDatabase 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\$1logs es `none` (“`disabled`” heredado).

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


| Valor | Description (Descripción) | 
| --- | --- | 
| ddl, dml\$1read | Si lo configura, se habilitará la audición de los eventos DDL y los eventos de lectura de DML. | 
| ddl, dml\$1write | Si lo configura, se habilitará la audición de los eventos DDL y la lectura de DML. | 
| dml\$1read, dml\$1write | Si lo configura, se habilitará la audición de los eventos DDL | 

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

Para obtener más información, consulte los siguientes temas:
+ [Creación de grupos de parámetros de clúster de Amazon DocumentDB](cluster_parameter_groups-create.md)

  Después de crear un grupo de parámetros, para modificarlo, debe cambiar el valor del parámetro `audit_logs` a `all`.
+ [Modificación de grupos de parámetros de clúster de Amazon DocumentDB](cluster_parameter_groups-modify.md)

  

### Paso 2. Habilitar la exportación CloudWatch de Amazon Logs
<a name="event-auditing-enable-export"></a>

Si el valor del parámetro de `audit_logs` clúster es`enabled`,`ddl`, o `dml_read``dml_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 Consola de administración de AWS ]

Para permitir que Amazon DocumentDB exporte registros CloudWatch mediante la consola, consulte los siguientes temas:
+ **Al crear un clúster**: en [Crear un clúster y una instancia principal mediante Consola de administración de AWS](db-cluster-create.md#db-cluster-create-con), consulte **Creación de un clúster: configuraciones adicionales** (paso 5, **Exportaciones de registros**)
+ **Al modificar un clúster existente** — [Modificación de un clúster de Amazon DocumentDB](db-cluster-modify.md)
+ **Al realizar una restauración de una instantánea de un clúster** — [Restauración de una instantánea del clúster](backup_restore-restore_from_snapshot.md)
+ **Al realizar una point-in-time restauración**: [Restauración a un momento dado](backup_restore-point_in_time_recovery.md)

------
#### [ 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.

**Example**  
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.

**Example**  
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 será similar al que se indica a continuación (formato JSON).  

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

------

## Deshabilitación de auditorías
<a name="event-auditing-disabling-auditing"></a>

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

### Desactivar CloudWatch la exportación de registros
<a name="event-auditing-disabling-logs-export"></a>

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

------
#### [ Using the Consola de administración de AWS ]

El siguiente procedimiento utiliza el Consola de administración de AWS 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 Consola de administración de AWS consola de Amazon DocumentDB en https://console.aws.amazon.com /docdb.](https://console.aws.amazon.com/docdb)

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

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

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

1. Elija **Continuar**.

1. 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)**

1. Elija **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 

**Example**  
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"]}'
```
La salida de esta operación será similar a lo que se indica a continuación (formato JSON).  

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

------

### Deshabilitación del parámetro audit\$1logs
<a name="event-auditing-disabling-audit-parameter"></a>

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:
+ [Modificación de un clúster de Amazon DocumentDB](db-cluster-modify.md)
+ [Modificación de grupos de parámetros de clúster de Amazon DocumentDB](cluster_parameter_groups-modify.md)

## Acceso a los eventos de auditoría
<a name="event-auditing-accessing"></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/](https://console.aws.amazon.com/cloudwatch/).

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

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

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

## Filtrado de eventos de auditoría de DML
<a name="filtering-dml-events"></a>

### Introducción al filtrado de auditoría de DML
<a name="w2aac29c49c21b3"></a>

Los eventos de auditoría de DML se pueden filtrar antes de escribirlos en Amazon CloudWatch. Para utilizar esta característica, el registro de auditoría y el registro de DML deben estar habilitados. Amazon DocumentDB admite el filtrado en `atype`, `command`, `user`, `namespace` y `auditAuthorizationSuccess`.

**nota**  
Los eventos DDL no se filtran.

Para habilitar el filtrado de auditoría en cualquier momento, especifique el filtro de auditoría mediante los parámetros `setAuditConfig`, `filter` y `auditAuthorizationSuccess` de la operación `db.adminCommand( { command } )`:

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

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

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

**Requisitos de seguridad**

Solo las bases de datos users/roles con una acción privilegiada `auditConfigure` pueden ejecutar los comandos anteriores `admindb` al configurar o enumerar los filtros de auditoría de DML. Puede utilizar uno de los roles integrados de [`clusterAdmin`, `hostManager`, `root`] o crear roles personalizados con privilegios de `auditConfigure`. A continuación, se muestra un ejemplo del uso de los roles existentes con el privilegio de `auditConfigure` y un ejemplo con los roles personalizados.

Usuario con rol integrado:

```
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
<a name="filtering-use-cases"></a>

**Ejemplo: filtrado de eventos por comandos**

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

**Ejemplo: filtrado de 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: filtrado mediante `atype`**

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

**nota**  
Todos los registros de DML tienen `authCheck` como `atype`. Solo DDL tiene un `atype` diferente. Si coloca un valor que no sea el `authCheck` de`filter`, no se generará un inicio de sesión en DML. CloudWatch

**Ejemplo: filtrado 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**  
En el nivel superior, solo se admiten `$and`, `$or` y `$nor`. Los demás operadores no se admiten y provocarán un error.

**Ejemplo: filtrado mediante 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: filtrado con condiciones `$in` y `$nin`**

Si se utiliza `$in` y `$nin`, el comando no se registrará, ya que habrá un “y” implícito entre las condiciones. En este ejemplo, regex bloqueará el comando `find` 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: filtrado mediante `namespace`**

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

**Ejemplo: restablecimiento del filtro predeterminado**

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

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