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

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

Informazioni sull'utilizzo di un account di servizio Google 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 le credenziali in base alle 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 vengono concesse le autorizzazioni di accesso tramite la configurazione del ruolo IAM). Quando un'applicazione effettua chiamate con autenticazione basata su 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 nell'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 di 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 offre i vantaggi riportati di seguito.

  • Puoi creare l'accesso basato sui ruoli, con criteri diversi per utenti o schemi diversi che richiedono l'accesso alle risorse GCP da un'istanza di Autonomous Database. In questo modo, è possibile 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 sull'account del 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 deve memorizzare le credenziali utente delle risorse GCP nel database.

Per informazioni sugli account del servizio Google, vedere Account del servizio.

Abilita l'account di servizio Google e trova 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 del servizio Google per l'utente ADMIN:

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

    Abilitare l'autenticazione dell'account del 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 del 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 del servizio Google per un altro utente. Ad esempio, se ci si connette come adb_user, è possibile eseguire il comando seguente per abilitare l'accesso all'account del servizio GCP per adb_user2:

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            provider => 'GCP',
            username => 'adb_user2');
    END;
    /
  2. Quando DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH viene eseguito, crea 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. Tenere presente il 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 Procedure.

Assegnare ruoli all'account di servizio Google e fornire l'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 del servizio Google a cui accede l'applicazione. Oltre all'assegnazione dei ruoli per l'account del servizio Google, per qualsiasi risorsa GCP che si desidera utilizzare un amministratore di Google Cloud è necessario aggiungere principal Google IAM.

Come prerequisito, abilitare prima 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 la console di Google Cloud per il tuo account.
  2. Creare ruoli con le autorizzazioni specificate.
    1. Nel menu di navigazione selezionare IAM & Admin.
    2. Nel navigator 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 + ADD PERMISSIONS.
    1. Selezionare i filtri per limitare la lista di 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 CREA.
  5. Aggiungere ruoli e principal per la risorsa a cui si desidera accedere.

    Ad esempio, se si desidera accedere allo storage Google Cloud utilizzando il ruolo appena creato, Scrittura lettura area di memorizzazione degli oggetti:

    1. Dal 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 SALVA.

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

Utilizzare l'account del 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 di Google Cloud Platform avviene utilizzando un account di servizio Google.

Se non è già stato fatto, eseguire le operazioni dei prerequisiti:

Per utilizzare una procedura o una funzione DBMS_CLOUD con l'autenticazione dell'account del 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 all'account del 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 all'utente specificato. In questo caso, l'utente ADMIN e 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 Procedure.

Note account servizio Google

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

  • Limitazione dei caratteri di Google Cloud Platform (GCP): DBMS_CLOUD non supporta un URI contenente un carattere "_" per accedere a un nome bucket di Google Cloud Storage. Se il nome del bucket di Google Cloud Storage contiene un valore "_", è 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
  • Clonazione 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 nella copia. Eseguire la procedura per abilitare l'account del servizio Google sulla copia se si desidera abilitare l'account del servizio Google su un'istanza duplicata.