Paquete DBMS_MFA_ADMIN

El paquete DBMS_MFA_ADMIN facilita y configura el acceso al token SQL.

Resumen de Subprogramas DBMS_MFA_ADMIN

Resume los subprogramas incluidos en el paquete DBMS_MFA_ADMIN.

REGISTER_USER Procedimiento

El procedimiento DBMS_MFA_ADMIN.REGISTER_USER registra un usuario de base de datos existente para MFA mediante la asociación del usuario con una dirección de correo electrónico como identidad externa. Puede activar la MFA para la autenticación de conexión, el acceso SQL o ambos. Es compatible con aplicaciones de correo electrónico, Slack y autenticador para entregar tokens de acceso seguro.

Sintaxis

DBMS_MFA_ADMIN.REGISTER_USER (       
       username    IN VARCHAR2,
       type        IN VARCHAR2,
       email       IN CLOB DEFAULT NULL,
       attributes  IN CLOB DEFAULT NULL
 );

Parámetros

Parámetro Descripción

username

Especifica el nombre de usuario para el que se debe aplicar la autenticación multifactor.

type

Especifica el atributo de MFA que controla cuándo se aplica la MFA para el usuario.

type acepta los siguientes valores:
  • LOGON: se necesita MFA al conectarse a la base de datos.

  • SQL ACCESS: se necesita MFA para realizar cualquier operación SQL o DML en la base de datos.

email

Especifica la dirección de correo electrónico que se debe asociar al usuario para la MFA.

attributes

Especifica los atributos de MFA en formato JSON.

Utilice attributes para especificar los siguientes atributos para generar el token:

  • auth_method: especifica el método de MFA utilizado para la autenticación de usuarios de base de datos. Los valores de este parámetro válidos son:
    • OMA_PUSH: la MFA de conexión y acceso SQL están soportadas.

    • DUO_PUSH: solo está soportada la MFA de conexión.

    • EMAIL: solo está soportada la MFA de acceso SQL.

    • SLACK: solo está soportada la MFA de acceso SQL.

    Nota

    Para type =>'LOGON', auth_method, es el único atributo soportado.
  • duration_min: especifica una duración de entero positivo, en minutos, para la que el token es válido.

    El valor por defecto para este atributo es 1440 minutos (1 día).

  • idle_timeout_min: especifica el tiempo de inactividad máximo permitido, en minutos, para una sesión antes de que caduque el token de acceso SQL para esa sesión.

    El valor por defecto es NULL.

  • read_only: especifica si el usuario registrado tiene acceso de consulta SQL de solo lectura a la base de datos.

    El valor por defecto es FALSE.

    Este atributo solo se aplica cuando el ámbito se define en SESSION.

  • roles: especifica una matriz de JSON de roles de base de datos que se deben asignar al token de acceso SQL generado para el usuario.

    Por ejemplo, "roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE').

    El valor predeterminado para este atributo es NULL.

  • scope: especifica el ámbito en el que el token de acceso SQL es válido.

    scope acepta los siguientes valores:
    • session:

      El token validado otorga acceso SQL solo a la sesión de base de datos actual durante el tiempo especificado en el atributo duration_min.

    • user:

      El token validado otorga acceso SQL a las sesiones de base de datos actuales y posteriores durante el tiempo especificado en el atributo duration_min.

    El valor por defecto para este atributo es session.

  • enable_authenticator: especifica que la aplicación de autenticador está configurada para el usuario y se utiliza para el token de acceso SQL.

    El valor por defecto de este atributo es FALSE.

  • slack_member_id: especifica el ID de Slack donde entregar el token de acceso SQL a través de un mensaje de Slack.

Ejemplos

Ejemplo para registrar un usuario para el inicio de sesión de MFA:

BEGIN
    DBMS_MFA_ADMIN.REGISTER_USER(
      user_name        => 'SCOTT',
      type             => 'LOGON',
      email            => 'scott@example.com',
      token_attributes => '{"auth_method":"oma_push"}'
   );
END;
/

Ejemplo para registrar un usuario para el acceso SQL mediante la definición de los atributos de MFA.

BEGIN
    DBMS_MFA_ADMIN.REGISTER_USER( 
      user_name   => 'SCOTT',
      type        => 'SQL ACCESS',
      email       => 'scott@example.com',
      attributes  => '{
             "duration_min"   : 720,
             "read_only"      : true,
             "roles"          : ["DEVELOPER_ROLE", "INFRA_ROLE"],
             "scope"          : "SESSION",
             "slack_member_id": "<slack_user_id>"
      }'
   );
END;
/

Notas de uso

  • Para registrar un usuario, debe estar conectado como usuario ADMIN o tener privilegios en el paquete DBMS_MFA_ADMIN.

  • Puede registrar usuarios de base de datos para MFA mediante diferentes proveedores según el tipo de MFA: Duo y OMA están soportados para MFA de tiempo de conexión, mientras que Slack, OMA y correo electrónico están soportados para MFA de token de acceso SQL.

  • Puede registrar el mismo usuario para ambos tipos de MFA (conexión de MFA y acceso SQL) registrándolos por separado para cada uno. Puede utilizar la misma o distinta dirección de correo electrónico para cada registro; una vez configurado, el usuario recibe una notificación push a la dirección de correo electrónico registrada al iniciar sesión y otra notificación a la misma dirección, si se utiliza, cuando el usuario ejecuta INITIALIZE_SESSION para SQL Access.

SET_GLOBAL_TOKEN_ATTRIBUTES Procedimiento

El procedimiento DBMS_MFA_ADMIN.SET_GLOBAL_TOKEN_ATTRIBUTES define o actualiza los atributos de MFA del token de acceso SQL de forma global para todos los usuarios registrados.

Sintaxis

DBMS_MFA_ADMIN.SET_GLOBAL_TOKEN_ATTRIBUTES(       
    attributes IN VARCHAR2
);

Parámetros

Parámetro Descripción

attributes

Especifica los atributos de token en formato JSON para generar un token de acceso. Los valores válidos son:

  • duration_min: especifica la duración, en minutos, para la que el token es válido.

    El valor por defecto es 1440 minutos (1 día).

  • idle_timeout_min: especifica el tiempo de inactividad máximo permitido, en minutos, para una sesión antes de que caduque el token de acceso SQL para esa sesión.

    El valor por defecto es NULL.

  • read_only: especifica si el usuario registrado tiene acceso de consulta SQL de solo lectura a la base de datos. El valor por defecto es FALSE. Este atributo solo se aplica cuando el ámbito se define en SESSION.

  • roles: especifica una matriz de JSON de roles de base de datos que se deben asignar al token de acceso SQL generado para el usuario.

    Por ejemplo, "roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE').

    El valor por defecto es NULL.

  • scope: especifica el ámbito en el que el token de acceso SQL es válido.

    Los valores válidos son:

    • session: el token validado otorga acceso SQL solo a la sesión de base de datos actual durante el tiempo especificado en el atributo duration_min.

    • user: el token validado otorga acceso SQL a las sesiones de base de datos actuales y posteriores durante el tiempo especificado en el atributo duration_min.

    El valor por defecto es session.

  • enable_authenticator: especifica que la aplicación de autenticador está configurada para el usuario y se utiliza para el token de acceso SQL.

    El valor por defecto es FALSE.

Nota de uso

  • Para definir los atributos de token, debe estar conectado como usuario ADMIN o tener privilegios en el paquete DBMS_MFA_ADMIN.

SET_ATTRIBUTE Procedimiento

DBMS_MFA_ADMIN.SET_ATTRIBUTE define o actualiza un único atributo de MFA para un usuario registrado y sustituye cualquier valor por defecto global aplicable para ese atributo.

Nota

Para la MFA de tiempo de conexión, auth_method es el único atributo soportado.

Sintaxis

DBMS_MFA_ADMIN.SET_ATTRIBUTE(            
  username         IN VARCHAR2,
  type             IN VARCHAR2,
  email            IN VARCHAR2 DEFAULT NULL,
  attribute_name   IN VARCHAR2,
  attribute_value  IN CLOB
);

Parámetros

Parámetro Descripción

username

Especifica el usuario de base de datos cuyo atributo de MFA se va a actualizar.

type

Especifica el atributo de MFA que controla cuándo se aplica la MFA para el usuario.

Los valores válidos son:
  • LOGON: se necesita MFA cuando se conecta a una aplicación de Oracle.

  • SQL ACCESS: se necesita MFA para realizar cualquier operación SQL o DML en la base de datos.

email

Especifica la dirección de correo electrónico que se va a asociar al usuario para MFA.

Este parámetro es opcional y se define por defecto en NULL.

attribute_name

Permite especificar el nombre del atributo de MFA que se debe actualizar. Los valores válidos son:
  • auth_method: especifica el método de MFA utilizado para la autenticación de usuarios de base de datos. Los valores de este parámetro válidos son:
    • OMA_PUSH: la MFA de conexión y acceso SQL están soportadas.

    • DUO_PUSH: solo está soportada la MFA de conexión.

    • EMAIL: solo está soportada la MFA de acceso SQL.

    • SLACK: solo está soportada la MFA de acceso SQL.

  • duration_min: especifica la duración, en minutos, para la que el token es válido. El valor predeterminado es 1440 minutos (1 día).

  • idle_timeout_min: especifica el tiempo de inactividad máximo permitido, en minutos, para una sesión antes de que caduque el token de acceso SQL para esa sesión.

    El valor por defecto es NULL.

  • read_only: especifica si el usuario registrado tiene acceso de consulta SQL de solo lectura a la base de datos.

    El valor por defecto es FALSE.

    Este atributo solo se aplica cuando el ámbito se define en SESSION.

  • roles: especifica una matriz de JSON de roles de base de datos que se deben asignar al token de acceso SQL generado para el usuario.

    Por ejemplo, "roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE').

    El valor por defecto es NULL.

  • scope: especifica el ámbito en el que el token de acceso SQL es válido.

    Los valores válidos son:
    • session:

      El token validado otorga acceso SQL solo a la sesión de base de datos actual durante el tiempo especificado en el atributo duration_min.

    • user:

      El token validado otorga acceso SQL a las sesiones de base de datos actuales y posteriores durante el tiempo especificado en el atributo duration_min.

    El valor por defecto para este atributo es session.

  • enable_authenticator: especifica que la aplicación de autenticador está configurada para el usuario y se utiliza para el token de acceso SQL.

    El valor por defecto de este atributo es FALSE.

  • slack_member_id: especifica el ID de Slack donde entregar el token de acceso SQL a través de un mensaje de Slack.

attribute_value

El nuevo valor del atributo especificado.

Ejemplo

Ejemplo para actualizar la configuración de MFA para el usuario SCOTT:
BEGIN
  DBMS_MFA_ADMIN.SET_ATTRIBUTE(    
    username         => 'scott',
    type             => 'sql access',
    email            => 'testscott@example.com',
    attribute_name   => 'duration_min',
    attribute_value  => '20');
END;
/

Notas de uso

  • El parámetro username debe especificar un usuario de base de datos existente registrado para MFA.

  • Debe estar conectado como usuario ADMIN o tener privilegios en el paquete DBMS_MFA_ADMIN para ejecutar este procedimiento.

SET_ATTRIBUTES Procedimiento

El procedimiento DBMS_MFA_ADMIN.SET_ATTRIBUTES define o actualiza uno o más atributos de MFA para un usuario registrado y sustituye los valores por defecto globales aplicables para esos atributos.

Nota

Para la MFA de tiempo de conexión, auth_method es el único atributo soportado.

Sintaxis

DBMS_MFA_ADMIN.SET_ATTRIBUTES (          
   username    IN VARCHAR2,
   type        IN VARCHAR2,
   attributes  IN CLOB
);

Parámetros

Parámetro Descripción

username

Especifica el nombre de usuario cuyos atributos de MFA se van a actualizar.

type

Especifica el atributo de MFA que controla cuándo se aplica la MFA para el usuario.

Los valores válidos son:
  • LOGON: se necesita MFA al conectarse a la base de datos.

  • SQL ACCESS: se necesita MFA para realizar cualquier operación SQL o DML en la base de datos.

attributes
Especifica los atributos de MFA en formato JSON. Los valores válidos son:
  • auth_method: especifica el método de MFA utilizado para la autenticación de usuarios de base de datos. Los valores de este parámetro válidos son:
    • OMA_PUSH: la MFA de conexión y acceso SQL están soportadas.

    • DUO_PUSH: solo está soportada la MFA de conexión.

    • EMAIL: solo está soportada la MFA de acceso SQL.

    • SLACK: solo está soportada la MFA de acceso SQL.

  • duration_min: especifica la duración, en minutos, para la que el token es válido. El valor predeterminado es 1440 minutos (1 día).

  • idle_timeout_min: especifica el tiempo de inactividad máximo permitido, en minutos, para una sesión antes de que caduque el token de acceso SQL para esa sesión.

    El valor por defecto es NULL.

  • read_only: especifica si el usuario registrado tiene acceso de consulta SQL de solo lectura a la base de datos.

    El valor por defecto es FALSE.

    Este atributo solo se aplica cuando el ámbito se define en SESSION.

  • roles: especifica una matriz de JSON de roles de base de datos que se deben asignar al token de acceso SQL generado para el usuario.

    Por ejemplo, "roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE').

    El valor por defecto es NULL.

  • scope: especifica el ámbito en el que el token de acceso SQL es válido.

    Los valores válidos son:
    • session:

      El token validado otorga acceso SQL solo a la sesión de base de datos actual durante el tiempo especificado en el atributo duration_min.

    • user:

      El token validado otorga acceso SQL a las sesiones de base de datos actuales y posteriores durante el tiempo especificado en el atributo duration_min.

    El valor por defecto para este atributo es session.

  • enable_authenticator: especifica que la aplicación de autenticador está configurada para el usuario y se utiliza para el token de acceso SQL.

    El valor por defecto de este atributo es FALSE.

  • slack_member_id: especifica el ID de Slack donde entregar el token de acceso SQL a través de un mensaje de Slack.

Ejemplo

Ejemplo para actualizar la configuración de MFA para el usuario SCOTT:
BEGIN
  DBMS_MFA_ADMIN.SET_ATTRIBUTES(
    username   => 'SCOTT',
    type       => 'SQL ACCESS',
    attributes => json_object(
                    'duration_min'        VALUE 15,
                    'email'               VALUE 'testscott@example.com',
                    'scope'               VALUE 'session',
                    'idle_timeout_min'    VALUE 10)
  );
END;
/

Notas de uso

  • El parámetro USERNAME debe especificar un usuario de base de datos existente registrado para MFA.

  • Debe estar conectado como usuario ADMIN o tener privilegios en el paquete DBMS_MFA_ADMIN para ejecutar este procedimiento.

CONFIGURE_NOTIFICATION Procedimiento

El procedimiento DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION configura los canales a través de los cuales los tokens de MFA se envían a los usuarios registrados. Esto incluye la definición del método de entrega y las propiedades específicas del canal necesarias para la distribución de tokens.

Sintaxis

DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION (        
    notification_type  IN VARCHAR2,
    attributes         IN CLOB
);

Parámetros

Parámetro Descripción

notification_type

Especifica el tipo de canal de notificación que se va a configurar. Los valores válidos son: EMAIL, SLACK, OMA, DUO.

attributes

Proporciona los detalles de configuración para el canal de notificación especificado en formato JSON.

A continuación, se muestran los tipos de atributo válidos para cada uno de estos canales de notificación:

CORREO ELECTRÓNICO: necesario para la configuración de inicio de sesión de MFA; OTP por correo electrónico soportado solo para MFA de token de acceso SQL
  • credential_name: nombre del objeto de credencial de correo electrónico creado en la base de datos.

  • sender: dirección de correo electrónico del host aprobado que aparecerá como remitente de los mensajes de MFA. Esta dirección debe estar permitida por el servidor SMTP.

  • smtp_host: nombre de dominio completo o dirección IP del servidor SMTP que enviará correos electrónicos de notificación de MFA.

  • smtp_port: número de puerto utilizado para conectarse al servidor SMTP, normalmente 587 para TLS o 465 para SSL. Este parámetro es opcional y se define por defecto en 587.

  • sender_email_display_name: nombre mostrado que aparecerá como remitente. Este parámetro es opcional y se define por defecto en NULL.

SLACK: Soportado solo para MFA de token de acceso SQL
  • credential_name: nombre de la credencial que contiene información de autenticación para enviar tokens como notificaciones de Slack.

OMA: Soportado para MFA de conexión y token de acceso SQL
  • credential_name: nombre del objeto de credencial que contiene información de autenticación utilizada para enviar de forma segura notificaciones de MFA a través de OMA.

  • api_endpoint: URL del dominio de Oracle Identity and Access Management (IAM) asociado a esta credencial. Este punto final identifica la instancia de IAM utilizada para inscribir usuarios en el dominio de OCI IAM, gestionar el factor de MFA y procesar solicitudes de autenticación de OMA, incluido el envío de notificaciones de MFA a los usuarios.

DUO: solo se admite para MFA de inicio de sesión:
  • credential_name: nombre del objeto de credencial que contiene información de autenticación utilizada para enviar de forma segura notificaciones de MFA a través de OMA.

  • api_endpoint: nombre de host de API proporcionado por Duo Security para su integración, por ejemplo, API-xxxxxxxx.duosecurity.com..

Ejemplos

Ejemplo: configuración del canal de notificación EMAIL

BEGIN
    DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION (
    notification_type => 'EMAIL',
    attributes        => JSON_OBJECT(
                          'credential_name'           VALUE 'EMAIL_CRED',
                          'smtp_host'                 VALUE 'smtp.email.us-phoenix-1.oci.oraclecloud.com',
                          'sender'                    VALUE 'send.email@test.com',
                          'smtp_port'                 VALUE 587,
                          'sender_email_display_name' VALUE 'DB SECURITY')
  );
END;
/

Ejemplo: configuración del canal de notificación de Slack

BEGIN
  DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION(
        notification_type => 'SLACK',
        attributes             => JSON_OBJECT('credential_name' VALUE 'SLACK_CRED')
  );
END;
/

Ejemplo: configuración del canal de notificación de OMA

BEGIN
  DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION(
    notification_type => 'OMA',
    attributes        => JSON_OBJECT(
                                     'credential_name' VALUE 'OMA_CRED_01',
                                     'api_endpoint'    VALUE 'https://idcs-xyz.identity.oraclecloud.com'
    )
  );
END;
/

Ejemplo: configuración del canal de notificación DUO

BEGIN
  DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION(
    notification_type => 'OMA',
    attributes        => JSON_OBJECT(
                                      'credential_name' VALUE 'OMA_CRED_01',
                                      'api_endpoint'    VALUE 'https://idcs-xyz.identity.oraclecloud.com'
    )
  );
END;
/

Notas de uso

  • Para ejecutar este procedimiento, debe estar conectado como usuario ADMIN o tener privilegios en el paquete DBMS_MFA_ADMIN.

  • Para las notificaciones de Slack, defina la credencial necesaria y confirme que la integración de Slack está activada en su entorno. Las notificaciones de Slack solo están soportadas para operaciones de MFA de acceso SQL.

    • Para definir los atributos de token, debe estar conectado como usuario ADMIN o tener privilegios en el paquete DBMS_MFA_ADMIN.

    • Para tokens basados en aplicaciones de autenticador:

      • Instale la aplicación del autenticador soportada en el dispositivo móvil que desea registrar para MFA.

      • Debe configurar la MFA mediante un dispositivo al que pueda acceder cada vez que inicie sesión. Otro usuario no puede activar la MFA en su nombre.

      • Para activar la MFA, use la aplicación de autenticador en su dispositivo móvil para escanear el código QR generado en la interfaz de usuario de Database Actions. Consulte Configuración de Oracle Mobile Authenticator para obtener más información.

        Solo puede registrar un dispositivo móvil para MFA.

    • Para la entrega de token basada en correo electrónico, asegúrese de que la entrega de correo electrónico esté activada y de que las direcciones de correo electrónico válidas estén configuradas para los usuarios de la base de datos. Consulte Envío de correo electrónico en base de datos de IA autónoma para obtener más información.
    • Para la entrega de token basada en Slack, configure el plugin de Slack y registre el ID de Slack del usuario para la entrega de OTP. Consulte Envío de notificaciones de Slack desde la base de datos de IA autónoma para obtener más información.

DEREGISTER_USER Procedimiento

El procedimiento DBMS_MFA_ADMIN.DEREGISTER_USER elimina un usuario de base de datos que está registrado actualmente para MFA. Después de eliminar al usuario, la MFA ya no se aplica a esa cuenta y el usuario puede autenticarse sin un segundo factor.

Sintaxis

PROCEDURE DBMS_MFA_ADMIN.DEREGISTER_USER (
  username IN VARCHAR2,
  type     IN VARCHAR2,
  email    IN VARCHAR2 DEFAULT NULL
);

Parámetros

Parámetro Descripción

username

Especifica el nombre de usuario para el que se debe eliminar la autenticación multifactor.

type

Especifica el atributo de MFA que controla cuándo se aplica la MFA para el usuario. Los valores válidos son:

  • LOGON: se necesita MFA al conectarse a la base de datos.
  • SQL ACCESS: se necesita MFA para realizar cualquier operación SQL o DML en la base de datos.
email

Especifica la dirección de correo electrónico asociada al usuario para MFA.

Este parámetro es opcional y se define por defecto en NULL.

Ejemplos

BEGIN
  DBMS_MFA_ADMIN.DEREGISTER_USER(
    username => 'SCOTT',
    type     => 'SQL ACCESS',
    email    => 'scott@example.com'
  );
END;
/

En este ejemplo, se anula el registro del usuario SCOTT de la MFA para el type (SQL ACCESS) especificado y se elimina la identidad de correo electrónico asociada (scott@example.com) de la configuración de la MFA.

Nota de uso

  • Para ejecutar este procedimiento, debe estar conectado como usuario ADMIN o tener privilegios en el paquete DBMS_MFA_ADMIN.

  • Si un usuario está registrado con varias direcciones de correo electrónico, anule el registro de cada dirección de correo electrónico individualmente.