Connexion à Autonomous Database avec l'authentification Identity and Access Management (IAM)

Après l'activation d'Oracle Cloud Infrastructure IAM sur Autonomous Database par l'utilisateur ADMIN, ceux-ci se connectent à l'instance Autonomous Database à l'aide de leurs informations d'identification d'Oracle Cloud Infrastructure IAM ou accèdent à la base de données via un jeton de base Oracle Cloud Infrastructure IAM.

Une fois l'accès utilisateur Oracle Cloud Infrastructure IAM activé, vous pouvez également vous connecter à Autonomous Database à l'aide de votre nom utilisateur et de votre mot de passe de compte de base de données local (compte utilisateur de base de données non global).

Vous pouvez utiliser un client de base de données pour accéder à une instance Autonomous Database en tant qu'utilisateur Oracle Cloud Infrastructure IAM. Pour qu'un client puisse utiliser des informations d'identification de nom d'utilisateur et de mot de passe Oracle Cloud Infrastructure IAM et un vérificateur de mots de passe, le client de base de données doit être de version 12c ou ultérieure.

Vous pouvez aussi utiliser un jeton de base de données Oracle Cloud Infrastructure IAM pour accéder à une instance Autonomous Database, L'utilisation de jetons IAM requiert le dernier client Oracle Database 19c (19.16 au moins). Certains clients antérieurs fournissent un ensemble limité de fonctions pour l'accès par jeton.

Les exemples suivants montrent l'utilisation du vérificateur de mot de passe avec SQL*Plus pour accéder à la base de données avec un nom utilisateur et un mot de passe Oracle Cloud Infrastructure IAM, ainsi que les étapes requises pour utiliser SQL*Plus avec un jeton de base de données Oracle Cloud Infrastructure IAM.

Remarque

Si votre instance Autonomous Database est en mode restreint, seuls les utilisateurs disposant du privilège RESTRICTED SESSION (par exemple, ADMIN) peuvent se connecter à la base de données.

Vous pouvez utiliser un jeton d'une base de données Oracle Cloud Infrastructure IAM pour accéder à une instance Autonomous Database avec les clients pris en charge, notamment :

A propos de la connexion à l'instance Autonomous Database à l'aide d'IAM

Les utilisateurs IAM peuvent se connecter à l'instance Autonomous Database à l'aide d'un vérificateur ou d'un jeton IAM de mot de passe de base de données IAM.

L'utilisation du vérificateur de mot de passe de base de données IAM est semblable au processus d'authentification par mot de passe Oracle Database. Toutefois, au lieu que le vérificateur de mot de passe (hachage crypté du mot de passe) soit stocké dans la base de données Oracle, il est stocké dans le profil utilisateur Oracle Cloud Infrastructure (OCI) IAM.

La seconde méthode de connexion, qui consiste à utiliser un jeton IAM pour la base de données, est plus moderne. L'utilisation de l'accès basé sur un jeton convient mieux à des ressources cloud telles qu'Autonomous Database. Le jeton est basé sur la sécurité appliquée par l'adresse IAM. Il peut s'agir d'une authentification à plusieurs facteurs, plus forte que les simples mots de passe. L'utilisation de jetons présente un autre avantage : le vérificateur de mot de passe (considéré comme sensible) n'est jamais stocké ni disponible en mémoire. Une connexion TLS (TCPS) est requise lors de l'utilisation de jetons pour l'accès à la base de données.

Remarque

Vous ne pouvez pas configurer le cryptage réseau natif lors de la transmission d'un jeton IAM. Seul le protocole TLS (Transport Layer Security) est pris en charge, et non le chiffrement réseau natif ou le chiffrement réseau natif avec TLS.

Connexions client utilisant un vérificateur de mot de passe de base de données IAM

Une fois que vous avez configuré l'autorisation nécessaire pour l'utilisateur IAM, ce dernier peut se connecter à l'aide d'une application client existante, telle que SQL*Plus ou SQLcl, sans configuration supplémentaire.

L'utilisateur IAM saisit le nom utilisateur IAM et le mot de passe de base de données IAM (et non le mot de passe de la console Oracle Cloud Infrastructure (OCI)) à l'aide de n'importe quel client de base de données pris en charge. La seule contrainte est que la version du client de base de données soit au moins Oracle Database 12.1.0.2 afin d'utiliser les mots de passe Oracle Database 12c. Le client de base de données doit pouvoir utiliser le vérificateur de mot de passe 12C. L'utilisation du cryptage du vérificateur 11G n'est pas prise en charge avec IAM. Aucune configuration spéciale de client ou d'outil n'est nécessaire pour que l'utilisateur IAM se connecte à l'instance OCI DBaaS.

Connexions client utilisant un jeton demandé par une application ou un outil client

Pour l'accès par jeton IAM à Autonomous Database, l'application ou l'outil client demande un jeton de base de donnée à IAM pour l'utilisateur IAM.

L'application client transmet le jeton de base de données directement au client de base de données via l'API client de base de données.

Si l'application ou l'outil n'a pas été mis à jour et ne peut pas demander de jeton IAM, l'utilisateur IAM peut employer l'interface de ligne de commande Oracle Cloud Infrastructure (OCI) pour demander et stocker le jeton de base de données. Vous pouvez demander un jeton d'accès à la base de données (db-token) à l'aide des informations d'identification suivantes :

  • Jetons de sécurité (avec l'authentification IAM), jetons de délégation (dans OCI Cloud Shell) et clés d'API, à savoir des informations d'identification représentant l'utilisateur IAM pour permettre l'authentification
  • Jetons de principal d'instance, qui permettent aux instances d'être des acteurs autorisés (ou des principaux) et d'effectuer des actions sur les ressources du service après authentification
  • Jeton de principal de ressource, à savoir des informations d'identification permettant à l'application de s'authentifier auprès d'autres services Oracle Cloud Infrastructure
  • Utilisation d'un nom utilisateur IAM et d'un mot de passe IAM de base de données (que seul le client de base de données peut demander)

Lorsque les utilisateurs IAM se connectent au client avec une connexion à barre oblique (/) et que le paramètre OCI_IAM est configuré (sqlnet.ora, tnsnames.ora ou dans le cadre d'une chaîne de connexion), le client de base de données extrait le jeton de base de données d'un fichier. Si l'utilisateur IAM soumet un nom utilisateur et un mot de passe, la connexion utilise l'accès de vérificateur de base de données IAM décrit pour les connexions client qui emploient des vérificateurs de mot de passe de base de données IAM. Les instructions de ce guide indiquent comment utiliser l'interface de ligne de commande OCI en tant qu'application d'aide pour le jeton de base de données. Si l'application ou l'outil a été mis à jour pour fonctionner avec IAM, suivez les instructions de l'application ou de l'outil. Voici quelques cas d'emploi courants : SQLPlus sur site, SQLcl sur site, SQL*Plus dans Cloud Shell ou applications utilisant des portefeuilles SEP.

Configuration pour SQL*Plus d'une connexion client utilisant un mot de passe de base de données IAM

Vous pouvez configurer SQL*Plus en vue de l'utilisation d'un mot de passe de base de données IAM.

  • En tant qu'utilisateur IAM, connectez-vous à l'instance Autonomous Database à l'aide de la syntaxe suivante :
    CONNECT user_name@db_connect_string
    Enter password: password

    Dans cet exemple, user_name est le nom utilisateur IAM. Il existe une limite de 128 octets pour la combinaison domain_name/user_name.

    L'exemple suivant montre comment l'utilisateur IAM peter_fitch peut Se connecter à un instance Autonomous Database.

    sqlplus /nolog
    connect peter_fitch@db_connect_string
    Enter password: password

    Certains caractères spéciaux requièrent l'utilisation de guillemets autour du nom utilisateur et du mot de passe. Par exemple :

    "peter_fitch@example.com"@db_connect_string
    
    "IAM database password"

Configuration pour SQL*Plus d'une connexion client utilisant un jeton IAM

Vous pouvez configurer une connexion client pour SQL*Plus en vue de l'utilisation d'un jeton IAM.

  1. Assurez-vous que vous disposez d'un compte utilisateur IAM.
  2. Vérifiez auprès d'un administrateur IAM et d'un administrateur Oracle Database que vous disposez d'une stratégie vous permettant d'accéder à la base de données dans le compartiment ou dans la location, et que vous avez été mise en correspondance avec un schéma global dans la base de données.
  3. Si votre application ou outil ne prend pas en charge l'intégration IAM directe, téléchargez, installez et configurez l'interface de ligne de commande OCI. (Reportez-vous à Démarrage rapide de l'interface de ligne de commande OCI.) Configurez une clé d'API dans le cadre de la configuration de l'interface de ligne de commande OCI et sélectionnez des valeurs par défaut.
    1. Configurez l'accès à la clé d'API de l'utilisateur IAM.
    2. Extrayez la valeur db-token. Par exemple :
      • Extraction d'une valeur db-token avec API-key à l'aide de l'interface de ligne de commande Oracle Cloud Infrastructure (OCI) :
        oci iam db-token get
      • Extraction d'une valeur db-token avec un jeton de sécurité (ou de session) :
        oci iam db-token get --auth security_token

        Si le jeton de sécurité a expiré, une fenêtre apparaît afin que l'utilisateur puisse de nouveau se connecter à OCI. Cela génère le jeton de sécurité de l'utilisateur. L'interface de ligne de commande OCI utilise ce jeton actualisé pour obtenir la valeur db-token.

      • Extraction d'une valeur db-token avec un jeton de délégation : lorsque vous vous connectez à Cloud Shell, le jeton de délégation est automatiquement généré et placé dans le répertoire /etc. Pour obtenir ce jeton, exécutez la commande suivante dans le cloud shell :
        oci iam db-token get
      • Extraction d'un jeton d'instance à l'aide de l'interface de ligne de commande OCI :
        oci iam db-token get --auth instance_principal
    3. The database client can also be configured to retrieve a database token using the IAM username and IAM database password.
    Pour plus d'informations, reportez-vous à Clés et OCID requis.
  4. Vérifiez que vous utilisez les dernières mises à jour de la version du client Oracle Database 19c, 21c ou 23ai.
    Cette configuration fonctionne uniquement avec le client Oracle Database version 19c, 21c ou 23ai.
  5. Suivez le processus existant pour télécharger le portefeuille à partir d'Autonomous Database. Ensuite, suivez les instructions permettant d'en configurer l'utilisation avec SQL*Plus.
    1. Recherchez SSL_SERVER_DN_MATCH=ON dans sqlnet.ora pour vérifier que la correspondance de nom distinctif est activée.
      Remarque

      Une correspondance de nom distinctif partielle ou complète est requise lors de l'envoi d'un jeton à partir du client de base de données vers Autonomous Database. Si Autonomous Database utilise une adresse privée, vous devez indiquer une valeur d'hôte pour le paramètre de chaîne de connexion. L'utilisation d'une adresse IP pour le paramètre d'hôte dans la chaîne de connexion ne fonctionnera pas avec la correspondance de nom distinctif et le jeton IAM ne sera pas envoyé à la base de données.

      Pour plus d'informations sur la définition du paramètre d'hôte lors de l'utilisation d'une adresse privée, reportez-vous à Exemples de configuration d'adresses privées sur Autonomous Database.

    2. Ajoutez TOKEN_AUTH=OCI_TOKEN au fichier sqlnet.ora pour configurer le client de base de données de sorte qu'il utilise le jeton IAM. Etant donné que vous utiliserez les emplacements par défaut pour le fichier de jeton de base de données, vous n'avez pas besoin d'inclure d'emplacement de jeton.
    Les valeurs TOKEN_AUTH et TOKEN_LOCATION des chaînes de connexion tnsnames.ora sont prioritaires sur les paramètres sqlnet.ora de la connexion. Par exemple, pour la chaîne de connexion, en supposant que le jeton se trouve à l'emplacement par défaut (~/.oci/db-token pour Linux) :
    (description= 
      (retry_count=20)(retry_delay=3)
      (address=(protocol=tcps)(port=1522)
      (host=example.us-phoenix-1.oraclecloud.com))
      (connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com))
      (security=(ssl_server_dn_match=yes)
      (TOKEN_AUTH=OCI_TOKEN)))
    
Une fois la chaîne d'accès mise à jour avec le paramètre TOKEN_AUTH, l'utilisateur IAM peut Se connecter à l'instance Autonomous Database en exécutant la commande suivante pour démarrer SQL*Plus. Vous pouvez inclure le descripteur de connexion lui-même ou utiliser le nom du descripteur, qui figure dans le fichier tnsnames.ora.
connect /@exampledb_high

Ou :

connect /@(description= 
  (retry_count=20)(retry_delay=3)
  (address=(protocol=tcps)(port=1522)
  (host=example.us-phoenix-1.oraclecloud.com))
  (connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com))
  (security=(ssl_server_cert_dn="CN=example.uscom-east-1.oraclecloud.com, 
     O=Example Corporation, 
     L=Redwood City, ST=California, C=US")
  (TOKEN_AUTH=OCI_TOKEN)))

Le client de base de données est déjà configuré pour obtenir une valeur db-token car TOKEN_AUTH a déjà été défini, via le fichier sqlnet.ora ou dans une chaîne de connexion. Le client de base de données obtient la valeur db-token et le signe à l'aide de La clé privée. Le jeton est ensuite envoyé à Autonomous Database. Si un nom utilisateur et un mot de passe de base de données IAM sont indiqués au lieu de la barre oblique (/), le client de base de données se connecte à l'aide du mot de passe au lieu de la valeur db-token.

Utilisation du principal d'instance pour accéder à Autonomous Database avec l'authentification Identity and Access Management (IAM)

Une fois que l'utilisateur ADMIN a activé Oracle Cloud Infrastructure IAM sur Autonomous Database, une application peut accéder à la base de données via un jeton de base de données Oracle Cloud Infrastructure IAM à l'aide d'un principal d'instance.