Utilizzare l'account di Google Service per accedere alle risorse di Google Cloud Platform

È possibile utilizzare un account di servizio Google per accedere alle risorse Google Cloud Platform (GCP) da un'istanza di Autonomous Database.

Informazioni sull'utilizzo di un account di Google Service per accedere alle risorse di Google Cloud

Quando si utilizza l'autenticazione basata su account di servizio Google con Autonomous Database, un'applicazione può accedere in modo sicuro alle risorse GCP (Google Cloud Platform) senza creare e salvare credenziali basate su chiavi di accesso IAM a lungo termine per le risorse GCP.

Un account di servizio Google è un tipo speciale di account GCP utilizzato da un'applicazione. È possibile utilizzare un account di servizio Google per effettuare chiamate API REST GCP autorizzate da un'applicazione (dopo che all'account di servizio sono state assegnate autorizzazioni di accesso tramite la configurazione del ruolo IAM). Quando un'applicazione effettua chiamate con l'autenticazione basata sull'account di servizio GCP, la chiamata iniziale genera un token di accesso temporaneo tramite OAuth2.0. Il token di accesso OAuth2.0 è valido per un'ora. Le richieste successive entro un'ora utilizzano il token di accesso OAuth2.0 per effettuare chiamate API REST GCP autorizzate.

Ad esempio, potresti voler caricare i dati da Google Cloud Storage in Autonomous Database, eseguire alcune operazioni sui dati e quindi scrivere di nuovo i dati modificati in Google Cloud Storage. È possibile eseguire questa operazione senza utilizzare un account di servizio se si dispone delle credenziali utente GCP per accedere a Google Cloud Storage. Tuttavia, l'utilizzo di un account di servizio Google basato sui ruoli per accedere alle risorse GCP da Autonomous Database ha i seguenti vantaggi:

  • È possibile creare l'accesso basato sui ruoli, con criteri diversi per utenti o schemi diversi che devono accedere alle risorse GCP da un'istanza di Autonomous Database. Ciò consente di impostare un criterio per limitare l'accesso alle risorse in base al ruolo. Ad esempio, l'impostazione di un criterio limitato all'accesso in sola lettura, per ruolo, a un bucket di Google Cloud Storage.
  • Le credenziali basate su account di servizio Google offrono una maggiore sicurezza, in quanto non è necessario fornire credenziali utente a lungo termine nel codice quando l'applicazione accede alle risorse GCP. Autonomous Database gestisce le credenziali temporanee per l'account del servizio Google e non è necessario memorizzare le credenziali utente delle risorse GCP nel database.

Per informazioni sugli account dei servizi Google, vedere Account dei servizi.

Abilitare l'account di servizio Google e trovare il nome dell'account di servizio GCP

Prima di utilizzare una risorsa Google Cloud Platform (GCP) con un account di servizio Google, è necessario abilitare l'accesso GCP per l'istanza di Autonomous Database.

  1. Abilita l'autenticazione dell'account del servizio Google con DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH.

    Ad esempio, per abilitare l'autenticazione dell'account di servizio Google per l'utente ADMIN:

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            provider => 'GCP' );
    END;
    /

    Abilitare l'autenticazione dell'account di servizio Google per un utente non ADMIN, adb_user come indicato di seguito.

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            provider => 'GCP',
            username => 'adb_user');
    END;
    /

    Se si desidera che l'utente specificato disponga dei privilegi per abilitare l'autenticazione dell'account di servizio Google per altri utenti, impostare il parametro params grant_option su TRUE.

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            provider => 'GCP',
            username => 'adb_user',
            params   => JSON_OBJECT('grant_option' value TRUE));
    END;
    /

    Dopo aver eseguito DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH con grant_option impostato su TRUE, adb_user può abilitare l'autenticazione dell'account di servizio Google per un altro utente. Ad esempio, se si esegue la connessione come adb_user, è possibile eseguire il comando seguente per abilitare l'accesso all'account di servizio GCP per adb_user2:

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            provider => 'GCP',
            username => 'adb_user2');
    END;
    /
  2. Quando viene eseguito DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH, viene creato un account di servizio Google. Eseguire una query su CLOUD_INTEGRATIONS per ottenere i dettagli dell'account di servizio per l'istanza di Autonomous Database.
    SELECT * FROM CLOUD_INTEGRATIONS WHERE param_name = 'gcp_service_account';
    
    PARAM_NAME           PARAM_VALUE
    ---------------------------------------------------------------------------
    gcp_service_account  GCP-SA-22222-32222@gcp-example.iam.gserviceaccount.com
  3. Prendere nota del valore del parametro gcp_service_account in quanto è necessario fornire questo valore quando si configurano le risorse GCP.

Per ulteriori informazioni, vedere ENABLE_PRINCIPAL_AUTH Procedura.

Assegna ruoli all'account di servizio Google e fornisci accesso per le risorse GCP

Per utilizzare le risorse di Google Cloud Platform (GCP) da un'istanza di Autonomous Database, l'utente o un amministratore di Google Cloud deve assegnare ruoli e privilegi all'account di servizio Google a cui accede l'applicazione. Oltre ad assegnare ruoli per l'account di servizio Google, per qualsiasi risorsa GCP che si desidera utilizzare un amministratore di Google Cloud è necessario aggiungere principal Google IAM.

Come prerequisito, abilitare innanzitutto l'account del servizio Google nell'istanza di Autonomous Database. Per ulteriori informazioni, vedere Abilita account di servizio Google e trova il nome dell'account di servizio GCP.

  1. Apri Google Cloud Console per il tuo account.
  2. Creare ruoli con le autorizzazioni specificate.
    1. Dal menu di navigazione, selezionare IAM e amministrazione.
    2. Nel Navigator di IAM e amministrazione selezionare Ruoli.
    3. Nella pagina Ruoli, fare clic su Altre azioni e selezionare + CREATE ROLE.

    Ad esempio, è possibile creare un ruolo Lettura e scrittura dell'area di memorizzazione degli oggetti per controllare l'uso di un bucket dell'area di memorizzazione degli oggetti.

    Segue la descrizione di gcp_iam_roles_create.png
    Descrizione dell'immagine gcp_iam_roles_create.png
  3. Nella pagina Crea ruolo, fare clic su + AGGIUNGI PERMISSIONI.
    1. Selezionare i filtri per limitare la lista delle autorizzazioni.

      Ad esempio, immettere il filtro Autorizzazione: Storage.Objects per visualizzare solo le autorizzazioni dell'area di memorizzazione degli oggetti.

      Segue la descrizione di gcp_iam_roles_add_permissions.png
      Descrizione dell'immagine gcp_iam_roles_add_permissions.png
    2. Nella finestra di dialogo Aggiungi autorizzazioni fare clic su ADD.
  4. Nella pagina Crea ruolo, fare clic su CREATE.
  5. Aggiungere ruoli e principal per la risorsa a cui si desidera accedere.

    Ad esempio, se si desidera accedere a Google Cloud Storage utilizzando il ruolo appena creato, Lettura/scrittura dell'area di memorizzazione degli oggetti:

    1. Nel Navigator, selezionare Cloud Storage e selezionare Bucket.
    2. Selezionare il bucket che si desidera utilizzare e fare clic su PERMISSIONI.
    3. Fare clic su + ADD PRINCIPAL.
  6. Nella finestra di dialogo Concedi accesso a "nome bucket", aggiungere ruoli e principal per la risorsa selezionata.
    1. In Aggiungi principal aggiungere il valore del parametro gcp_service_account dall'istanza di Autonomous Database.
    2. Nella finestra di dialogo Concedi accesso a "nome bucket", immettere i ruoli in Assegna ruoli, quindi fare clic su SAVE.

Dopo aver completato questi passi, vengono assegnati i ruoli e i principal. Ciò consente all'applicazione in esecuzione nell'istanza di Autonomous Database di accedere alla risorsa GCP con un account di servizio Google.

Utilizzare l'account di servizio Google con DBMS_CLOUD

Quando si effettuano chiamate DBMS_CLOUD per accedere alle risorse di Google Cloud Platform (GCP) e si specifica il nome della credenziale come GCP$PA, l'autenticazione sul lato Google Cloud Platform viene eseguita utilizzando un account di servizio Google.

Se non è già stato fatto, eseguire le operazioni dei prerequisiti riportate di seguito.

Per utilizzare una procedura o una funzione DBMS_CLOUD con l'autenticazione dell'account di servizio Google:

  1. Utilizzare GCP$PA come nome della credenziale.
  2. Costruisce l'URI per accedere alla risorsa GCP utilizzando lo stile hosted virtuale:

    https://BUCKET_NAME.storage.googleapis.com/OBJECT_NAME

    Ad esempio, è possibile accedere a Google Cloud Storage utilizzando le credenziali dell'account del servizio Google come indicato di seguito.

    SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('GCP$PA', 'https://treetypes.storage.googleapis.com/' );
    
    OBJECT_NAME BYTES CHECKSUM                         CREATED LAST_MODIFIED
    ----------- ----- -------------------------------- ------- ------------------------
    trees.txt      58 682075a8c38f5686c32c25c6fb67dcbe         2022-10-05T20:03:55.253Z 
    

Per ulteriori informazioni, vedere gli argomenti riportati di seguito.

Disabilita account servizio Google

Per disabilitare l'accesso dell'account di servizio Google alle risorse di Google Cloud Platform (GCP), utilizzare DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTH.

Se il valore provider è GCP e username è un utente diverso dall'utente ADMIN, la procedura revoca i privilegi dell'utente specificato. In questo caso, l'utente ADMIN e gli altri utenti possono continuare a utilizzare GCP$PA.

Ad esempio, per revocare i privilegi per adb_user:

BEGIN
    DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTH(
        provider => 'GCP',
        username => 'adb_user');
END;
/

Se il valore provider è GCP e username è ADMIN, la procedura disabilita l'accesso all'account del servizio Google nell'istanza di Autonomous Database. Il valore predefinito per username è ADMIN.

Ad esempio:

BEGIN
    DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTH(
        provider => 'GCP' );
END;
/

Per ulteriori informazioni, vedere DISABLE_PRINCIPAL_AUTH Procedura.

Note account servizio Google

Note per l'utilizzo dell'account di servizio Google.

  • Limitazione di caratteri GCP (Google Cloud Platform): DBMS_CLOUD non supporta un URI contenente un carattere "_" per accedere al nome di un bucket di Google Cloud Storage. Se il nome del bucket di Google Cloud Storage contiene un carattere "_", è possibile che venga visualizzato il seguente errore:

    SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('GCP$PA', 'https://app_bucket.storage.googleapis.com/');
    
    ORA-20006: Unsupported object store URI - https://app_bucket.storage.googleapis.com/
    ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD", line 1306
  • Duplicazione di un'istanza di Autonomous Database con un account di servizio Google: quando si duplica un'istanza con un account di servizio Google abilitato, la configurazione dell'account di servizio Google non viene trasferita alla copia. Eseguire la procedura per abilitare l'account di servizio Google sulla copia se si desidera abilitare l'account di servizio Google su un'istanza clonata.