Usa autenticazione Identity and Access Management con Base Database Service

È possibile configurare Oracle Database in Base Database Service in modo che utilizzi l'autenticazione e l'autorizzazione Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) per consentire agli utenti IAM di accedere al database con le credenziali IAM.

Nota: Oracle Database supporta l'integrazione Base Database Service per IAM OCI con i domini di identità e il precedente IAM, che non include i domini di identità. Sia gli utenti che i gruppi di domini predefiniti che quelli non predefiniti sono supportati quando si utilizza IAM con i domini di Identity.

Il supporto per domini personalizzati non predefiniti è disponibile solo con Oracle Database Release 19c, Versione 19.21 e successive (ma non con Oracle Database Release 21c).

Informazioni sull'autenticazione IAM

L'integrazione di OCI IAM con Base Database Service supporta sia l'autenticazione del verificatore delle password del database che l'autenticazione basata su token. Per ulteriori informazioni sull'architettura per l'uso degli utenti IAM in Base Database Service, vedere Autenticazione e autorizzazione degli utenti IAM per i database Oracle DBaaS.

Autenticazione password database IAM

È possibile abilitare un'istanza di Oracle Database per consentire l'accesso utente con una password di database IAM OCI (utilizzando un verificatore di password).

Per l'accesso al database del verificatore delle password, è possibile creare i mapping per gli utenti IAM e le applicazioni OCI all'istanza di Oracle Database. Gli account utente IAM vengono gestiti direttamente in IAM. Gli account utente e i gruppi di utenti possono trovarsi nel dominio predefinito o in un dominio personalizzato non predefinito.

Nota: qualsiasi client di database 12c e versioni successive supportato può essere utilizzato per l'accesso con password al database IAM a Oracle Database.

Una password del database IAM OCI consente a un utente IAM di eseguire il login a un'istanza di database mentre gli utenti di Oracle Database in genere eseguono il login con un nome utente e una password. L'utente immette il nome utente IAM e la password del database IAM. Una password del database IAM è una password diversa da quella di OCI Console. Utilizzando un utente IAM con un verificatore di password è possibile eseguire il login al database con qualsiasi client di database supportato, purché il client di database supporti i verificatori di password di Oracle Database 12c.

Autenticazione basata su token SSO IAM

È possibile abilitare un'istanza di Oracle Database per utilizzare i token SSO IAM OCI.

Per l'accesso al database dei token, è possibile creare i mapping per gli utenti IAM e le applicazioni OCI all'istanza di Oracle Database. Gli account utente IAM vengono gestiti direttamente in IAM. Gli account utente e i gruppi di utenti possono trovarsi nel dominio predefinito o in un dominio personalizzato non predefinito.

Esistono diversi modi in cui un client di database può ottenere un token di database IAM:

Se un utente immette un nome utente e una password per eseguire il login, il driver del database utilizza il metodo di verifica delle password per accedere al database come metodo predefinito.

Prerequisiti

Per l'autenticazione IAM in Base Database Service sono necessari i prerequisiti riportati di seguito.

Impostazioni di rete

Prima di utilizzare l'autenticazione IAM nei database, è necessario utilizzare il servizio Networking per aggiungere un gateway di servizio, una regola di instradamento e una regola di sicurezza di uscita alla rete cloud virtuale (VCN) e alle subnet in cui risiedono le risorse del database.

  1. Creare un gateway di servizi nella VCN in cui risiedono le risorse del database seguendo le istruzioni riportate in Creare il gateway di servizi.
  2. Dopo aver creato il gateway del servizio, aggiungere una regola di instradamento e una regola di sicurezza in uscita a ogni subnet (nella VCN) in cui risiedono le risorse del database in modo che queste risorse possano utilizzare il gateway per utilizzare l'autenticazione IAM:

    1. Andare alla pagina Dettagli subnet per la subnet.
    2. Nella scheda Informazioni subnet fare clic sul nome della tabella di instradamento della subnet per visualizzare la relativa pagina Dettagli tabella di instradamento.
    3. Nella tabella delle regole di instradamento esistenti, verificare se esiste già una regola con le seguenti caratteristiche:

      • Destinazione: tutti i servizi IAD in Oracle Services Network
      • Tipo di destinazione: gateway del servizio
      • Destinazione: il nome del gateway di servizi appena creato nella VCN

      Se tale regola non esiste, fare clic su Aggiungi regole di instradamento e aggiungere una regola di instradamento con queste caratteristiche.

    4. Tornare alla pagina Dettagli subnet per la subnet.
    5. Nella tabella Elenchi sicurezza della subnet fare clic sul nome della lista di sicurezza della subnet per visualizzare la relativa pagina Dettagli elenco di sicurezza.
    6. Nel menu laterale, in Risorse, fare clic su Regole di uscita.
    7. Nella tabella delle regole di uscita esistenti, verificare se esiste già una regola con le seguenti caratteristiche:

      • Senza stato: No
      • Destinazione: tutti i servizi IAD in Oracle Services Network
      • Protocollo IP: TCP
      • Intervallo di porte di origine: Tutto
      • Intervallo di porte di destinazione: 443
    8. Se una regola di questo tipo non esiste, fare clic su Aggiungi regole di uscita e aggiungere una regola di uscita con queste caratteristiche.

Impostazioni ambiente

Verificare se WALLET_ROOT è configurato o meno:

show parameters wallet_root;
NAME               TYPE        VALUE
------------------ ----------- --------
wallet_root        string

Se non viene visualizzata una posizione di directory per WALLET_ROOT, non sarà possibile configurare questo database con IAM. WALLET_ROOT deve essere impostato alla successiva applicazione delle patch al database. I nuovi database verranno forniti con il set WALLET_ROOT.

Configurazione TLS

Quando si inviano i token IAM dal client del database al database server, è necessario stabilire una connessione TLS. Il wallet TLS con il certificato di database per l'istanza del servizio DB di base deve essere memorizzato nella posizione WALLET_ROOT. Creare una directory tls in modo che sia simile a: WALLET_ROOT/<PDB GUID>/tls

Quando si configura TLS tra il client del database e il server, sono disponibili diverse opzioni da considerare.

Certificato autofirmato: l'uso di un certificato autofirmato è una pratica comune per le risorse IT interne poiché è possibile crearle autonomamente ed è gratuito. La risorsa (nel nostro caso, il database server) avrà un certificato autofirmato per autenticarsi presso il client del database. Il certificato con firma automatica e il certificato radice verranno memorizzati nel wallet del database server. Affinché il client del database possa riconoscere il certificato del server del database, sul client sarà necessaria anche una copia del certificato root. Questo certificato root auto-creato può essere memorizzato in un wallet lato client o installato nell'area di memorizzazione dei certificati predefinita del sistema client (solo Windows e Linux). Una volta stabilita la sessione, il client del database controllerà che il certificato inviato dal database server sia stato firmato dallo stesso certificato radice.

Un'autorità di certificazione root ben nota: l'utilizzo di un'autorità di certificazione root comunemente nota presenta alcuni vantaggi in quanto, molto probabilmente, il certificato root è già memorizzato nell'area di memorizzazione dei certificati predefinita del sistema client. Non vi è alcun passo aggiuntivo per il client per memorizzare il certificato root se si tratta di un certificato root comune. Lo svantaggio è che questo normalmente ha un costo associato ad esso.

TLS unidirezionale: nella sessione TLS standard, solo il server fornisce un certificato al client per l'autenticazione. Non è necessario che il client disponga di un certificato client separato per autenticarsi presso il server (simile alla modalità di creazione delle sessioni HTTPS). Mentre il database richiede un wallet per memorizzare il certificato server, l'unica cosa che il client deve avere è il certificato root utilizzato per firmare il certificato server.

TLS a due vie (denominato anche Mutual TLS, mTLS): in mTLS, sia il client che il server dispongono di certificati di identità presentati tra loro. Nella maggior parte dei casi, lo stesso certificato root avrà firmato entrambi questi certificati in modo che lo stesso certificato root possa essere utilizzato con il database server e il client per autenticare l'altro certificato. mTLS viene talvolta utilizzato per autenticare l'utente poiché l'identità utente viene autenticata dal database server tramite il certificato. Questa operazione non è necessaria per passare i token IAM, ma può essere utilizzata quando si passano i token IAM.

Client con wallet: un wallet client è obbligatorio quando si utilizza mTLS per memorizzare il certificato client. Tuttavia, il certificato radice può essere memorizzato nello stesso wallet o nell'area di memorizzazione dei certificati predefinita del sistema.

Un client senza wallet: i client possono essere configurati senza un wallet quando si utilizza TLS nelle seguenti condizioni:

  1. TLS unidirezionale è in fase di configurazione in cui il client non dispone di un proprio certificato e
  2. il certificato root che ha firmato il certificato del database server viene memorizzato nell'area di memorizzazione dei certificati predefinita del sistema. Molto probabilmente il certificato root esiste già se il certificato del server è firmato da un'autorità di certificazione comune. Se si tratta di un certificato autofirmato, è necessario installare il certificato root nell'area di memorizzazione dei certificati predefinita del sistema per evitare l'uso di un wallet client.

Per informazioni dettagliate su come configurare TLS tra il client del database e il database server, incluse le opzioni descritte sopra, vedere Configuring Transport Layer Security Authentication.

Se si sceglie di utilizzare i certificati autofirmati e per task aggiuntivi correlati al wallet, fare riferimento alla guida di riferimento dell'interfaccia della riga di comando (CLI, Command Line Interface) orapki nel manuale Database Security Guide. Vedere Gestione degli elementi PKI (Public Key Infrastructure).

Modifica provider di identità esterni

In questo argomento vengono descritti i passi per modificare l'autenticazione e l'autorizzazione IAM del provider di identità esterno da Utenti gestiti centralmente (CMU) a OCI e viceversa in Base Database Service.

Per impostazione predefinita, l'autenticazione e l'autorizzazione IAM OCI per gli utenti non sono abilitate per i nuovi database di cui è stato eseguito il provisioning. Un'altra opzione per l'autenticazione esterna è l'utilizzo di utenti gestiti centralmente con Active Directory (CMU-AD). Può essere abilitato un solo schema di autenticazione esterno alla volta.

Abilita autenticazione e autorizzazione IAM OCI

Eseguire i passi riportati di seguito per abilitare l'autenticazione e l'autorizzazione IAM OCI.

  1. Abilitare l'autenticazione e l'autorizzazione IAM OCI utilizzando il comando ALTER SYSTEM.

    ALTER SYSTEM SET IDENTITY_PROVIDER_TYPE=OCI_IAM SCOPE=BOTH;
  2. Verificare il valore del parametro di sistema IDENTITY_PROVIDER_TYPE.

    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
    NAME                   VALUE
    ---------------------- -------
    identity_provider_type OCI_IAM
  3. Controllare che il parametro IDENTITY_PROVIDER_CONFIG sia stato impostato.

    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_config';
  4. Se il parametro IDENTITY_PROVIDER_CONFIG è stato impostato, reimpostare il parametro.

    ALTER SYSTEM RESET IDENTITY_PROVIDER_CONFIG SCOPE=BOTH;

Disabilita autenticazione e autorizzazione IAM OCI

Eseguire il passo riportato di seguito per disabilitare l'autenticazione e l'autorizzazione IAM OCI.

  1. Disabilitare l'integrazione IAM OCI utilizzando il comando ALTER SYSTEM.

    ALTER SYSTEM RESET IDENTITY_PROVIDER_TYPE SCOPE=BOTH;

Abilita CMU-AD

Eseguire i passi riportati di seguito per consentire agli utenti di Active Directory (AD) di connettersi al database mediante CMU.

  1. Disabilitare l'integrazione IAM come descritto in Disabilitare l'autenticazione e l'autorizzazione IAM OCI.
  2. Configurare CMU-AD come descritto in Configurazione di utenti gestiti centralmente con Microsoft Active Directory.

Disabilita CMU-AD

Eseguire il passo seguente per disabilitare CMU-AD:

  1. Disabilitare CMU-AD utilizzando il comando ALTER SYSTEM.

    ALTER SYSTEM SET LDAP_DIRECTORY_ACCESS = 'NONE';

Riabilita autenticazione e autorizzazione IAM OCI

Eseguire i passi riportati di seguito per riabilitare gli utenti IAM a connettersi al database utilizzando l'autenticazione e l'autorizzazione IAM OCI.

  1. Disabilitare CMU-AD come descritto in Disabilitare CMU-AD.
  2. Abilitare l'autenticazione e l'autorizzazione IAM OCI come descritto in Abilita autenticazione e autorizzazione IAM OCI.

Creare gruppi e criteri IAM per gli utenti IAM

Questo argomento descrive i passi per scrivere istruzioni dei criteri per un gruppo IAM per abilitare l'accesso utente IAM alle risorse OCI, in particolare alle istanze di database.

Un criterio è un gruppo di istruzioni che specifica chi può accedere a determinate risorse e in che modo. È possibile concedere l'accesso per l'intera tenancy, per i database in un compartimento o per singoli database. Ciò significa che si scrive un'istruzione dei criteri che fornisce a un gruppo specifico un tipo specifico di accesso a un tipo specifico di risorsa all'interno di un compartimento specifico.

Nota: per accedere al database è necessario definire un criterio per utilizzare i token IAM. Non è necessario un criterio quando si utilizzano le password del database IAM per accedere al database.

Per abilitare il database per consentire agli utenti IAM di connettersi al database utilizzando i token IAM, effettuare le operazioni riportate di seguito.

  1. Eseguire i prerequisiti IAM OCI creando un gruppo e aggiungendo utenti al gruppo.

    Ad esempio, creare il gruppo sales_dbusers.

    Per ulteriori informazioni, vedere Gestione dei gruppi.

  2. Scrivere istruzioni sui criteri per abilitare l'accesso alle risorse OCI.

    1. Nella console OCI fare clic su Identità e sicurezza e su Criteri.
    2. Per un criterio di scrittura, fare clic su Crea criterio e immettere un nome e una descrizione.
    3. Utilizzare Costruzione guidata criteri per creare un criterio.

      Ad esempio, per creare un criterio che consenta agli utenti del gruppo IAM DBUsers di accedere a qualsiasi database nella propria tenancy:

      Allow group DBUsers to use database-connections in tenancy

      Ad esempio, per creare un criterio che limiti i membri del gruppo DBUsers ad accedere ai database solo nel compartimento testing_compartment:

      allow group DBUsers to use database-connections in compartment testing_compartment

      Ad esempio, per creare un criterio che limita l'accesso di gruppo a un singolo database in un compartimento:

      allow group DBUsers to use database-connections in compartment testing_compartment
          where target.database.id = 'ocid1.database.oc1.iad.aabbcc'
    4. Fare clic su Crea.

      Per ulteriori informazioni sui criteri, vedere Gestione dei criteri.

Nota:

Per creare criteri da utilizzare con gli utenti IAM nel database in Base Database Service, è necessario quanto riportato di seguito.

È possibile creare gruppi dinamici e fare riferimento a gruppi dinamici nei criteri creati per accedere a OCI.

Per ulteriori informazioni, vedere Gestione dei gruppi dinamici.

Aggiungi utenti IAM

Per aggiungere utenti IAM per consentire l'accesso al database, mappare gli utenti globali del database ai gruppi IAM o agli utenti con istruzioni CREATE USER o ALTER USER (con clausola IDENTIFIED GLOBALLY AS).

L'autorizzazione degli utenti IAM a un'istanza di database funziona mappando gli utenti globali del database (schemi) agli utenti IAM (mapping esclusivo) o ai gruppi IAM (mapping dello schema condiviso).

Autorizza utenti IAM in un'istanza di database:

Eseguire i passi riportati di seguito per autorizzare gli utenti IAM in un'istanza di database.

  1. Eseguire il login come utente ADMIN al database abilitato per l'utilizzo di IAM (l'utente ADMIN dispone dei privilegi di sistema CREATE USER e ALTER USER necessari per questi passi).
  2. Creare un mapping tra l'utente del database (schema) con istruzioni CREATE USER o ALTER USER e includere la clausola IDENTIFIED GLOBALLY AS, specificando il nome del gruppo IAM.

    Usare la sintassi seguente per mappare un utente globale a un gruppo IAM:

    CREATE USER global_user IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_GROUP_NAME';

    Ad esempio, per mappare un gruppo IAM denominato db_sales_group a un utente globale del database condiviso denominato sales_group:

    CREATE USER sales_group IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=db_sales_group';

    In questo modo viene creato un mapping utenti globale condiviso. Il mapping, con utente globale sales_group, è valido per tutti gli utenti del gruppo IAM. Pertanto, chiunque in db_sales_group può eseguire il login al database utilizzando le proprie credenziali IAM (attraverso il mapping condiviso dell'utente globale sales_group).

    L'esempio seguente mostra come eseguire questa operazione per un dominio non predefinito, sales_domain:

    CREATE USER shared_sales_schema IDENTIFIED GLOBALLY AS
        'IAM_GROUP_NAME=sales_domain/db_sales_group';
  3. Se si desidera creare mapping utente globali aggiuntivi per altri gruppi o utenti IAM, attenersi alla procedura riportata di seguito per ogni gruppo o utente IAM.

Nota: gli utenti del database che non sono IDENTIFIED GLOBALLY possono continuare a eseguire il login come prima, anche quando il database è abilitato per l'autenticazione IAM.

Eseguire il mapping esclusivo di un utente IAM locale a un utente globale di Oracle Database:

Eseguire i passi riportati di seguito per mappare in modo esteso un utente IAM locale a un utente globale di Oracle Database.

  1. Eseguire il login come utente ADMIN al database abilitato per l'utilizzo di IAM (l'utente ADMIN dispone dei privilegi di sistema CREATE USER e ALTER USER necessari per questi passi).
  2. Creare un mapping tra l'utente del database (schema) con istruzioni CREATE USER o ALTER USER e includere la clausola IDENTIFIED GLOBALLY AS, specificando il nome utente IAM locale IAM.

    Ad esempio, per creare un nuovo utente globale del database denominato peter_fitch e mappare questo utente a un utente IAM locale esistente denominato peterfitch:

    CREATE USER peter_fitch IDENTIFIED GLOBALLY AS 'IAM_PRINCIPAL_NAME=peterfitch'

    L'esempio seguente mostra come creare l'utente specificando un dominio non predefinito, sales_domain:

    CREATE USER peter_fitch2 IDENTIFIED GLOBALLY AS
        'IAM_PRINCIPAL_NAME=sales_domain/peterfitch';

Aggiungi ruoli IAM

Facoltativamente, creare ruoli globali per fornire ulteriori ruoli e privilegi di database agli utenti IAM quando più utenti IAM sono mappati allo stesso utente globale condiviso.

La creazione di ruoli globali è facoltativa per un utente IAM con un mapping IAM esclusivo a un utente di database (schema). Quando il mapping IAM è a uno schema condiviso, anche la creazione di un ruolo globale è facoltativa. Ad esempio, tutti i privilegi e i ruoli possono essere concessi allo schema condiviso e a tutti gli utenti IAM mappati allo schema condiviso verranno concessi i privilegi e i ruoli assegnati allo schema condiviso.

Utilizzare un ruolo globale per differenziare facoltativamente gli utenti che utilizzano lo stesso schema condiviso. Ad esempio, un set di utenti può avere tutti lo stesso schema condiviso e lo schema condiviso può avere il privilegio CREATE SESSION. I ruoli globali possono quindi essere utilizzati per fornire privilegi e ruoli differenziati assegnati a gruppi diversi di utenti che utilizzano tutti lo stesso schema condiviso.

La concessione di ruoli aggiuntivi agli utenti IAM funziona mappando i ruoli globali del database ai gruppi IAM.

Mappare i ruoli globali del database ai gruppi IAM:

Eseguire i passi riportati di seguito per mappare i ruoli globali del database ai gruppi IAM.

  1. Eseguire il login come utente ADMIN al database abilitato per l'utilizzo di IAM (l'utente ADMIN dispone dei privilegi di sistema CREATE USER e ALTER USER necessari per questi passi).
  2. Impostare l'autorizzazione del database per i ruoli del database con istruzioni CREATE ROLE o ALTER ROLE e includere la clausola IDENTIFIED GLOBALLY AS, specificando il nome del gruppo IAM.

    Utilizzare la sintassi seguente per mappare un ruolo globale a un gruppo IAM:

    CREATE ROLE global_role IDENTIFIED GLOBALLY AS
        'IAM_GROUP_NAME=IAM_GROUP_of_WHICH_the_IAM_USER_IS_a_MEMBER';

    Ad esempio, per mappare un gruppo IAM denominato ExporterGroup a un ruolo globale del database condiviso denominato export_role:

    CREATE ROLE export_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=ExporterGroup';

    L'esempio seguente mostra come creare il ruolo specificando un dominio non predefinito, sales_domain:

    CREATE ROLE export_role IDENTIFIED GLOBALLY AS
        'IAM_GROUP_NAME=sales_domain/ExporterGroup';

    Tutti i membri di ExporterGroup nel dominio sales_domain verranno autorizzati con il ruolo globale del database export_role quando eseguono il login al database.

  3. Utilizzare le istruzioni GRANT per concedere i privilegi richiesti o altri ruoli al ruolo globale.

    GRANT CREATE SESSION TO export_role;
    GRANT DWROLE TO export_role;
  4. Se si desidera associare un ruolo di database esistente a un gruppo IAM, utilizzare l'istruzione ALTER ROLE per modificare il ruolo di database esistente per mappare il ruolo a un gruppo IAM. Utilizzare la sintassi seguente per modificare un ruolo di database esistente per mapparlo a un gruppo IAM:

    ALTER ROLE existing_database_role
       IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_Group_Name';

Se si desidera aggiungere ulteriori mapping di ruoli globali per altri gruppi IAM, attenersi alla procedura descritta in precedenza per ciascun gruppo IAM.

Crea password database IAM per utenti IAM

Per aggiungere un utente IAM e consentire all'utente IAM di eseguire il login al database fornendo un nome utente e una password, è necessario creare una password del database IAM. È possibile utilizzare un nome utente IAM e una password del database IAM in due modi.

  1. L'utente IAM può immettere il nome utente IAM e la password del database IAM quando accede al database. Per impostazione predefinita, il client del database seguirà il normale meccanismo di autenticazione della password con il database e il database recupererà il verificatore della password del database IAM da IAM.
  2. Il client di database può essere configurato per ottenere un token di database IAM utilizzando il nome utente IAM e la password del database IAM. Il client di database invierà questo token di database al database per l'accesso utente.

Per ulteriori informazioni su come ottenere un token di database IAM utilizzando il nome utente IAM e la password del database IAM, vedere Configuring IAM for Oracle DBaaS.

Per ulteriori informazioni sulle password del database IAM, vedere Utilizzo dei nomi utente e delle password del database IAM in Gestione delle credenziali utente.

Connessione al database con autenticazione IAM

Dopo che l'utente ADMIN del database mappa gli utenti globali e i ruoli globali agli utenti IAM e ai gruppi IAM, gli utenti eseguono il login all'istanza di database utilizzando le credenziali IAM OCI o accedono al database tramite un token di database IAM OCI.

È comunque possibile eseguire il login al database utilizzando il nome utente e la password dell'account del database locale (account utente del database non globale).

È possibile utilizzare un client di database per accedere a un'istanza di database come utente IAM OCI. Per utilizzare un client con credenziali di nome utente e password IAM OCI e un verificatore di password, il client di database deve essere 12c o più recente.

L'uso del token del database IAM richiede il client Oracle Database versione 19.16 e successive (non la versione 21c). Le funzionalità limitate (non complete) del token del database IAM sono disponibili con alcuni client Oracle Database 21.5 e versioni successive.

Nota: se l'istanza di database è in modalità limitata, solo gli utenti che dispongono del privilegio RESTRICTED SESSION, ad esempio ADMIN, possono connettersi al database.

Informazioni sulla connessione a un'istanza di database mediante IAM

Gli utenti IAM possono connettersi all'istanza di database utilizzando un verificatore di password del database IAM o un token IAM.

L'uso del verificatore delle password del database IAM è simile al processo di autenticazione delle password del database. Tuttavia, invece del verificatore password (hash crittografato della password) memorizzato nel database, il verificatore viene invece memorizzato come parte del profilo utente IAM OCI.

Il secondo metodo di connessione utilizza un token IAM per il database. L'uso dell'accesso basato su token è la soluzione migliore per le risorse cloud, ad esempio i database Oracle, nel servizio Base Database. Il token si basa sull'efficacia che l'endpoint IAM può applicare. Questo può essere l'autenticazione a più fattori, che è più forte dell'uso delle password da solo. Un altro vantaggio dell'utilizzo dei token è che il verificatore delle password (che è considerato sensibile) non viene mai memorizzato o disponibile in memoria. È necessaria una connessione TCPS (TLS) quando si utilizzano i token per l'accesso al database.

Nota: non è possibile configurare la cifratura di rete nativa quando si passa un token IAM. È supportato solo TLS (Transport Layer Security) in quanto tale, non la cifratura di rete nativa o la cifratura di rete nativa con TLS.

Connessioni client che utilizzano un verificatore password database IAM

Dopo aver configurato l'autorizzazione necessaria per l'utente IAM, questo utente può eseguire il login utilizzando l'applicazione client esistente, ad esempio SQL*Plus o SQLcl senza ulteriori configurazioni.

L'utente IAM immette il nome utente IAM e la password del database IAM (non la password della console OCI) utilizzando qualsiasi client di database attualmente supportato. L'unico vincolo è che la versione del client di database sia Oracle Database release 12.1.0.2 o successiva per utilizzare le password di Oracle Database 12c. Il client di database deve essere in grado di utilizzare il verificatore password 12c. L'uso della cifratura del verificatore 11g non è supportato con IAM. Non è necessaria alcuna configurazione speciale del client o dello strumento per consentire all'utente IAM di connettersi al database.

Il client di database può anche richiedere un token direttamente da IAM utilizzando il nome utente IAM e la password del database IAM. Per ulteriori informazioni sulla configurazione del client per il recupero di un token, vedere Connessioni client che utilizzano un token richiesto da un nome utente IAM e da una password database.

Connessioni client che utilizzano un token

Per l'accesso del token IAM al database, l'applicazione client o lo strumento richiede un token di database da IAM per l'utente IAM.

L'applicazione client passerà il token del database direttamente al client del database tramite l'API del client del database.

Se l'applicazione o lo strumento non è stato aggiornato per richiedere un token IAM, l'utente IAM può utilizzare l'interfaccia CLI OCI per richiedere e memorizzare il token del database. È possibile richiedere un token di accesso al database (db-token) utilizzando le seguenti credenziali:

Quando gli utenti IAM eseguono il login al client con un login barra / e il parametro OCI_IAM è configurato (sqlnet.ora, tnsnames.ora o come parte di una stringa di connessione), il client di database recupera il token di database da un file. Se l'utente IAM sottomette un nome utente e una password, la connessione utilizzerà l'accesso al verificatore del database IAM descritto per le connessioni client che utilizzano i verificatori delle password del database IAM, a meno che il client del database non sia configurato per recuperare un token di database da IAM con il nome utente IAM e la password del database IAM. Le istruzioni riportate in questo argomento mostrano come utilizzare l'interfaccia CLI OCI come applicazione di supporto per il token del database. Se l'applicazione o lo strumento è stato aggiornato per funzionare con IAM, seguire le istruzioni per l'applicazione o lo strumento. Alcuni casi d'uso comuni includono: SQLPlus in locale, SQLcl in locale, SQLPlus in Cloud Shell o applicazioni che utilizzano wallet SEP.

Gli argomenti riportati di seguito spiegano come effettuare le operazioni riportate di seguito.

Configurare una connessione client per SQL*Plus che utilizza una password del database IAM

È possibile configurare SQL*Plus in modo che utilizzi una password del database IAM.

Come utente IAM, eseguire il login al database utilizzando la sintassi seguente:

CONNECT user_name@db_connect_string
Enter password: password

In questa specifica, user_name è il nome utente IAM. Esiste un limite di 128 byte per il domain_name/user_name combinato.

L'esempio seguente mostra come l'utente IAM peter_fitch può eseguire il login a un'istanza di database.

sqlplus /nolog
connect peter_fitch@db_connect_string
Enter password: password

Alcuni caratteri speciali richiederanno le virgolette doppie intorno a user_name e password. Ad esempio:

"peter_fitch@example.com"@db_connect_string

"IAM database password"

Configurare la connessione client per SQL*Plus che utilizza un token IAM

Per configurare una connessione client per SQL*Plus che utilizza un token IAM, attenersi alla procedura riportata di seguito.

  1. Assicurarsi di disporre di un account utente IAM.
  2. Contattare un amministratore IAM e l'amministratore del database per assicurarsi di disporre di un criterio che consenta di accedere al database nel compartimento o nella tenancy e di essere mappati a uno schema globale nel database.
  3. Se la tua applicazione o strumento non supporta l'integrazione diretta IAM, scarica, installa e configura l'interfaccia CLI OCI. Per ulteriori informazioni sull'installazione e la configurazione dell'interfaccia CLI OCI, vedere Quickstart.
  4. Impostare una chiave API come parte della configurazione dell'interfaccia CLI OCI e selezionare i valori predefiniti.

    1. Impostare l'accesso alla chiave API per l'utente IAM.
    2. Recuperare il valore db-token. Ad esempio:

      • Recupero di un file db-token con un file API-key mediante l'interfaccia CLI OCI:

        oci iam db-token get
      • Recupero di un db-token con un token di sicurezza (o di sessione):

        oci iam db-token get --auth security_token

        Se il token di sicurezza è scaduto, verrà visualizzata una finestra in modo che l'utente possa eseguire di nuovo il login a OCI. Questo genera il token di sicurezza per l'utente. L'interfaccia CLI OCI utilizzerà questo token aggiornato per ottenere il token db-token.

      • Recupero di un db-token con un token di delega: quando si esegue il login a cloud shell, il token di delega viene generato e posizionato automaticamente nella directory /etc. Per ottenere questo token, eseguire il comando seguente nell'interfaccia CLI OCI:

        oci iam db-token get
      • Recupero di un token di istanza mediante l'interfaccia CLI OCI:

        oci iam db-token get --auth instance_principal

    Per ulteriori informazioni, vedere Chiavi e OCID obbligatori.

  5. Questa configurazione funziona solo con il client Oracle Database 19c. Assicurarsi di utilizzare gli aggiornamenti della release più recenti per questo client.

    Nota: la release 21c del client Oracle Database offre funzioni di token IAM limitate.

  6. Seguire il processo esistente per scaricare il wallet dal database e quindi seguire le istruzioni per configurarlo per l'uso con SQL*Plus.

    1. Verificare che la corrispondenza DN sia abilitata cercando SSL_SERVER_DN_MATCH=ON in sqlnet.ora.
    2. Configurare il client di database per l'uso del token IAM aggiungendo TOKEN_AUTH=OCI_TOKEN al file sqlnet.ora. Poiché verranno utilizzate le posizioni predefinite per il file token del database, non è necessario includere la posizione del token.

    I valori TOKEN_AUTH e TOKEN_LOCATION nelle stringhe di connessione tnsnames.ora hanno la precedenza sulle impostazioni sqlnet.ora per tale connessione. Ad esempio, per la stringa di connessione, supponendo che il token si trovi nella posizione predefinita (~/.oci/db-token per 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_cert_dn="CN=example.uscom-east-1.oraclecloud.com,
         OU=Oracle BMCS US, O=Example Corporation,
         L=Redwood City, ST=California, C=US")
      (TOKEN_AUTH=OCI_TOKEN)))

Dopo l'aggiornamento della stringa di connessione con il parametro TOKEN_AUTH, l'utente IAM può eseguire il login all'istanza di database eseguendo il comando seguente per avviare SQL*Plus. È possibile includere il descrittore di connessione o utilizzare il nome del descrittore dal file tnsnames.ora.

connect /@exampledb_high

oppure:

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,
     OU=Oracle BMCS US, O=Example Corporation,
     L=Redwood City, ST=California, C=US")
  (TOKEN_AUTH=OCI_TOKEN)))

Il client di database è già configurato per ottenere un valore db-token perché TOKEN_AUTH è già stato impostato tramite il file sqlnet.ora o in una stringa di connessione. Il client di database ottiene db-token e lo firma utilizzando la chiave privata, quindi invia il token al database. Se vengono specificati un nome utente IAM e una password del database IAM anziché la barra /, il client del database si connetterà utilizzando la password invece di utilizzare db-token a meno che non venga specificato un altro parametro: PASSWORD_AUTH = OCI_TOKEN. In questo modo, il client di database recupera il token da IAM utilizzando il nome utente IAM e la password del database IAM. Oltre all'impostazione PASSWORD_AUTH,, sarà necessario impostare anche OCI_IAM_URL, OCI_TENANCY e facoltativamente OCI_COMPARTMENT e OCI_DATABASE.

Usa principal istanza per accedere al database con autenticazione IAM

Dopo che l'utente ADMIN ha abilitato IAM OCI sul database, un'applicazione può accedere al database tramite un token di database IAM OCI utilizzando un principal dell'istanza.

Per ulteriori informazioni, vedere Accesso all'API di Oracle Cloud Infrastructure tramite i principal delle istanze.

Configura autenticazione proxy

L'autenticazione proxy consente a un utente IAM di eseguire il proxy a uno schema di database per task quali la manutenzione dell'applicazione.

L'autenticazione proxy viene in genere utilizzata per autenticare l'utente reale e quindi autorizzarlo a utilizzare uno schema di database con i privilegi e i ruoli dello schema per gestire un'applicazione. Le alternative, ad esempio la condivisione della password dello schema dell'applicazione, sono considerate non sicure e non possono eseguire l'audit dell'utente effettivo che ha eseguito un'azione.

Un caso d'uso può essere in un ambiente in cui un utente IAM denominato amministratore del database dell'applicazione può eseguire l'autenticazione utilizzando le proprie credenziali e quindi proxy per un utente dello schema di database (ad esempio, hrapp). Questa autenticazione consente all'amministratore IAM di utilizzare i privilegi e i ruoli hrapp come utente hrapp per eseguire la manutenzione dell'applicazione, ma di utilizzare comunque le credenziali IAM per l'autenticazione. Un amministratore del database dell'applicazione può collegarsi al database e quindi eseguire il proxy a uno schema dell'applicazione per gestire questo schema.

È possibile configurare l'autenticazione proxy sia per i metodi di autenticazione della password che per i metodi di autenticazione del token.

Configurazione dell'autenticazione proxy per l'utente IAM

Per configurare l'autenticazione proxy per un utente IAM, l'utente IAM deve disporre già di un mapping a uno schema globale (mapping esclusivo o condiviso). Deve essere disponibile anche uno schema di database separato per l'utente IAM a cui eseguire il proxy.

Dopo aver verificato che si dispone di questo tipo di utente, modificare l'utente del database per consentire all'utente IAM di eseguirne il proxy.

  1. Eseguire il login all'istanza di database come utente che dispone dei privilegi di sistema ALTER USER.
  2. Concedere l'autorizzazione per l'utente IAM per eseguire il proxy dell'account utente del database locale. Non è possibile fare riferimento a un utente IAM nel comando, pertanto è necessario creare il proxy tra l'utente globale del database (mappato all'utente IAM) e l'utente del database di destinazione. Nell'esempio seguente, hrapp è lo schema di database a cui eseguire il proxy e peterfitch_schema è l'utente globale del database mappato in modo esclusivo all'utente peterfitch.

    ALTER USER hrapp GRANT CONNECT THROUGH peterfitch_schema;

In questa fase, l'utente IAM può eseguire il login all'istanza di database utilizzando il proxy. Ad esempio:

Per connettersi utilizzando un verificatore password:

CONNECT peterfitch[hrapp]@connect_string
Enter password: password

Per connettersi utilizzando un token:

CONNECT [hrapp]/@connect_string

Convalida dell'autenticazione proxy utente IAM

È possibile convalidare la configurazione proxy utente IAM sia per i metodi di autenticazione di password che per quelli di token.

  1. Eseguire il login all'istanza di database come utente che dispone dei privilegi di sistema CREATE USER e ALTER USER.
  2. Connettersi all'utente IAM ed eseguire i comandi SHOW USER e SELECT SYS_CONTEXT. Si supponga, ad esempio, di voler controllare l'autenticazione proxy dell'utente IAM peterfitch quando proxy per l'utente del database hrapp. Sarà necessario connettersi al database utilizzando i diversi tipi di metodi di autenticazione mostrati qui, ma l'output dei comandi eseguiti sarà lo stesso per tutti i tipi.

    • Per l'autenticazione della password, si presuppone che l'utente IAM si trovi nel dominio predefinito:

      CONNECT peterfitch[hrapp]/password!@connect_string
      SHOW USER;
      
      --The output should be USER is "HRAPP"
      SELECT SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD') FROM DUAL;
      
      --The output should be "PASSWORD_GLOBAL_PROXY"
      SELECT SYS_CONTEXT('USERENV','PROXY_USER') FROM DUAL;
      
      --The output should be "PETERFITCH_SCHEMA"
      SELECT SYS_CONTEXT('USERENV','CURRENT_USER') FROM DUAL;
      
      --The output should be "HRAPP"
    • Per l'autenticazione del token, per un utente che si trova in un dominio non predefinito, sales_domain:

      CONNECT [hrapp]/@connect_string
      SHOW USER;
      
      --The output should be USER is "HRAPP "
      SELECT SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD') FROM DUAL;
      
      --The output should be "TOKEN_GLOBAL_PROXY"
      SELECT SYS_CONTEXT('USERENV','PROXY_USER') FROM DUAL;
      
      --The output should be "PETERFITCH_SCHEMA"
      SELECT SYS_CONTEXT('USERENV','CURRENT_USER') FROM DUAL;
      
      --The output should be "HRAPP"

Usa database link con utenti autenticati IAM

È possibile utilizzare un database link per connettersi da un'istanza di database a un'altra come utente IAM OCI.

È possibile utilizzare il database link utente connesso o utente fisso per connettersi a un database come utente IAM OCI.

Nota: il database link utente corrente non è supportato per la connessione a un database in Base Database Service come utente IAM OCI.

Disabilita autenticazione IAM

È possibile disabilitare l'accesso utente IAM nell'istanza di database utilizzando il comando ALTER SYSTEM come mostrato di seguito:

ALTER SYSTEM RESET IDENTITY_PROVIDER_TYPE SCOPE=BOTH;

Se si desidera aggiornare anche l'accesso a IAM dalla risorsa, potrebbe essere necessario rimuovere o modificare il gruppo IAM e i criteri impostati per consentire l'accesso a IAM da tali risorse.