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 di Base Database Service per IAM OCI con i domini di Identity e l'IAM precedente, che non include i domini di Identity. Gli utenti e i gruppi di domini predefiniti e non predefiniti sono supportati quando si utilizza IAM con i domini di Identity.

Il supporto per i 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 IAM OCI con Base Database Service supporta sia l'autenticazione del verificatore 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 del database IAM

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

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

Nota

È possibile utilizzare qualsiasi client di database 12c e superiore supportato per l'accesso tramite password del 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 quando 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 è diversa dalla password della console OCI. L'uso di un utente IAM con un verificatore password consente di eseguire il login al database con qualsiasi client di database supportato, purché il client di database supporti i verificatori delle 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 token, è possibile creare i mapping per gli utenti IAM e le applicazioni OCI all'istanza di Oracle Database. Gli account utente IAM vengono gestiti 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:

  • Un'applicazione o uno strumento client può richiedere il token del database da IAM per l'utente e può passare il token del database tramite l'API client. L'utilizzo dell'API per l'invio del token sostituisce altre impostazioni nel client del database. L'uso del token del database IAM richiede il client Oracle Database 19.16 e versioni successive (non 21c). Le funzionalità limitate (non complete) del token del database IAM sono disponibili con alcuni client Oracle Database 21.5 e versioni successive.
  • Se l'applicazione o lo strumento non supporta la richiesta di un token di database IAM e l'invio al database tramite l'API client, l'utente IAM può prima utilizzare l'interfaccia CLI (Command Line Interface) OCI per recuperare il token di database IAM e salvarlo in una posizione file. Ad esempio, per utilizzare SQL*Plus e altre applicazioni e strumenti che utilizzano questo metodo di connessione, è necessario ottenere prima il token di database utilizzando l'interfaccia CLI OCI. Se il client di database è configurato per i token di database IAM, quando un utente esegue il login con il form di login barra, il driver di database utilizza il token di database IAM salvato in una posizione file predefinita o specificata.
  • Un'applicazione o uno strumento client può utilizzare un principal dell'istanza IAM OCI o un principal risorsa per ottenere un token del database IAM e utilizzare il token del database IAM per autenticarsi a un'istanza del database.
  • Gli utenti IAM e le applicazioni OCI possono richiedere un token di database da IAM con diversi metodi, incluso l'uso di una chiave API.

    Per ulteriori informazioni sulla configurazione della connessione client, vedere Configura connessione client per SQL*Plus che utilizza un token IAM. Per ulteriori informazioni su altri metodi, ad esempio l'uso di un token di delega in una cloud shell OCI, vedere Autenticazione e autorizzazione degli utenti IAM per i database Oracle DBaaS.

Se un utente immette un nome utente e una password per eseguire il login, il driver del database utilizza il metodo di verifica della 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 di networking per aggiungere un gateway di servizi, 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. Crea un gateway di servizi nella VCN in cui risiedono le tue risorse di database seguendo le istruzioni riportate in Crea il gateway di servizi.
  2. Dopo aver creato il gateway del servizio, aggiungere una regola di instradamento e una regola di sicurezza di 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 la 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 di sicurezza della subnet, fare clic sul nome della lista di sicurezza della subnet per visualizzare la relativa pagina Dettagli lista 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:
      • Stateless: No
      • Destinazione: tutti i servizi IAD in Oracle Services Network
      • Protocollo IP: TCP
      • Intervallo 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

Controllare se WALLET_ROOT è configurato o meno:

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

Se la posizione di una directory non viene visualizzata 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 server del database, è 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 con l'aspetto seguente: WALLET_ROOT/<PDB GUID>/tls

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

  • Utilizzo di un certificato server database autofirmato rispetto a un certificato server database firmato da un'autorità di certificazione comunemente nota.
  • TLS unidirezionale (TLS) vs TLS mutuo o bidirezionale (mTLS).
  • Client con o senza portafoglio.

Certificato con firma automatica: l'utilizzo di un certificato con firma automatica è una pratica comune per le risorse IT interne, in quanto è possibile crearle personalmente ed è gratuito. La risorsa (nel nostro caso, il database server) avrà un certificato autofirmato per autenticarsi al 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 creato automaticamente 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 verificherà che il certificato inviato dal server del database sia stato firmato dallo stesso certificato radice.

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

TLS unidirezionale: nella sessione TLS standard, solo il server fornisce un certificato al client per l'autenticazione. Il client non deve disporre di un certificato client separato per autenticarsi sul server (simile al modo in cui vengono stabilite le sessioni HTTPS). Mentre il database richiede un wallet per memorizzare il certificato del server, l'unica cosa che il client deve avere è il certificato root utilizzato per firmare il certificato del 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 server di database e il client per autenticare l'altro certificato. mTLS viene talvolta utilizzato per autenticare l'utente poiché l'identità utente viene autenticata dal server di database tramite il certificato. Questa operazione non è necessaria per il passaggio dei token IAM, ma può essere utilizzata quando si passano i token IAM.

Client con un 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 un wallet: i client possono essere configurati senza un wallet quando si utilizza TLS nelle condizioni riportate di seguito.
  1. È in corso la configurazione di TLS unidirezionale in cui il client non dispone del 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 probabile che il certificato root sia già presente se il certificato del server è firmato da un'autorità di certificazione comune. Se si tratta di un certificato con firma automatica, è necessario installare il certificato radice nell'area di memorizzazione dei certificati predefinita del sistema per evitare di utilizzare un wallet client.

Per informazioni dettagliate su come configurare TLS tra il client del database e il server del database, incluse le opzioni descritte in precedenza, vedere Configurazione dell'autenticazione TLS (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 all'interfaccia della riga di comando (CLI, Command Line Interface) orapki nel manuale Database Security Guide. Vedere Managing Public Key Infrastructure (PKI) Elements.

Modifica provider di identità esterni

Questo argomento descrive i passi per modificare il provider di identità esterno da utenti gestiti centralmente (CMU) a autenticazione e autorizzazione IAM 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 database di cui è stato appena eseguito il provisioning. Un'altra opzione per l'autenticazione esterna è quella di utilizzare gli utenti gestiti centralmente con Active Directory (CMU-AD). Può essere abilitato un solo schema di autenticazione esterna 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, reimpostarlo.
    ALTER SYSTEM RESET IDENTITY_PROVIDER_CONFIG SCOPE=BOTH;

Disabilita autenticazione e autorizzazione IAM OCI

Eseguire il passo seguente 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

Per consentire agli utenti di Active Directory (AD) di connettersi al database mediante CMU, attenersi alla procedura riportata di seguito.

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

Disabilita CMU-AD

Per disabilitare CMU-AD, eseguire il passo seguente:

  1. Disabilitare CMU-AD utilizzando il comando ALTER SYSTEM.
    ALTER SYSTEM SET LDAP_DIRECTORY_ACCESS = 'NONE';

Riabilita autenticazione e autorizzazione IAM OCI

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

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

Crea gruppi e criteri IAM per utenti IAM

Questo argomento descrive i passi necessari per scrivere le 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 come. È possibile concedere l'accesso per l'intera tenancy, i database di un compartimento o i singoli database. Ciò significa che si scrive un'istruzione criterio 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 utilizzare i token IAM per accedere al database, è necessario definire un criterio. Quando si utilizzano le password del database IAM per accedere al database, non è necessario un criterio.

Per abilitare il database in modo che gli utenti IAM possano 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 dei 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, quindi 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 limiti 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

Quanto riportato di seguito è necessario per la creazione di criteri da utilizzare con gli utenti IAM nel database in Base Database Service.

  • I criteri possono consentire agli utenti IAM di accedere alle istanze di database nell'intera tenancy, in un compartimento o di limitare l'accesso a una singola istanza di database.

  • È possibile utilizzare il principal istanza o il principal risorsa per recuperare i token di database per stabilire una connessione dall'applicazione a un'istanza di database. Se si utilizza un principal istanza o un principal risorsa, è necessario mappare un gruppo dinamico. Pertanto, non è possibile mappare in modo esclusivo i principal delle istanze e delle risorse; è possibile mapparli solo tramite un mapping condiviso e inserire l'istanza o l'istanza di risorsa in un gruppo dinamico IAM.

    È possibile creare gruppi dinamici e fare riferimento ai 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 le istruzioni CREATE USER o ALTER USER (con la clausola IDENTIFIED GLOBALLY AS).

L'autorizzazione degli utenti IAM a un'istanza di database funziona mediante il mapping degli utenti globali (schemi) del database 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'uso 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 le istruzioni CREATE USER o ALTER USER e includere la clausola IDENTIFIED GLOBALLY AS, specificando il nome del gruppo IAM.

    Utilizzare 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';

    Questo crea un mapping utenti globale condiviso. Il mapping, con l'utente globale sales_group, è valido per tutti gli utenti del gruppo IAM. Pertanto, chiunque nel file 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.

Mappa in modo esclusivo un utente IAM locale a un utente globale di Oracle Database:

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

  1. Eseguire il login come utente ADMIN al database abilitato per l'uso 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 le 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 vengono 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 che eseguono il mapping 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 diversi gruppi di utenti che utilizzano tutti lo stesso schema condiviso.

La concessione di ruoli aggiuntivi agli utenti IAM funziona mediante il mapping dei 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'uso 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 le 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 del dominio ExporterGroup nel dominio sales_domain saranno autorizzati con il ruolo globale del database export_role quando eseguono il login al database.

  3. Utilizzare le istruzioni GRANT per concedere i privilegi o altri ruoli richiesti 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 mapping di ruoli globali aggiuntivi per altri gruppi IAM, attenersi ai passi precedenti per ogni 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. Il nome utente IAM e la password del database IAM possono essere utilizzati 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 delle password con il database e il database recupererà il verificatore delle password del database IAM da IAM.
  2. È possibile configurare il client di database per ottenere un token di database IAM utilizzando il nome utente IAM e la password del database IAM. Il client del database invierà questo token al database per l'accesso degli utenti.

Per ulteriori informazioni su come ottenere un token di database IAM utilizzando il nome utente IAM e la password del database IAM, vedere Configurazione di IAM per 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 ha mappato utenti e ruoli globali agli utenti IAM e ai gruppi IAM, gli utenti eseguono il login all'istanza di database utilizzando le credenziali IAM OCI oppure accedono al database tramite un token del database IAM OCI.

È comunque possibile eseguire il login al database utilizzando il nome utente e la password dell'account di 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 password, il client del database deve essere 12c o più recente.

L'uso del token del database IAM richiede il client Oracle Database 19.16 e versioni successive (non 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 con il 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 password del database IAM o un token IAM.

L'uso del verificatore password del database IAM è simile al processo di autenticazione della password del database. Tuttavia, invece di memorizzare nel database il verificatore delle password (hash cifrato della password), 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 si adatta meglio alle risorse cloud come i database Oracle in Base Database Service. Il token si basa sulla forza che l'endpoint IAM può applicare. Questo può essere l'autenticazione a più fattori, che è più forte dell'uso delle sole password. Un altro vantaggio dell'utilizzo dei token è che il verificatore di password (che è considerato sensibile) non viene mai memorizzato o disponibile in memoria. Quando si utilizzano i token per l'accesso al database è necessaria una connessione TCPS (TLS).

Nota

Non è possibile configurare la cifratura di rete nativa quando si passa un token IAM. È supportata solo la TLS (Transport Layer Security) da sola, 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 del database sia Oracle Database release 12.1.0.2 o successiva per utilizzare le password di Oracle Database 12c. Il client del 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 è inoltre in grado di 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 ottenere un token, vedere Connessioni client che utilizzano un token richiesto da un nome utente IAM e da una password del database.

Connessioni client che utilizzano un token

Per l'accesso al database tramite token IAM, l'applicazione o lo strumento client 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 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:

  • Token di sicurezza (con autenticazione IAM), token di delega (nella cloud shell OCI) e API-keys, ovvero credenziali che rappresentano l'utente IAM per abilitare l'autenticazione.
  • Nome utente IAM e password del database IAM, che possono essere utilizzati dal client del database per recuperare direttamente un token del database IAM quando è configurato per farlo.
  • Token principal dell'istanza, che consentono agli attori (o ai principal) autorizzati di eseguire azioni sulle risorse del servizio dopo l'autenticazione.
  • Token di principal risorsa, una credenziale che consente all'applicazione di autenticarsi in altri servizi OCI.
  • Usando un nome utente IAM e una password del database IAM (che possono essere richiesti solo dal client del database).

Quando gli utenti IAM eseguono il login al client con una barra di login / e il parametro OCI_IAM è configurato (sqlnet.ora, tnsnames.ora o come parte di una stringa di connessione), il client del 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 verificatori delle password del database IAM, a meno che il client del database non sia configurato per recuperare un token del 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 di 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: SQL*Plus on premise, SQLcl on premise, SQL*Plus in Cloud Shell o applicazioni che utilizzano i wallet SEP.

Gli argomenti seguenti spiegano come:

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

È possibile configurare SQL*Plus in modo che utilizzi una password di 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. È previsto un limite di 128 byte per il valore domain_name/user_name combinato.

L'esempio seguente mostra in che modo 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 richiedono 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

Eseguire i passi riportati di seguito per configurare una connessione client per SQL*Plus che utilizza un token IAM.

  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 IAM diretta, 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 db-token. Ad esempio:
      • Recupero di un file db-token con un file API-key utilizzando l'interfaccia CLI OCI:
        oci iam db-token get
      • Recupero di un token db-token con sicurezza (o 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 db-token.

      • Recupero di un token db-token con delega: quando si esegue il login alla 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 richiesti.

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

    Nota

    Il client Oracle Database release 21c 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 in modo che utilizzi il token IAM aggiungendo TOKEN_AUTH=OCI_TOKEN al file sqlnet.ora. Poiché si utilizzeranno le posizioni predefinite per il file di 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 la 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 riportato di seguito per avviare SQL*Plus. È possibile includere il descrittore di connessione stesso o utilizzare il nome del descrittore dal file tnsnames.ora.

connect /@exampledb_high

or:

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 db-token perché TOKEN_AUTH è già stato impostato, tramite il file sqlnet.ora o in una stringa di connessione. Il client di database ottiene il file 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 anziché utilizzare db-token, a meno che non venga specificato un altro parametro: PASSWORD_AUTH = OCI_TOKEN. Questo indirizza il client di database a ottenere il token da IAM utilizzando il nome utente IAM e la password del database IAM. Oltre a impostare PASSWORD_AUTH,, sarà necessario impostare 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 nel 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 utilizzando i principal delle istanze.

Configura autenticazione proxy

L'autenticazione proxy consente a un utente IAM di eseguire il proxy per 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 sono in grado di verificare quale utente effettivo ha eseguito un'azione.

Un caso d'uso può trovarsi in un ambiente in cui un utente IAM denominato che è un amministratore del database dell'applicazione può eseguire l'autenticazione utilizzando le proprie credenziali e quindi il 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, pur continuando a utilizzare le credenziali IAM per l'autenticazione. Un amministratore del database dell'applicazione può collegarsi al database e quindi eseguire il proxy per uno schema dell'applicazione per gestire questo schema.

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

Configurazione dell'autenticazione proxy per l'utente IAM

Per configurare l'autenticazione proxy per un utente IAM, è necessario che l'utente IAM disponga 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 al proxy.

Dopo aver verificato che si dispone di questo tipo di utente, modificare l'utente del database per consentire all'utente IAM di eseguire 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 al proxy per l'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 il database di destinazione user.In. Nell'esempio seguente, hrapp è lo schema di database al quale 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 del proxy utente IAM sia per i metodi di autenticazione password che per i 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 questi funge da 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 con password, supponendo 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 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.
  • Database link utente connesso: per un database link utente connesso, un utente IAM deve essere mappato a uno schema nei database di origine e di destinazione connessi da un database link. È possibile utilizzare un verificatore password del database o un token del database IAM per utilizzare un database link utente connesso.

  • Collegamento database utente fisso: è possibile creare un database link utente fisso utilizzando un utente del database o un utente IAM. Quando si utilizza un utente IAM come database link utente fisso, l'utente IAM deve disporre di un mapping di schema nel database di destinazione. L'utente IAM per un database link può essere configurato solo con un verificatore password.

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.