Utilisation d'un compte de service Google pour accéder aux ressources Google Cloud Platform

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

A 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 Database, une application peut accéder en toute sécurité aux ressources Google Cloud Platform (GCP) sans créer et enregistrer d'informations 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 de droits d'accès via 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 via 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 à partir de Google Cloud Storage dans votre instance Autonomous 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 disposez d'informations d'identification 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 Database présente les avantages suivants :

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

Pour plus d'informations sur les comptes de service Google, reportez-vous à Comptes de service.

Activation d'un compte de service Google et recherche du 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 Database.

  1. Activez l'authentification du 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, procédez comme suit :

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

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

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

    Si vous voulez que l'utilisateur indiqué dispose de privilèges permettant d'activer l'authentification de compte de service Google pour d'autres utilisateurs, définissez le paramètre params grant_option sur TRUE.

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

    Une fois que vous avez exécuté DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH avec grant_option défini sur 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 afin d'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 afin d'obtenir les détails du compte de service pour votre instance 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. 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, reportez-vous à Procédure ENABLE_PRINCIPAL_AUTH.

Affectation de rôles au compte de service Google et octroi de l'accès aux ressources GCP

Pour utiliser les ressources Google Cloud Platform (GCP) d'une instance Autonomous 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 au préalable activer le compte de service Google sur votre instance Autonomous Database. Pour plus d'informations, reportez-vous à Activation d'un compte de service Google et recherche du nom du compte de service GCP.

  1. Ouvrez la console Google Cloud Console pour votre compte.
  2. Créez des rôles avec les autorisations spécifiées.
    1. Dans le menu de navigation, sélectionnez IAM et administrateur.
    2. Dans le navigateur IAM et Admin, sélectionnez Rôles.
    3. Sur la page Rôles, cliquez sur Actions supplémentaires et sélectionnez + Créer un rôle.

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

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

      Par exemple, entrez le filtre Autorisation : Storage.Objects pour afficher uniquement les droits d'accès de banque d'objets.

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

    Par exemple, si vous voulez accéder à Google Cloud Storage à l'aide du rôle que vous venez de créer, Object Store - Lecture/écriture :

    1. Dans le navigateur, sélectionnez Stockage cloud, puis Buckets.
    2. Sélectionnez le bucket à utiliser, puis cliquez sur PERMISSIONS.
    3. Cliquez sur + AJOUTER 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 Autonomous Database.
    2. Dans la boîte de dialogue Accorder l'accès à "nom du bucket", entrez les rôles sous Affecter des rôles, puis cliquez sur Enregistrer.

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

Utilisation du compte de service Google avec DBMS_CLOUD

Lorsque vous effectuez des appels DBMS_CLOUD pour accéder aux ressources Google Cloud Platform (GCP) et que vous indiquez le nom des informations d'identification en tant que GCP$PA, l'authentification côté Google Cloud Platform utilise un compte de service Google.

Sinon, procédez comme suit :

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

  1. Utilisez GCP$PA comme nom d'informations d'identification.
  2. Construisez l'URI pour accéder à la ressource GCP en utilisant le 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 de 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 
    

Pour plus d'informations, reportez-vous à :

Désactivation du compte de service Google

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

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

Par exemple, pour révoquer des 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 Autonomous Database. La valeur par défaut de username est ADMIN.

Par exemple :

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

Pour plus d'informations, reportez-vous à DISABLE_PRINCIPAL_AUTH Procédure.

Remarques sur le compte de service Google

Remarques sur l'utilisation du compte de service Google.

  • Restriction de caractères Google Cloud Platform (GCP) : DBMS_CLOUD ne prend pas en charge un URI contenant un "_" pour accéder à un nom de bucket Google Cloud Storage. Si le nom de votre bucket 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 Autonomous Database 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 transférée vers le clone. Effectuez les étapes permettant d'activer le compte de service Google sur le clone si vous souhaitez activer le compte de service Google sur une instance clonée.