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 location pouvez définir les stratégies Oracle Cloud Infrastructure et un groupe dynamique qui autorise les ressources Oracle Cloud Infrastructure à accéder aux ressources avec un principal de ressource. Vous n'avez pas besoin de créer d'objet d'informations d'identification et 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 se compose d'un jeton de session temporaire et d'informations d'identification sécurisées qui permettent à la base de données de s'authentifier auprès d'autres services Oracle Cloud Infrastructure. A l'aide d'un principal de ressource pour accéder aux services, le jeton stocké avec les informations d'identification sur Autonomous Database est uniquement valide pour les ressources auxquelles le groupe dynamique a accès.

Pour utiliser le principal de ressource, vous ou l'administrateur de 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 et 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, lorsque vous utilisez Autonomous Database, vous pouvez utiliser les 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 clés secrètes.

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

Lorsque vous utilisez la base de données, vous authentifiez celle-ci et y accédez en tant qu'utilisateur de base de données. Un utilisateur Autonomous Database ne dispose pas d'identité Oracle Cloud Infrastructure Identity and Access Management (IAM). 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 pour accéder aux ressources Oracle Cloud Infrastructure et créer un objet d'informations d'identification pour accéder à une ressource à partir d'Autonomous Database.

Un 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 elle est authentifiée à l'aide des certificats qui lui sont ajoutés. Ces certificats sont automatiquement créés, affectés aux ressources et faisant l'objet d'une rotation, ce qui vous évite 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 l'authentification 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 l'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 met le principal de ressource à votre disposition et sécurise le principal de ressource 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.

Avant d'utiliser un principal de ressource avec Autonomous Database, procédez comme suit :

  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 entrez 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 sont membres du groupe dynamique. Lorsque vous définissez une règle pour un groupe dynamique, réfléchissez à l'accès à d'autres ressources qui va lui être accordé.

    Par exemple, avec les exemples suivants :

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

      La base de données 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é. Par exemple :

      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'}
    • Autoriser toutes les ressources dans le compartiment

      Type de ressource 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 permettant d'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 la stratégie, puis entrez un nom et une description.
    3. Utilisez le générateur de stratégies pour créer une stratégie.

      Par exemple, pour créer une stratégie permettant d'autoriser l'accès à la banque d'objets Oracle Cloud Infrastructure afin de gérer les buckets et les objets dans la banque d'objets dans 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é. Par exemple :

      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 de principal de ressource est mis en cache pendant deux heures. Ainsi, si vous modifiez la stratégie ou le groupe dynamique, vous devrez attendre deux heures avant de voir vos modifications prennent 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 au préalable configurer des groupes et des stratégies dynamiques. Pour plus d'informations, reportez-vous à Exécution des prérequis pour utiliser le principal de ressource avec Autonomous Database.

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.

    Par exemple :

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

    Les informations d'identification OCI$RESOURCE_PRINCIPAL sont ainsi créées.

  2. (Facultatif) Cette étape n'est requise que si vous souhaitez accorder l'accès aux informations d'identification de 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 spécifié.

    Par exemple :

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

    L'utilisateur adb_user peut ainsi accéder aux informations d'identification OCI$RESOURCE_PRINCIPAL.

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

    Par exemple :

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

    Après avoir exécuté cette commande, adb_user peut activer le principal de ressource pour un autre utilisateur. Par exemple, si vous connectez-vous 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, lorsque l'utilisateur ADMIN interroge 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 non-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

Affiche les étapes de désactivation du principal de ressource pour tous les utilisateurs Autonomous Database ou pour un utilisateur spécifié.

  1. Pour 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();

    Les informations d'identification OCI$RESOURCE_PRINCIPAL sont enlevées.

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

    Par 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 de principal de ressource pour un utilisateur de base de données indiqué, incluez le paramètre username. Cela empêche l'accès utilisateur indiqué aux informations d'identification OCI$RESOURCE_PRINCIPAL.

Par exemple :

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

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

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 la base de données fournit les informations d'identification permettant d'accéder aux ressources Oracle Cloud Infrastructure.

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

Pour utiliser une procédure DBMS_CLOUD avec des informations d'identification de principal de ressource, procédez comme suit :

  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, notez que l'étape 1, Création d'informations d'identification n'est pas requise lorsque vous utilisez le principal de ressource car vous utilisez les informations d'identification OCI$RESOURCE_PRINCIPAL définies par le système.