DBMS_CLOUD per la gestione degli accessi

In questa sezione vengono descritti i sottoprogrammi DBMS_CLOUD utilizzati per la gestione dell'accesso.

Prerequisiti

Come sviluppatore, puoi utilizzare le procedure DBMS_CLOUD con Autonomous Database distribuite su Oracle Public Cloud, Multicloud o Exadata Cloud@Customer.

A seconda della scelta di distribuzione, è necessario soddisfare i seguenti prerequisiti per utilizzare le procedure DBMS_CLOUD con i provider di servizi Amazon S3, Azure Blob Storage e Google Cloud Storage.

Una connettività in uscita deve essere stata configurata mediante un gateway NAT dall'amministratore della flotta, come descritto di seguito.
  • Crea un gateway NAT nella rete cloud virtuale (VCN) in cui risiedono le tue risorse di Autonomous Database seguendo le istruzioni riportate in Crea un gateway NAT nella documentazione di Oracle Cloud Infrastructure.
  • Dopo aver creato il gateway NAT, aggiungere una regola di instradamento e una regola di sicurezza di uscita a ogni subnet (nella VCN) in cui risiedono le risorse di Autonomous Database in modo che queste risorse possano utilizzare il gateway per ottenere una chiave pubblica dall'istanza di Azure AD:
    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:
      • Data: 0.0.0.0/0
      • Tipo di destinazione: gateway NAT
      • Destinazione: il nome del gateway NAT 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:
      • Tipo di destinazione: CIDR
      • Data: 0.0.0.0/0
      • Protocollo IP: TCP
      • Intervallo porte di origine: 443
      • Intervallo di porte di destinazione: tutte

      Se una regola di questo tipo non esiste, fare clic su Aggiungi regole di uscita e aggiungere una regola di uscita con queste caratteristiche.

Le impostazioni del proxy HTTP nell'ambiente devono consentire al database di accedere al provider di servizi cloud.

Queste impostazioni vengono definite dall'amministratore della flotta durante la creazione dell'infrastruttura Exadata Cloud@Customer, come descritto in Uso della console per eseguire il provisioning di Exadata Database Service su Cloud@Customer.

Nota

La configurazione di rete, incluso il proxy HTTP, può essere modificata solo fino a quando lo stato dell'infrastruttura Exadata non è Richiede attivazione. Una volta attivato, non è possibile modificare tali impostazioni.

L'impostazione di un proxy HTTP per un'infrastruttura Exadata già fornita richiede una richiesta di servizio (SR) in My Oracle Support. Per informazioni dettagliate, vedere Create a Service Request in My Oracle Support.

DBMS_CLOUD Sottoprogrammi per la gestione degli accessi

I sottoprogrammi per la gestione delle credenziali all'interno del package DBMS_CLOUD, incluse le credenziali di creazione, eliminazione e aggiornamento.

Sottoprogramma Descrizione

CREATE_CREDENTIAL Procedura

Questa procedura memorizza le credenziali del servizio cloud in Autonomous Database.

DROP_CREDENTIAL Procedura

Questa procedura rimuove una credenziale esistente da Autonomous Database.

UPDATE_CREDENTIAL Procedura

Questa procedura aggiorna gli attributi delle credenziali del servizio cloud in Autonomous Database.

CREATE_CREDENTIAL Procedura

Questa procedura memorizza le credenziali del servizio cloud in Autonomous Database.

Utilizzare le credenziali del servizio cloud memorizzate per accedere al servizio cloud per il caricamento dei dati, per eseguire query sui dati esterni che risiedono nel cloud o per altri casi quando si utilizzano le procedure DBMS_CLOUD con un parametro credential_name.

Sintassi

DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name   IN VARCHAR2,
      username          IN VARCHAR2,
      password          IN VARCHAR2 DEFAULT NULL);


DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name IN VARCHAR2,
      user_ocid       IN VARCHAR2,
      tenancy_ocid    IN VARCHAR2,
      private_key     IN VARCHAR2,
      fingerprint     IN VARCHAR2);


Parametri

Parametro Descrizione

credential_name

Il nome della credenziale da memorizzare. Il parametro credential_name deve essere conforme alle convenzioni di denominazione degli oggetti Oracle, che non consentono spazi o trattini.

username

Gli argomenti username e password specificano insieme le credenziali del servizio cloud. Consulta le note sull'uso per le informazioni da specificare per username e password per i diversi servizi cloud.

password

Gli argomenti username e password specificano insieme le credenziali del servizio cloud.

user_ocid

Specifica l'OCID dell'utente. Per informazioni dettagliate su come ottenere l'OCID dell'utente, vedere Where to Get the Tenancy's OCID and User's OCID.

tenancy_ocid

Specifica l'OCID della tenancy. Per informazioni dettagliate su come ottenere l'OCID della tenancy, vedere Where to Get the Tenancy's OCID and User's OCID.

private_key

Specifica la chiave privata generata. Le chiavi private generate con una password non sono supportate. È necessario generare la chiave privata senza una passphrase. Per informazioni dettagliate sulla generazione di una coppia di chiavi in formato PEM, vedere Come generare una chiave di firma API.

fingerprint

Specifica un'impronta digitale. Dopo aver caricato una chiave pubblica generata nell'account dell'utente, l'impronta viene visualizzata nella console. Utilizzare l'impronta digitale visualizzata per questo argomento. Per ulteriori dettagli, vedere Come ottenere l'impronta digitale della chiave e Come generare una chiave di firma API.

Note sull'uso

  • Questa operazione memorizza le credenziali nel database in formato cifrato.

  • È possibile visualizzare le credenziali nello schema eseguendo una query sulla tabella user_credentials.

  • L'utente ADMIN può visualizzare tutte le credenziali eseguendo una query sulla tabella dba_credentials.

  • È necessario creare le credenziali una sola volta a meno che le credenziali del servizio cloud non vengano modificate. Dopo aver memorizzato le credenziali, è possibile utilizzare lo stesso nome di credenziale per le procedure DBMS_CLOUD che richiedono un parametro credential_name.

  • Questa procedura è sovraccaricata. Se si fornisce uno degli attributi di autenticazione basati su chiave, user_ocid, tenancy_ocid, private_key o fingerprint, si presume che la chiamata sia una credenziale basata su chiave di firma di Oracle Cloud Infrastructure.

  • È possibile elencare le credenziali dalla vista ALL_CREDENTIALS. Ad esempio, eseguire il comando seguente per visualizzare le credenziali:

    SELECT credential_name, username, comments FROM all_credentials;

Credenziali Oracle Cloud Infrastructure (token di autorizzazione)

Per Oracle Cloud Infrastructure, username è il nome utente di Oracle Cloud Infrastructure. password è il token di autenticazione di Oracle Cloud Infrastructure. Vedere Utilizzo dei token di autenticazione.

Ad esempio:

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'DEF_CRED_NAME',
    username => 'adb_user@example.com',
    password => 'password' );
END;
/

Usare le credenziali basate su token di autenticazione quando si autenticano le chiamate allo storage degli oggetti OCI. Per le chiamate a qualsiasi altro tipo di servizio cloud Oracle Cloud Infrastructure, utilizza le credenziali basate su chiave di firma di Oracle Cloud Infrastructure.

Credenziali basate su chiave di firma Oracle Cloud Infrastructure

Utilizzare i parametri correlati alla chiave di firma di Oracle Cloud Infrastructure, tra cui user_ocid, tenancy_ocid, private_key e fingerprint con l'autenticazione delle chiavi di firma di Oracle Cloud Infrastructure.

Ad esempio:

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL (
       credential_name => ‘OCI_KEY_CRED’,
       user_ocid       => ‘ocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoa’,
       tenancy_ocid    => ‘ocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2a’,
       private_key     => ‘MIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM//JEBg=’,
       fingerprint     => ‘f2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27’);
END;
/

Le chiavi private generate con una password non sono supportate. È necessario generare la chiave privata senza una passphrase. Per ulteriori informazioni, vedere Come generare una chiave di firma API.

Credenziali Amazon Web Services (AWS)

Se i file di origine risiedono in Amazon S3 o si sta chiamando un'API AWS, username è l'ID della chiave di accesso AWS e password è la chiave di accesso segreta AWS. Vedere AWS Identity and Access Management.

Credenziali Microsoft Azure

Se i file di origine risiedono in Azure Blob Storage o si sta chiamando un'API di Azure, username è il nome dell'account di memorizzazione di Azure e password è una chiave di accesso dell'account di memorizzazione di Azure. Vedere Informazioni sugli account di memorizzazione di Azure.

Credenziali Amazon S3 compatibili

Servizio Informazioni credenziali

Google Cloud Storage

Se i file di origine risiedono in Google Cloud Storage o si chiamano le API Google Cloud Storage, è necessario impostare un progetto Google predefinito e ottenere una chiave HMAC per creare le credenziali da fornire con gli URL compatibili con Google Cloud Storage S3. Utilizzare l'ID chiave HMAC come nome utente e il segreto HMAC come password.

Per ulteriori informazioni, vedere Progetti e Chiavi HMAC.

DROP_CREDENTIAL Procedura

Questa procedura rimuove una credenziale esistente da Autonomous Database.

Sintassi

DBMS_CLOUD.DROP_CREDENTIAL (
   credential_name     IN VARCHAR2);

Parametri

Parametro Descrizione

credential_name

Il nome della credenziale da rimuovere.

UPDATE_CREDENTIAL Procedura

Questa procedura aggiorna un attributo con un nuovo valore per un valore credential_name specificato.

Utilizzare le credenziali memorizzate per il caricamento dei dati, per eseguire query sui dati esterni che risiedono nel cloud o ovunque si utilizzino le procedure DBMS_CLOUD con un parametro credential_name.

Sintassi

DBMS_CLOUD.UPDATE_CREDENTIAL (
    credential_name   IN VARCHAR2,
    attribute         IN VARCHAR2,
    value             IN VARCHAR2);

Parametri

Parametro Descrizione

credential_name

Il nome della credenziale da aggiornare.

attribute

Nome dell'attributo da aggiornare.

Per una credenziale di tipo nome utente/password, i valori validi di attribute sono USERNAME e PASSWORD.

Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedura.

value

Nuovo valore per l'attributo specificato.

Note sull'uso

  • Il valore del nome utente distingue tra casi. Non può contenere virgolette o spazi.

  • L'utente ADMIN può visualizzare tutte le credenziali eseguendo una query su dba_credentials.

  • È necessario creare le credenziali una sola volta a meno che le credenziali del servizio cloud non vengano modificate. Dopo aver memorizzato le credenziali, è possibile utilizzare lo stesso nome di credenziale per le procedure DBMS_CLOUD che richiedono un parametro credential_name.

  • È possibile elencare le credenziali dalla vista ALL_CREDENTIALS. Ad esempio, eseguire il comando seguente per visualizzare le credenziali:

    SELECT credential_name, username, comments FROM all_credentials;

Esempi

BEGIN
  DBMS_CLOUD.UPDATE_CREDENTIAL(
     credential_name => 'OBJ_STORE_CRED',
     attribute => 'PASSWORD',
     value => 'password'); 
END;
/
BEGIN
  DBMS_CLOUD.UPDATE_CREDENTIAL(
     credential_name => 'ARN_CRED',
     attribute => 'aws_role_arn',
     value => 'NEW_AWS_ARN'); 
END;
/