Configuration de l'authentification Kerberos avec Autonomous Database

Explique comment configurer Kerberos pour authentifier les utilisateurs Oracle Autonomous Database.

A propos de l'authentification Kerberos

Vous pouvez configurer Oracle Autonomous Database de sorte qu'il utilise le protocole d'authentification réseau Kerberos pour authentifier les utilisateurs de base de données. Kerberos est un protocole d'authentification réseau robuste. Il utilise la cryptographie à clé secrète pour activer l'authentification forte en fournissant l'authentification utilisateur-serveur.

  • La prise en charge de Kerberos par Oracle Autonomous Database offre les avantages de l'accès avec connexion unique et de l'authentification centralisée des utilisateurs Oracle. Kerberos est un système d'authentification de tiers sécurisé, qui repose sur des clés secrètes partagées. Il suppose que le tiers est sécurisé et offre des fonctions d'accès avec connexion unique, un stockage centralisé des mots de passe, l'authentification des liens de base de données et renforce la sécurité des ordinateurs. Cela est effectué via un serveur d'authentification Kerberos.

  • Le système Kerberos repose sur le concept de ticket. Un ticket est un ensemble d'informations électroniques qui identifient un utilisateur ou un service. Un ticket vous identifie, ainsi que vos privilèges d'accès réseau.

  • Dans l'authentification Kerberos, vous envoyez de manière transparente une demande de ticket à un centre de distribution de clés (KDC). Le centre de distribution de clés vous authentifie et vous accorde un ticket pour accéder à la base de données.

Composants du système d'authentification Kerberos

Donne un aperçu de l'authentification Kerberos.

  • Un domaine de sécurité établit un domaine d'administration d'authentification. Chaque domaine de sécurité dispose de sa propre base de données Kerberos qui contient les utilisateurs et les services de ce domaine d'administration spécifique.

  • Les tickets sont émis par le centre de distribution de clés (KDC). Les clients présentent des tickets au serveur de base de données pour démontrer l'authenticité de leur identité. Chaque ticket a une date d'expiration et une date de renouvellement.

  • Des fichiers keytab stockent les clés à long terme des principaux. Un fichier keytab est généré en appelant l'outil kadmin.local (pour le centre de distribution de clés MIT) ou ktpass (pour le centre de distribution de clés Active Directory).

  • Les principaux sont les entrées de la base de données du centre de distribution de clés. Chaque utilisateur, hôte ou service reçoit un principal. Un principal est une identité unique à laquelle le centre de distribution de clés peut affecter les tickets.

  • La prise en charge de Kerberos dans Autonomous Database utilise ces valeurs pour divers composants qui constituent le nom d'un principal de service :

Composant de principal de service Valeur dans Autonomous Database
kinstance

Vous pouvez obtenir cette valeur à partir de l'attribut PUBLIC_DOMAIN_NAME dans la colonne CLOUD_IDENTITY de V$PDBS. Cette valeur est différente du nom de domaine qualifié complet d'une base de données sur une adresse privée.

Utilisez la requête suivante pour obtenir kinstance :

SELECT json_value(cloud_identity, '$.PUBLIC_DOMAIN_NAME') "KINSTANCE" FROM v$pdbs;
Remarque

Il s'agit de la valeur du paramètre host trouvée dans la chaîne d'accès TNS.
kservice

Sur Autonomous Database, vous disposez de deux options pour la valeur kservice :

  • Utilisez le GUID de base de données : si vous ne fournissez pas de nom de service Kerberos avec DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION, le nom de service par défaut utilisé est le GUID de l'instance Autonomous Database. Dans ce cas, lorsque vous créez le fichier keytab, utilisez le GUID comme valeur pour le nom de service.

    Dans la mesure où, dans le cas par défaut, le fichier Keytab utilise un nom de service qui est un GUID, propre à l'instance, lorsque vous utilisez le nom de service par défaut, vous devez générer différents fichiers Keytab pour chaque instance Autonomous Database.

    Utilisez la commande suivante pour obtenir le fichier GUID (la casse est significative) :

    SELECT GUID FROM v$pdbs;
  • Utiliser un nom personnalisé : définissez le nom de service lorsque vous voulez utiliser les mêmes fichiers Keytab sur plusieurs instances Autonomous Database. Lorsque vous utilisez un nom personnalisé, vous n'avez pas besoin de créer et de télécharger des fichiers Keytab différents pour chaque instance Autonomous Database. Lorsque vous utilisez un nom personnalisé, vous devez indiquer le paramètre params kerberos_service_name avec DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION. La spécification de ce paramètre n'est pas requise lorsque vous utilisez le GUID pour le nom de service.

Une fois Kerberos activé sur votre instance Autonomous Database, utilisez la requête suivante pour visualiser le nom de service Kerberos :

SELECT SYS_CONTEXT('USERENV', 'KERBEROS_SERVICE_NAME') FROM DUAL;
REALM N'importe quel domaine de sécurité pris en charge par votre KDC. REALM doit toujours être en majuscules.

Afin d'activer l'authentification Kerberos pour votre instance Autonomous Database, les fichiers de configuration Kerberos (krb.conf) et le fichier de table de clés de service (v5srvtab) doivent toujours être prêts. Pour plus d'informations sur ces fichiers et pour savoir comment les obtenir, reportez-vous à Configuration de l'authentification Kerberos.

Activation de l'authentification Kerberos sur Autonomous Database

Présente les étapes d'activation de l'authentification Kerberos sur votre instance Autonomous Database.

Pour exécuter DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION, vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur DBMS_CLOUD_ADMIN.

Pour utiliser DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION afin d'activer l'authentification Kerberos, procédez comme suit :

Afin d'activer l'authentification Kerberos pour votre instance Autonomous Database, vous devez obtenir les fichiers de configuration Kerberos krb.conf et le fichier de table de clés de service v5srvtab. Pour plus d'informations sur ces fichiers et pour connaître les étapes requises pour les obtenir, reportez-vous à Configuration de l'authentification Kerberos.

  1. Copiez les fichiers de configuration Kerberos krb.conf et v5srvtab dans un bucket de votre banque d'objets.

    Si vous utilisez la banque d'objets Oracle Cloud Infrastructure, reportez-vous à Stockage de données dans Object Storage pour plus d'informations sur le téléchargement de fichiers.

  2. Exécutez la procédure DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION et transmettez un URI d'emplacement avec l'argument JSON params. Vous devez placer les fichiers de configuration krb.conf et v5srvtab à l'emplacement de stockage d'objet indiqué dans le paramètre location_uri.

    Exemple :

    BEGIN
       DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
           type     => 'KERBEROS',
           params   => JSON_OBJECT(
                   'location_uri' value 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
                   'credential_name' value 'my_credential_name'));
    END;
    /
    Remarque

    Oracle recommande de stocker les fichiers de configuration Kerberos dans un bucket privé de votre banque d'objets.

    Dans cet exemple, namespace-string est l'espace de noms de stockage d'objet Oracle Cloud Infrastructure et bucketname est le nom du bucket. Pour plus d'informations, reportez-vous à Présentation des espaces de noms Object Storage.

    La valeur de credential_name utilisée à cette étape correspond aux informations d'identification de la banque d'objets.

    La création d'informations d'identification pour accéder à Oracle Cloud Infrastructure Object Storage n'est pas requise si vous activez les informations d'identification de principal de ressource. Pour plus d'informations, reportez-vous à Utilisation du principal de ressource pour accéder aux ressources Oracle Cloud Infrastructure.

    Si la valeur de location_uri est une URL préauthentifiée, vous n'avez pas besoin de fournir credential_name.

    Cette opération crée un objet de répertoire nommé KERBEROS_DIR dans votre base de données et utilise les informations d'identification pour télécharger les fichiers de configuration Kerberos de l'emplacement de la banque d'objets vers l'objet de répertoire.

    Vous pouvez spécifier le paramètre params kerberos_service_name pour spécifier un nom de service Kerberos. Exemple :

    BEGIN
       DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
           type     => 'KERBEROS',
           params   => JSON_OBJECT(
                   'location_uri' value 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
                   'credential_name' value 'my_credential_name'
                   'kerberos_service_name' value 'oracle' ));
    END;
    /
  3. Après avoir activé l'authentification Kerberos, enlevez les fichiers de configuration krb.conf et v5srvtab de la banque d'objets. Vous pouvez utiliser les méthodes locales de la banque d'objets pour enlever ces fichiers, ou utiliser DBMS_CLOUD.DELETE_OBJECT pour les supprimer de la banque d'objets.

Pour plus d'informations sur Object Storage, reportez-vous à Accès à Oracle Cloud Infrastructure Object Storage et création d'un bucket.

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

Désactivation de l'authentification Kerberos sur Autonomous Database

Présente les étapes de désactivation de l'authentification Kerberos pour votre instance Autonomous Database.

  1. Exécutez la procédure DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION pour désactiver l'authentification Kerberos. Pour exécuter la procédure, vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur DBMS_CLOUD_ADMIN.
    BEGIN   
       DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
    END;
    /

    Cette commande désactive l'authentification Kerberos (ou tout modèle d'authentification externe indiqué) pour Oracle Autonomous Database.

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

Remarques relatives à l'authentification Kerberos sur Autonomous Database

Fournit des remarques sur l'utilisation de l'authentification Kerberos pour Autonomous Database.

  • Si vous activez l'authentification Kerberos pour votre instance Autonomous Database, vous pouvez toujours utiliser l'authentification de base de données basée sur un mot de passe pour votre base de données.

  • L'authentification Kerberos n'est pas prise en charge par les outils suivants :
    • API Oracle Database pour MongoDB

    • Oracle REST Data Services

    • Oracle Machine Learning

    • APEX

    • Oracle Graph Studio

    • Oracle Database Actions

  • Vous pouvez activer l'authentification Kerberos pour authentifier l'utilisateur ADMIN. Vous pouvez utiliser la fonctionnalité Réinitialiser le mot de passe sur la console Oracle Cloud Infrastructure pour réinitialiser le mot de passe de l'utilisateur ADMIN et récupérer l'accès si un fichier keytab endommagé entraîne l'échec de l'authentification de l'utilisateur ADMIN.

  • La valeur par défaut de l'écart d'horloge maximal dans Autonomous Database est de 300 secondes (5 minutes). Vous ne pouvez pas modifier la valeur par défaut de l'écart d'horloge.