

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

# Auditar eventos do Amazon DocumentDB
<a name="event-auditing"></a>

Com o Amazon DocumentDB (compatível com MongoDB), é possível auditar eventos que foram realizados em seu cluster. Exemplos de eventos registrados incluem tentativas de autenticação bem-sucedidas e com falha, eliminação de uma coleção em um banco de dados ou criação de um índice. Por padrão, a auditoria fica desabilitada no Amazon DocumentDB e requer que você opte por esse atributo.

Quando a auditoria está habilitada, o Amazon DocumentDB registra eventos de Data Definition Language (DDL), Data Manipulation Language (DML), autenticação, autorização e gerenciamento de usuários no Amazon Logs. CloudWatch Quando a auditoria está habilitada, o Amazon DocumentDB exporta os registros de auditoria do seu cluster (documentos JSON) para o Amazon Logs. CloudWatch Você pode usar o Amazon CloudWatch Logs para analisar, monitorar e arquivar seus eventos de auditoria do Amazon DocumentDB.

Embora o Amazon DocumentDB não cobre um custo adicional para permitir a auditoria, são cobradas taxas padrão pelo uso de registros. CloudWatch Para obter informações sobre CloudWatch os preços do Logs, consulte os [ CloudWatch preços da Amazon](https://aws.amazon.com/cloudwatch/pricing/).

O recurso de auditoria do Amazon DocumentDB é nitidamente diferente do uso de recursos de serviço que é monitorado com. AWS CloudTrail CloudTrail registra operações que são executadas com o AWS Command Line Interface (AWS CLI) ou Console de gerenciamento da AWS em recursos como clusters, instâncias, grupos de parâmetros e instantâneos. A auditoria de recursos com CloudTrail está ativada por padrão e não pode ser desativada. O atributo de auditoria do Amazon DocumentDB é um atributo opcional. Ele registra operações que ocorrem dentro do seu cluster em objetos, como bancos de dados, coleções, índices e usuários.

**Topics**
+ [Eventos com suporte](#auditing-events)
+ [Ativar a auditoria](#event-auditing-enabling-auditing)
+ [Desativar a auditoria](#event-auditing-disabling-auditing)
+ [Acessar seus eventos de auditoria](#event-auditing-accessing)
+ [Filtrar eventos de auditoria de DML](#filtering-dml-events)

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

A auditoria do Amazon DocumentDB oferece suporte às seguintes categorias de eventos:
+ **Linguagem de definição de dados (DDL)** – inclui operações de gerenciamento de banco de dados, conexões, gerenciamento de usuários e autorização. 
+ **Eventos de leitura da linguagem de manipulação de dados (leituras DML)** – incluem `find()` e os vários operadores de agregação, operadores aritméticos, operadores boolianos e outros operadores de consulta de leitura. 
+ **Eventos de gravação da linguagem de manipulação de dados (gravações em DML)** – incluem operadores `insert(), update(), delete(),` e `bulkWrite()` 

Os tipos de evento são os seguintes.

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

**nota**  
Os valores no campo de parâmetro do documento de evento de DML têm um limite de tamanho de 1 KB. O Amazon DocumentDB trunca o valor se ele exceder 1 KB.

**nota**  
Os eventos de exclusão de TTL não são auditados neste momento.

## Ativar a auditoria
<a name="event-auditing-enabling-auditing"></a>

A ativação da auditoria em um cluster é um processo de duas etapas. Verifique se as duas etapas foram concluídas ou os registros de auditoria não serão enviados para o CloudWatch Logs.

### Etapa 1. Habilitar o parâmetro de cluster audit\$1logs
<a name="event-auditing-enable-audit_logs"></a>

Para habilitar a auditoria, você precisa modificar o parâmetro `audit_logs` no grupo de parâmetros. `audit_logs` é uma lista de eventos delimitada por vírgulas, os quais serão registrados. Os eventos devem ser especificados em letras maiúsculas, e não pode haver espaço em branco entre os elementos da lista. 

É possível especificar os seguintes valores para o grupo de parâmetros:


| Valor | Description | 
| --- | --- | 
| ddl | Essa configuração permitirá a auditoria de eventos DDL, como CreateDatabase, DropDatabase, CreateCollection, DropCollection, CreateIndex, DropIndex, AuthCheck, authenticate, CreateUser, DropUser, User, User, User, UpdateUser e grantRolesTo revokeRolesFrom dropAllUsers FromDatabase | 
| dml\$1read | Essa configuração permitirá a auditoria de eventos de leitura de DML, como find, sort count, distinct, group, projecta, unwind, geoNear, geoIntersects, geoWithin e outros operadores de consulta de leitura do MongoDB. | 
| dml\$1write | Essa configuração habilitará a auditoria de eventos de gravação de DML, como insert(), update(), delete() e bulkWrite() | 
| all | Essa configuração habilitará a auditoria de eventos do seu banco de dados, como consultas de leitura, consultas de gravação, ações de banco de dados e ações de administrador. | 
| none | Essa configuração desabilitará a auditoria | 
| enabled (legado) | Essa é uma configuração de parâmetro herdada que é equivalente a 'ddl'. Essa configuração habilitará a auditoria de eventos DDL, como CreateDatabase, DropDatabase, CreateCollection, DropCollection, CreateIndex, DropIndex, AuthCheck, authenticate, createUser, dropUser, User, User, User, updateUser e. grantRolesTo revokeRolesFrom dropAllUsers FromDatabase Não é recomendável usar essa configuração, pois ela é uma configuração herdada. | 
| disabled  (legado) | Essa é uma configuração de parâmetro herdada que é equivalente a 'none'. Não é recomendável usar essa configuração, pois ela é uma configuração herdada.  | 

**nota**  
O valor padrão do parâmetro de cluster audit\$1logs é `none` (legacy "`disabled`").

Você também pode usar os valores mencionados acima em combinações. 


| Valor | Description | 
| --- | --- | 
| ddl, dml\$1read | Essa configuração ativará a auditoria de eventos de DDL e eventos de leitura de DML. | 
| ddl, dml\$1write | Essa configuração ativará a auditoria de eventos de DDL e gravação de DML | 
| dml\$1read, dml\$1write | Essa configuração habilitará a auditoria para todos os eventos DML. | 

**nota**  
Não é possível modificar um grupo de parâmetros padrão.

Para obter mais informações, consulte as informações a seguir:
+ [Criando grupos de parâmetros de cluster do Amazon DocumentDB](cluster_parameter_groups-create.md)

  Depois que criar um grupo de parâmetros, modifique-o alterando o valor do parâmetro `audit_logs` para `all`.
+ [Modificando grupos de parâmetros de cluster do Amazon DocumentDB](cluster_parameter_groups-modify.md)

  

### Etapa 2. Ativar a exportação do Amazon CloudWatch Logs
<a name="event-auditing-enable-export"></a>

Quando o valor do parâmetro do `audit_logs` cluster é`enabled`,,, ou `ddl` `dml_read``dml_write`, você também deve habilitar o Amazon DocumentDB para exportar registros para a Amazon. CloudWatch Se você omitir qualquer uma dessas etapas, os registros de auditoria não serão enviados para CloudWatch.

Ao criar um cluster, executar um point-in-time-restore ou restaurar um snapshot, você pode ativar CloudWatch os registros seguindo estas etapas.

------
#### [ Using the Console de gerenciamento da AWS ]

Para permitir que o Amazon DocumentDB exporte logs para CloudWatch usar o console, consulte os seguintes tópicos:
+ **Ao criar um cluster **: em [Criação de um cluster e de uma instância primária usando o Console de gerenciamento da AWS](db-cluster-create.md#db-cluster-create-con), consulte **Criar um cluster: configurações adicionais**, (etapa 5, **Exportações de log**)
+ **Ao modificar um cluster existente** — [Modificar um cluster do Amazon DocumentDB](db-cluster-modify.md)
+ **Ao executar uma restauração de snapshot de cluster** — [Restauração de um snapshot de cluster](backup_restore-restore_from_snapshot.md)
+ **Ao realizar uma point-in-time restauração** — [Restauração para um ponto no tempo](backup_restore-point_in_time_recovery.md)

------
#### [ Using the AWS CLI ]

**Como habilitar logs de auditoria ao criar um novo cluster**  
O código a seguir cria o cluster `sample-cluster` e ativa os registros CloudWatch de auditoria.

**Example**  
Para Linux, macOS ou 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
```

**Como habilitar logs de auditoria ao modificar um cluster existente**  
O código a seguir modifica o cluster `sample-cluster` e ativa os registros CloudWatch de auditoria.

**Example**  
Para Linux, macOS ou 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"]}'
```
A saída dessas operações é semelhante ao seguinte (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"
    }
}
```

------

## Desativar a auditoria
<a name="event-auditing-disabling-auditing"></a>

Você pode desativar a auditoria desativando a exportação de CloudWatch registros e desativando o parâmetro. `audit_logs`

### Desativando a exportação de CloudWatch registros
<a name="event-auditing-disabling-logs-export"></a>

Você pode desativar a exportação de registros de auditoria usando o Console de gerenciamento da AWS ou o. AWS CLI

------
#### [ Using the Console de gerenciamento da AWS ]

O procedimento a seguir usa o Console de gerenciamento da AWS para desativar a exportação de registros do Amazon DocumentDB para o. CloudWatch

**Como desabilitar logs de auditoria**

1. [Faça login no e abra Console de gerenciamento da AWS o console do Amazon DocumentDB em https://console.aws.amazon.com /docdb.](https://console.aws.amazon.com/docdb)

1. No painel de navegação, escolha **Clusters**. Depois disso, escolha o botão à esquerda do nome do cluster para o qual você deseja desabilitar a exportação de logs.

1. Escolha **Ações** e, em seguida, **Modificar**.

1. Role para baixo até a seção **Exportações de log** e escolha **Desativado**.

1. Escolha **Continuar**.

1. Analise as alterações e escolha quando você deseja que essa mudança seja aplicada ao seu cluster.
   + **Aplicar durante a próxima janela de manutenção programada**
   + **Aplicar imediatamente**

1. Escolha **Modificar Cluster**.

------
#### [ Using the AWS CLI ]

O código a seguir modifica o cluster `sample-cluster` e desativa os registros de CloudWatch auditoria.

**Example**  
Para Linux, macOS ou 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"]}'
```
A saída dessa operação é semelhante ao seguinte (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"
            }
        ]
    }
}
```

------

### Desativar o parâmetro audit\$1logs
<a name="event-auditing-disabling-audit-parameter"></a>

Para desabilitar o parâmetro `audit_logs` para o cluster, é possível modificar o cluster para que ele use um grupo de parâmetros em que o valor do parâmetro `audit_logs` é `disabled`. Ou é possível modificar o valor do parâmetro `audit_logs` no grupo de parâmetros de cluster para que ele seja `disabled`.

Para saber mais, consulte os seguintes tópicos:
+ [Modificar um cluster do Amazon DocumentDB](db-cluster-modify.md)
+ [Modificando grupos de parâmetros de cluster do Amazon DocumentDB](cluster_parameter_groups-modify.md)

## Acessar seus eventos de auditoria
<a name="event-auditing-accessing"></a>

Use as etapas a seguir para acessar seus eventos de auditoria na Amazon CloudWatch.

1. Abra o CloudWatch console em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Certifique-se de estar na mesma região que seu cluster do Amazon DocumentDB.

1. No painel de navegação, selecione **Logs**.

1. Para localizar os logs de auditoria para o seu cluster, na lista, localize e escolha **/aws/docdb/*yourClusterName*/audit**.

   Os eventos de auditoria para cada uma das suas instâncias estão disponíveis em cada um dos respectivos nomes de instância.

## Filtrar eventos de auditoria de DML
<a name="filtering-dml-events"></a>

### Conceitos básicos da filtragem de auditoria de DML
<a name="w2aac29c49c21b3"></a>

Os eventos de auditoria de DML podem ser filtrados antes de serem gravados na Amazon. CloudWatch Para utilizar esse recurso, o registro de auditoria e o log de DML devem estar ativados. O Amazon DocumentDB oferece suporte à filtragem em `atype`, `command`, `user`, `namespace` e `auditAuthorizationSuccess`.

**nota**  
Os eventos de DDL não são filtrados.

É possível ativar a filtragem de auditoria a qualquer momento especificando o filtro de auditoria usando os parâmetros `setAuditConfig`, `filter` e `auditAuthorizationSuccess` na operação `db.adminCommand( { command } )`:

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

Você também pode recuperar as configurações do filtro de auditoria executando o seguinte comando:

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

**Requisitos de segurança**

Somente o banco de dados users/roles com ação privilegiada `auditConfigure` pode executar os comandos acima `admindb` ao definir ou listar filtros de auditoria DML. É possível usar um dos perfis integrados de [`clusterAdmin`, `hostManager`, `root`] ou criar perfis personalizados com privilégios `auditConfigure`. Veja a seguir um exemplo do uso de funções existentes com o privilégio `auditConfigure` e um exemplo com funções personalizadas.

Usuário com função integrada:

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

Usuário com funções personalizadas:

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

#### Filtrar casos de uso
<a name="filtering-use-cases"></a>

**Exemplo: filtrar eventos por comandos**

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

**Exemplo: filtrar eventos por nome de usuário**

Neste exemplo, somente o usuário “myUser” será registrado:

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

**Exemplo: filtrar por `atype`**

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

**nota**  
Todos os logs de DML têm `authCheck` como `atype`. Somente DDL tem um `atype` diferente. Se você colocar um valor diferente `authCheck` de`filter`, ele não produzirá um login CloudWatch DML.

**Exemplo: filtrar usando vários 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**  
No nível superior, somente `$and`, `$or` e `$nor` têm suporte. Quaisquer outros operadores não têm suporte e causarão um erro.

**Exemplo: filtragem por eventos por `auditAuthorizationSuccess`**

Nesse filtro, todos os comandos aprovados com sucesso na autorização não serão registrados:

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

**Exemplo: filtrar com as condições `$in` e `$nin`**

Ao usar tanto em `$in` quanto em `$nin`, o comando não será registrado, pois haverá um “e” implícito entre as condições. Neste exemplo, a regex bloqueará o comando `find` para que nada seja registrado:

```
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})
```

**Exemplo: filtrar por `namespace`**

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

**Exemplo: redefinir para o filtro padrão**

Redefinir para o valor padrão significa que cada evento de auditoria de DML será registrado. Para redefinir a filtragem para o valor padrão, execute o comando a seguir:

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