Autonomous Database-Benutzer mit Kerberos authentifizieren

Sie können Autonomous Database on Dedicated Exadata Infrastructure so konfigurieren, dass das Kerberos-Netzwerkauthentifizierungsprotokoll zur Authentifizierung von Datenbankbenutzern verwendet wird. Kerberos ist ein sicheres Netzwerkauthentifizierungsprotokoll. Es verwendet die Secret-Key-Kryptografie, um eine sichere Authentifizierung durch Bereitstellung einer Benutzer-zu-Server-Authentifizierung zu ermöglichen.

  • Die Autonomous Database on Dedicated Exadata Infrastructure-Unterstützung für Kerberos bietet die Vorteile von Single Sign-On und zentralisierter Authentifizierung von Oracle-Benutzern. Kerberos ist ein vertrauenswürdiges Drittanbieter-Authentifizierungssystem, das auf Shared Secrets basiert. Es wird davon ausgegangen, dass der Drittanbieter sicher ist. Das System bietet Single Sign-On-Funktionen, zentralisierten Kennwortspeicher, Datenbanklinkauthentifizierung und erweiterte PC-Sicherheit. Dies geschieht über einen Kerberos-Authentifizierungsserver.

  • Das Kerberos-System arbeitet mit Tickets. Ein Ticket ist eine Gruppe elektronischer Informationen, die einen Benutzer oder einen Service identifizieren. Mit einem Ticket werden Sie und Ihre Netzwerkzugriffsberechtigungen identifiziert.

  • Bei der Kerberos-basierten Authentifizierung senden Sie eine Anforderung eines Tickets transparent an ein Key Distribution Center (KDC). Das Key Distribution Center authentifiziert Sie und gewährt Ihnen ein Ticket für den Zugriff auf die Datenbank.

Komponenten des Kerberos-Authentifizierungssystems

Bietet einen Überblick über das Kerberos-Authentifizierungssystem.

  • Eine Realm stellt eine administrative Authentifizierungsdomain her. Jede Realm verfügt über eine eigene Kerberos-Datenbank, in der die Benutzer und Services für die betreffende administrative Domain enthalten sind.

  • Tickets werden vom Key Distribution Center (KDC) ausgestellt. Clients legen dem Datenbankserver Tickets vor, um die Authentizität ihrer Identität zu demonstrieren. Jedes Ticket hat ein Ablaufdatum und eine Verlängerungszeit.

  • In Keytabs sind langfristige Schlüssel für einen oder mehrere Principals gespeichert. Eine Keytab wird durch Aufrufen des Tools kadmin.local (für MIT-Schlüsselverteilungscenter) oder ktpass (für Active Directory-Schlüsselverteilungscenter) generiert.

  • Principals sind die Einträge in der Datenbank des Schlüsselverteilungscenters. Jeder Benutzer, jeder Host oder jeder Service erhält einen Principal. Ein Principal ist eine eindeutige Identität, der das Schlüsselverteilungscenter Tickets zuweisen kann.

  • Die Kerberos-Unterstützung in Autonomous Database verwendet die folgenden Werte für verschiedene Komponenten, aus denen der Name eines Service-Principals besteht:

Komponente von Service Principal Wert in Autonomous Database
kinstance

Sie können diesen Wert aus dem Attribut PUBLIC_DOMAIN_NAME in der Spalte CLOUD_IDENTITY von V$PDBS abrufen. Dieser Wert unterscheidet sich vom vollqualifizierten Domainnamen (FQDN) für eine Datenbank auf einem privaten Endpunkt.

Verwenden Sie die folgende Abfrage, um die kinstance abzurufen:

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

Hinweis:

Dies ist der Wert des Parameters host in der TNS-Verbindungszeichenfolge.
kservice

In Autonomous Database haben Sie zwei Optionen für den Wert kservice:

  • Verwenden Sie die Datenbank-GUID: Wenn Sie keinen Kerberos-Servicenamen mit DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION angeben, wird die GUID der Autonomous Database-Instanz als Standardservicename verwendet. Wenn Sie die Keytab-Datei erstellen, verwenden Sie in diesem Fall die GUID als Wert für den Servicenamen.

    Da die Keytab-Datei im Standardfall einen Servicenamen verwendet, der eine instanzspezifische GUID ist, müssen Sie bei Verwendung des Standardservicenamens für jede Autonomous Database-Instanz unterschiedliche Keytab-Dateien generieren.

    Verwenden Sie den folgenden Befehl, um die GUID abzurufen (Groß-/Kleinschreibung ist wichtig):

    SELECT GUID FROM v$pdbs;
  • Benutzerdefinierten Namen verwenden: Legen Sie den Servicenamen fest, wenn Sie dieselben Keytab-Dateien auf mehreren Autonomous Database-Instanzen verwenden möchten. Wenn Sie einen benutzerdefinierten Namen verwenden, müssen Sie keine anderen Keytab-Dateien für jede Autonomous Database-Instanz erstellen und hochladen. Wenn Sie einen benutzerdefinierten Namen verwenden, müssen Sie den Parameter params kerberos_service_name mit DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION angeben. Die Angabe dieses Parameters ist nicht erforderlich, wenn Sie die GUID für den Servicenamen verwenden.

Nachdem Kerberos auf der Autonomous Database-Instanz aktiviert wurde, zeigen Sie den Kerberos-Servicenamen mit der folgenden Abfrage an:

SELECT SYS_CONTEXT('USERENV', 'KERBEROS_SERVICE_NAME') FROM DUAL;
REALM Jede Realm, die von Ihrem Schlüsselverteilungscenter unterstützt wird. REALM muss immer in Großbuchstaben geschrieben werden.

Um die Kerberos-Authentifizierung für Autonomous Database zu aktivieren, müssen Sie die Kerberos-Konfigurationsdateien (krb.conf) und das Serviceschlüsseltabellendatei (v5srvtab) bereithalten. Weitere Informationen über diese Dateien und die entsprechenden Schritte finden Sie unter Kerberos-Authentifizierung konfigurieren.

Hinweise zur Kerberos-Authentifizierung in Autonomous Database

Bevor Sie mit der Kerberos-Authentifizierung in Autonomous Database on Dedicated Exadata Infrastructure fortfahren, lesen Sie die folgenden Hinweise:

  • Wenn Sie die Kerberos-Authentifizierung für Autonomous Database aktivieren, können Sie weiterhin die kennwortbasierte Datenbankauthentifizierung für Ihre Datenbank verwenden.
  • Es kann immer nur eine externe Authentifizierungsmethode für Autonomous Database verwendet werden. Das heißt, Sie können jederzeit nur die Authentifizierungsschemas Oracle Cloud Infrastructure (IAM), Centrally Managed User mit Active Directory (CMU-AD), Azure AD oder Kerberos aktivieren.

    Hinweis:

    Die einzige Ausnahme ist, dass die Kerberos-Authentifizierung zusätzlich zu CMU-AD konfiguriert werden kann, um die CMU-AD-Kerberos-Authentifizierung für Microsoft Active Directory-Benutzer bereitzustellen.
  • Die Kerberos-Authentifizierung wird für folgende Tools nicht unterstützt:
    • Oracle Database API für MongoDB
    • Oracle REST Data Services
    • Oracle Machine Learning
    • APEX
    • Oracle Graph Studio
    • Oracle Database Actions
  • Sie können die Kerberos-Authentifizierung aktivieren, um den ADMIN-Benutzer zu authentifizieren. Mit der Funktion "Kennwort zurücksetzen" in der Oracle Cloud Infrastructure-(OCI-)Konsole können Sie das Kennwort des ADMIN-Benutzer zurücksetzen und den Zugriff wiederherstellen, wenn die Authentifizierung des ADMIN-Benutzer nicht erfolgreich ist.
  • Die Kerberos-Authentifizierung wird mit dem TCP-Protokoll für Autonomous Database-Versionen ab 19.27 unterstützt.
  • Die Kerberos-Authentifizierung wird mit DB_LINKs und Datenbanken mit Autonomous Data Guard nicht unterstützt.

Kerberos-Authentifizierung in Autonomous Database aktivieren

Führen Sie die unten aufgeführten Schritte aus, um die Kerberos-Authentifizierung für Autonomous Database on Dedicated Exadata Infrastructure zu aktivieren:
  • Da jeweils nur ein externes Authentifizierungsschema für eine Autonomous Database aktiviert sein kann, führen Sie die Prozedur DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION aus, um jedes externe Authentifizierungsschema zu deaktivieren, das bereits für Ihre Datenbank aktiviert ist.

    Um die Prozedur auszuführen, müssen Sie als ADMIN-Benutzer angemeldet sein oder die Berechtigung EXECUTE für DBMS_CLOUD_ADMIN besitzen.
    BEGIN
        DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
    END;
    /
  • Rufen Sie die Kerberos-Konfigurationsdateien ab: krb.conf und die Serviceschlüsseltabellendatei v5srvtab. Weitere Informationen zu diesen Dateien und Schritten, die zum Abrufen dieser Dateien erforderlich sind, finden Sie unter Kerberos-Authentifizierung konfigurieren in Oracle Database 19c - Sicherheitshandbuch oder Oracle Database 23ai - Sicherheitshandbuch.

  • Kopieren Sie die Kerberos-Konfigurationsdateien krb.conf und v5srvtab in einen Bucket in Ihrem Objektspeicher.

    Hinweis:

    Oracle empfiehlt, die Kerberos-Konfigurationsdateien in einem privaten Bucket im Objektspeicher zu speichern.

    Wenn Sie Oracle Cloud Infrastructure Object Storage verwenden, finden Sie unter Daten in Object Storage ablegen Details zum Hochladen von Dateien.

  • Um Kerberos als externe Authentifizierung für Autonomous Database zu aktivieren, führen Sie die Prozedur DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION aus, und übergeben Sie eine Speicherort-URI mit dem JSON-Argument params. Sie müssen die Konfigurationsdateien krb.conf und v5srvtab in dem im Parameter location_uri angegebenen Speicherort im Objektspeicher speichern.

    Beispiel:
    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;
    /

    Hinweis:

    Um Microsoft Active Directory-Benutzern die CMU-AD-Kerberos-Authentifizierung bereitzustellen, können Sie die Kerberos-Authentifizierung zusätzlich zu CMU-AD aktivieren, indem Sie im obigen Beispiel type auf CMU setzen.

    In diesem Beispiel ist namespace-string der Oracle Cloud Infrastructure-Objektspeicher-Namespace und bucketname der Bucket-Name. Weitere Informationen finden Sie unter Object Storage-Namespaces.

    Als credential_name verwenden Sie in diesem Schritt die Zugangsdaten für den Objektspeicher.

    Wenn location_uri eine vorab authentifizierte URL ist, ist die Angabe von credential_name nicht erforderlich.

    Dadurch wird ein Verzeichnisobjekt mit dem Namen KERBEROS_DIR in der Datenbank erstellt, und die Kerberos-Konfigurationsdateien werden mit den Zugangsdaten aus dem Speicherort im Objektspeicher in das Verzeichnisobjekt heruntergeladen.

    Mit dem Parameter kerberos_service_name können Sie den Kerberos-Servicenamen angeben. Beispiel:
    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;
    /
  • Entfernen Sie nach der Kerberos-Authentifizierung die Konfigurationsdateien krb.conf und v5srvtab aus dem Objektspeicher. Sie können diese Dateien mit lokalen Objektspeichermethoden entfernen oder mit DBMS_CLOUD.DELETE_OBJECT aus dem Objektspeicher löschen.

Weitere Informationen zu Object Storage finden Sie unter Zu Oracle Cloud Infrastructure Object Storage navigieren und Bucket erstellen.

Weitere Informationen finden Sie unter Prozedur ENABLE_EXTERNAL_AUTHENTICATION.

Kerberos-Authentifizierung in Autonomous Database deaktivieren

Bevor Sie ein anderes externes Authentifizierungsschema in der Datenbank aktivieren, müssen Sie die Kerberos-Authentifizierung deaktivieren, in der die Prozedur DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION ausgeführt wird.

Um diese Prozedur auszuführen, müssen Sie als ADMIN-Benutzer angemeldet sein oder die Berechtigung EXECUTE für DBMS_CLOUD_ADMIN besitzen.
BEGIN
    DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
END;
/
Weitere Informationen finden Sie unter Prozedur DISABLE_EXTERNAL_AUTHENTICATION.

Hinweis:

Um die CMU-AD-Kerberos-Authentifizierung für die Microsoft Active Directory-Benutzer bereitzustellen, müssen Sie die CMU-AD-Authentifizierung weiterhin konfigurieren, ohne die Kerberos-Authentifizierung zu deaktivieren.