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 ni 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 (une fois 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 le 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 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. Toutefois, 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, définir une stratégie qui est limitée à l'accès en lecture seule, par rôle, à un bucket Google Cloud Storage.
  • Les informations d'identification basées sur un 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 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 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 connectez-vous 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. Recherchez 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ôle au compte de service Google et octroi de l'accès aux ressources GCP

Pour utiliser les ressources Google Cloud Platform (GCP) à partir 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 au compte de service Google, pour toutes les ressources GCP que vous souhaitez utiliser un administrateur Google Cloud, vous devez ajouter des principaux Google IAM.

Avant d'activer le compte de service Google sur votre instance Autonomous Database, vous devez au préalable l'activer. Pour plus d'informations, voir Activation d'un compte de service Google et recherche du nom du compte de service GCP.

  1. Ouvrez la console Google Cloud pour votre compte.
  2. Créez des rôles avec les autorisations indiquées.
    1. Dans le menu de navigation, sélectionnez IAM et administration.
    2. Dans le navigateur IAM & Admin, sélectionnez Rôles.
    3. Sur la page Rôles, cliquez sur Actions supplémentaires et sélectionnez + CREATE ROLE.

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

    Description de l'image gcp_iam_roles_create.png
    Description de l'illustration gcp_iam_roles_create.png
  3. Sur 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 droits d'accès de la banque d'objets.

      Description de l'image 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 droits d'accès, cliquez sur ADD.
  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 voulez accéder.

    Par exemple, si vous voulez accéder à Google Cloud Storage à l'aide du rôle que vous venez de créer, Lecture/écriture dans la banque d'objets :

    1. Dans le navigateur, sélectionnez Cloud Storage et Buckets.
    2. Sélectionnez le bucket à utiliser, puis cliquez sur PERMISSIONS.
    3. Cliquez sur + Ajouter un principe.
  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 à "bucketname", entrez des 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 GCP$PA, l'authentification côté Google Cloud Platform se produit à l'aide d'un compte de service Google.

Si vous ne l'avez pas déjà fait, effectuez les étapes prérequises suivantes :

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. Créez l'URI pour accéder à la ressource GCP à l'aide d'un type 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 du 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 du 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 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, procédez comme suit :

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 pour username est ADMIN.

Par exemple :

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

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

Remarques sur le compte de service Google

Notes pour l'utilisation du compte de service Google.

  • Restriction de caractère 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 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 reportée sur 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.