Configuración de autenticación Kerberos para instancias de base de datos de Oracle - Amazon Relational Database Service

Configuración de autenticación Kerberos para instancias de base de datos de Oracle

Use AWS Directory Service for Microsoft Active Directory, también llamado AWS Managed Microsoft AD, para configurar la autenticación Kerberos para una instancia de base de datos de Oracle. Para configurar la autenticación Kerberos, complete los siguientes pasos:

nota

Durante la configuración, RDS crea un usuario de base de datos de Oracle llamado managed_service_user@ejemplo.com con el privilegio CREATE SESSION, donde ejemplo.com es su nombre de dominio. Este usuario corresponde al usuario que crea Directory Service dentro de Active Directory administrado. Periódicamente, RDS utiliza las credenciales proporcionadas por Directory Service para iniciar sesión en la base de datos de Oracle. Después, RDS destruye inmediatamente la caché de tickets.

Paso 1: crear un directorio con AWS Managed Microsoft AD

AWS Directory Service crea un directorio de Active Directory completamente administrado en la nube de AWS. Cuando crea un directorio de AWS Managed Microsoft AD, AWS Directory Service crea dos controladores de dominio y servidores del sistema de nombres de dominio (DNS) en su nombre. 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 crea un directorio de AWS Managed Microsoft AD, AWS Directory Service realiza en su nombre las siguientes tareas:

  • Configurar un Active Directory dentro de la VPC.

  • Crea una cuenta de administrador para el directorio con el nombre de usuario Admin y la contraseña especificada. Esta cuenta le permite administrar el directorio.

    nota

    Asegúrese de guardar esta contraseña. AWS Directory Service no la almacena. Es posible restablecerla, pero no recuperarla.

  • Crea un grupo de seguridad para los controladores del directorio.

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

La cuenta de administrador que se creó con el directorio 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

  • Ejecutar módulos de AD y DNS de Windows PowerShell en el servicio web de Active Directory

La cuenta de administrador 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 el directorio, use la API AWS Management Console, AWS CLI o AWS Directory Service. 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 de base de datos de Oracle.

Para crear un directorio con AWS Managed Microsoft AD
  1. Inicie sesión en AWS Management Console y abra la consola de AWS Directory Service en https://console.aws.amazon.com/directoryservicev2/.

  2. En el panel de navegación, elija Directories (Directorios) y, a continuación, Set up Directory (Configurar directorio).

  3. Elija AWS Managed Microsoft AD. AWS Managed Microsoft AD es la única opción que puede usar actualmente con Amazon RDS.

  4. Introduzca la información siguiente:

    Nombre de DNS del directorio

    El nombre completo del directorio, como por ejemplo corp.example.com.

    Nombre NetBIOS del directorio

    El nombre abreviado del directorio, como CORP.

    Descripción del directorio

    (Opcional) Descripción del directorio.

    Contraseña de administrador

    Contraseña del administrador del directorio. El proceso de creación de directorios crea 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 (~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/)

    Confirm password

    Vuelva a escribir la contraseña de administrador.

  5. Elija Siguiente.

  6. Escriba la siguiente información en la sección Networking (Redes) y luego seleccione Next (Siguiente):

    VPC

    VPC del directorio. Cree la instancia de base de datos de Oracle en esta misma VPC.

    Subredes

    Subredes de los servidores del directorio. Las dos subredes deben estar en diferentes zonas de disponibilidad.

  7. Revise la información del directorio y haga los cambios necesarios. Cuando la información sea correcta, seleccione Create directory (Crear directorio).

    Página de detalles del directorio durante la creación

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

Para consultar información de su directorio, seleccione el nombre del directorio en la descripción de directorios. Tenga en cuenta el valor de Directory ID (ID de directorio) porque necesitará este valor cuando cree o modifique su instancia de base de datos de Oracle.

Detalles del directorio

Paso 2: crear una relación de confianza

Si planea utilizar AWS Managed Microsoft AD únicamente, pase a Paso 3: Configure los permisos de IAM para Amazon RDS.

Para habilitar la autenticación de Kerberos mediante Active Directory autoadministrado, debe crear una relación de confianza de bosque entre Active Directory autoadministrado y el AWS Managed Microsoft AD creado en el paso anterior. La confianza puede ser unidireccional, donde AWS Managed Microsoft AD confía en Active Directory autoadministrado. 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 entre bosques con AWS Directory Service, consulte Cuándo crear una relación de confianza en la Guía de administración de AWS Directory Service.

Paso 3: Configure los permisos de IAM para Amazon RDS

Para llamar a AWS Directory Service por usted, Amazon RDS requiere un rol de IAM que utilice la política de IAM administrada AmazonRDSDirectoryServiceAccess. Este rol permite a Amazon RDS realizar llamadas a AWS Directory Service.

nota

Para que el rol permita el acceso, el punto de conexión 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 Región de AWS en la Guía del usuario de IAM.

Creación de un rol de IAM

Cuando se crea una instancia de base de datos con la AWS Management Console y el usuario de la consola tiene el permiso iam:CreateRole, la consola crea rds-directoryservice-kerberos-access-role automáticamente. De no ser así, debe crear el rol de IAM manualmente. Cuando cree un rol de IAM automáticamente, 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 en la guía del usuario de IAM.

nota

El rol de IAM utilizado para la autenticación de Windows en RDS para Microsoft SQL Server no se puede usar en RDS para Oracle.

Creación manual de una política de confianza de IAM

Opcionalmente, puede crear políticas de recursos con los permisos requeridos en vez de utilizar la política de IAM administrada AmazonRDSDirectoryServiceAccess. Especifique directoryservice.rds.amazonaws.com y rds.amazonaws.com como entidades principales.

A fin de limitar los permisos que Amazon RDS da a otro servicio para un recurso específico, le recomendamos utilizar las claves de contexto de condición global de aws:SourceArn y aws:SourceAccount en las políticas de recursos. La forma más eficaz de protegerse contra el problema del suplente confuso es utilizar la clave de contexto de condición global de aws:SourceArn con el ARN completo de un recurso de Amazon RDS. Para obtener más información, consulte Prevención de los problemas del suplente confuso entre servicios.

En el ejemplo siguiente, se muestra cómo se pueden utilizar las claves de contexto de condición global de aws:SourceArn y aws:SourceAccount en Amazon RDS para evitar el problema del suplente confuso.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "directoryservice.rds.amazonaws.com", "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:rds:us-east-1:123456789012:db:mydbinstance" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }

En el caso de las regiones que se suscriban voluntariamente, también debe incluir una entidad principal de servicio para esa región en forma de directoryservice.rds.region_name.amazonaws.com. Por ejemplo, en la región de África (Ciudad del Cabo), utilice la siguiente política de confianza:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "directoryservice.rds.amazonaws.com", "directoryservice.rds.af-south-1.amazonaws.com", "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:rds:af-south-1:123456789012:db:mydbinstance" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }

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

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

Paso 4: crear y configurar usuarios

Puede crear usuarios con la herramienta Usuarios y equipos de Active Directory, que es una de las herramientas Servicios de dominio de Active Directory y Active Directory Lightweight Directory Services. En este caso, los usuarios son las personas físicas o entidades que tienen acceso al directorio.

Para crear usuarios en un directorio de AWS Directory Service, debe estar conectado a una instancia de Amazon EC2 con Windows que sea miembro del directorio de AWS Directory Service. Al mismo tiempo, debe iniciar sesión como usuario con privilegios para crear usuarios. Para obtener más información sobre la creación de usuarios en su Microsoft Active Directory, consulte Administrar usuarios y grupos en AWS Managed Microsoft AD 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

Si tiene previsto 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 Oracle.

Si planea localizar el directorio y la instancia de base de datos en distintas cuentas de AWS o VPC, configure el tráfico entre VPC mediante interconexión de VPC o AWS Transit Gateway. 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? 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.

  2. 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. Para obtener más información, consulte Prácticas recomendadas para AWS Managed Microsoft AD en la Guía de administración de AWS Directory Service.

  3. 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 en la Guía de administración de AWS Directory Service.

  2. Inicie sesión en la consola de AWS 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.

  3. Una vez iniciada sesión en la consola de AWS 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 Oracle

Cree o modifique una instancia de base de datos de Oracle para usarla con su directorio. Puede utilizar la consola, 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:

La autenticación Kerberos solo es compatible con instancias de base de datos de Oracle en una VPC. La instancia de DB puede estar en la misma VPC que el directorio o en una VPC diferente. Cuando cree o modifique la instancia de base de datos, 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 entrante del grupo de seguridad del directorio y enviar tráfico saliente al directorio.

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

Configuración de autenticación Kerberos al crear una instancia de base de datos

Si utiliza la consola para modificar o restaurar una instancia de base de datos, elija el directorio en la sección Kerberos authentication (Autenticación Kerberos) o elija Create a new directory (Crear un nuevo directorio).

Configuración de autenticación Kerberos al modificar o restaurar una instancia de base de datos

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-*") 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 usar un directorio.

Para Linux, macOS, o Unix:

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

En:Windows

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --domain d-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 realizar el cambio.

nota

MANAGED_SERVICE_USER es una cuenta de servicio cuyo nombre genera aleatoriamente Directory Service para RDS. Durante la configuración de la autenticación Kerberos, RDS para Oracle crea un usuario con el mismo nombre y le asigna el privilegio CREATE SESSION. El usuario de base de datos de Oracle se identifica externamente como MANAGED_SERVICE_USER@EXAMPLE.COM, donde EXAMPLE.COM es el nombre de su dominio. Periódicamente, RDS utiliza las credenciales proporcionadas por Directory Service para iniciar sesión en la base de datos de Oracle. Después, RDS destruye inmediatamente la caché de tickets.

Paso 7: crear inicios de sesión de Oracle de autenticación Kerberos

Use las credenciales del usuario maestro de Amazon RDS para conectarse a la instancia de base de datos de Oracle igaul que con cualquier otra instancia de base de datos. La instancia de base de datos se une al dominio de AWS Managed Microsoft AD. Por lo tanto, puede aprovisionar inicios de sesión y usuarios de Oracle desde usuarios y grupos de Microsoft Active Directory en su dominio. Para administrar los permisos de la base de datos, otorgue y revoque los permisos estándar de Oracle para estos inicios de sesión.

Para permitir que un usuario de Microsoft Active Directory se autentique con Oracle
  1. Conéctese a la instancia de base de datos de Oracle mediante sus credenciales de usuario maestro de Amazon RDS.

  2. Cree un usuario autenticado externamente en la base de datos de Oracle.

    En el ejemplo siguiente, reemplace KRBUSER@CORP.EXAMPLE.COM por el nombre de usuario y el nombre de dominio.

    CREATE USER "KRBUSER@CORP.EXAMPLE.COM" IDENTIFIED EXTERNALLY; GRANT CREATE SESSION TO "KRBUSER@CORP.EXAMPLE.COM";

    Ahora, los usuarios (tanto humanos como aplicaciones) del dominio pueden conectarse a la instancia de base de datos de Oracle desde un equipo cliente unido al dominio mediante la autenticación Kerberos.

Paso 8: configurar un cliente de Oracle

Para configurar un cliente de Oracle, cumpla los requisitos siguientes:

  • Cree un archivo de configuración denominado krb5.conf (Linux) o krb5.ini (Windows) para apuntar al dominio. Configure el cliente de Oracle para utilizar este archivo de configuración.

  • Compruebe que el tráfico puede fluir entre el host cliente y AWS Directory Service sobre el puerto 53 de DNS y TCP/UDP, y los puertos de Kerberos (88 y 464 para AWS Directory Service administrado) sobre el puerto 389 de TCP y LDAP.

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

A continuación, se encuentra el contenido de muestra para AWS Managed Microsoft AD.

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

El siguiente es el contenido de muestra para Microsoft AD local. En el archivo krb5.conf o krb5.ini, sustituyaon-prem-ad-server-name por el nombre del servidor AD local.

[libdefaults] default_realm = ONPREM.COM [realms] AWSAD.COM = { kdc = awsad.com admin_server = awsad.com } ONPREM.COM = { kdc = on-prem-ad-server-name admin_server = on-prem-ad-server-name } [domain_realm] .awsad.com = AWSAD.COM awsad.com= AWSAD.COM .onprem.com = ONPREM.COM onprem.com= ONPREM.COM
nota

Después de configurar el archivo krb5.ini o krb5.conf, le recomendamos que reinicie el servidor.

El siguiente es contenido sqlnet.ora de ejemplo para una configuración de SQL*Plus:

SQLNET.AUTHENTICATION_SERVICES=(KERBEROS5PRE,KERBEROS5) SQLNET.KERBEROS5_CONF=path_to_krb5.conf_file

Para ver un ejemplo de una configuración de SQL Developer, consulte Document 1609359.1 de Oracle Support.