Utiliser le compte de service Google pour accéder aux ressources de la plate-forme Google Cloud

Vous pouvez utiliser un compte de service Google pour accéder aux ressources Google Cloud Platform (GCP) à partir d'une instance Autonomous AI Database.

À propos de l'utilisation d'un compte de service Google pour accéder aux ressources Google Cloud

Lorsque vous utilisez l'authentification basée sur un compte de service Google avec Autonomous AI Database, une application peut accéder en toute sécurité aux ressources de Google Cloud Platform (GCP) sans créer et enregistrer des données d'identification basées sur des clés d'accès IAM à long terme pour les ressources GCP.

Un compte de service Google est un type spécial de compte GCP utilisé par une application. Vous pouvez utiliser un compte de service Google pour effectuer des appels d'API REST GCP autorisés à partir d'une application (après que le compte de service dispose d'autorisations d'accès au moyen de la configuration de rôle IAM). Lorsqu'une application effectue des appels avec l'authentification basée sur un compte de service GCP, l'appel initial génère un jeton d'accès temporaire au moyen d'OAuth2.0. Le jeton d'accès OAuth2.0 est valide pendant une heure. Les demandes suivantes dans l'heure utilisent le jeton d'accès OAuth2.0 pour effectuer des appels d'API REST GCP autorisés.

Par exemple, vous pouvez charger des données de Google Cloud Storage dans votre base de données Autonomous AI Database, effectuer une opération sur les données, puis réécrire les données modifiées dans Google Cloud Storage. Vous pouvez le faire sans utiliser de compte de service si vous avez des informations d'identification d'utilisateur GCP pour accéder à Google Cloud Storage. Cependant, l'utilisation d'un compte de service Google basé sur les rôles pour accéder aux ressources GCP à partir d'Autonomous AI Database présente les avantages suivants :

  • Vous pouvez créer un accès basé sur les rôles, avec différentes politiques pour différents utilisateurs ou schémas qui ont besoin d'accéder aux ressources GCP à partir d'une instance de base de données Autonomous AI Database. Vous pouvez ainsi définir une politique pour limiter l'accès aux ressources par rôle. Par exemple, la définition d'une politique limitée à l'accès en lecture seule, par rôle, à un seau Google Cloud Storage.
  • Les données d'identification basées sur le compte de service Google offrent une meilleure sécurité, car vous n'avez pas besoin de fournir des données d'identification d'utilisateur à long terme dans le code lorsque votre application accède aux ressources GCP. Autonomous AI Database gère les données d'identification temporaires pour le compte de service Google et n'a pas besoin de stocker les données d'identification d'utilisateur de ressource GCP dans la base de données.

Voir Comptes de service pour plus d'informations sur les comptes de service Google.

Activer le compte de service Google et rechercher le nom du compte de service GCP

Avant d'utiliser une ressource Google Cloud Platform (GCP) avec un compte de service Google, vous devez activer l'accès GCP pour votre instance Autonomous AI Database.

  1. Activez l'authentification de compte de service Google avec DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH.

    Par exemple, pour activer l'authentification de compte de service Google pour l'utilisateur ADMIN :

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

    Activez l'authentification de compte de service Google pour un utilisateur non ADMIN, adb_user comme suit :

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

    Si vous voulez que l'utilisateur spécifié dispose de privilèges pour activer l'authentification de compte de service Google pour les autres utilisateurs, réglez le paramètre params grant_option à TRUE.

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

    Après avoir exécuté DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH avec grant_option réglé à TRUE, adb_user peut activer l'authentification de compte de service Google pour un autre utilisateur. Par exemple, si vous êtes connecté en tant que adb_user, vous pouvez exécuter la commande suivante pour activer l'accès au compte de service GCP pour adb_user2 :

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            provider => 'GCP',
            username => 'adb_user2');
    END;
    /
  2. Lorsque DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH est exécuté, il crée un compte de service Google. Interrogez CLOUD_INTEGRATIONS pour obtenir les détails du compte de service pour votre instance de base de données du service d'intelligence artificielle autonome.
    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. Notez la valeur du paramètre gcp_service_account car vous devez fournir cette valeur lorsque vous configurez des ressources GCP.

Pour plus d'informations, voir ProcédureENABLE_PRINCIPAL_AUTH.

Affecter des rôles au compte de service Google et accorder l'accès aux ressources GCP

Pour utiliser les ressources Google Cloud Platform (GCP) d'une instance Autonomous AI Database, vous ou un administrateur Google Cloud devez affecter des rôles et des privilèges au compte de service Google auquel votre application accède. En plus d'affecter des rôles pour le compte de service Google, pour toutes les ressources GCP que vous souhaitez utiliser un administrateur Google Cloud, vous devez ajouter des principaux Google IAM.

Vous devez d'abord activer le compte de service Google sur votre instance Autonomous AI Database. Pour plus d'informations, voir Activer le compte de service Google et rechercher le nom du compte de service GCP.

  1. Ouvrez la console Google Cloud pour votre compte.
  2. Créez des rôles avec les autorisations spécifiées.
    1. Dans le menu de navigation, sélectionnez IAM & Admin.
    2. Dans le navigateur IAM & Admin, sélectionnez Rôles.
    3. Dans la page Rôles, cliquez sur Plus d'actions et sélectionnez + CREATE ROLE.

    Par exemple, vous pouvez créer un rôle Lecture et écriture dans le magasin d'objets pour contrôler l'utilisation d'un seau de magasin d'objets.

    Description de gcp_iam_roles_create.png :
    Description de l'illustration gcp_iam_roles_create.png
  3. Dans la page Créer un rôle, cliquez sur + AJOUTER DES PERMISSIONS.
    1. Sélectionnez des filtres pour limiter la liste des autorisations.

      Par exemple, entrez le filtre Autorisation : Storage.Objects pour afficher uniquement les autorisations du magasin d'objets.

      Description de gcp_iam_roles_add_permissions.png :
      Description de l'illustration gcp_iam_roles_add_permissions.png
    2. Dans la boîte de dialogue Ajouter des autorisations, cliquez sur ADD.
  4. Dans la page Créer un rôle, cliquez sur CREATE (Créer).
  5. Ajoutez des rôles et des principaux pour la ressource à laquelle vous voulez accéder.

    Par exemple, pour accéder à Google Cloud Storage à l'aide du rôle que vous venez de créer, Object Store Read Write (Lecture en écriture dans le magasin d'objets) :

    1. Dans le navigateur, sélectionnez Stockage en nuage et Seaux.
    2. Sélectionnez le seau à utiliser, puis cliquez sur PERMISSIONS.
    3. Cliquez sur + ADD PRINCIPAL.
  6. Dans la boîte de dialogue Accorder l'accès à "bucketname", ajoutez des rôles et des principaux pour la ressource sélectionnée.
    1. Sous Ajouter des principaux, ajoutez la valeur du paramètre gcp_service_account à partir de votre instance de base de données d'intelligence artificielle autonome.
    2. Dans la boîte de dialogue Accorder l'accès à "bucketname", entrez les rôles sous Assign Roles (Affecter des rôles), puis cliquez sur SAVE (Enregistrer).

Une fois ces étapes terminées, les rôles et les principaux sont affectés. Cela permet à votre application s'exécutant sur l'instance Autonomous AI Database d'accéder à la ressource GCP avec un compte de service Google.

Utiliser le compte de service Google avec DBMS_CLOUD

Lorsque vous effectuez des appels DBMS_CLOUD pour accéder aux ressources Google Cloud Platform (GCP) et spécifiez le nom des données d'identification GCP$PA, l'authentification côté Google Cloud Platform se fait à l'aide d'un compte de service Google.

Si vous ne l'avez pas encore fait, effectuez les étapes préalables suivantes :

Pour utiliser une procédure ou une fonction DBMS_CLOUD avec l'authentification de compte de service Google :

  1. Utilisez GCP$PA comme nom de données d'identification.
  2. Construisez l'URI pour accéder à la ressource GCP à l'aide du style hébergé virtuel :

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

    Par exemple, vous pouvez accéder à Google Cloud Storage à l'aide des informations d'identification du compte de service Google comme suit :

    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 
    

Voir ce qui suit pour plus d'informations :

Désactiver le compte de service Google

Pour désactiver l'accès du compte de service Google aux ressources GCP (Google Cloud Platform), utilisez DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTH.

Lorsque la valeur provider est GCP et que username est un utilisateur autre que ADMIN, la procédure révoque les privilèges de l'utilisateur spécifié. Dans ce cas, l'utilisateur ADMIN et d'autres utilisateurs peuvent continuer à utiliser GCP$PA.

Par exemple, pour révoquer les privilèges pour adb_user :

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

Lorsque la valeur provider est GCP et que username est ADMIN, la procédure désactive l'accès au compte de service Google sur l'instance de base de données IA autonome. La valeur par défaut pour username est ADMIN.

Exemple :

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

Pour plus d'informations, voir ProcédureDISABLE_PRINCIPAL_AUTH.

Notes sur le compte de service Google

Notes pour l'utilisation du compte de service Google.

  • Restriction de caractères pour la plate-forme Google Cloud (GCP) : DBMS_CLOUD ne prend pas en charge un URI contenant un "_" pour accéder à un nom de seau Google Cloud Storage. Si le nom de votre seau Google Cloud Storage contient un "_", l'erreur suivante peut s'afficher :

    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
  • Clonage d'une instance de base de données autonome avec un compte de service Google : Lorsque vous clonez une instance avec un compte de service Google activé, la configuration du compte de service Google n'est pas reportée sur le clone. Effectuez les étapes pour activer le compte de service Google sur le clone si vous souhaitez activer le compte de service Google sur une instance clonée.