Pacchetto DBMS_MFA_ADMIN

Il pacchetto DBMS_MFA_ADMIN facilita e configura l'accesso token SQL.

Riepilogo dei sottoprogrammi DBMS_MFA_ADMIN

Riepiloga i sottoprogrammi inclusi nel pacchetto DBMS_MFA_ADMIN.

Procedura REGISTER_USER

La procedura DBMS_MFA_ADMIN.REGISTER_USER registra un utente di database esistente per l'autenticazione MFA associando l'utente a un indirizzo e-mail come identità esterna. È possibile abilitare MFA per l'autenticazione di accesso, l'accesso SQL o entrambi. Supporta applicazioni di posta elettronica, Slack e autenticatore per fornire token di accesso sicuri.

Sintassi

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

Parametri

Parametro Descrizione

username

Specifica il nome utente per il quale deve essere applicata l'autenticazione a più fattori.

type

Specifica l'attributo MFA che controlla quando viene applicata l'autenticazione MFA per l'utente.

type accetta i seguenti valori:
  • LOGON: l'autenticazione MFA è necessaria quando si esegue il login al database.

  • SQL ACCESS: l'autenticazione MFA è necessaria per eseguire qualsiasi operazione SQL o DML nel database.

email

Specifica l'indirizzo e-mail da associare all'utente per l'autenticazione MFA.

attributes

Specifica gli attributi MFA in formato JSON.

Utilizzare attributes per specificare i seguenti attributi per generare il token:

  • auth_method: specifica il metodo MFA utilizzato per l'autenticazione degli utenti del database. Per questo parametro sono validi i seguenti valori:
    • OMA_PUSH: sono supportati sia l'autenticazione MFA di accesso che quella di accesso SQL.

    • DUO_PUSH: è supportato solo l'autenticazione MFA di accesso.

    • EMAIL: è supportato solo l'autenticazione MFA di accesso SQL.

    • SLACK: è supportato solo l'autenticazione MFA di accesso SQL.

    Nota

    Per type =>'LOGON', auth_method è l'unico attributo supportato.
  • duration_min: specifica una durata intera positiva, espressa in minuti, per la quale il token è valido.

    Il valore predefinito per questo attributo è 1440 min (1 giorno).

  • idle_timeout_min: specifica il tempo massimo di inattività consentito, in minuti, per una sessione prima della scadenza del token di accesso SQL per tale sessione.

    Il valore predefinito è NULL.

  • read_only: specifica se l'utente registrato dispone dell'accesso tramite query SQL di sola lettura al database.

    Il valore predefinito è FALSE.

    Questo attributo si applica solo quando l'ambito è impostato su SESSION.

  • roles: specifica un array JSON di ruoli di database da assegnare al token di accesso SQL generato per l'utente.

    Ad esempio, "roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE').

    Il valore predefinito per questo attributo è NULL.

  • scope: specifica l'ambito in cui è valido il token di accesso SQL.

    scope accetta i seguenti valori:
    • session:

      Il token convalidato concede l'accesso SQL solo alla sessione di database corrente per la durata specificata nell'attributo duration_min.

    • user:

      Il token convalidato concede l'accesso SQL alle sessioni di database correnti e successive per la durata specificata nell'attributo duration_min.

    Il valore predefinito per questo attributo è session.

  • enable_authenticator: specifica che l'applicazione di autenticazione è configurata per l'utente e viene utilizzata per il token di accesso SQL.

    Il valore predefinito per questo attributo è FALSE.

  • slack_member_id: specifica l'ID Slack in cui consegnare il token di accesso SQL tramite un messaggio Slack.

Esempi

Esempio di registrazione di un utente per il collegamento MFA:

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

Esempio per registrare un utente per l'accesso SQL impostando gli attributi 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;
/

Note sull'uso

  • Per registrare un utente, è necessario aver eseguito il login come utente ADMIN o disporre dei privilegi per il pacchetto DBMS_MFA_ADMIN.

  • È possibile registrare gli utenti del database per l'autenticazione MFA utilizzando provider diversi a seconda del tipo MFA: Duo e OMA sono supportati per l'autenticazione MFA in fase di login, mentre Slack, OMA ed e-mail sono supportati per l'autenticazione MFA del token di accesso SQL.

  • È possibile registrare lo stesso utente per entrambi i tipi MFA (accesso MFA e accesso SQL) registrandoli separatamente per ciascuno. È possibile utilizzare lo stesso indirizzo e-mail o un indirizzo diverso per ogni registrazione; una volta configurato, l'utente riceve una notifica push all'indirizzo e-mail registrato all'accesso e un'altra notifica, allo stesso indirizzo, se utilizzato, quando l'utente esegue INITIALIZE_SESSION per SQL Access.

Procedura SET_GLOBAL_TOKEN_ATTRIBUTES

La procedura DBMS_MFA_ADMIN.SET_GLOBAL_TOKEN_ATTRIBUTES imposta o aggiorna gli attributi MFA del token di accesso SQL a livello globale per tutti gli utenti registrati.

Sintassi

DBMS_MFA_ADMIN.SET_GLOBAL_TOKEN_ATTRIBUTES(       
    attributes IN VARCHAR2
);

Parametri

Parametro Descrizione

attributes

Specifica gli attributi del token in formato JSON per generare un token di accesso. I valori validi sono i seguenti:

  • duration_min: specifica la durata, in minuti, per la quale il token è valido.

    Il valore predefinito è 1440 min (1 giorno).

  • idle_timeout_min: specifica il tempo massimo di inattività consentito, in minuti, per una sessione prima della scadenza del token di accesso SQL per tale sessione.

    Il valore predefinito è NULL.

  • read_only: specifica se l'utente registrato dispone dell'accesso tramite query SQL di sola lettura al database. Il valore predefinito è FALSE. Questo attributo si applica solo quando l'ambito è impostato su SESSION.

  • roles: specifica un array JSON di ruoli di database da assegnare al token di accesso SQL generato per l'utente.

    Ad esempio, "roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE').

    Il valore predefinito è NULL.

  • scope: specifica l'ambito in cui è valido il token di accesso SQL.

    I valori validi sono i seguenti:

    • session: il token convalidato concede l'accesso SQL solo alla sessione di database corrente per la durata specificata nell'attributo duration_min.

    • user: il token convalidato concede l'accesso SQL alle sessioni di database correnti e successive per la durata specificata nell'attributo duration_min.

    Il valore predefinito è session.

  • enable_authenticator: specifica che l'applicazione di autenticazione è configurata per l'utente e viene utilizzata per il token di accesso SQL.

    Il valore predefinito è FALSE.

Nota per l'uso

  • Per impostare gli attributi del token, è necessario aver eseguito il login come utente ADMIN o disporre dei privilegi per il pacchetto DBMS_MFA_ADMIN.

Procedura SET_ATTRIBUTE

DBMS_MFA_ADMIN.SET_ATTRIBUTE imposta o aggiorna un singolo attributo MFA per un utente registrato e sostituisce qualsiasi valore predefinito globale applicabile per tale attributo.

Nota

Per l'ora di login MFA, auth_method è l'unico attributo supportato.

Sintassi

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

Parametri

Parametro Descrizione

username

Specifica l'utente del database il cui attributo MFA deve essere aggiornato.

type

Specifica l'attributo MFA che controlla quando viene applicata l'autenticazione MFA per l'utente.

I valori validi sono i seguenti:
  • LOGON: l'autenticazione MFA è necessaria quando si esegue il login a un'applicazione Oracle.

  • SQL ACCESS: l'autenticazione MFA è necessaria per eseguire qualsiasi operazione SQL o DML nel database.

email

Specifica l'indirizzo e-mail da associare all'utente per l'autenticazione MFA.

Questo parametro è facoltativo e il valore predefinito è NULL.

attribute_name

Specifica il nome dell'attributo MFA da aggiornare. I valori validi sono i seguenti:
  • auth_method: specifica il metodo MFA utilizzato per l'autenticazione degli utenti del database. Per questo parametro sono validi i seguenti valori:
    • OMA_PUSH: sono supportati sia l'autenticazione MFA di accesso che quella di accesso SQL.

    • DUO_PUSH: è supportato solo l'autenticazione MFA di accesso.

    • EMAIL: è supportato solo l'autenticazione MFA di accesso SQL.

    • SLACK: è supportato solo l'autenticazione MFA di accesso SQL.

  • duration_min: specifica la durata, in minuti, per la quale il token è valido. Il valore predefinito è 1440 minuti (1 giorno).

  • idle_timeout_min: specifica il tempo massimo di inattività consentito, in minuti, per una sessione prima della scadenza del token di accesso SQL per tale sessione.

    Il valore predefinito è NULL.

  • read_only: specifica se l'utente registrato dispone dell'accesso tramite query SQL di sola lettura al database.

    Il valore predefinito è FALSE.

    Questo attributo si applica solo quando l'ambito è impostato su SESSION.

  • roles: specifica un array JSON di ruoli di database da assegnare al token di accesso SQL generato per l'utente.

    Ad esempio, "roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE').

    Il valore predefinito è NULL.

  • scope: specifica l'ambito in cui è valido il token di accesso SQL.

    I valori validi sono i seguenti:
    • session:

      Il token convalidato concede l'accesso SQL solo alla sessione di database corrente per la durata specificata nell'attributo duration_min.

    • user:

      Il token convalidato concede l'accesso SQL alle sessioni di database correnti e successive per la durata specificata nell'attributo duration_min.

    Il valore predefinito per questo attributo è session.

  • enable_authenticator: specifica che l'applicazione di autenticazione è configurata per l'utente e viene utilizzata per il token di accesso SQL.

    Il valore predefinito per questo attributo è FALSE.

  • slack_member_id: specifica l'ID Slack in cui consegnare il token di accesso SQL tramite un messaggio Slack.

attribute_value

Il nuovo valore dell'attributo specificato.

Esempio

Esempio per aggiornare l'impostazione MFA per l'utente SCOTT:
BEGIN
  DBMS_MFA_ADMIN.SET_ATTRIBUTE(    
    username         => 'scott',
    type             => 'sql access',
    email            => 'testscott@example.com',
    attribute_name   => 'duration_min',
    attribute_value  => '20');
END;
/

Note sull'uso

  • Il parametro username deve specificare un utente di database esistente registrato per MFA.

  • Per eseguire questa procedura, è necessario aver eseguito il login come utente ADMIN o disporre dei privilegi per il pacchetto DBMS_MFA_ADMIN.

Procedura SET_ATTRIBUTES

La procedura DBMS_MFA_ADMIN.SET_ATTRIBUTES imposta o aggiorna uno o più attributi MFA per un utente registrato e sostituisce tutti i valori predefiniti globali applicabili per tali attributi.

Nota

Per l'ora di login MFA, auth_method è l'unico attributo supportato.

Sintassi

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

Parametri

Parametro Descrizione

username

Specifica il nome utente i cui attributi MFA devono essere aggiornati.

type

Specifica l'attributo MFA che controlla quando viene applicata l'autenticazione MFA per l'utente.

I valori validi sono i seguenti:
  • LOGON: l'autenticazione MFA è necessaria quando si esegue il login al database.

  • SQL ACCESS: l'autenticazione MFA è necessaria per eseguire qualsiasi operazione SQL o DML nel database.

attributes
Specifica gli attributi MFA in formato JSON. I valori validi sono i seguenti:
  • auth_method: specifica il metodo MFA utilizzato per l'autenticazione degli utenti del database. Per questo parametro sono validi i seguenti valori:
    • OMA_PUSH: sono supportati sia l'autenticazione MFA di accesso che quella di accesso SQL.

    • DUO_PUSH: è supportato solo l'autenticazione MFA di accesso.

    • EMAIL: è supportato solo l'autenticazione MFA di accesso SQL.

    • SLACK: è supportato solo l'autenticazione MFA di accesso SQL.

  • duration_min: specifica la durata, in minuti, per la quale il token è valido. Il valore predefinito è 1440 minuti (1 giorno).

  • idle_timeout_min: specifica il tempo massimo di inattività consentito, in minuti, per una sessione prima della scadenza del token di accesso SQL per tale sessione.

    Il valore predefinito è NULL.

  • read_only: specifica se l'utente registrato dispone dell'accesso tramite query SQL di sola lettura al database.

    Il valore predefinito è FALSE.

    Questo attributo si applica solo quando l'ambito è impostato su SESSION.

  • roles: specifica un array JSON di ruoli di database da assegnare al token di accesso SQL generato per l'utente.

    Ad esempio, "roles": JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE').

    Il valore predefinito è NULL.

  • scope: specifica l'ambito in cui è valido il token di accesso SQL.

    I valori validi sono i seguenti:
    • session:

      Il token convalidato concede l'accesso SQL solo alla sessione di database corrente per la durata specificata nell'attributo duration_min.

    • user:

      Il token convalidato concede l'accesso SQL alle sessioni di database correnti e successive per la durata specificata nell'attributo duration_min.

    Il valore predefinito per questo attributo è session.

  • enable_authenticator: specifica che l'applicazione di autenticazione è configurata per l'utente e viene utilizzata per il token di accesso SQL.

    Il valore predefinito per questo attributo è FALSE.

  • slack_member_id: specifica l'ID Slack in cui consegnare il token di accesso SQL tramite un messaggio Slack.

Esempio

Esempio per aggiornare l'impostazione MFA per l'utente 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;
/

Note sull'uso

  • Il parametro USERNAME deve specificare un utente di database esistente registrato per MFA.

  • Per eseguire questa procedura, è necessario aver eseguito il login come utente ADMIN o disporre dei privilegi per il pacchetto DBMS_MFA_ADMIN.

Procedura CONFIGURE_NOTIFICATION

La procedura DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION configura i canali attraverso i quali i token MFA vengono inviati agli utenti registrati. Ciò include la definizione del metodo di consegna e delle proprietà specifiche del canale richieste per la distribuzione del token.

Sintassi

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

Parametri

Parametro Descrizione

notification_type

Specifica il tipo di canale di notifica da configurare. I valori validi sono: EMAIL, SLACK, OMA, DUO.

attributes

Fornisce i dettagli di configurazione per il canale di notifica specificato in formato JSON.

Di seguito sono riportati i tipi di attributo validi per ciascun canale di notifica.

EMAIL: obbligatorio per l'impostazione del collegamento MFA; OTP via e-mail supportato solo per l'autenticazione MFA del token di accesso SQL
  • credential_name: il nome dell'oggetto credenziale e-mail creato nel database.

  • sender: l'indirizzo e-mail dell'host approvato che verrà visualizzato come mittente dei messaggi MFA. Questo indirizzo deve essere consentito dal server SMTP.

  • smtp_host: nome di dominio o indirizzo IP completamente qualificato del server SMTP che invierà e-mail di notifica MFA.

  • smtp_port: il numero di porta utilizzato per connettersi al server SMTP, in genere 587 per TLS o 465 per SSL. Questo parametro è facoltativo e il valore predefinito è 587.

  • sender_email_display_name: il nome visualizzato che verrà visualizzato come mittente. Questo parametro è facoltativo e il valore predefinito è NULL.

SLACK: supportato solo per MFA token di eccesso SQL
  • credential_name: il nome della credenziale contenente le informazioni di autenticazione per l'invio di token come notifiche Slack.

OMA: supportato sia per l'autenticazione MFA del token di accesso che per l'integrazione SQL
  • credential_name: il nome dell'oggetto credenziale che contiene le informazioni di autenticazione utilizzate per inviare in modo sicuro notifiche MFA tramite OMA.

  • api_endpoint: l'URL del dominio Oracle Identity and Access Management (IAM) associato a questa credenziale. Questo endpoint identifica l'istanza IAM utilizzata per registrare gli utenti nel dominio IAM OCI, gestire il fattore MFA ed elaborare le richieste di autenticazione OMA, incluso l'invio di notifiche MFA agli utenti.

DUO: supportato solo per MFA di accesso:
  • credential_name: il nome dell'oggetto credenziale che contiene le informazioni di autenticazione utilizzate per inviare in modo sicuro notifiche MFA tramite OMA.

  • api_endpoint: il nome host API fornito da Duo Security per l'integrazione, ad esempio API-xxxxxxxx.duosecurity.com.

Esempi

Esempio: configurazione del canale di notifica 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;
/

Esempio: configurazione del canale di notifica Slack

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

Esempio: configurazione del canale di notifica 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;
/

Esempio: configurazione del canale di notifica 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;
/

Note sull'uso

  • Per eseguire questa procedura, è necessario aver eseguito il login come utente ADMIN o disporre dei privilegi necessari per il pacchetto DBMS_MFA_ADMIN.

  • Per le notifiche Slack, impostare le credenziali richieste e confermare che l'integrazione Slack è abilitata nell'ambiente in uso. Le notifiche Slack sono supportate solo per le operazioni MFA di accesso SQL.

    • Per impostare gli attributi del token, è necessario aver eseguito il login come utente ADMIN o disporre dei privilegi per il pacchetto DBMS_MFA_ADMIN.

    • Per i token basati sull'applicazione Authenticator:

      • Installare un'app di autenticazione supportata sul dispositivo mobile che si intende registrare per l'autenticazione MFA.

      • È necessario impostare l'autenticazione MFA utilizzando un dispositivo a cui è possibile accedere ogni volta che si esegue l'accesso. L'autenticazione MFA non può essere abilitata per conto dell'utente da un altro utente.

      • Per abilitare l'autenticazione MFA, utilizzare l'applicazione di autenticazione sul dispositivo mobile per eseguire la scansione del codice QR generato nell'interfaccia utente di Database Actions. Per ulteriori informazioni, vedere Configurazione di Oracle Mobile Authenticator.

        È possibile registrare un solo dispositivo mobile per MFA.

    • Per la consegna dei token basata su e-mail, assicurarsi che la consegna delle e-mail sia abilitata e che gli indirizzi e-mail validi siano configurati per gli utenti del database. Per ulteriori informazioni, vedere Invia e-mail su Autonomous AI Database.
    • Per la consegna del token basato su Slack, configurare il plugin Slack e registrare l'ID Slack dell'utente per la consegna OTP. Per ulteriori informazioni, consulta la sezione Invia notifiche Slack da Autonomous AI Database.

Procedura DEREGISTER_USER

La procedura DBMS_MFA_ADMIN.DEREGISTER_USER rimuove un utente del database attualmente registrato per l'autenticazione MFA. Dopo la rimozione dell'utente, l'autenticazione MFA non viene più applicata per tale account e l'utente può eseguire l'autenticazione senza un secondo fattore.

Sintassi

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

Parametri

Parametro Descrizione

username

Specifica il nome utente per il quale deve essere rimossa l'autenticazione a più fattori.

type

Specifica l'attributo MFA che controlla quando viene applicata l'autenticazione MFA per l'utente. I valori validi sono i seguenti:

  • LOGON: l'autenticazione MFA è necessaria quando si esegue il login al database.
  • SQL ACCESS: l'autenticazione MFA è necessaria per eseguire qualsiasi operazione SQL o DML nel database.
email

Specifica l'indirizzo e-mail associato all'utente per l'autenticazione MFA.

Questo parametro è facoltativo e il valore predefinito è NULL.

Esempi

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

Questo esempio annulla la registrazione dell'utente SCOTT da MFA per il file type (SQL ACCESS) specificato e rimuove l'identità di posta elettronica associata (scott@example.com) dalla configurazione MFA.

Nota per l'uso

  • Per eseguire questa procedura, è necessario aver eseguito il login come utente ADMIN o disporre dei privilegi necessari per il pacchetto DBMS_MFA_ADMIN.

  • Se un utente è registrato con più indirizzi e-mail, annullare la registrazione di ciascun indirizzo e-mail singolarmente.