

# Uso de la autenticación Kerberos con Amazon RDS para PostgreSQL
<a name="postgresql-kerberos"></a>

Puede usar Kerberos para autenticar a los usuarios cuando se conecten a su instancia de base de datos en la que se ejecuta PostgreSQL. Para ello, configure la instancia de base de datos para utilizar AWS Directory Service for Microsoft Active Directory para la autenticación Kerberos. AWS Directory Service for Microsoft Active Directory también se denomina AWS Managed Microsoft AD. Es una función disponible con Directory Service. Para obtener más información, consulte [¿Qué esDirectory Service?](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html) en la *Guía de administración de AWS Directory Service*.

Para empezar, cree un directorio de AWS Managed Microsoft AD para almacenar las credenciales de usuario. A continuación, proporcione a su instancia de base de datos de PostgreSQL el dominio de Active Directory y otra información. Cuando los usuarios se autentican con la instancia de de base de datos de PostgreSQL, las solicitudes de autenticación se reenvían al directorio AWS Managed Microsoft AD. 

Mantener todas las credenciales en el mismo directorio puede ahorrarle tiempo y esfuerzo. Tiene un lugar centralizado para almacenar y administrar credenciales para varias instancias de bases de datos. El uso de un directorio también puede mejorar su perfil de seguridad general.

Además, puede acceder a las credenciales desde su propio Microsoft Active Directory en las instalaciones. Para ello, cree una relación de dominio de confianza para que el directorio de AWS Managed Microsoft AD confíe en su Microsoft Active Directory en las instalaciones. De esta manera, los usuarios pueden acceder a las instancias de los  de PostgreSQL con la misma experiencia de inicio de sesión único (SSO) de Windows que cuando acceden a cargas de trabajo en las instalaciones.

Una base de datos puede utilizar la autenticación por contraseña o la autenticación por contraseña con Kerberos o con la autenticación de AWS Identity and Access Management (IAM). Para obtener más información acerca de la autenticación IAM, consulte [Autenticación de bases de datos de IAM para MariaDB, MySQL, and PostgreSQL](UsingWithRDS.IAMDBAuth.md). 

**nota**  
RDS para PostgreSQL no admite la autenticación Kerberos para grupos de Active Directory.

**Topics**
+ [Disponibilidad en regiones y versiones](#postgresql-kerberos.RegionVersionAvailability)
+ [Información general de la autenticación Kerberos para instancias de base de datos de PostgreSQL](#postgresql-kerberos-overview)
+ [Configuración de autenticación Kerberos para instancias de base de datos de PostgreSQL](postgresql-kerberos-setting-up.md)
+ [Administración de una instancia de base de datos de RDS para PostgreSQL en un dominio de Active Directory](postgresql-kerberos-managing.md)
+ [Conexión a PostgreSQL con autenticación Kerberos](postgresql-kerberos-connecting.md)

## Disponibilidad en regiones y versiones
<a name="postgresql-kerberos.RegionVersionAvailability"></a>

La disponibilidad de las características varía según las versiones específicas de cada motor de base de datos y entre Regiones de AWS. Para obtener más información sobre la disponibilidad en versiones y regiones de RDS para PostgreSQL con autenticación Kerberos, consulte [Regiones y motores de base de datos admitidos para autenticación de Kerberos en Amazon RDS](Concepts.RDS_Fea_Regions_DB-eng.Feature.KerberosAuthentication.md).

## Información general de la autenticación Kerberos para instancias de base de datos de PostgreSQL
<a name="postgresql-kerberos-overview"></a>

Para configurar la autenticación Kerberos para una instancia de base de datos de PostgreSQL, complete los siguientes pasos generales, que se describen con más detalle más adelante:

1. Utilice AWS Managed Microsoft AD para crear un directorio de AWS Managed Microsoft AD. Puede utilizar la Consola de administración de AWS, la AWS CLI o la API de Directory Service para crear el directorio. Asegúrese de abrir los puertos de salida relevantes en el grupo de seguridad del directorio para que el directorio pueda comunicarse con la instancia.

1. Cree un rol que proporcione a Amazon RDS acceso para realizar llamadas a su directorio de AWS Managed Microsoft AD. Para ello, cree un rol de AWS Identity and Access Management (IAM) que utilice la política administrada de IAM `AmazonRDSDirectoryServiceAccess`. 

   Para que el rol de IAM permita el acceso, el punto de enlace AWS Security Token Service (AWS STS) debe activarse en la región de AWS correcta para su cuenta de AWS. Los puntos de conexión de AWS STS están activos de forma predeterminada en todas las Regiones de AWS y puede usarlos sin ninguna acción posterior. Para obtener más información, consulte [Activación y desactivación de AWS STS en una región de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#sts-regions-activate-deactivate) en la *Guía del usuario de IAM*.

1. Cree y configure usuarios en el directorio de AWS Managed Microsoft AD usando las herramientas de Microsoft Active Directory. Para obtener más información sobre la creación de usuarios en su Active Directory, consulte [Administrar usuarios y grupos en AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups.html) en la *Guía de administración de Directory Service*.

1. Si piensa localizar el directorio y la instancia de base de datos en diferentes cuentas de AWS o nubes virtuales privadas (VPC), configure la interconexión de VPC. Para obtener más información, consulte [¿Qué es una interconexión de VPC?](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html) en la *Amazon VPC Peering Guide*.

1. Cree o modifique una instancia de base de datos de PostgreSQL desde la consola, la CLI o la API de RDS utilizando uno de los siguientes métodos:
   + [Creación de una instancia de base de datos de Amazon RDS](USER_CreateDBInstance.md) 
   + [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md) 
   + [Restauración a una instancia de base de datos](USER_RestoreFromSnapshot.md)
   + [Restauración de una instancia de base de datos a un momento especificado para Amazon RDS](USER_PIT.md)

   Puede localizar la instancia en la misma Amazon Virtual Private Cloud (VPC) que el directorio o en una VPC o cuenta de AWS diferente. Cuando cree o modifique la instancia de base de datos de PostgreSQL, haga lo siguiente:
   + Proporcione el identificador de dominio (identificador `d-*`) que se generó cuando creó el directorio.
   + Proporcione el nombre del rol de IAM que ha creado.
   + Asegúrese de que el grupo de seguridad de la instancia de base de datos pueda recibir tráfico de entrada del grupo de seguridad del directorio.

1. Use las credenciales de usuario maestro de RDS para conectarse a la instancia de base de datos de PostgreSQL. Cree el usuario en PostgreSQL para que sea identificado externamente. Los usuarios identificados externamente pueden iniciar sesión en la instancia de base de datos de PostgreSQL utilizando la autenticación Kerberos.

# Configuración de autenticación Kerberos para instancias de base de datos de PostgreSQL
<a name="postgresql-kerberos-setting-up"></a>

Utilice AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) para configurar la autenticación Kerberos para una instancia de base de datos de PostgreSQL. Para configurar la autenticación Kerberos, siga los pasos que se indican a continuación: 

**Topics**
+ [Paso 1: crear un directorio con AWS Managed Microsoft AD](#postgresql-kerberos-setting-up.create-directory)
+ [Paso 2: (opcional) crear una relación de confianza entre su Active Directory en las instalaciones y Directory Service](#postgresql-kerberos-setting-up.create-trust)
+ [Paso 3: crear un rol de IAM para que Amazon RDS acceda a Directory Service](#postgresql-kerberos-setting-up.CreateIAMRole)
+ [Paso 4: crear y configurar usuarios](#postgresql-kerberos-setting-up.create-users)
+ [Paso 5: habilitar el tráfico entre VPC entre el directorio y la instancia de base de datos](#postgresql-kerberos-setting-up.vpc-peering)
+ [Paso 6: crear o modificar una instancia de base de datos de PostgreSQL](#postgresql-kerberos-setting-up.create-modify)
+ [Paso 7: crear usuarios de PostgreSQL para las entidades principales de Kerberos](#postgresql-kerberos-setting-up.create-logins)
+ [Paso 8: configurar un cliente de PostgreSQL](#postgresql-kerberos-setting-up.configure-client)

## Paso 1: crear un directorio con AWS Managed Microsoft AD
<a name="postgresql-kerberos-setting-up.create-directory"></a>

Directory Service crea un directorio de Active Directory completamente administrado en la nube de AWS. Al crear un directorio de AWS Managed Microsoft AD, Directory Service crea dos controladores de dominio y servidores DNS para usted. Los servidores de directorios se crean en diferentes subredes de una VPC. Esta redundancia ayuda a garantizar que su directorio permanezca accesible incluso si ocurre un error. 

 Cuando se crea un directorio de AWS Managed Microsoft AD, AWS Directory Service realiza las siguientes tareas en su nombre: 
+ Configura un Active Directory dentro de la VPC. 
+ Crea una cuenta de administrador del directorio con el nombre de usuario `Admin` y la contraseña especificada. Esta cuenta le permite administrar el directorio. 
**importante**  
Asegúrese de guardar esta contraseña. Directory Service no almacena esta contraseña y no se puede recuperar ni restablecer.
+ Crea un grupo de seguridad para los controladores del directorio. El grupo de seguridad debe permitir la comunicación con la instancia de base de datos de PostgreSQL.

Al lanzar AWS Directory Service for Microsoft Active Directory, AWS crea una unidad organizativa (OU) que contiene todos los objetos del directorio. Esta unidad organizativa, que tiene el nombre de NetBIOS que introdujo al crear el directorio, se encuentra en la raíz del dominio. La raíz del dominio es propiedad de AWS, que también se encarga de su administración. 

 La cuenta `Admin` que se creó con el directorio de AWS Managed Microsoft AD dispone de permisos para realizar las actividades administrativas más habituales para la unidad organizativa: 
+ Crear, actualizar o eliminar usuarios
+ Añadir recursos a su dominio, como servidores de archivos o de impresión y, a continuación, asignar permisos para esos recursos a usuarios dentro de la unidad organizativa 
+ Crear unidades organizativas y contenedores adicionales 
+ Delegar autoridad 
+ Restaurar objetos eliminados de la papelera de reciclaje de Active Directory 
+ Ejecute módulos de Active Directory y Domain Name Service (DNS) para Windows Powershell en el servicio web de Active Directory 

La cuenta `Admin` también tiene derechos para realizar las siguientes actividades en todo el dominio: 
+ Administrar configuraciones DNS (agregar, quitar o actualizar registros, zonas y programas de envío). 
+ Ver logs de eventos DNS 
+ Ver logs de eventos de seguridad 

**Para crear un directorio con AWS Managed Microsoft AD**

1.  En el panel de navegación de la [consola de Directory Service](https://console.aws.amazon.com/directoryservicev2/), elija **Directories (Directorios)** y, a continuación, elija **Set up Directory (Configurar directorio)**. 

1. Elija **AWS Managed Microsoft AD**. AWS Managed Microsoft AD es la única opción que se admite actualmente para usar con Amazon RDS. 

1. Elija **Next (Siguiente)**.

1. En la página **Enter directory information (Especifique la información del directorio)**, facilite la siguiente información:   
**Edición**  
 Elija la edición que se adapte a sus necesidades.  
**Nombre de DNS del directorio**  
 El nombre completo del directorio, como por ejemplo **corp.example.com**.   
**Nombre NetBIOS del directorio**  
 Un nombre abreviado del directorio opcional, como COR `CORP`.   
**Descripción del directorio**  
 Descripción opcional del directorio.   
**Contraseña de administrador**  
 Contraseña del administrador del directorio. Al crear el directorio, se crea también una cuenta de administrador con el nombre de usuario `Admin` y esta contraseña.   
 La contraseña del administrador del directorio no puede contener la palabra "admin". La contraseña distingue entre mayúsculas y minúsculas y debe tener un mínimo de 864 caracteres y un máximo de 64. También debe contener al menos un carácter de tres de las siguientes categorías:   
   +  Letras minúsculas (a–z) 
   +  Letras mayúsculas (A–Z) 
   +  Números (0–9) 
   +  Caracteres no alfanuméricos (\$1\$1@\$1\$1%^&\$1\$1-\$1=`\$1\$1()\$1\$1[]:;"'<>,.?/)   
**Confirm password**  
 Vuelva a escribir la contraseña de administrador.   
Asegúrese de guardar esta contraseña. Directory Service no almacena esta contraseña y no se puede recuperar ni restablecer.

1. Elija **Next (Siguiente)**.

1. En la página **Choose VPC and subnets (Elegir la VPC y las subredes)**, proporcione la información siguiente:  
**VPC**  
Elija la VPC del directorio. Puede crear la instancia de base de datos de PostgreSQL en esta misma VPC o en una VPC diferente.   
**Subredes**  
 Elija las subredes de los servidores del directorio. Las dos subredes deben estar en diferentes zonas de disponibilidad. 

1. Elija **Next (Siguiente)**.

1.  Revise la información del directorio. Si es necesario realizar algún cambio, seleccione **Previous (Anterior)** y realizar los cambios. Cuando la información sea correcta, seleccione **Create directory (Crear directorio)**.   
![\[Detalles del directorio\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/WinAuth2.png)

 La creación del directorio tarda varios minutos. Cuando se haya creado correctamente, el valor de **Status (Estado)** cambiará a **Active (Activo)**. 

 Para ver información acerca de su directorio, seleccione el ID del directorio en la lista de directorios. Anote el valor de **Directory ID (ID de directorio)**. Necesita este valor cuando cree o modifique su instancia de base de datos de PostgreSQL. 

![\[Imagen de página de detalles\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/WinAuth3.png)


## Paso 2: (opcional) crear una relación de confianza entre su Active Directory en las instalaciones y Directory Service
<a name="postgresql-kerberos-setting-up.create-trust"></a>

Si no planea usar su propio Microsoft Active Directory local, vaya a [Paso 3: crear un rol de IAM para que Amazon RDS acceda a Directory Service](#postgresql-kerberos-setting-up.CreateIAMRole).

Para obtener la autenticación Kerberos mediante Active Directory en las instalaciones, debe crear una relación de dominio de confianza entre Microsoft Active Directory en las instalaciones y el directorio AWS Managed Microsoft AD (creado en [Paso 1: crear un directorio con AWS Managed Microsoft AD](#postgresql-kerberos-setting-up.create-directory)). La confianza puede ser unidireccional, donde el directorio AWS Managed Microsoft AD confía en Microsoft Active Directory local. La confianza también puede ser bidireccional, donde ambos Active Directories confían entre sí. Para obtener más información acerca de la configuración de relaciones de confianza con Directory Service, consulte [Cuándo crear una relación de confianza](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_setup_trust.html) en la *guía de administración de AWS Directory Service*.

**nota**  
Si utiliza Microsoft Active Directory en las instalaciones, los clientes de Windows se conectan con el nombre de dominio del Directory Service en el punto de conexión en lugar de con rds.amazonaws.com. Para obtener más información, consulte [Conexión a PostgreSQL con autenticación Kerberos](postgresql-kerberos-connecting.md). 

Asegúrese de que el nombre de dominio local de Microsoft Active Directory incluya un enrutamiento de sufijo DNS que corresponda a la relación de confianza recién creada. En la siguiente captura de pantalla, se muestra un ejemplo.

![\[El enrutamiento DNS corresponde a la confianza creada\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/kerberos-auth-trust.png)


## Paso 3: crear un rol de IAM para que Amazon RDS acceda a Directory Service
<a name="postgresql-kerberos-setting-up.CreateIAMRole"></a>

Para que Amazon RDS llame a Directory Service en su nombre, su cuenta de AWS se precisa un rol de IAM que utilice la política de IAM administrada `AmazonRDSDirectoryServiceAccess`. Este rol permite que Amazon RDS llame a Directory Service. 

Cuando se crea una instancia de base de datos con la Consola de administración de AWS y la cuenta de usuario de la consola tiene el permiso `iam:CreateRole`, la consola crea automáticamente el rol de IAM necesario. En este caso, el nombre del rol es `rds-directoryservice-kerberos-access-role`. De no ser así, debe crear el rol de IAM manualmente. Cuando cree este rol de IAM, elija `Directory Service` y asocie la política administrada de AWS `AmazonRDSDirectoryServiceAccess` a este. 

A fin de obtener más información acerca de la creación de roles de IAM para un servicio, consulte [Creación de un rol para delegar permisos a un servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la *guía del usuario de IAM*.

**nota**  
El rol de IAM utilizado para la autenticación de Windows para RDS para Microsoft SQL Server no puede ser utilizado por Amazon RDS para PostgreSQL.

Como alternativa al uso de la política administrada de `AmazonRDSDirectoryServiceAccess`, puede crear políticas con los permisos necesarios. En este caso, el rol de IAM debe tener la siguiente política de confianza de IAM.

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

****  

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

------

El rol debe también tener la siguiente política de rol de IAM.

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

****  

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

------

Para suscribirse a Regiones de AWS, utilice las entidades principales de servicios específicos de la región en las políticas de confianza de roles de IAM. Cuando cree una política de confianza para servicios en estas regiones, especifique el código de región en la entidad principal de servicio.

En el siguiente ejemplo se muestra una política de confianza que incluye entidades principales de servicio específicas de la región:

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

****  

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

------

Reemplace REGION-CODE por el código de la región específica. Por ejemplo, utilice las siguientes entidades principales de servicio para la región Asia-Pacífico (Melbourne):

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

## Paso 4: crear y configurar usuarios
<a name="postgresql-kerberos-setting-up.create-users"></a>

 Puede crear usuarios usando la herramienta Usuarios y equipos de Active Directory. Es una de las herramientas Active Directory Domain Services y Active Directory Lightweight Directory Services. Para obtener más información, consulte [Agregar usuarios y equipos al dominio de Active Directory](https://learn.microsoft.com/en-us/troubleshoot/windows-server/identity/create-an-active-directory-server#add-users-and-computers-to-the-active-directory-domain) en la documentación de Microsoft. En este caso, los usuarios son individuos u otras entidades, como sus equipos, que forman parte del dominio y cuyas identidades se mantienen en el directorio. 

Para crear usuarios en un directorio de Directory Service, debe estar conectado a una instancia de Amazon EC2 con Windows que sea miembro del directorio de Directory Service. Al mismo tiempo, debe iniciar sesión como usuario con privilegios para crear usuarios. Para obtener más información, consulte [Crear un usuario](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups_create_user.html) en la *Guía de administración de AWS Directory Service*.

## Paso 5: habilitar el tráfico entre VPC entre el directorio y la instancia de base de datos
<a name="postgresql-kerberos-setting-up.vpc-peering"></a>

Si prevé ubicar el directorio y la instancia de base de datos en la misma VPC, omita este paso y continúe con [Paso 6: crear o modificar una instancia de base de datos de PostgreSQL](#postgresql-kerberos-setting-up.create-modify).

Si tiene previsto ubicar el directorio y la instancia de base de datos en diferentes VPC, configure el tráfico entre VPC mediante la interconexión de VPC o [AWSTransit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html).

El siguiente procedimiento permite el tráfico entre VPC mediante la interconexión de VPC. Siga las instrucciones de [¿Qué es una interconexión de VPC?](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html) en la *Guía de interconexión de Amazon Virtual Private Cloud*.

**Para habilitar el tráfico entre VPC mediante la interconexión de VPC**

1. Configure las reglas de enrutamiento de VPC adecuadas para garantizar que el tráfico de red pueda fluir en ambos sentidos.

1. Asegúrese de que el grupo de seguridad de la instancia de base de datos pueda recibir tráfico de entrada del grupo de seguridad del directorio.

1. Asegúrese de que no haya una regla de lista de control de acceso (ACL) a la red para bloquear el tráfico.

Si una cuenta de AWS distinta es la propietaria del directorio, debe compartirlo.

**Para compartir el directorio entre cuentas de AWS**

1. Comience a compartir el directorio con la cuenta de AWS en la que se creará la instancia de base de datos mediante las instrucciones de [Tutorial: Uso compartido del directorio de AWS Managed Microsoft AD para realizar la unión al dominio de EC2 sin problemas](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_directory_sharing.html) en la *Guía de administración de Directory Service*.

1. Inicie sesión en la consola de Directory Service utilizando la cuenta para la instancia de base de datos y asegúrese de que el dominio tiene el estado `SHARED` antes de continuar.

1. Una vez iniciada sesión en la consola de Directory Service utilizando la cuenta de la instancia de base de datos, anote el valor de **Directory ID (ID de directorio)**. Utilice este identificador de directorio para unir la instancia de base de datos al dominio.

## Paso 6: crear o modificar una instancia de base de datos de PostgreSQL
<a name="postgresql-kerberos-setting-up.create-modify"></a>

Cree o modifique una instancia de base de datos de PostgreSQL para usarla con su directorio. Puede utilizar la consola, la CLI o la API de RDS para asociar una instancia de base de datos con un directorio. Puede hacerlo de una de las siguientes formas:
+  Cree una nueva instancia de base de datos de PostgreSQL utilizando la consola, el comando de CLI [ create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) o la operación [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) de la API de RDS. Para obtener instrucciones, consulte [Creación de una instancia de base de datos de Amazon RDS](USER_CreateDBInstance.md).
+  Modifique una instancia de base de datos de PostgreSQL existente utilizando la consola, el comando de CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) o la operación [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) de la API de RDS. Para obtener instrucciones, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md). 
+  Restaure una instancia de base de datos de PostgreSQL a partir de una instantánea de base de datos utilizando la consola, el comando de CLI [ restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) o la operación [ RestoreDBInstanceFromDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) de la API de RDS. Para obtener instrucciones, consulte [Restauración a una instancia de base de datos](USER_RestoreFromSnapshot.md). 
+  Restaure una instancia de base de datos de PostgreSQL a partir de un punto en el tiempo utilizando la consola, el comando de CLI [restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) o la operación [ RestoreDBInstanceToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) de la API de RDS. Para obtener instrucciones, consulte [Restauración de una instancia de base de datos a un momento especificado para Amazon RDS](USER_PIT.md). 

La autenticación de Kerberos solo es compatible con de clústeres de base de datos de PostgreSQL en una VPC. La instancia de DB puede estar en la misma VPC que el directorio o en una VPC diferente. La instancia de base de datos debe usar un grupo de seguridad que permita el ingreso y la salida dentro de la VPC del directorio, de modo que la instancia de base de datos pueda comunicarse con el directorio.

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

Si utiliza la consola para crear, modificar o restaurar una instancia de base de datos, elija **Password and Kerberos authentication (Contraseña y autenticación de Kerberos)** en la sección **Database authentication (Autenticación de base de datos)**. Luego, elija **Browse Directory** (Examinar directorio). Seleccione el directorio o elija **Create a new directory** (Crear un nuevo directorio) para utilizar Directory Service.

![\[Elegir Kerberos para la autenticación e identificar el directorio que se va a utilizar.\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/rpg-authentication-use-kerberos.png)


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

Cuando utilice la AWS CLI, se necesitan los siguientes parámetros para que la instancia de base de datos pueda usar el directorio que ha creado:
+ Para el parámetro `--domain`, utilice el identificador de dominio (identificador "d-\$1") que se generó cuando creó el directorio.
+ Para el parámetro `--domain-iam-role-name`, utilice el rol que creó que usa la política `AmazonRDSDirectoryServiceAccess` de IAM administrada.

Por ejemplo, el siguiente comando de CLI modifica una instancia de base de datos para que use un directorio.

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

**importante**  
Si modifica una instancia de base de datos para habilitar la autenticación Kerberos, reinicie la instancia de base de datos después de hacer el cambio.

## Paso 7: crear usuarios de PostgreSQL para las entidades principales de Kerberos
<a name="postgresql-kerberos-setting-up.create-logins"></a>

En este punto, su instancia de base de datos de RDS para PostgreSQL se une al dominio AWS Managed Microsoft AD. Los usuarios que haya creado en el directorio en el [Paso 4: crear y configurar usuarios](#postgresql-kerberos-setting-up.create-users) deben configurarse como usuarios de la base de datos de PostgreSQL y tener privilegios para iniciar sesión en la base de datos. Para ello, inicie sesión como usuario de la base de datos con privilegios `rds_superuser`. Por ejemplo, si ha aceptado los valores predeterminados al crear la instancia de base de datos de RDS para PostgreSQL, utiliza `postgres`, tal como se muestra en los pasos siguientes. 

**Para crear usuarios de la base de datos de PostgreSQL para las entidades principales de Kerberos**

1. Use `psql` para conectarse a su punto de conexión de la instancia de base de datos del RDS para PostgreSQL mediante `psql`. En el siguiente ejemplo, se usa la cuenta de `postgres` predeterminada del rol de `rds_superuser`.

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

1. Cree un nombre de usuario de base de datos para cada entidad principal de Kerberos (nombre de usuario de Active Directory) al que desee otorgar acceso a la base de datos. Utilice el nombre de usuario canónico (identidad) tal como se define en la instancia de Active Directory, es decir, un `alias` en minúsculas (nombre de usuario en Active Directory) y el nombre en mayúsculas del dominio de Active Directory para ese nombre de usuario. El nombre de usuario de Active Directory es un usuario autenticado externamente, así que utilice comillas alrededor del nombre tal como se muestra a continuación.

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

1. Otorgue el rol `rds_ad` al usuario de la base de datos.

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

Cuando termine de crear todos los usuarios de PostgreSQL para sus identidades de usuario de Active Directory, los usuarios podrán acceder a la instancia de base de datos de RDS para PostgreSQL con sus credenciales de Kerberos. 

Es necesario que los usuarios de bases de datos que se autentican mediante Kerberos lo hagan desde máquinas de cliente que sean miembros del dominio de Active Directory.

Los usuarios de bases de datos a los que se les ha otorgado el rol `rds_ad` tampoco pueden tener el rol `rds_iam`. Esto se aplica también a las membresías anidadas. Para obtener más información, consulte [Autenticación de bases de datos de IAM para MariaDB, MySQL, and PostgreSQL](UsingWithRDS.IAMDBAuth.md). 

## Paso 8: configurar un cliente de PostgreSQL
<a name="postgresql-kerberos-setting-up.configure-client"></a>

Para configurar un cliente de PostgreSQL, siga los pasos siguientes:
+ Cree un archivo krb5.conf (o equivalente) para apuntar al dominio. 
+ Verifique que el tráfico puede fluir entre el host cliente y Directory Service. Use una utilidad de red como, por ejemplo, Netcat para lo siguiente:
  + Verificar el tráfico sobre DNS para el puerto 53.
  + Verificar el tráfico sobre TCP/UDP para el puerto 52 y para Kerberos, lo que incluye los puertos 88 y 464 para Directory Service.
+ Verifique que el tráfico puede fluir entre el host cliente y la instancia de base de datos sobre el puerto de base de datos. Por ejemplo, utilice psql para conectarse y acceder a la base de datos.

A continuación, se muestra el contenido krb5.conf para 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
```

A continuación, se muestra el contenido krb5.conf de ejemplo para un Microsoft Active Directory local.

```
[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
```

# Administración de una instancia de base de datos de RDS para PostgreSQL en un dominio de Active Directory
<a name="postgresql-kerberos-managing"></a>

Puede usar la consola, la CLI o la API de RDS para administrar la instancia de base de datos y su relación con Microsoft Active Directory. Puede, por ejemplo, asociar un Active Directory para habilitar la autenticación Kerberos. También puede eliminar la asociación para un Active Directory para deshabilitar la autenticación Kerberos. También puede mover una instancia de base de datos que va a ser autenticada externamente por un Microsoft Active Directory a otro.

Por ejemplo, con la CLI, puede hacer lo siguiente:
+ Para volver a intentar habilitar la autenticación Kerberos para una suscripción con error, use el comando [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) de la CLI. Especifique el ID de directorio de pertenencia actual para la opción `--domain`.
+ Para deshabilitar la autenticación Kerberos en una instancia de base de datos, utilice el comando [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) de la CLI. Especifique `none` para la opción `--domain`.
+ Para mover una instancia de base de datos desde un dominio a otro, utilice el comando [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) de la CLI. Especifique el identificador de dominio del nuevo dominio para la opción `--domain`.

## Descripción de la pertenencia a los dominios
<a name="postgresql-kerberos-managing.understanding"></a>

Después de crear o modificar la instancia de base de datos, se convierte en un miembro del dominio. Puede ver el estado de la suscripción al dominio en la consola o ejecutando el comando [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) de la CLI. El estado de la instancia de base de datos puede ser uno de los siguientes: 
+ `kerberos-enabled`: la instancia de base de datos tiene habilitada la autenticación Kerberos.
+ `enabling-kerberos` - AWS está en proceso de habilitar la autenticación Kerberos en esta instancia de base de datos.
+ `pending-enable-kerberos`: la habilitación de la autenticación Kerberos está pendiente en esta instancia de base de datos.
+ `pending-maintenance-enable-kerberos` - AWS intentará habilitar la autenticación Kerberos en la instancia de base de datos durante el próximo periodo de mantenimiento programado.
+ `pending-disable-kerberos`: la deshabilitación de la autenticación Kerberos está pendiente en esta instancia de base de datos.
+ `pending-maintenance-disable-kerberos` - AWS intentará desactivar la autenticación Kerberos en la instancia de base de datos durante el próximo periodo de mantenimiento programado.
+ `enable-kerberos-failed` - Un problema de configuración ha impedido que AWS habilite la autenticación Kerberos en la instancia de base de datos. Corrija el problema de configuración antes de volver a ejecutar el comando para modificar la instancia de base de datos.
+ `disabling-kerberos` - AWS está en proceso de desactivar la autenticación Kerberos en esta instancia de base de datos.

Una solicitud para habilitar la autenticación Kerberos puede generar un error a causa de un problema de conectividad de la red o de un rol de IAM incorrecto. En algunos casos, el intento de habilitar la autenticación Kerberos podría producir un error al crear o modificar una instancia de base de datos. En tal caso, asegúrese de que está utilizando el rol de IAM correcto, a continuación modifique la instancia de base de datos para unirse al dominio.

**nota**  
Solo la autenticación Kerberos con RDS para PostgreSQL envía tráfico a los servidores DNS del dominio. Las otras solicitudes de DNS se tratan como acceso de red saliente en las instancias de bases de datos que ejecutan PostgreSQL. Para obtener más información acerca del acceso de red saliente con RDS para PostgreSQL, consulte [Uso de un servidor de DNS personalizado para el acceso a la red de salida.](Appendix.PostgreSQL.CommonDBATasks.CustomDNS.md).

# Conexión a PostgreSQL con autenticación Kerberos
<a name="postgresql-kerberos-connecting"></a>

Puede conectarse a PostgreSQL con autenticación Kerberos con la interfaz pgAdmin o con una interfaz de línea de comandos como, por ejemplo, psql. Para obtener más información acerca de las conexiones, consulte [Conexión a una instancia de base de datos que ejecuta el motor de base de datos de PostgreSQL](USER_ConnectToPostgreSQLInstance.md) . Para obtener información sobre cómo obtener el punto de conexión, el número de puerto y otros detalles necesarios para la conexión, consulte [Conexión a la instancia de base de datos PostgreSQL](CHAP_GettingStarted.CreatingConnecting.PostgreSQL.md#CHAP_GettingStarted.Connecting.PostgreSQL). 

**nota**  
La autenticación y el cifrado GSSAPI en PostgreSQL están implementados por la biblioteca Kerberos `libkrb5.so`. Características como `postgres_fdw` y `dblink` también se basan en esta misma biblioteca para las conexiones salientes con autenticación o cifrado Kerberos.

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

Para utilizar pgAdmin para conectarse a PostgreSQL con la autenticación Kerberos, siga estos pasos:

1. Lance la aplicación pgAdmin en su equipo cliente.

1. En la pestaña **Dashboard (Panel)**, elija **Add New Server (Añadir nuevo servidor)**.

1. En el cuadro de diálogo **Crear - Servidor**, escriba un nombre en la pestaña **General** para identificar el servidor en pgAdmin.

1. En la pestaña **Connection (Conexión)**, introduzca la siguiente información de su base de datos RDS for PostgreSQL de : 
   + En **Host**, introduzca el punto de conexión de la Instancia de base de datos RDS para PostgreSQL. Un punto de conexión tiene un aspecto similar al siguiente:

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

     Para conectarse a un Microsoft Active Directory en las instalaciones desde un cliente de Windows, utilice el nombre de dominio del Active Directory administrado por AWS en lugar de `rds.amazonaws.com` en el punto de conexión del host. Por ejemplo, suponga que el nombre de dominio de AWS Managed Active Directory es `corp.example.com`. Luego, para **Host**, el punto de conexión se especificaría de la siguiente manera: 

     ```
     RDS-DB-instance.111122223333.aws-region.corp.example.com
     ```
   + En **Puerto**, escriba el puerto asignado. 
   + En **Base de datos de mantenimiento**, escriba el nombre de la base de datos inicial a la que se conectará el cliente.
   + En **Nombre de usuario**, escriba el nombre de usuario que especificó para la autenticación Kerberos en [Paso 7: crear usuarios de PostgreSQL para las entidades principales de Kerberos](postgresql-kerberos-setting-up.md#postgresql-kerberos-setting-up.create-logins). 

1. Seleccione **Save**.

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

Para utilizar psql para conectar a PostgreSQL con autenticación Kerberos, siga los pasos siguientes:

1. En el símbolo del sistema, ejecute el siguiente comando.

   ```
   kinit username                
   ```

   Sustituya *`username`* por el nombre de usuario. En el símbolo del sistema, introduzca la contraseña almacenada en Microsoft Active Directory para el usuario.

1. Si la instancia de base de datos de PostgreSQL utiliza una VPC accesible públicamente, coloque una dirección IP para su punto de conexión de instancia de base de datos en su archivo `/etc/hosts` en el cliente EC2. Por ejemplo, los comandos siguientes obtienen la dirección IP y, a continuación, la ponen en el archivo `/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
   ```

   Si utiliza un Microsoft Active Directory en las instalaciones desde un cliente de Windows, tiene que conectarse mediante un punto de enlace especializado. En lugar de utilizar el dominio de Amazon `rds.amazonaws.com` en el punto de conexión del host, utilice el nombre de dominio de AWS Managed Active Directory.

   Por ejemplo, suponga que el nombre de dominio de su AWS Managed Active Directory es `corp.example.com`. A continuación, use el formato `PostgreSQL-endpoint.AWS-Region.corp.example.com` para el punto de enlace y colóquelo en el archivo `/etc/hosts`.

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

1. Utilice el comando psql siguiente para iniciar sesión en una instancia de de base de datos de PostgreSQL que está integrada con Active Directory. 

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

   Para iniciar sesión en el clúster de base de datos de PostgreSQL desde un cliente de Windows utilizando un Active Directory en las instalaciones, utilice el siguiente comando psql con el nombre de dominio del paso anterior (`corp.example.com`):

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