

# Usar a autenticação Kerberos com o Amazon RDS para PostgreSQL
<a name="postgresql-kerberos"></a>

É possível usar o Kerberos para autenticar usuários quando eles se conectam à sua instância de banco de dados executando o PostgreSQL. Para fazer isso, configure sua instância de banco de dados para usar o AWS Directory Service for Microsoft Active Directory para autenticação Kerberos. O AWS Directory Service for Microsoft Active Directory também é chamado de AWS Managed Microsoft AD. É um recurso disponível com o Directory Service. Para saber mais, consulte [What is Directory Service?](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html) (O que é o ?) no *Guia de administração do AWS Directory Service*.

Para iniciar, crie um diretório AWS Managed Microsoft AD para armazenar credenciais de usuário. Depois, forneça à instância de banco de dados PostgreSQL o domínio do Active Directory e outras informações. Quando os usuários são autenticados com a instância de banco de dados PostgreSQL, as solicitações de autenticação são encaminhadas para o diretório AWS Managed Microsoft AD. 

Manter todas as suas credenciais no mesmo diretório pode economizar tempo e esforço. Há um lugar centralizado para armazenar e gerenciar credenciais para várias instâncias de banco de dados. O uso de um diretório também pode melhorar o perfil de segurança geral.

Além disso, é possível acessar credenciais de seu próprio Microsoft Active Directory on-premises. Para fazer isso, crie uma relação de domínio confiável para que o diretório AWS Managed Microsoft AD confie no Microsoft Active Directory on-premises. Dessa forma, seus usuários podem acessar as instâncias de do PostgreSQL com a mesma experiência de autenticação única (SSO) do Windows, como quando acessam workloads na sua rede on-premises.

Um banco de dados pode usar autenticação por senha ou autenticação por senha com autenticação do Kerberos ou do AWS Identity and Access Management (IAM). Para ter mais informações sobre a autenticação do IAM, consulte [Autenticação do banco de dados do IAMpara MariaDB, MySQL e PostgreSQL](UsingWithRDS.IAMDBAuth.md). 

**nota**  
O RDS para PostgreSQL não aceita a autenticação Kerberos para grupos do Active Directory.

**Topics**
+ [Disponibilidade de regiões e versões](#postgresql-kerberos.RegionVersionAvailability)
+ [Visão geral da autenticação Kerberos para instâncias de banco de dados PostgreSQL](#postgresql-kerberos-overview)
+ [Configurar a autenticação Kerberos para instâncias de banco de dados do PostgreSQL](postgresql-kerberos-setting-up.md)
+ [Gerenciar uma instância de banco de dados do RDS para PostgreSQL em um domínio do Active Directory](postgresql-kerberos-managing.md)
+ [Conectar-se ao PostgreSQL com a autenticação Kerberos](postgresql-kerberos-connecting.md)

## Disponibilidade de regiões e versões
<a name="postgresql-kerberos.RegionVersionAvailability"></a>

A disponibilidade e a compatibilidade de recursos variam entre versões específicas de cada mecanismo de banco de dados e entre Regiões da AWS. Para ter mais informações sobre a disponibilidade de versões e regiões do RDS para PostgreSQL com autenticação de Kerberos, consulte [Regiões e mecanismos de banco de dados compatíveis com a autenticação Kerberos no Amazon RDS](Concepts.RDS_Fea_Regions_DB-eng.Feature.KerberosAuthentication.md).

## Visão geral da autenticação Kerberos para instâncias de banco de dados PostgreSQL
<a name="postgresql-kerberos-overview"></a>

Para configurar a autenticação Kerberos para uma instância de banco de dados PostgreSQL, siga as etapas a seguir, descritas em mais detalhes posteriormente:

1. Use AWS Managed Microsoft AD para criar um diretório do AWS Managed Microsoft AD. É possível usar o Console de gerenciamento da AWS, a AWS CLI ou a API do Directory Service para criar o diretório. Certifique-se de abrir as portas de saída relevantes no grupo de segurança do diretório para que o diretório possa se comunicar com a instância.

1. Crie uma função que forneça ao Amazon RDS acesso para fazer chamadas para o diretório AWS Managed Microsoft AD. Para fazer isso, crie um perfil do AWS Identity and Access Management (IAM) que use a política gerenciada do IAM `AmazonRDSDirectoryServiceAccess`. 

   Para o perfil do IAM permitir acesso, o endpoint do AWS Security Token Service (AWS STS) deve estar ativado na região da AWS correta da conta da AWS. Os endpoints do AWS STS são ativados por padrão em todas as Regiões da AWS e é possível usá-los sem ter que tomar medidas adicionais. Para ter mais informações, consulte [Ativar e desativar o AWS STS em uma AWS região da ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#sts-regions-activate-deactivate) no * Manual do usuário do IAM*.

1. Crie e configure usuários no diretório AWS Managed Microsoft AD usando as ferramentas do Microsoft Active Directory. Para ter mais informações sobre como criar usuários em seu Active Directory, consulte [Gerenciar usuários e grupos no Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups.html) gerenciado pela AWS no*Guia de administração doDirectory Service*.

1. Se você planeja localizar o diretório e a instância de Bancos de Dados em contas da AWS ou nuvens privadas virtuais (VPCs) diferentes, configure o emparelhamento de VPCs. Para ter mais informações, consulte [O que é emparelhamento de VPC?](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html) no *Amazon VPC Peering Guide*.

1. Crie ou modifique uma instância de banco de dados PostgreSQL no console, na CLI ou na API do RDS usando um dos seguintes métodos:
   + [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md) 
   + [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md) 
   + [Restaurar uma instância de banco de dados](USER_RestoreFromSnapshot.md)
   + [Restaurar uma instância de banco de dados para um momento especificado no Amazon RDS](USER_PIT.md)

   É possível localizar a instância na mesma Amazon Virtual Private Cloud (VPC) que o diretório ou em uma conta da AWS ou VPC diferente. Ao criar ou modificar a instância de banco de dados PostgreSQL, faça o seguinte:
   + Forneça o identificador de domínio (identificador `d-*`) que foi gerado quando você criou seu diretório.
   + Forneça o nome do perfil do IAM criado.
   + Certifique-se de que o grupo de segurança da instância de banco de dados possa receber o tráfego de entrada do grupo de segurança do diretório.

1. Use as credenciais de usuário mestre do RDS para conectar-se à instância de de banco de dados PostgreSQL. Crie o usuário no PostgreSQL para ser identificado externamente. Usuários identificados externamente podem fazer login na instância de banco de dados PostgreSQL usando a autenticação Kerberos.

# Configurar a autenticação Kerberos para instâncias de banco de dados do PostgreSQL
<a name="postgresql-kerberos-setting-up"></a>

Use o AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) para configurar a autenticação Kerberos para uma instância de banco de dados PostgreSQL. Para configurar a autenticação Kerberos, execute as etapas a seguir. 

**Topics**
+ [Etapa 1: Criar um diretório usando o AWS Managed Microsoft AD](#postgresql-kerberos-setting-up.create-directory)
+ [Etapa 2: (Opcional) Criar uma relação de confiança entre o Active Directory on-premises e o Directory Service](#postgresql-kerberos-setting-up.create-trust)
+ [Etapa 3: Criar um perfil do IAM para que o Amazon RDS acesse o Directory Service](#postgresql-kerberos-setting-up.CreateIAMRole)
+ [Etapa 4: Criar e configurar usuários](#postgresql-kerberos-setting-up.create-users)
+ [Etapa 5: Ativar o tráfego entre VPCs entre o diretório e a instância de banco de dados](#postgresql-kerberos-setting-up.vpc-peering)
+ [Etapa 6: Criar ou modificar uma instância de banco de dados PostgreSQL](#postgresql-kerberos-setting-up.create-modify)
+ [Etapa 7: Criar usuários do PostgreSQL para suas entidades principais do Kerberos](#postgresql-kerberos-setting-up.create-logins)
+ [Etapa 8: Configurar um cliente PostgreSQL](#postgresql-kerberos-setting-up.configure-client)

## Etapa 1: Criar um diretório usando o AWS Managed Microsoft AD
<a name="postgresql-kerberos-setting-up.create-directory"></a>

O Directory Service cria um Active Directory totalmente gerenciado na Nuvem AWS. Quando você cria um diretório AWS Managed Microsoft AD, o Directory Service cria dois controladores de domínio e servidores DNS para você. Os servidores do diretório são criados em sub-redes diferentes em uma VPC. Essa redundância ajuda a garantir que o diretório permaneça acessível mesmo se ocorrer uma falha. 

 Ao criar um diretório AWS Managed Microsoft AD, o AWS Directory Service realiza as seguintes tarefas em seu nome: 
+ Configura um Active Directory dentro da VPC. 
+ Cria de uma conta de administrador do diretório com o nome de usuário `Admin` e a senha especificada. Use essa conta para gerenciar seu diretório. 
**Importante**  
Certifique-se de salvar essa senha. O Directory Service não armazena essa senha e não é possível recuperá-la ou redefini-la.
+ Cria um grupo de segurança para os controladores do diretório. O grupo de segurança deve permitir a comunicação com a instância de banco de dados PostgreSQL.

Quando você lança o AWS Directory Service for Microsoft Active Directory, a AWS cria uma Unidade organizacional (OU) que contém todos os objetos do diretório. Essa UO, que tem o nome de NetBIOS que você digitou ao criar o diretório, está localizada na raiz do domínio. A raiz do domínio é controlada e de propriedade da AWS. 

 A conta `Admin`, que foi criada com o diretório AWS Managed Microsoft AD, tem permissões para as atividades administrativas mais comuns da UO: 
+ Criar, atualizar ou excluir usuários
+ Adicionar recursos ao domínio, como servidores de arquivos ou de impressão, e atribuir permissões para esses recursos aos usuários na UO 
+ Criar OUs adicionais e contêineres 
+ Delegar autoridade 
+ Restaurar objetos excluídos da Lixeira do Active Directory 
+ Execute os módulos Active Directory e Domain Name Service (DNS) para Windows PowerShell no Active Directory Web Service 

A conta `Admin` também possui direitos para executar as seguintes atividades de domínio: 
+ Gerenciar configurações de DNS (adicionar, remover ou atualizar registros, zonas e encaminhadores) 
+ Visualizar logs de eventos de DNS 
+ Visualizar logs de eventos de segurança 

**Como criar um diretório com AWS Managed Microsoft AD**

1.  No painel de navegação do [console do Directory Service](https://console.aws.amazon.com/directoryservicev2/), escolha **Directories (Diretórios)** e escolha **Set up directory (Configurar diretório)**. 

1. Escolha **AWS Managed Microsoft AD**. O AWS Managed Microsoft AD é a única opção atualmente compatível para uso com o Amazon RDS. 

1. Escolha **Next (Próximo)**.

1. Na página **Enter directory information (Inserir informações do diretório)**, forneça as seguintes informações:   
**Edição**  
 Escolha a edição que atenda às suas necessidades.  
**Nome do DNS do diretório**  
 O nome completo do diretório, como **corp.example.com**.   
**Nome de NetBIOS do diretório**  
 O nome curto opcional do diretório, como `CORP`.   
**Descrição do diretório**  
 Uma descrição opcional do diretório.   
**Senha do Admin**  
 A senha do administrador do diretório. O processo de criação do diretório cria uma conta de administrador com o nome de usuário `Admin` e essa senha.   
 A senha do administrador do diretório não pode incluir a palavra "admin". A senha diferencia letras maiúsculas de minúsculas e deve ter entre 8 e 64 caracteres. Ela também precisa conter pelo menos um caractere de três das quatro categorias a seguir:   
   +  Letras minúsculas (a–z) 
   +  Letras maiúsculas (A–Z) 
   +  Números (0–9) 
   +  Caracteres não alfanuméricos (\$1\$1@\$1\$1%^&\$1\$1-\$1=`\$1\$1()\$1\$1[]:;"'<>,.?/)   
**Confirmar senha**  
 Digite a senha do administrador novamente.   
Salve essa senha. O Directory Service não armazena essa senha e não é possível recuperá-la ou redefini-la.

1. Escolha **Next (Próximo)**.

1. Na página **Choose VPC and subnets (Selecionar VPC e sub-redes)**, forneça as seguintes informações:  
**VPC**  
Escolha a VPC do diretório. É possível criar a instância de banco de dados PostgreSQL nessa mesma VPC ou em outra VPC.   
**Sub-redes**  
 Escolha as sub-redes para os servidores do diretório. As duas sub-redes deve estar em diferentes zonas de disponibilidade. 

1. Escolha **Next (Próximo)**.

1.  Analise as informações do diretório. Se alterações forem necessárias, escolha **Previous (Anterior)** e faça as alterações. Quando as informações estiverem corretas, escolha **Create directory (Criar diretório)**.   
![\[Página de detalhes do diretório\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/WinAuth2.png)

 A criação do diretório leva vários minutos. Depois que o diretório tiver sido criado com sucesso, o valor de **Status** muda para **Active (Ativo)**. 

 Para visualizar informações sobre o diretório, escolha o ID do diretório na listagem de diretórios. Anote o valor do **Directory ID (ID do diretório)**. Esse valor será necessário ao criar ou modificar a instância de banco de dados PostgreSQL. 

![\[Imagem da página de detalhes\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/WinAuth3.png)


## Etapa 2: (Opcional) Criar uma relação de confiança entre o Active Directory on-premises e o Directory Service
<a name="postgresql-kerberos-setting-up.create-trust"></a>

Se você não planeja usar seu próprio Microsoft Active Directory on-premises, vá para [Etapa 3: Criar um perfil do IAM para que o Amazon RDS acesse o Directory Service](#postgresql-kerberos-setting-up.CreateIAMRole).

Para obter a autenticação Kerberos usando o Active Directory local, é necessário criar uma relação de domínio confiável usando uma confiança de floresta entre o Microsoft Active Directory on-premises e o diretório AWS Managed Microsoft AD (criado em [Etapa 1: Criar um diretório usando o AWS Managed Microsoft AD](#postgresql-kerberos-setting-up.create-directory)). A relação de confiança pode ser unidirecional, onde o diretório AWS Managed Microsoft AD confia no Microsoft Active Directory on-premises. A confiança também pode ser bidirecional, onde os dois Active Directories confiam um no outro. Para ter mais informações sobre como configurar confianças usando o Directory Service, consulte [Quando criar uma relação de confiança](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_setup_trust.html) no *Guia de administração do AWS Directory Service*.

**nota**  
Se você usar um Microsoft Active Directory on-premises, os clientes do Windows se conectam usando o nome de domínio do Directory Service no endpoint em vez de rds.amazonaws.com. Para saber mais, consulte [Conectar-se ao PostgreSQL com a autenticação Kerberos](postgresql-kerberos-connecting.md). 

Verifique se o nome de domínio do Microsoft Active Directory on-premises inclui um roteamento de sufixo DNS que corresponde à relação de confiança recém-criada. A captura de tela a seguir mostra um exemplo.

![\[O roteamento de DNS corresponde à confiança criada\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/kerberos-auth-trust.png)


## Etapa 3: Criar um perfil do IAM para que o Amazon RDS acesse o Directory Service
<a name="postgresql-kerberos-setting-up.CreateIAMRole"></a>

Para que o Amazon RDS chame o Directory Service para você, sua conta da AWS precisa de um perfil do IAM que use a política gerenciada `AmazonRDSDirectoryServiceAccess` do IAM. Essa função permite que o Amazon RDS faça chamadas para o Directory Service. 

Quando você cria uma instância de banco de dados usando o Console de gerenciamento da AWS e a conta do usuário do console tiver a permissão `iam:CreateRole`, o console criará o perfil do IAM necessário automaticamente. Nesse caso, o nome da função é `rds-directoryservice-kerberos-access-role`. Caso contrário, é necessário criar a função do IAM manualmente. Ao criar essa função do IAM, escolha `Directory Service` e associe a AWS política gerenciada da `AmazonRDSDirectoryServiceAccess` a ela. 

Para ter mais informações sobre como criar funções do IAM para um serviço, consulte o tópico sobre como [Criar uma função para delegar permissões a um serviço da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html), no *Guia do usuário do IAM*.

**nota**  
O perfil do IAM usado para a autenticação do Windows para RDS para Microsoft SQL Server não pode ser usado para o Amazon RDS para PostgreSQL.

Como alternativa ao uso da política gerenciada pelo `AmazonRDSDirectoryServiceAccess`, você pode criar políticas com as permissões exigidas. Nesse caso, o perfil do IAM deve ter a política de confiança do IAM a seguir.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "directoryservice.rds.amazonaws.com",
          "rds.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

A função também deve ter a política de perfil do IAM a seguir.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "ds:DescribeDirectories",
        "ds:AuthorizeApplication",
        "ds:UnauthorizeApplication",
        "ds:GetAuthorizedApplicationDetails"
      ],
    "Effect": "Allow",
    "Resource": "*"
    }
  ]
}
```

------

Para as Regiões da AWS pelas quais você optou, use entidades principais de serviço específicas da região nas políticas de confiança de perfil do IAM. Ao criar uma política de confiança para serviços nessas regiões, especifique o código da região na entidade principal do serviço.

O seguinte exemplo mostra uma política de confiança que inclui entidades principais de serviço específicas da região:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "directoryservice.rds.REGION-CODE.amazonaws.com",
          "rds.REGION-CODE.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Substitua REGION-CODE pelo código da sua região específica. Por exemplo, use as seguintes entidades principais de serviço para a região Ásia-Pacífico (Melbourne):

```
"Service": [
  "directoryservice.rds.ap-southeast-4.amazonaws.com",
  "rds.ap-southeast-4.amazonaws.com"
]
```

## Etapa 4: Criar e configurar usuários
<a name="postgresql-kerberos-setting-up.create-users"></a>

 Você pode criar usuários com a ferramenta Usuários e computadores do Active Directory. Essa é uma das ferramentas do Active Directory Domain Services e do Active Directory Lightweight Directory Services. Para obter mais informações, consulte [Add Users and Computers to the Active Directory domain](https://learn.microsoft.com/en-us/troubleshoot/windows-server/identity/create-an-active-directory-server#add-users-and-computers-to-the-active-directory-domain) (Adicionar usuários e computadores ao domínio do Active Directory) na documentação da Microsoft. Nesse caso, os usuários são indivíduos ou outras entidades, como seus computadores que fazem parte do domínio e cujas identidades estão sendo mantidas no diretório. 

Para criar usuários em um diretório do Directory Service, é necessário estar conectado a uma instância do Amazon EC2 baseada no Windows que seja membro do diretório do Directory Service. Ao mesmo tempo, é necessário estar conectado como um usuário que tenha privilégios para criar usuários. Para obter mais informações, consulte [Criar um usuário](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups_create_user.html) no *Guia de administração do AWS Directory Service*.

## Etapa 5: Ativar o tráfego entre VPCs entre o diretório e a instância de banco de dados
<a name="postgresql-kerberos-setting-up.vpc-peering"></a>

Se você planeja localizar o diretório e a instância de banco de dados na mesma VPC, ignore esta etapa e prossiga para [Etapa 6: Criar ou modificar uma instância de banco de dados PostgreSQL](#postgresql-kerberos-setting-up.create-modify).

Se você planejar localizar o diretório e a instância de Bancos de Dados em VPCs diferentes, configure o tráfego entre VPCs usando o emparelhamento de VPCs ou o [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html).

O procedimento a seguir habilita o tráfego entre VPCs usando o emparelhamento de VPCs. Siga as instruções em [O que é o emparelhamento de VPCs?](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html) no *Guia de emparelhamento do Amazon Virtual Private Cloud*.

**Como habilitar o tráfego entre VPCs usando o emparelhamento de VPCs**

1. Configure regras apropriadas de roteamento de VPC para garantir que o tráfego de rede possa fluir em ambos os sentidos.

1. Certifique-se de que o grupo de segurança da instância de banco de dados possa receber o tráfego de entrada do grupo de segurança do diretório.

1. Garanta que não há nenhuma regra na lista de controle de acesso (ACL) de rede para bloquear o tráfego.

Se uma conta diferente da AWS for proprietária do diretório, é necessário compartilhá-lo.

**Como compartilhar o diretório entre contas da AWS.**

1. Inicie o compartilhamento do diretório com a conta da AWS na qual a instância de Bancos de Dados será criada seguindo as instruções em [Tutorial: Compartilhar o diretório da AWS Managed Microsoft AD para ingresso perfeito no domínio do EC2](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_directory_sharing.html) no *Guia de administração do Directory Service*.

1. Faça login no console do Directory Service usando a conta para a instância de banco de dados e garanta que o domínio tenha o status `SHARED` antes de prosseguir.

1. Enquanto estiver conectado ao console do Directory Service usando a conta da instância de banco de dados, observe o valor do **Directory ID (ID do diretório)**. Use esse ID do diretório para associar a instância de banco de dados ao domínio.

## Etapa 6: Criar ou modificar uma instância de banco de dados PostgreSQL
<a name="postgresql-kerberos-setting-up.create-modify"></a>

Crie ou modifique uma instância de banco de dados PostgreSQL para usar com seu diretório. É possível usar o console, a CLI ou a API do RDS para associar uma instância de banco de dados a um diretório. Você pode fazer isso por meio de uma das seguintes maneiras:
+  Crie uma instância de banco de dados PostgreSQL usando o console, o comando [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) da CLI ou a operação de API [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) do RDS. Para obter instruções, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+  Modifique uma instância de banco de dados PostgreSQL existente usando o console, o comando [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) da CLI ou a operação de API [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) do RDS. Para obter instruções, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md). 
+  Restaure uma instância de banco de dados PostgreSQL de um snapshot de banco de dados usando o console, o comando [ restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) da CLI ou a operação de API [ RestoreDBInstanceFromDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) do RDS. Para obter instruções, consulte [Restaurar uma instância de banco de dados](USER_RestoreFromSnapshot.md). 
+  Restaure uma instância de banco de dados PostgreSQL em um determinado momento usando o console, o comando [restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) da CLI ou a operação de API [RestoreDBInstanceToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) do RDS. Para obter instruções, consulte [Restaurar uma instância de banco de dados para um momento especificado no Amazon RDS](USER_PIT.md). 

A autenticação Kerberos só é compatível com instâncias de de banco de dados PostgreSQL em uma VPC. A instância de banco de dados pode estar na mesma VPC do diretório ou em uma VPC diferente. A instância de banco de dados deve usar um grupo de segurança que permita entrada e saída na VPC do diretório para que a instância de banco de dados possa se comunicar com o diretório.

### Console
<a name="postgresql-kerberos-setting-up.create-modify.Console"></a>

Ao usar o console para criar, modificar ou restaurar uma instância de banco de dados, escolha **Password and Kerberos authentication** (Senha e autenticação Kerberos) na seção **Database authentication** (Autenticação de banco de dados). Em seguida, escolha **Browse Directory** (Procurar diretório). Selecione o diretório ou escolha **Create a new directory** (Criar um novo diretório) para usar o Directory Service.

![\[Selecionar o Kerberos para autenticação e identificar o diretório a ser usado.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/rpg-authentication-use-kerberos.png)


### AWS CLI
<a name="postgresql-kerberos-setting-up.create-modify.CLI"></a>

Quando você usa a AWS CLI, são necessários os seguintes parâmetros para que a instância de banco de dados possa usar o diretório criado:
+ Para o parâmetro `--domain`, use o identificador de domínio (identificador "d-\$1") gerado quando o diretório foi criado.
+ Para o parâmetro `--domain-iam-role-name`, use a função criada que usa a política gerenciada `AmazonRDSDirectoryServiceAccess` do IAM.

Por exemplo, o comando da CLI a seguir modifica uma instância de banco de dados para usar um diretório.

```
aws rds modify-db-instance --db-instance-identifier mydbinstance --domain d-Directory-ID --domain-iam-role-name role-name 
```

**Importante**  
Se você modificar uma instância de banco de dados para habilitar a autenticação Kerberos, reinicialize a instância de banco de dados após a alteração.

## Etapa 7: Criar usuários do PostgreSQL para suas entidades principais do Kerberos
<a name="postgresql-kerberos-setting-up.create-logins"></a>

Nesse ponto, sua instância de banco de dados do RDS para PostgreSQL é unida ao domínio AWS Managed Microsoft AD. Os usuários que você criou no diretório em [Etapa 4: Criar e configurar usuários](#postgresql-kerberos-setting-up.create-users) precisam ser configurados como usuários do banco de dados do PostgreSQL e receber privilégios para fazer login no banco de dados. Você faz isso fazendo login como usuário do banco de dados com privilégios `rds_superuser`. Por exemplo, se você aceitou os padrões ao criar sua instância de banco de dados do PostgreSQL, use `postgres`, conforme mostrado nas etapas a seguir. 

**Como criar usuários de banco de dados do PostgreSQL para entidades principais do Kerberos**

1. Use o `psql` para conectar-se ao endpoint da instância de banco de dados de seu RDS para PostgreSQL usando `psql`. O exemplo a seguir usa a conta `postgres` padrão para a função `rds_superuser`.

   ```
   psql --host=cluster-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

1. Crie um nome de usuário do banco de dados para cada entidade principal do Kerberos (nome de usuário do Active Directory) que você deseja que tenha acesso ao banco de dados. Use o nome de usuário canônico (identidade) conforme definido na instância do Active Directory, ou seja, uma letra minúscula `alias` (nome de usuário no Active Directory) e o nome em maiúscula do domínio do Active Directory para esse nome de usuário. O nome de usuário do Active Directory é um usuário autenticado externamente, portanto, use aspas ao redor do nome conforme mostrado a seguir.

   ```
   postgres=> CREATE USER "username@CORP.EXAMPLE.COM" WITH LOGIN;
   CREATE ROLE
   ```

1. Conceda a função `rds_ad` ao usuário do banco de dados.

   ```
   postgres=> GRANT rds_ad TO "username@CORP.EXAMPLE.COM";
   GRANT ROLE
   ```

Depois de concluir a criação de todos os usuários do PostgreSQL para suas identidades de usuário do Active Directory, os usuários podem acessar a instância de banco de dados do RDS para PostgreSQL usando suas credenciais do Kerberos. 

É necessário que os usuários do banco de dados que se autenticam usando o Kerberos estejam fazendo isso nas máquinas cliente que sejam membros do domínio do Active Directory.

Os usuários do banco de dados aos quais foi concedida a função `rds_ad` não podem ter também a função `rds_iam`. Isso também se aplica a assinaturas aninhadas. Para obter mais informações, consulte [Autenticação do banco de dados do IAMpara MariaDB, MySQL e PostgreSQL](UsingWithRDS.IAMDBAuth.md). 

## Etapa 8: Configurar um cliente PostgreSQL
<a name="postgresql-kerberos-setting-up.configure-client"></a>

Para configurar um cliente PostgreSQL, execute as seguintes etapas:
+ Crie um arquivo krb5.conf (ou equivalente) para apontar para o domínio. 
+ Verifique se o tráfego pode fluir entre o host do cliente e o Directory Service. Use um utilitário de rede, como o Netcat, para o seguinte:
  + Verifique o tráfego pelo DNS da porta 53.
  + Verifique o tráfego pelo TCP/UDP da porta 53 e do Kerberos, que inclui as portas 88 e 464 do Directory Service.
+ Verifique se o tráfego pode fluir entre o host do cliente e a instância de banco de dados pela porta do banco de dados. Por exemplo, use psql para conectar e acessar o banco de dados.

Veja a seguir um exemplo de conteúdo krb5.conf para o AWS Managed Microsoft AD.

```
[libdefaults]
 default_realm = EXAMPLE.COM
[realms]
 EXAMPLE.COM = {
  kdc = example.com
  admin_server = example.com
 }
[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM
```

Veja a seguir um exemplo de conteúdo krb5.conf para o Microsoft Active Directory on-premises.

```
[libdefaults]
 default_realm = EXAMPLE.COM
[realms]
 EXAMPLE.COM = {
  kdc = example.com
  admin_server = example.com
 }
 ONPREM.COM = {
  kdc = onprem.com
  admin_server = onprem.com
 }
[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM
 .onprem.com = ONPREM.COM
 onprem.com = ONPREM.COM  
 .rds.amazonaws.com = EXAMPLE.COM
 .amazonaws.com.rproxy.goskope.com.cn = EXAMPLE.COM
 .amazon.com = EXAMPLE.COM
```

# Gerenciar uma instância de banco de dados do RDS para PostgreSQL em um domínio do Active Directory
<a name="postgresql-kerberos-managing"></a>

É possível usar o console, a CLI ou a API do RDS para gerenciar a instância de banco de dados e suas relações com o Microsoft Active Directory. Por exemplo, é possível associar um Microsoft Active Directory para habilitar a autenticação Kerberos. Também é possível remover a associação de um Microsoft Active Directory para desabilitar a autenticação Kerberos. Também é possível mover uma instância de banco de dados para a autenticação externa por um Microsoft Active Directory para outro.

Por exemplo, usando a CLI, é possível fazer o seguinte:
+ Para tentar habilitar a autenticação Kerberos novamente para uma assinatura com falha, use o comando da CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) . Especifique o ID do diretório da associação atual para a opção `--domain`.
+ Para desabilitar a autenticação Kerberos em uma instância de banco de dados, use o comando da CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) . Especifique `none` para a opção `--domain`.
+ Para mover uma instância de banco de dados de um domínio para outro, use o comando da CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html). Especifique o identificador de domínio do novo domínio para a opção `--domain`.

## Compreensão da associação de domínio
<a name="postgresql-kerberos-managing.understanding"></a>

Depois de criar ou modificar uma instância de banco de dados, as instâncias de banco de dados se tornam membrosele se torna membro do domínio. É possível visualizar o status da associação do domínio no console ou executando o comando da CLI [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html). O status da instância de banco de dados pode ser um dos seguintes: 
+ `kerberos-enabled` – a instância de banco de dados que tem a autenticação Kerberos habilitada.
+ `enabling-kerberos`: a AWS está no processo de habilitar a autenticação Kerberos nessa instância de bancos de dados.
+ `pending-enable-kerberos` – a habilitação da autenticação Kerberos está pendente nessa instância de banco de dados.
+ `pending-maintenance-enable-kerberos`: a AWS tentará habilitar a autenticação Kerberos na instância de bancos de dados durante a próxima janela de manutenção programada.
+ `pending-disable-kerberos` – a desabilitação da autenticação Kerberos está pendente nessa instância de banco de dados.
+ `pending-maintenance-disable-kerberos`: a AWS tentará desabilitar a autenticação Kerberos na instância de banco de dados durante a próxima janela de manutenção programada.
+ `enable-kerberos-failed`: um problema de configuração impediu que a AWS habilitasse a autenticação Kerberos na instância de banco de dados. Corrija o problema de configuração antes de emitir o comando novamente para modificar a instância de banco de dados.
+ `disabling-kerberos`: a AWS está no processo de desabilitar a autenticação Kerberos nessa instância de bancos de dados.

Uma solicitação para habilitar a autenticação Kerberos pode falhar por conta de um novo problema de conectividade de rede ou de um perfil do IAM incorreto. Em alguns casos, poderá haver falha na tentativa de habilitar a autenticação Kerberos quando você criar ou modificar uma instância de banco de dados. Nesse caso, verifique se você está usando o perfil do IAM correto e modifique a instância de banco de dados para ingressar no domínio.

**nota**  
Somente a autenticação Kerberos com o RDS para PostgreSQL envia tráfego para os servidores DNS do domínio. Todas as outras solicitações de DNS são tratadas como acesso à rede de saída nas instâncias de banco de dados que executam o PostgreSQL. Para obter mais informações sobre o acesso à rede de saída com o RDS para PostgreSQL, consulte [Usar um servidor DNS personalizado para acesso à rede de saída](Appendix.PostgreSQL.CommonDBATasks.CustomDNS.md).

# Conectar-se ao PostgreSQL com a autenticação Kerberos
<a name="postgresql-kerberos-connecting"></a>

Você pode se conectar ao PostgreSQL com autenticação Kerberos com a interface pgAdmin ou com uma interface de linha de comando, como psql. Para obter mais informações sobre a conexão, consulte [Conectar a uma instância de banco de dados executando o mecanismo de banco de dados do PostgreSQL](USER_ConnectToPostgreSQLInstance.md) . Para saber como obter o endpoint, o número da porta e outros detalhes necessários para a conexão, consulte [Conectar-se à instância de banco de dados PostgreSQL](CHAP_GettingStarted.CreatingConnecting.PostgreSQL.md#CHAP_GettingStarted.Connecting.PostgreSQL). 

**nota**  
A autenticação e a criptografia GSSAPI no PostgreSQL são implementadas pela biblioteca Kerberos `libkrb5.so`. Recursos como `postgres_fdw` e `dblink` também dependem dessa mesma biblioteca para conexões de saída com autenticação ou criptografia Kerberos.

## pgAdmin
<a name="collapsible-section-pgAdmin"></a>

Para usar o pgAdmin para conectar-se ao PostgreSQL com autenticação Kerberos, execute as seguintes etapas:

1. Inicie a aplicação pgAdmin no computador cliente.

1. Na guia **Dashboard (Painel)**, escolha **Add New Server (Adicionar novo servidor)**.

1. Na caixa de diálogo **Criar - servidor**, insira um nome na guia **Geral** para identificar o servidor no pgAdmin.

1. Na guia **Connection** (Conexão), insira as seguintes informações do banco de dados do RDS para PostgreSQL. 
   + Em **Host**, insira o endpoint da Instância de banco de dados do RDS para PostgreSQL. Um endpoint é semelhante ao seguinte:

     ```
     RDS-DB-instance.111122223333.aws-region.rds.amazonaws.com
     ```

     Para se conectar a um Microsoft Active Directory on-premises de um cliente Windows, use o nome de domínio do AWS Managed Active Directory em vez de `rds.amazonaws.com` no endpoint do host. Por exemplo, suponha que o nome de domínio do Managed Active Directory da AWS seja `corp.example.com`. Depois, em **Host**, o endpoint seria especificado da seguinte forma: 

     ```
     RDS-DB-instance.111122223333.aws-region.corp.example.com
     ```
   + Em **Porta**, insira a porta designada. 
   + Em **Banco de dados de manutenção**, insira o nome do banco de dados inicial ao qual o cliente se conectará.
   + Em **Nome de usuário**, insira o nome de usuário que você inseriu para a autenticação Kerberos em [Etapa 7: Criar usuários do PostgreSQL para suas entidades principais do Kerberos](postgresql-kerberos-setting-up.md#postgresql-kerberos-setting-up.create-logins). 

1. Escolha **Salvar**.

## Psql
<a name="collapsible-section-psql"></a>

Para usar o psql para conectar-se ao PostgreSQL com autenticação Kerberos, execute as seguintes etapas:

1. Em um prompt de comando, execute o comando a seguir.

   ```
   kinit username                
   ```

   Substitua *`username`* pelo nome de usuário. No prompt, insira a senha armazenada no Microsoft Active Directory para o usuário.

1. Se a instância de banco de dados PostgreSQL estiver usando uma VPC acessível publicamente, coloque um endereço IP para o endpoint do  da instância de banco de dados em seu arquivo `/etc/hosts` no cliente do EC2. Por exemplo, os comandos a seguir obtêm o endereço IP e o colocam no arquivo `/etc/hosts`.

   ```
   % dig +short PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com  
   ;; Truncated, retrying in TCP mode.
   ec2-34-210-197-118.AWS-Region.compute.amazonaws.com.
   34.210.197.118 
   
   % echo " 34.210.197.118  PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com" >> /etc/hosts
   ```

   Se você estiver usando um Microsoft Active Directory on-premises de um cliente Windows, será necessário se conectar usando um endpoint especializado. Em vez de usar o domínio `rds.amazonaws.com` da Amazon no endpoint do host, use o nome de domínio do Managed Active Directory da AWS.

   Por exemplo, suponha que o nome de domínio do Managed Active Directory da AWS seja `corp.example.com`. Use o formato `PostgreSQL-endpoint.AWS-Region.corp.example.com` para o endpoint e coloque-o no arquivo `/etc/hosts`.

   ```
   % echo " 34.210.197.118  PostgreSQL-endpoint.AWS-Region.corp.example.com" >> /etc/hosts
   ```

1. Use o comando psql a seguir para fazer login em uma instância de banco de dados PostgreSQL com integração ao Active Directory. 

   ```
   psql -U username@CORP.EXAMPLE.COM -p 5432 -h PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com postgres
   ```

   Para fazer login no cluster de banco de dados PostgreSQL de um cliente Windows usando um Active Directory on-premises, use o seguinte comando psql com o nome de domínio da etapa anterior (`corp.example.com`):

   ```
   psql -U username@CORP.EXAMPLE.COM -p 5432 -h PostgreSQL-endpoint.AWS-Region.corp.example.com postgres
   ```