Conexión a Autonomous Database con autenticación de Identity and Access Management (IAM)

Una vez que el usuario ADMIN activa Oracle Cloud Infrastructure IAM en Autonomous Database, los usuarios se conectan a la instancia de Autonomous Database mediante sus credenciales de Oracle Cloud Infrastructure IAM o acceden a la base de datos mediante un token de base de datos de Oracle Cloud Infrastructure IAM.

Después de activar el acceso de usuario de Oracle Cloud Infrastructure IAM, también se puede conectar a Autonomous Database con el nombre de usuario y la contraseña de la cuenta de base de datos local (cuenta de usuario de base de datos no global)

Puede utilizar un cliente de base de datos para acceder a una instancia de Autonomous Database como usuario de Oracle Cloud Infrastructure IAM. Para utilizar un cliente con credenciales de nombre de usuario y contraseña de Oracle Cloud Infrastructure IAM y un verificador de contraseñas, el cliente de base de datos debe ser 12c o posterior.

También puede utilizar un token de base de datos de Oracle Cloud Infrastructure IAM para acceder a una instancia de Autonomous Database. El uso de tokens de IAM requiere la actualización más reciente de la versión 19c del cliente de Oracle Database (19.16 como mínimo). Algunos clientes anteriores (19c y 21c) disponen de un juego limitado de capacidades para el acceso de token. La versión 21c del cliente de Oracle Database no soporta por completo la función de acceso de token de IAM.

En los siguientes ejemplos se muestra el verificador de contraseñas con SQL*Plus para acceder a la base de datos con un nombre de usuario y una contraseña de IAM de Oracle Cloud Infrastructure y los pasos necesarios para utilizar SQL*Plus con un token de base de datos de IAM de Oracle Cloud Infrastructure.

Nota

Si la instancia de Autonomous Database está en modo restringido, solo se podrán conectar a la base de datos los usuarios con el privilegio RESTRICTED SESSION, como ADMIN.

Puede utilizar un token de base de datos de Oracle Cloud Infrastructure IAM para acceder a una instancia de Autonomous Database con clientes soportados, incluidos los siguientes:

Acerca de la conexión a una instancia de Autonomous Database mediante IAM

Los usuarios de IAM se pueden conectar a la instancia de Autonomous Database mediante un verificador de contraseña de base de datos de IAM o un token de IAM.

El uso del verificador de contraseña de base de datos de IAM es similar al proceso de autenticación de contraseña de Oracle Database. Sin embargo, en lugar de almacenarse el verificador de contraseña (hash cifrado de la contraseña) en la base de datos Oracle, el verificador se almacena en su lugar como parte del perfil de usuario de IAM de Oracle Cloud Infrastructure (OCI).

El segundo método de conexión, el uso de un token de IAM para la base de datos, es más moderno. El uso del acceso basado en token es una opción más adecuada para recursos en la nube como Autonomous Database. El token se basa en la seguridad que puede aplicar el punto final de IAM. Puede ser una autenticación multifactor, que es más segura que el uso únicamente de contraseñas. Otra ventaja del uso de tokens es que el verificador de contraseña (que se considera confidencial) nunca se almacena ni está disponible en la memoria. Se necesita una conexión TCPS (TLS) al utilizar tokens para el acceso a la base de datos.

Nota

No puede configurar el cifrado de red nativo al transferir un token de IAM. Solo se admite la seguridad de capa de transporte (TLS) por sí misma, no el cifrado de red nativo ni el cifrado de red nativo con TLS.

Conexiones de cliente que utilizan un verificador de contraseña de base de datos de IAM

Una vez que haya configurado la autorización necesaria para el usuario de IAM, este usuario se puede conectar mediante la aplicación cliente existente, como SQL*Plus o SQLcl, sin configuración adicional.

El usuario de IAM introduce el nombre de usuario de IAM y la contraseña de base de datos de IAM (no la contraseña de la consola de Oracle Cloud Infrastructure [OCI]) mediante cualquier cliente de base de datos soportado actualmente. La única restricción es que la versión de cliente de base de datos sea Oracle Database versión 12.1.0.2 o posterior para utilizar contraseñas de Oracle Database 12c. El cliente de base de datos debe poder utilizar el verificador de contraseña 12C. El uso del cifrado del verificador 11G no está soportado con IAM. No se necesita ninguna configuración especial de cliente o herramienta para que el usuario de IAM se conecte a la instancia de DBaaS de OCI.

Conexiones de cliente que utilizan un token solicitado por una aplicación o herramienta de cliente

Para el acceso de token de IAM a Autonomous Database, la aplicación o la herramienta de cliente solicitan un token de base de datos de IAM para el usuario de IAM.

La aplicación cliente transferirá el token de base de datos directamente al cliente de base de datos a través de la API de cliente de base de datos.

Si la aplicación o la herramienta no se han actualizado para que solicite un token de IAM, el usuario de IAM puede utilizar la interfaz de línea de comandos (CLI) de Oracle Cloud Infrastructure (OCI) para solicitar y almacenar el token de base de datos. Puede solicitar un token de acceso a la base de datos (db-token) con las siguientes credenciales:

  • Tokens de seguridad (con autenticación de IAM), tokens de delegación (en OCI Cloud Shell) y API-keys, que son credenciales que representan al usuario de IAM para activar la autenticación
  • Tokens de principal de instancia, que permiten que las instancias sean actores (o principales) autorizados para realizar acciones en recursos de servicio después de la autenticación
  • Token principal de recurso, que es una credencial que permite a la aplicación autenticarse en otros servicios de Oracle Cloud Infrastructure
  • Nombre de usuario de IAM y contraseña de base de datos de IAM (solo puede solicitarlo el cliente de base de datos).

Cuando los usuarios de IAM se conectan al cliente con una barra inclinada / y se configura el parámetro OCI_IAM (sqlnet.ora, tnsnames.ora o como parte de una cadena de conexión), el cliente de base de datos recupera el token de base de datos de un archivo. Si el usuario de IAM envía un nombre de usuario y una contraseña, la conexión utilizará el acceso del verificador de base de datos de IAM descrito para las conexiones de cliente que utilizan verificadores de contraseña de base de datos de IAM. En las instrucciones de esta guía se muestra cómo utilizar la CLI de OCI como ayuda para el token de base de datos. Si la aplicación o la herramienta se ha actualizado para que funcione con IAM, siga las instrucciones de la aplicación o la herramienta. Algunos casos de uso habituales son: SQLPlus local, SQLcl local, SQL*Plus en Cloud Shell o aplicaciones que utilizan carteras SEP.

Configuración de una conexión de cliente para SQL*Plus que utilice una contraseña de base de datos de IAM

Puede configurar SQL*Plus para que utilice una contraseña de base de datos de IAM.

  • Como usuario de IAM, conexión a la instancia de Autonomous Database utilizando la siguiente sintaxis:
    CONNECT user_name@db_connect_string
    Enter password: password

    En esta especificación, user_name es el nombre de usuario de IAM. Hay un límite de 128 bytes para la combinación de domain_name/user_name.

    En el siguiente ejemplo se muestra cómo el usuario de IAM peter_fitch se puede conectar a una instancia de Autonomous Database.

    sqlplus /nolog
    connect peter_fitch@db_connect_string
    Enter password: password

    Algunos caracteres especiales requerirán que user_name y password vayan entre comillas dobles. Por ejemplo:

    "peter_fitch@example.com"@db_connect_string
    
    "IAM database password"

Configuración de una conexión de cliente para SQL*Plus que utilice un token de IAM

Puede configurar una conexión de cliente para SQL*Plus que utilice un token de IAM.

  1. Asegúrese de que tiene una cuenta de usuario de IAM.
  2. Consulte a un administrador de IAM y a un administrador de Oracle Database para asegurarse de que tiene una política que le permite acceder a la base de datos en el compartimento o su arrendamiento, y que está asignado a un esquema global en la base de datos.
  3. Si la aplicación o la herramienta no soporta la integración directa con IAM, descargue, instale y configure la CLI de OCI. (Consulte la sección de inicio rápido de la interfaz de línea de comandos de OCI). Configure una clave de API como parte de la configuración de la CLI de OCI y seleccione los valores por defecto.
    1. Configure el acceso a la clave de API para el usuario de IAM.
    2. Recupere db-token. Por ejemplo:
      • Recuperación de db-token con API-key mediante la interfaz de línea de comandos de Oracle Cloud Infrastructure (OCI):
        oci iam db-token get
      • Recuperación de db-token con un token de seguridad (o sesión):
        oci iam db-token get --auth security_token

        Si el token de seguridad ha caducado, aparecerá una ventana para que el usuario pueda volver a conectarse a OCI. Esto genera el token de seguridad para el usuario. La CLI de OCI utilizará este token refrescado para obtener db-token.

      • Recuperación de db-token con un token de delegación: al conectarse a Cloud Shell, el token de delegación se genera automáticamente y se ubica en el directorio /etc. Para obtener este token, ejecute el siguiente comando en Cloud Shell:
        oci iam db-token get
      • Recuperación de un token de instancia mediante la interfaz de línea de comandos de OCI:
        oci iam db-token get --auth instance_principal
    3. El cliente de base de datos también se puede configurar para recuperar un token de base de datos mediante el nombre de usuario de IAM y la contraseña de base de datos de IAM.
    Consulte Claves y OCID necesarios para obtener más información.
  4. Asegúrese de utilizar las actualizaciones más recientes de las versiones 19c, 21c o 23ai del cliente de Oracle Database.
    Esta configuración solo funciona con la versión 19c, 21c o 23ai del cliente de Oracle Database.
  5. Siga el proceso existente para descargar la cartera de Autonomous Database y, a continuación, siga las instrucciones para configurarla para su uso con SQL*Plus.
    1. Confirme que la coincidencia de DN está activada buscando SSL_SERVER_DN_MATCH=ON en sqlnet.ora.
      Nota

      Se necesita una coincidencia de DN parcial o completa al enviar un token del cliente de base de datos a Autonomous Database. Si Autonomous Database utiliza un punto final privado, debe especificar un valor de host para el parámetro de cadena de conexión. El uso de una dirección IP para el parámetro de host en la cadena de conexión no funcionará con la coincidencia de DN y el token de IAM no se enviará a la base de datos.

      Consulte Ejemplos de configuración de puntos finales privados en Autonomous Database para obtener información sobre la configuración de cómo definir el parámetro de host al utilizar un punto final privado.

    2. Configure el cliente de base de datos para que utilice el token de IAM agregando TOKEN_AUTH=OCI_TOKEN al archivo sqlnet.ora. Puesto que utilizará las ubicaciones por defecto para el archivo de token de base de datos, no es necesario incluir la ubicación del token.
    Los valores TOKEN_AUTH y TOKEN_LOCATION en las cadenas de conexión de tnsnames.ora tienen prioridad sobre la configuración de sqlnet.ora de esa conexión. Por ejemplo, para la cadena de conexión, suponiendo que el token está en la ubicación por defecto (~/.oci/db-token para Linux):
    (description= 
      (retry_count=20)(retry_delay=3)
      (address=(protocol=tcps)(port=1522)
      (host=example.us-phoenix-1.oraclecloud.com))
      (connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com))
      (security=(ssl_server_dn_match=yes))
      (TOKEN_AUTH=OCI_TOKEN)))
    
Después de que se actualice la cadena de conexión con el parámetro TOKEN_AUTH, el usuario de IAM se puede conectar a la instancia de Autonomous Database ejecutando el siguiente comando para iniciar SQL*Plus. Puede incluir el propio descriptor de conexión o utilizar el nombre del descriptor del archivo tnsnames.ora.
connect /@exampledb_high

O:

connect /@(description= 
  (retry_count=20)(retry_delay=3)
  (address=(protocol=tcps)(port=1522)
  (host=example.us-phoenix-1.oraclecloud.com))
  (connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com))
  (security=(ssl_server_cert_dn="CN=example.uscom-east-1.oraclecloud.com, 
     O=Example Corporation, 
     L=Redwood City, ST=California, C=US")
  (TOKEN_AUTH=OCI_TOKEN)))

El cliente de base de datos ya está configurado para obtener db-token porque TOKEN_AUTH ya está definido, ya sea mediante el archivo sqlnet.ora o en una cadena de conexión. El cliente de base de datos obtiene db-token y lo firma mediante la clave privada y, a continuación, envía el token a Autonomous Database. Si se ha especificado un nombre de usuario de IAM y una contraseña de base de datos de IAM en lugar de una barra inclinada /, el cliente de base de datos se conectará utilizando la contraseña en lugar de db-token.

Uso del principal de instancia para acceder a Autonomous Database con autenticación de Identity and Access Management (IAM)

Una vez que el usuario ADMIN ha activado IAM en Oracle Cloud Infrastructure en Autonomous Database, una aplicación puede acceder a la base de datos a través de un token de base de datos de Oracle Cloud Infrastructure IAM mediante un principal de instancia.