Utilisation du principal de ressource pour accéder aux ressources Oracle Cloud Infrastructure

Vous pouvez utiliser un principal de ressource Oracle Cloud Infrastructure avec Autonomous Database. Vous ou l'administrateur de la location définissez les stratégies Oracle Cloud Infrastructure et un groupe dynamique qui vous permet d'accéder aux ressources Oracle Cloud Infrastructure avec un principal de ressource. Vous n'avez pas besoin de créer d'objet d'informations d'identification. Autonomous Database crée et sécurise les informations d'identification de principal de ressource que vous utilisez pour accéder aux ressources Oracle Cloud Infrastructure indiquées.

A propos de l'utilisation du principal de ressource pour accéder aux ressources Oracle Cloud Infrastructure

Vous pouvez utiliser un principal de ressource pour authentifier les ressources Oracle Cloud Infrastructure et y accéder.

Un principal de ressource est constitué d'un jeton de session temporaire et d'informations d'identification sécurisées qui permettent à la base de données de se connecter à d'autres services Oracle Cloud Infrastructure. En utilisant un principal de ressource pour accéder aux services, le jeton stocké avec les informations d'identification sur Autonomous Database n'est valide que pour les ressources auxquelles le groupe dynamique a accès.

Pour utiliser le principal de ressource, vous ou l'administrateur de la location définissez les stratégies Oracle Cloud Infrastructure et un groupe dynamique qui vous permet d'accéder aux ressources Oracle Cloud Infrastructure avec un principal de ressource. Vous n'avez pas besoin de créer d'objet d'informations d'identification. Autonomous Database crée et sécurise les informations d'identification de principal de ressource que vous utilisez pour accéder aux ressources Oracle Cloud Infrastructure indiquées.

Par exemple, lors de l'utilisation d'Autonomous Database, vous pouvez utiliser des ressources Oracle Cloud Infrastructure pour effectuer les opérations suivantes :

  • Accéder aux données d'un bucket Object Storage, effectuer une opération sur les données, puis réécrire les données modifiées dans le bucket Object Storage.
  • Accéder à vos coffres, clés ou secrets.

  • Répertorier les demandes de travail ou les erreurs de demande de travail.

Lorsque vous utilisez la base de données, vous l'authentifiez et y accédez en tant qu'utilisateur de base de données. Un utilisateur Autonomous Database ne possède pas d'identité Oracle Cloud Infrastructure Identity and Access Management (IAM). Ainsi, en tant qu'utilisateur Autonomous Database, vous ne pouvez pas utiliser vos informations d'identification de base de données pour accéder aux services Oracle Cloud Infrastructure. Sans principal de ressource, vous devez obtenir des informations d'identification permettant d'accéder aux ressources Oracle Cloud Infrastructure et créer un objet d'identification permettant d'accéder à une ressource à partir d'Autonomous Database.

Le principal de ressource permet aux ressources d'être autorisées à effectuer des actions sur les services Oracle Cloud Infrastructure. Chaque ressource possède sa propre identité et est authentifiée à l'aide des certificats qui lui sont ajoutés. Ces certificats sont créés, affectés aux ressources et font l'objet d'une rotation automatiquement, et vous n'avez pas besoin de créer et de gérer vos propres informations d'identification pour accéder à la ressource.

Autonomous Database vous permet d'utiliser un principal de ressource pour vous authentifier auprès des API Oracle Cloud Infrastructure à l'aide des interfaces suivantes :

  • procédures et fonctions DBMS_CLOUD qui acceptent un argument d'informations d'identification ;
  • API de kit SDK PL/SQL Oracle Cloud Infrastructure

Lorsque vous effectuez une authentification à l'aide d'un principal de ressource, Autonomous Database fournit une méthode sécurisée pour accéder aux ressources Oracle Cloud Infrastructure.

Plusieurs étapes sont requises pour configurer un principal de ressource sur Autonomous Database :

Lorsque vous effectuez une authentification à l'aide d'un principal de ressource, vous n'avez pas besoin de créer et de gérer des informations d'identification pour accéder aux ressources Oracle Cloud Infrastructure. Autonomous Database le met à votre disposition et le sécurise pour vous.

Exécution des prérequis pour utiliser le principal de ressource avec Autonomous Database

Avant d'appeler une ressource Oracle Cloud Infrastructure à l'aide d'un principal de ressource, un administrateur de location Oracle Cloud Infrastructure doit créer des stratégies, des groupes dynamiques et des règles Oracle Cloud Infrastructure qui définissent les privilèges du principal de ressource.

Effectuez les étapes suivantes avant d'utiliser un principal de ressource avec Autonomous Database :

  1. Créez un groupe dynamique Oracle Cloud Infrastructure.
    1. Dans la console Oracle Cloud Infrastructure, cliquez sur Identité et sécurité, puis sur Groupes dynamiques.
    2. Cliquez sur Créer un groupe dynamique et saisissez un nom, une Description et une règle ou utilisez le générateur de règles pour ajouter une règle.
    3. Cliquez sur Créer.

    Les ressources qui répondent aux critères de règle sont membres du groupe dynamique. Lorsque vous définissez une règle pour un groupe dynamique, tenez compte des ressources qui auront accès à d'autres ressources.

    Par exemple, prenons les exemples suivants :

    • Autorisez une instance Autonomous Database spécifique à accéder à une ressource.

      L'instance Autonomous Database est indiquée dans le paramètre resource.id avec un OCID :

      resource.id = 'your_Autonomous_Database_instance_OCID'

      Vous devez ajouter un nom de domaine lorsque la location utilise un domaine d'identité. Exemples :

      resource.id = 'identity_domain_name/your_Autonomous_Database_instance_OCID'
    • Autorisez toutes les bases de données autonomes d'un compartiment.

      Les bases de données autonomes sont indiquées dans le paramètre resource.type et le compartiment est identifié par un OCID indiqué dans le paramètre resource.compartment.id :

      ALL {resource.type = 'autonomousdatabase', resource.compartment.id = 'your_Compartment_OCID'}
    • Autorisez toutes les ressources d'un compartiment.

      Le type de ressource est identifié par l'OCID indiqué dans le paramètre resource.compartment.id :

      ALL
              {resource.compartment.id='your_Compartment_OCID'}

    Pour plus d'informations sur la création d'un groupe dynamique et la création de règles pour ajouter des ressources au groupe, reportez-vous à Gestion des groupes dynamiques.

  2. Ecrivez des instructions de stratégie pour le groupe dynamique afin d'autoriser l'accès aux ressources Oracle Cloud Infrastructure.
    1. Dans la console Oracle Cloud Infrastructure, cliquez sur Identité et sécurité, puis sur Stratégies.
    2. Pour écrire des stratégies pour un groupe dynamique, cliquez sur Créer une stratégie, puis saisissez son nom et sa description.
    3. Utilisez le générateur de stratégies pour créer une stratégie.

      Par exemple, pour créer une stratégie autorisant l'accès à la banque d'objets Oracle Cloud Infrastructure afin de gérer les buckets et les objets dans la banque d'objets d'une location, procédez comme suit :

      Allow dynamic-group Example5 to manage buckets in tenancy
      Allow dynamic-group Example5 to manage objects in tenancy

      Vous devez ajouter un nom de domaine lorsque la location utilise un domaine d'identité. Exemples :

      Allow dynamic-group identity_domain_name/Example5 to manage buckets in tenancy
      Allow dynamic-group identity_domain_name/Example5 to manage objects in tenancy
    4. Cliquez sur Créer.
Remarque

Le jeton du principal de ressource est mis en cache pendant deux heures. Par conséquent, si vous modifiez la stratégie ou le groupe dynamique, vous devrez attendre deux heures avant de voir vos modifications prendre effet.

Pour plus d'informations sur les stratégies, reportez-vous à Fonctionnement des stratégies et à Gestion des stratégies.

Activation du principal de ressource pour accéder aux ressources Oracle Cloud Infrastructure

Effectuez les étapes suivantes pour activer le principal de ressource sur Autonomous Database.

Vous devez d'abord configurer des groupes dynamiques et des stratégies. Exécution des prérequis pour utiliser le principal de ressource avec Autonomous Database pour plus d'informations.

Pour activer un principal de ressource sur Autonomous Database, procédez comme suit :

  1. En tant qu'utilisateur ADMIN, activez le principal de ressource pour l'instance Autonomous Database.

    Exemple :

    EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL();
    
    PL/SQL procedure successfully completed. 
    
    Pour plus d'informations, reportez-vous à Procédure ENABLE_RESOURCE_PRINCIPAL.

    Cette commande crée les informations d'identification OCI$RESOURCE_PRINCIPAL.

  2. (Facultatif) Cette étape est requise uniquement si vous voulez accorder l'accès aux informations d'identification du principal de ressource à un utilisateur de base de données autre que l'utilisateur ADMIN. En tant qu'utilisateur ADMIN, activez le principal de ressource pour un utilisateur de base de données indiqué.

    Exemple :

    EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(username => 'adb_user');
    
    PL/SQL procedure successfully completed. 
    

    Cette commande accorde à l'utilisateur adb_user l'accès aux informations d'identification OCI$RESOURCE_PRINCIPAL.

    Si vous voulez que l'utilisateur indiqué dispose des privilèges permettant d'activer le principal de ressource pour d'autres utilisateurs, définissez le paramètre grant_option sur TRUE.

    Exemple :

    BEGIN
    DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(
         username => 'adb_user',
         grant_option => TRUE);
    END;
    /

    Une fois cette commande exécutée, adb_user peut activer le principal de ressource pour un autre utilisateur. Par exemple, si vous êtes connecté en tant que adb_user, vous pouvez exécuter la commande suivante :

    EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(username => 'adb_user2');
    
    Pour plus d'informations, reportez-vous à Procédure ENABLE_RESOURCE_PRINCIPAL.
  3. Vérifiez que les informations d'identification du principal de ressource sont activées.

    Par exemple, en tant qu'utilisateur ADMIN, interrogez la vue DBA_CREDENTIALS :

    SELECT owner, credential_name FROM dba_credentials 
            WHERE credential_name = 'OCI$RESOURCE_PRINCIPAL' AND owner = 'ADMIN'; 
    
    OWNER  CREDENTIAL_NAME
    -----  ----------------------
    ADMIN  OCI$RESOURCE_PRINCIPAL 
    

    Par exemple, en tant qu'utilisateur autre qu'ADMIN, interrogez la vue ALL_TAB_PRIVS :

    SELECT grantee, table_name, grantor FROM ALL_TAB_PRIVS
       WHERE grantee = 'ADB_USER' 
            AND table_name = 'OCI$RESOURCE_PRINCIPAL' 
            AND table_schema = 'ADMIN';
    
    GRANTEE   TABLE_NAME                GRANTOR
    --------- -----------------------   -------------
    ADB_USER  OCI$RESOURCE_PRINCIPAL    ADMIN

L'activation du principal de ressource sur une instance Autonomous Database est une opération unique. Vous n'avez pas besoin d'activer à nouveau le principal de ressource, sauf si vous exécutez DBMS_CLOUD_ADMIN.DISABLE_RESOURCE_PRINCIPAL pour désactiver le principal de ressource.

Désactivation du principal de ressource sur Autonomous Database

Présente les étapes de désactivation du principal de ressource pour tous les utilisateurs Autonomous Database ou pour un utilisateur indiqué.

  1. Afin de désactiver le principal de ressource pour tous les utilisateurs, en tant qu'utilisateur ADMIN, exécutez la commande suivante :
    EXEC DBMS_CLOUD_ADMIN.DISABLE_RESOURCE_PRINCIPAL();

    Cette commande enlève les informations d'identification OCI$RESOURCE_PRINCIPAL.

  2. Vérifiez que les informations d'identification du principal de ressource sont désactivées.

    Exemple :

    SELECT owner, credential_name FROM dba_credentials 
            WHERE credential_name = 'OCI$RESOURCE_PRINCIPAL' AND owner = 'ADMIN';
    
    No rows selected
    

Afin d'enlever l'accès aux informations d'identification du principal de ressource pour un utilisateur de base de données indiqué, incluez le paramètre username. Ce paramètre permet de refuser l'accès aux informations d'identification OCI$RESOURCE_PRINCIPAL pour l'utilisateur indiqué.

Exemple :

EXEC DBMS_CLOUD_ADMIN.DISABLE_RESOURCE_PRINCIPAL(username => 'ADB_USER');

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

Utilisation du principal de ressource avec DBMS_CLOUD

Lorsque vous indiquez des informations d'identification de principal de ressource avec des appels DBMS_CLOUD, la base de données authentifie les demandes Oracle Cloud Infrastructure pour vous et fournit les informations d'identification permettant d'accéder aux ressources Oracle Cloud Infrastructure.

Si ce n'est pas déjà fait, procédez comme suit :

Procédure d'utilisation d'une procédure DBMS_CLOUD avec les informations d'identification du principal de ressource :

  1. Utilisez une procédure ou une fonction DBMS_CLOUD et indiquez OCI$RESOURCE_PRINCIPAL comme nom d'informations d'identification.

    Par exemple, vous pouvez accéder à Oracle Cloud Infrastructure Object Storage à l'aide d'un principal de ressource :

    CREATE TABLE CHANNELS
       (channel_id CHAR(1),
        channel_desc VARCHAR2(20),
        channel_class VARCHAR2(20)
       );
    /
    
    BEGIN
     DBMS_CLOUD.COPY_DATA(
        table_name =>'CHANNELS',
        credential_name =>'OCI$RESOURCE_PRINCIPAL',
        file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/channels.txt',
        format => json_object('delimiter' value ',')
     );
    END;
    /
    

Si vous comparez les étapes requises pour accéder à Object Storage comme indiqué dans Création d'informations d'identification et copie de données dans une table existante, l'étape 1, qui consiste à créer les informations d'identification, n'est pas requise lorsque vous utilisez un principal de ressource car vous utilisez les informations d'identification OCI$RESOURCE_PRINCIPAL définies par le système.