

# Oracle Native Network Encryption
<a name="Appendix.Oracle.Options.NetworkEncryption"></a>

O Amazon RDS oferece suporte para a Oracle Native Network Encryption (NNE). Com a opção `NATIVE_NETWORK_ENCRYPTION`, é possível criptografar dados à medida que eles entram e saem de uma instância de banco de dados. O Amazon RDS é compatível com a NNE para todas as edições do Oracle Database.

Uma discussão detalhada sobre a Oracle Native Network Encryption está além do escopo deste guia, mas você deve compreender os pontos fortes e fracos de cada algoritmo e chave antes de decidir sobre uma solução para a sua implantação. Para obter informações sobre os algoritmos e as chaves que estão disponíveis pela Oracle Native Network Encryption, consulte [Configurar a criptografia de dados de rede](http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/11g/r2/prod/security/network_encrypt/ntwrkencrypt.htm), na documentação da Oracle. Para ter mais informações sobre a segurança da AWS, consulte a [Central de Segurança da AWS](https://aws.amazon.com/security).

**nota**  
Você pode usar a Native Network Encryption ou a Secure Sockets Layer, mas não ambas. Para ter mais informações, consulte [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md). 

**Topics**
+ [

# Configurações da opção NATIVE\$1NETWORK\$1ENCRYPTION
](Oracle.Options.NNE.Options.md)
+ [

# Adicionar a opção NATIVE\$1NETWORK\$1ENCRYPTION
](Oracle.Options.NNE.Add.md)
+ [

# Como definir valores de NNE no sqlnet.ora
](Oracle.Options.NNE.Using.md)
+ [

# Modificar a configurações da opção NATIVE\$1NETWORK\$1ENCRYPTION
](Oracle.Options.NNE.ModifySettings.md)
+ [

# Remover a opção NATIVE\$1NETWORK\$1ENCRYPTION
](Oracle.Options.NNE.Remove.md)

# Configurações da opção NATIVE\$1NETWORK\$1ENCRYPTION
<a name="Oracle.Options.NNE.Options"></a>

Você pode especificar requisitos de criptografia no servidor e no cliente. A instância de banco de dados pode atuar como um cliente quando, por exemplo, usa um link de banco de dados para se conectar a outro banco de dados. Você pode preferir evitar forçar a criptografia no lado do servidor. Por exemplo, talvez você não queira forçar todas as comunicações do cliente a usar criptografia porque o servidor exige isso. Nesse caso, você pode forçar a criptografia no lado do cliente usando as opções do `SQLNET.*CLIENT`.

O Amazon RDS é compatível com as configurações a seguir da opção `NATIVE_NETWORK_ENCRYPTION`.

**nota**  
Ao usar vírgulas para separar valores para uma configuração de opção, não coloque um espaço após a vírgula.


****  

| Configuração da opção | Valores válidos | Valores padrão | Descrição | 
| --- | --- | --- | --- | 
|  `SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS`  |  `TRUE`, `FALSE`  |  `TRUE`  |  O comportamento do servidor quando um cliente que usa uma cifra não segura tenta se conectar ao banco de dados. Se for `TRUE`, os clientes poderão se conectar mesmo que não sejam corrigidos com a PSU de julho de 2021.  Se a configuração for `FALSE`, os clientes poderão se conectar ao banco de dados somente quando forem corrigidos com a PSU de julho de 2021. Antes de definir `SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS` para `FALSE`, certifique-se de que as seguintes condições sejam atendidas: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html)  | 
|  `SQLNET.ALLOW_WEAK_CRYPTO`  |  `TRUE`, `FALSE`  |  `TRUE`  |  O comportamento do servidor quando um cliente que usa uma cifra não segura tenta se conectar ao banco de dados. As seguintes cifras são consideradas não seguras: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html) Se a configuração for `TRUE`, os clientes poderão se conectar quando usarem as cifras não seguras anteriores. Se a configuração for `FALSE`, o banco de dados impedirá os clientes e se conectarem quando usarem as cifras não seguras anteriores. Antes de definir `SQLNET.ALLOW_WEAK_CRYPTO` para `FALSE`, certifique-se de que as seguintes condições sejam atendidas: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html)  | 
|  `SQLNET.CRYPTO_CHECKSUM_CLIENT`  |  `Accepted`, `Rejected`, `Requested`, `Required`   |  `Requested`  |  O comportamento de integridade de dados quando uma instância de banco de dados se conecta ao cliente ou um servidor atuando como um cliente. Quando uma instância de banco de dados usa um link de banco de dados, ela atua como um cliente. `Requested` indica que o cliente não exige que a instância de banco de dados realize uma soma de verificação.  | 
|  `SQLNET.CRYPTO_CHECKSUM_SERVER`  |  `Accepted`, `Rejected`, `Requested`, `Required`   |  `Requested`  |  O comportamento de integridade de dados quando um cliente, ou um servidor atuando como um cliente, conecta-se à instância de banco de dados. Quando uma instância de banco de dados usa um link de banco de dados, ela atua como um cliente. `Requested` indica que a instância de banco de dados não exige que o cliente faça uma soma de verificação.  | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`  |  `SHA256`, `SHA384`, `SHA512`, `SHA1`, `MD5`  |  `SHA256`, `SHA384`, `SHA512`  |  Uma lista de algoritmos de soma de verificação. É possível especificar um valor ou uma lista de valores separados por vírgulas. Se você usar uma vírgula, não insira um espaço após a vírgula; caso contrário, você receberá um erro `InvalidParameterValue`. Este parâmetro e o `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER ` devem ter uma cifra comum.  | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`  |  `SHA256`, `SHA384`, `SHA512`, `SHA1`, `MD5`  |  `SHA256`, `SHA384`, `SHA512`, `SHA1`, `MD5`  |  Uma lista de algoritmos de soma de verificação. É possível especificar um valor ou uma lista de valores separados por vírgulas. Se você usar uma vírgula, não insira um espaço após a vírgula; caso contrário, você receberá um erro `InvalidParameterValue`. Este parâmetro e o `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT` devem ter uma cifra comum.  | 
|  `SQLNET.ENCRYPTION_CLIENT`  |  `Accepted`, `Rejected`, `Requested`, `Required`   |  `Requested`  |  O comportamento de criptografia do cliente quando um cliente, ou um servidor atuando como cliente, se conecta à instância de banco de dados. Quando uma instância de banco de dados usa um link de banco de dados, ela atua como um cliente. `Requested` indica que o cliente não exige que o tráfego do servidor seja criptografado.  | 
|  `SQLNET.ENCRYPTION_SERVER`  |  `Accepted`, `Rejected`, `Requested`, `Required`   |  `Requested`  |  O comportamento de criptografia do servidor quando um cliente, ou um servidor atuando como cliente, se conecta à instância de banco de dados. Quando uma instância de banco de dados usa um link de banco de dados, ela atua como um cliente. `Requested` indica que a instância de banco de dados não requer que o tráfego a partir do cliente seja criptografado.  | 
|  `SQLNET.ENCRYPTION_TYPES_CLIENT`  |  `RC4_256`, `AES256`, `AES192`, `3DES168`, `RC4_128`, `AES128`, `3DES112`, `RC4_56`, `DES`, `RC4_40`, `DES40`  |  `RC4_256`, `AES256`, `AES192`, `3DES168`, `RC4_128`, `AES128`, `3DES112`, `RC4_56`, `DES`, `RC4_40`, `DES40`  |  Uma lista de algoritmos de criptografia usados pelo cliente. Para descriptografar a entrada do servidor, o cliente experimenta cada algoritmo, em ordem, até que um deles seja bem-sucedido ou até atingir o final da lista.  O Amazon RDS usa a seguinte lista padrão do Oracle. O RDS inicia com `RC4_256` e segue a sequência na lista. Você pode alterar a ordem ou limitar os algoritmos que a instância de banco de dados aceitará.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html) É possível especificar um valor ou uma lista de valores separados por vírgulas. Se você usar uma vírgula, não insira um espaço após a vírgula; caso contrário, você receberá um erro `InvalidParameterValue`. Este parâmetro e o `SQLNET.SQLNET.ENCRYPTION_TYPES_SERVER` devem ter uma cifra comum.  | 
|  `SQLNET.ENCRYPTION_TYPES_SERVER`  |  `RC4_256`, `AES256`, `AES192`, `3DES168`, `RC4_128`, `AES128`, `3DES112`, `RC4_56`, `DES`, `RC4_40`, `DES40`  |  `RC4_256`, `AES256`, `AES192`, `3DES168`, `RC4_128`, `AES128`, `3DES112`, `RC4_56`, `DES`, `RC4_40`, `DES40`  |  Uma lista de algoritmos de criptografia usados pela instância de banco de dados. A instância de banco de dados usa cada algoritmo, em ordem, para tentar descriptografar a entrada do cliente até que um algoritmo seja bem-sucedido ou até atingir o final da lista.  O Amazon RDS usa a seguinte lista padrão do Oracle. Você pode alterar a ordem ou restringir os algoritmos que o cliente aceitará.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html) É possível especificar um valor ou uma lista de valores separados por vírgulas. Se você usar uma vírgula, não insira um espaço após a vírgula; caso contrário, você receberá um erro `InvalidParameterValue`. Este parâmetro e o `SQLNET.SQLNET.ENCRYPTION_TYPES_SERVER` devem ter uma cifra comum.  | 

# Adicionar a opção NATIVE\$1NETWORK\$1ENCRYPTION
<a name="Oracle.Options.NNE.Add"></a>

Este é o processo geral para adicionar a opção `NATIVE_NETWORK_ENCRYPTION` a uma instância de banco de dados: 

1. Crie um novo grupo de opções, ou copie ou modifique um existente.

1. Adicione a opção ao grupo de opções.

1. Associe o grupo de opções à instância de banco de dados.

Quando o grupo de opções estiver ativo, a NNE ficará ativa. 

**Como adicionar a opção NATIVE\$1NETWORK\$1ENCRYPTION a uma instância de banco de dados usando o Console de gerenciamento da AWS**

1. Para **Engine (Mecanismo)**, escolha a edição do Oracle que deseja usar. NNE é compatível em todas as edições. 

1. Para **Major engine version (Versão do mecanismo principal)**, escolha a versão da sua instância de banco de dados. 

   Para obter mais informações, consulte [Criar um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create). 

1. Adicione a opção **NATIVE\$1NETWORK\$1ENCRYPTION** ao grupo de opções. Para ter mais informações sobre a adição de opções, consulte [Adicionar uma opção a um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).
**nota**  
Depois de adicionar a opção **NATIVE\$1NETWORK\$1ENCRYPTION**, você não precisará reiniciar as instâncias de banco de dados. Assim que o grupo de opções estiver ativo, o NNE ficará ativo. 

1. Aplique o grupo de opções a uma instância de banco de dados nova ou existente: 
   + Para uma nova instância de banco de dados, você aplica o grupo de opções ao executar a instância. Para ter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
   + Para uma instância de banco de dados existente, você aplica o grupo de opções modificando a instância e anexando o novo grupo de opções. Depois de adicionar a opção **NATIVE\$1NETWORK\$1ENCRYPTION**, você não precisará reiniciar a instância de banco de dados. Assim que o grupo de opções estiver ativo, o NNE ficará ativo. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md). 

# Como definir valores de NNE no sqlnet.ora
<a name="Oracle.Options.NNE.Using"></a>

Com a Oracle Native Network Encryption, você pode configurar a criptografia de rede no lado do servidor e no lado do cliente. O cliente é o computador usado para realizar a conexão com a instância de banco de dados. Você pode especificar as seguintes configurações de cliente no slqnet.ora: 
+ `SQLNET.ALLOW_WEAK_CRYPTO`
+ `SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS`
+ `SQLNET.CRYPTO_CHECKSUM_CLIENT`
+ `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`
+ `SQLNET.ENCRYPTION_CLIENT`
+ `SQLNET.ENCRYPTION_TYPES_CLIENT`

Para obter informações, consulte [Configurar a criptografia de dados da rede e a integridade para clientes e servidores Oracle](http://docs.oracle.com/cd/E11882_01/network.112/e40393/asoconfg.htm) na documentação da Oracle.

Às vezes, a instância de banco de dados rejeita uma solicitação de conexão de uma aplicação. Por exemplo, uma rejeição pode ocorrer quando os algoritmos de criptografia no cliente e no servidor não correspondem. Para testar a Oracle Native Network Encryption, adicione as seguintes linhas ao arquivo sqlnet.ora no cliente: 

```
DIAG_ADR_ENABLED=off
TRACE_DIRECTORY_CLIENT=/tmp
TRACE_FILE_CLIENT=nettrace
TRACE_LEVEL_CLIENT=16
```

Quando ocorre uma tentativa de conexão, as linhas anteriores geram um arquivo de rastreamento no cliente chamado `/tmp/nettrace*`. O arquivo de rastreamento contém informações sobre a conexão. Para ter mais informações sobre problemas de conexão quando você estiver usando a Oracle Native Network Encryption, consulte [About negotiating encryption and integrity](http://docs.oracle.com/cd/E11882_01/network.112/e40393/asoconfg.htm#autoId12) (Sobre a negociação da criptografia e a integridade) na documentação do Oracle Database.

# Modificar a configurações da opção NATIVE\$1NETWORK\$1ENCRYPTION
<a name="Oracle.Options.NNE.ModifySettings"></a>

Depois de habilitar a opção `NATIVE_NETWORK_ENCRYPTION`, é possível modificar as configurações. Atualmente, é possível modificar as configurações da opção `NATIVE_NETWORK_ENCRYPTION` somente com a AWS CLI ou a API do RDS. Não é possível usar o console. O exemplo a seguir modifica duas configurações na opção.

```
aws rds add-option-to-option-group \
    --option-group-name my-option-group \
    --options "OptionName=NATIVE_NETWORK_ENCRYPTION,OptionSettings=[{Name=SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER,Value=SHA256},{Name=SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER,Value=SHA256}]" \
    --apply-immediately
```

Para saber como modificar as configurações da opção usando a CLI, consulte [AWS CLI](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption.CLI). Para ter mais informações sobre cada configuração, consulte [Configurações da opção NATIVE\$1NETWORK\$1ENCRYPTION](Oracle.Options.NNE.Options.md).

**Topics**
+ [

## Modificar valores de CRYPTO\$1CHECKSUM\$1\$1
](#Oracle.Options.NNE.ModifySettings.checksum)
+ [

## Modificar as configurações de ALLOW\$1WEAK\$1CRYPTO\$1
](#Oracle.Options.NNE.ModifySettings.encryption)

## Modificar valores de CRYPTO\$1CHECKSUM\$1\$1
<a name="Oracle.Options.NNE.ModifySettings.checksum"></a>

Se você modificar as configurações de opções de **NATIVE\$1NETWORK\$1ENCRYPTION**, as seguintes configurações de opções devem ter pelo menos uma cifra comum:
+ `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`
+ `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`

O exemplo a seguir mostra um cenário no qual você modifica `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`. A configuração é válida porque `CRYPTO_CHECKSUM_TYPES_CLIENT` e `CRYPTO_CHECKSUM_TYPES_SERVER` usam `SHA256`.


| Configuração da opção | Valores antes da modificação | Valores após modificação | 
| --- | --- | --- | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`  |  `SHA256`, `SHA384`, `SHA512`  |  Sem alterações  | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`  |  `SHA256`, `SHA384`, `SHA512`, `SHA1`, `MD5`  | SHA1,MD5,SHA256 | 

Como outro exemplo, suponha que você queira modificar `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER` de sua configuração padrão para `SHA1,MD5`. Nesse caso, certifique-se de que tenha definido `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT` como `SHA1` ou `MD5`. Esses algoritmos não são incluídos nos valores padrão para `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`.

## Modificar as configurações de ALLOW\$1WEAK\$1CRYPTO\$1
<a name="Oracle.Options.NNE.ModifySettings.encryption"></a>

Para definir as opções `SQLNET.ALLOW_WEAK_CRYPTO*` do valor padrão para `FALSE`, certifique-se de que as seguintes condições sejam atendidas:
+ `SQLNET.ENCRYPTION_TYPES_SERVER` e `SQLNET.ENCRYPTION_TYPES_CLIENT` têm um método de criptografia segura correspondente. Um método é considerado seguro se não for `DES`, `3DES` ou `RC4` (todos os comprimentos de chaves).
+ `SQLNET.CHECKSUM_TYPES_SERVER` e `SQLNET.CHECKSUM_TYPES_CLIENT` têm um método de soma de verificação segura correspondente. Um método é considerado seguro se não for `MD5`.
+ O cliente é corrigido com a PSU de julho de 2021. Se o cliente não for corrigido, o cliente perderá a conexão e receberá o erro `ORA-12269`.

O exemplo a seguir mostra as configurações de NNE de exemplo. Suponha que você queira definir `SQLNET.ENCRYPTION_TYPES_SERVER` e `SQLNET.ENCRYPTION_TYPES_CLIENT` para FALSE, bloqueando conexões não seguras. As configurações da opção de soma de verificação atendem aos pré-requisitos porque ambas têm `SHA256`. No entanto, `SQLNET.ENCRYPTION_TYPES_CLIENT` e `SQLNET.ENCRYPTION_TYPES_SERVER` usam os métodos de criptografia `DES`, `3DES` e `RC4`, que não são seguros. Portanto, para definir as opções de `SQLNET.ALLOW_WEAK_CRYPTO*` para `FALSE`, primeiro defina `SQLNET.ENCRYPTION_TYPES_SERVER` e `SQLNET.ENCRYPTION_TYPES_CLIENT` para um método de criptografia seguro, como `AES256`.


| Configuração da opção | Valores | 
| --- | --- | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`  |  `SHA256`, `SHA384`, `SHA512`  | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`  | SHA1,MD5,SHA256 | 
|  `SQLNET.ENCRYPTION_TYPES_CLIENT`  |  `RC4_256`, `3DES168`, `DES40`  | 
|  `SQLNET.ENCRYPTION_TYPES_SERVER`  |  `RC4_256`, `3DES168`, `DES40`  | 

# Remover a opção NATIVE\$1NETWORK\$1ENCRYPTION
<a name="Oracle.Options.NNE.Remove"></a>

Você pode remover o NNE de uma instância de banco de dados. 

Para remover a opção `NATIVE_NETWORK_ENCRYPTION` de uma instância de banco de dados, faça o seguinte: 
+ Para remover a opção de várias instâncias de bancos de dados, remova a opção `NATIVE_NETWORK_ENCRYPTION` do grupo de opções ao qual elas pertencem. Essa alteração afeta todas as instâncias de bancos de dados que usam o grupo de opções. Depois de remover a opção `NATIVE_NETWORK_ENCRYPTION`, você não precisará reiniciar as instâncias de banco de dados. Para ter mais informações, consulte [Remover uma opção de um grupo de opções](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption). 
+ Para remover a opção de uma única instância de banco de dados, modifique essa instância e especifique um grupo de opções diferente que não inclua a opção `NATIVE_NETWORK_ENCRYPTION`. Você pode especificar um grupo de opções padrão (vazio) ou criar um grupo de opções personalizado diferente. Depois de remover a opção `NATIVE_NETWORK_ENCRYPTION`, você não precisará reiniciar a instância de banco de dados. Para ter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md). 