Best Practices für die Verwendung von Datenbanktools

In diesem Abschnitt werden Prozeduren und Praktiken beschrieben, mit denen Sie Datenbanktools einfacher und effizienter verwenden können.

Themen:

Compartments verwenden

Datenbankverbindungen sind ein hilfreiches Feature, wenn Sie einem bestimmten Benutzer oder bestimmten Benutzergruppen Zugriff auf Datenbanken erteilen. Um diese Verbindungen zu isolieren, können Sie mithilfe von Policys Zugriff auf bestimmte Verbindungen basierend auf der Rolle eines Benutzers erteilen, wie im folgenden Beispiel dargestellt:

Erstellen Sie für ein Autonomous Data Warehouse, das für das Reporting verwendet wird, eine gemeinsame Datenbankverbindung namens ReportingDataAccess. Weisen Sie diese Verbindung einem bestimmten Set von Endbenutzern in einer Gruppe namens Data Scientists zu. Die Benutzer in dieser Gruppe haben jetzt Zugriff auf die Details der Datenbankverbindung. Sie können jedoch nur diese Verbindung und die Rollen und Berechtigungen verwenden, die der Benutzer erbt, der für den Zugriff auf die Datenbank verwendet wird.

Sie können auch eine Administratorverbindung zum Data Warehouse erstellen und dieser Verbindung ein anderes Set von Benutzern mit einer Gruppe namens DatabaseAdministrators zuweisen. Mit Compartments und Policys können Sie den Zugriff auf diese Verbindungen wie folgt trennen:

Gruppe "DataScientists":

  1. Erstellen Sie ein Compartment namens "Reporting".
  2. Erstellen Sie in diesem Compartment eine Gruppe namens "DataScientists".
  3. Erstellen Sie im Compartment "Reporting" eine Datenbankverbindung namens "ReportingDataAccess".
  4. Erstellen Sie eine Policy, die der Gruppe "DataScientists" Zugriff auf die Verbindung im Compartment "Reporting" erteilt:
    • Allow group DataScientists to read database-tools-family in compartment Reporting
    • Allow group DataScientists to use database-tools-connections in compartment Reporting

Gruppe "DatabaseAdministrators":

  1. Erstellen Sie ein Compartment namens "DBA".
  2. Erstellen Sie in diesem Compartment eine Gruppe namens "DatabaseAdministrators".
  3. Erstellen Sie im Compartment "DBA" eine Datenbankverbindung namens "DatabaseAdmin".
  4. Erstellen Sie eine Policy, die dieser Gruppe Zugriff auf die Verbindung im Compartment "DBA" erteilt:
    • Allow group DatabaseAdministrators to read database-tools-family in compartment DBA
    • Allow group DatabaseAdministrators to use database-tools-connections in compartment DBA

Mit diesen Gruppen und compartment-spezifischen Datenbankverbindungen können Sie isolieren, welche Benutzer auf welche Datenbanken zugreifen können, und den jeweiligen Zugriffstyp bestimmen.

Private Endpunkte verwenden

Wenn Sie Datenbankverbindungen zu einer autonomen Datenbank erstellen, die einen privaten Endpunkt verwendet, erstellen Sie eine Netzwerksicherheitsgruppe, um den Zugriff von Datenbanktools auf diese Datenbank zu ermöglichen. Beim Erstellen der Netzwerksicherheitsgruppe definieren Sie bestimmte Zugriffsregeln, die die verwendeten IPs oder CIDR-Blöcke sowie die Ports oder Portbereiche einschränken.

Für das SQL-Arbeitsblatt

So konfigurieren Sie die mindestens erforderlichen Netzwerksicherheitsgruppen-Regeln für den Zugriff über das SQL-Arbeitsblatt für Datenbanktools in der OCI-Konsole:

  1. Suchen Sie auf der Seite "Details zum privaten Endpunkt" im Abschnitt Informationen zum privaten Endpunkt das Feld Reverse-Connection-Quell-IPs. Zwei IP-Adressen werden angezeigt.
  2. Bearbeiten Sie die Netzwerksicherheitsgruppe, und fügen Sie Regeln für die beiden IP-Adressen mit Zugriff auf den Zielport 1522 über TCP/IP hinzu. Beispiel: Wenn die beiden IP-Adressen 10.0.1.6 und 10.0.1.8 lauten, enthalten die beiden Regeln die CIDR-Blöcke 10.0.1.6/32 und 10.0.1.8/32 mit Zugriff auf Zielport 1522 über TCP/IP.

Für SQLcl und Bastionen

So konfigurieren Sie die mindestens erforderlichen Netzwerksicherheitsgruppen-Regeln für den Zugriff über die SQLcl für Datenbanktools mit einer Bastion in der OCI-Konsole:

  1. Suchen Sie auf der Seite "Bastiondetails" das IP-Adresselement des privaten Endpunkts im Feld IP-Adresse des privaten Endpunkts. Nur eine IP-Adresse wird angezeigt.
  2. Bearbeiten Sie die Netzwerksicherheitsgruppe, und fügen Sie Regeln für diese IP-Adresse mit Zugriff auf den Zielport 1522 über TCP/IP hinzu. Beispiel: Wenn die IP-Adresse 10.0.1.9 lautet, enthält die Regel den CIDR-Block 10.0.1.7/32 mit Zugriff auf den Zielport 1522 über TCP/IP.

Diese Regeln stellen Folgendes sicher: Datenbanktools können nur auf die ausgewählte autonome Datenbank zugreifen. Der Zugriff erfolgt über die Netzwerksicherheitsgruppe von diesen spezifischen IP-Adressen aus sowie nur an Port 1522 für Bastionzugriff mit SQLcl und SQL-Arbeitsblattzugriff in der OCI-Konsole.

Prüfen

Sie können den einheitlichen Audittrail von Oracle Database erweitern, um Anwendungsattribute zu erfassen, indem Sie das Auditing für Anwendungskontextwerte konfigurieren. Der Anwendungskontext-Namespace wird mit den erforderlichen Attributen aufgefüllt, und diese Werte werden im einheitlichen Audittrail erfasst.

Mit den von den Datenbanktools bereitgestellten Anwendungsattributen können Sie:

  • Identifizieren Sie den authentifizierten IAM-Principal, der den Datenbankzugriff mit dem Datenbanktoolservice initiiert hat.
  • Korrelieren Sie einen einheitlichen Audittraildatensatz mit einem OCI-Auditereignis.

Authentifizierten IAM-Principal identifizieren

Um die Anwendungskontextattribute im einheitlichen Audittrail zu erfassen, müssen Sie zuerst den Befehl AUDIT CONTEXT ausführen und die zusätzlichen Attribute angeben, die Sie in den Auditdatensatz aufnehmen möchten.

Beispiel: Die folgende Anweisung erfasst die Werte der Namespace-Attribute CLIENTCONTEXT IAM_PRINCIPAL_OCID bis RESOURCE_COMPARTMENT_OCID in allen Auditdatensätzen.

AUDIT CONTEXT NAMESPACE CLIENTCONTEXT ATTRIBUTES IAM_PRINCIPAL_OCID,IAM_PRINCIPAL_TYPE, 
IAM_PRINCIPAL_SUB_TYPE,IAM_PRINCIPAL_RESOURCE_TYPE,IAM_PRINCIPAL_TENANCY_OCID, 
OPC_REQUEST_ID,RESOURCE_OCID,RESOURCE_COMPARTMENT_OCID

Nachdem Sie die Attribute hinzugefügt haben, können Sie die folgenden Anweisungen verwenden, um die Anwendungskontextattribute zu prüfen, die im einheitlichen Audittrail erfasst werden.

SELECT * FROM AUDIT_UNIFIED_CONTEXTS;

Auditdatensätze, die vom Datenbanktoolservice in UNIFIED_AUDIT_TRAIL aufgefüllt werden, enthalten Informationen für die folgenden Spalten.

Tabelle 10-1: Geprüfte Spalten

Spalte Value
OS_USERNAME Von IAM authentifizierte Principal-ID möglicherweise abgeschnitten
CLIENT_IDENTIFIER Verbleibende Zeichen der authentifizierten IAM-Principal-ID
USERHOST Hostname der mittleren Netzwerkebene
TERMINAL unbekannt
CLIENT_PROGRAM_NAME Datenbanktools ORDS
EXECUTION_ID opc-request-id mit 64 Zeichen abgeschnitten
APPLICATION_CONTEXTS Siehe Tabelle 10-2

Die Spalte APPLICATION_CONTEXTS wird mit den Werten der folgenden CLIENTCONTEXT-Attribute aufgefüllt, mit denen Sie den authentifizierten IAM-Principal identifizieren können, der den Datenbankvorgang initiiert hat.

Tabelle 10-2: Spalte Application_Contexts

Context Attribut Beschreibung
CLIENTCONTEXT IAM_PRINCIPAL_OCID IAM-Vorteilskennung
IAM_PRINCIPAL_TENANCY_OCID Primäre IAM-Mandanten-ID
IAM_PRINCIPAL_TYPE

IAM-Vorteilstyp

  • user
  • Ressource
  • Instanz
  • Dienst
IAM_PRINCIPAL_SUB_TYPE

IAM-Principal-Subtyp

  • natv (nativer Benutzer)
  • natf (nativer föderierter Benutzer)
  • Fed (föderierter Benutzer)
  • Kein Wert
IAM_PRINCIPAL_RESOURCE_TYPE IAM-Principal-Ressourcentyp
OPC_REQUEST_ID OPC-Anforderungs-ID
RESOURCE_OCID Ressourcen-ID
RESOURCE_COMPARTMENT_OCID Compartment-ID der Ressource

Korrelieren eines Unified Audit Trail-Datensatzes mit einem OCI Audit-Ereignis

Mit den Attributen OPC_REQUEST_ID und RESOURCE_COMPARTMENT_OCID, die in der Spalte APPLICATION_CONTEXTS und EVENT_TIMESTAMP angegeben sind, können Sie das Auditereignis suchen, das mit dem einheitlichen Audittraildatensatz übereinstimmt.

Oracle Cloud Infrastructure-Konsole verwenden

  1. Öffnen Sie in der Konsole das Navigationsmenü, und wählen Sie Observability and Management aus. Wählen Sie Logging, Audit.
  2. Wählen Sie im linken Bereich das Compartment aus.
  3. Geben Sie im rechten Bereich im Feld Benutzerdefinierte Filter data.request.id= '<opc-request-id value>' ein.
  4. Wählen Sie unter Nach Zeit filtern das Zeitintervall aus der Dropdown-Liste aus.
  5. Wählen Sie Anwenden aus.

    Die Ergebnisse werden auf der Registerkarte "Ereignisse durchsuchen" angezeigt.

Befehlszeilenschnittstelle (CLI) verwenden

Geben Sie <REGION ID>, <RESOURCE_COMPARTMENT_OCID> und <OPC_REQUEST_ID> im folgenden Skript ein, um das Auditereignis zu suchen, das mit dem einheitlichen Audittraildatensatz übereinstimmt.

#!/bin/sh
 
read -r -d '' body <<EndOfBody
{
  "searchQuery": "search \"<RESOURCE_COMPARTMENT_ID>/_Audit\" | (data.request.id='<OPC_REQUEST_ID>') | sort by datetime desc",
  "timeStart":"2024-07-19T11:03:56.167Z",
  "timeEnd":"2024-07-19T14:03:56.167Z",
  "isReturnFieldInfo":false
}
EndOfBody
 
oci raw-request --target-uri https://logging.<REGION_ID>.oci.oraclecloud.com/20190909/search --http-method POST --request-body "${body}"

Auditing auf IAM-Authentifizierte Sessions

Oracle Database Unified Auditing kann Details zu Sessions erfassen, die mit IAM authentifiziert wurden. Weitere Informationen zur IAM-Authentifizierung finden Sie unter IAM-Authentifizierung in Datenbanktoolverbindungen integrieren.

In der Ansicht UNIFIED_AUDIT_TRAIL werden IAM-bezogene IDs für extern authentifizierte Sessions aufgezeichnet. Beispiel: Die OCID des IAM-Benutzers kann in der Spalte EXTERNAL_USERID angezeigt werden.

Die folgende Beispielabfrage zeigt Auditdatensätze für von IAM authentifizierte Sessions:

SELECT EXTERNAL_USERID, EVENT_TIMESTAMP, ACTION_NAME 
FROM UNIFIED_AUDIT_TRAIL 
WHERE EXTERNAL_USERID IS NOT NULL;

Weitere Informationen finden Sie unter Auditing für Datenbanktoolservice und Datenbankaktivität mit Auditing überwachen.

Auditing für Datenbanktools MCP-Server

Der Datenbanktools-MCP-Server bietet End-to-End-Auditing durch Integration von Oracle Cloud Infrastructure (OCI) Audit in Oracle Database Unified Auditing. Auf diese Weise können Sie sowohl Aktivitäten auf API-Ebene als auch die entsprechenden Vorgänge verfolgen, die in der Datenbank ausgeführt werden.

OCI Audit-Logs erfassen, wer MCP-Servervorgänge ausgeführt hat und wann, während das Datenbankauditing erfasst, welche Aktionen innerhalb der Datenbank ausgeführt wurden.

OCI-Auditereignisse für MCP-Server

Der MCP-Server generiert Auditereignisse für Oracle Cloud Infrastructure-(OCI-)Audit, wenn API-Vorgänge ausgeführt werden. Mit diesen Ereignissen können Sie die Nutzung überwachen und Probleme beheben.

Das für MCP-Servervorgänge generierte Auditereignis ist InvokeMcpServer.

Jedes Auditereignis enthält die folgenden wichtigen Felder:

Eigenschaft Beschreibung
Ereignistyp

Gibt den API-Vorgang an.

Wert ist "com.oraclecloud.dbtools-service-mcp.InvokeMcpServer"

Quelle

Der Service, der das Ereignis ausgeführt hat.

Wert ist "DatabaseToolsMcp"

Ereignis-ID Eindeutige ID für das Ereignis
eventTime Zeitpunkt, zu dem die Anforderung initiiert wurde.
daten.ereignisname

Vorgangs-ID-Wert aus API-Spezifikation.

Wert ist "InvokeMcpServer"

data.compartmentId OCID des Compartments, in dem das Ereignis stattfindet.
data.compartmentName Anzeigename, der mit der Compartment-ID verknüpft ist
data.resourceId Die OCID des MCP-Servers.
data.availabilityDomain Die Availability-Domain der Ressource.
data.identity.principalName

Der Name des Benutzers oder Service, der dieses Ereignis ausgelöst hat.

Zugriffstokenanspruch:

Wenn "sub_type" == "user", "user_displayname"

Wenn "sub_type" == "client", "client_name"

data.identity.principalId

Die OCID des Benutzers oder Service, der das Ereignis ausgelöst hat.

Zugriffstoken-Anspruch: "sub"

data.identity.tenantId

OCID des Mandanten.

Zugriffstokenanspruch: "ca_ocid"

data.identity.ipAdresse IP-Adresse des tatsächlichen Benutzers, der die Anforderung ausführt.
data.identity.authType

Native, Federated, OBO, ServiceToService

Wert ist Bearer

data.request.id Eindeutige ID für eine Anforderung (opc-request-id).
data.request.path Der vollständige Pfad der API-Anforderung.
data.request.action HTTP-Anforderungstyp wie GET, PUT, POST.
data.response.status HTTP-Antwortcode, der den Status des API-Aufrufs angibt (Beispiel: 200, 500).
data.response.message

Beschreibung des Vorgangsergebnisses.

Das folgende Beispiel zeigt einen vereinfachten Auditlogeintrag für einen MCP-Serveraufruf:

{
  "eventType": "com.oraclecloud.dbtools-service-mcp.InvokeMcpServer",
  "source": "DatabaseToolsMcp",
  "eventTime": "2026-04-28T10:00:00Z",
  "eventId": "example-event-id",
  "data": {
    "eventName": "InvokeMcpServer",
    "compartmentId": "ocid1.compartment.oc1..example",
    "compartmentName": "ExampleCompartment",
    "resourceId": "ocid1.mcpserver.oc1..example",
    "resourceName": "ExampleMcpServer",
    "availabilityDomain": "Uocm:PHX-AD-1",
    "identity": {
      "principalName": "user@example.com",
      "principalId": "ocid1.user.oc1..example",
      "tenantId": "ocid1.tenancy.oc1..example",
      "ipAddress": "192.0.2.1",
      "authType": "Bearer"
    },
    "request": {
      "action": "POST",
      "path": "/mcp/invoke",
      "id": "example-opc-request-id"
    },
    "response": {
      "status": 200,
      "message": "ExampleMcpServer InvokeMcpServer succeeded"
    }
  }
}

Im Auditereignis können weitere Felder vorhanden sein. Das vollständige Schema finden Sie in der OCI-Auditdokumentation.

Datenbankauditing für MCP-Servervorgänge

Wenn Sie den Database Tools MCP Server verwenden, werden Datenbankvorgänge im Namen authentifizierter IAM-Benutzer ausgeführt, und die Benutzeridentität wird über den CLIENTCONTEXT-Namespace an die Datenbanksession propagiert. Dadurch kann Oracle Database Unified Auditing Benutzer- und Anforderungskontext für Vorgänge erfassen, die über MCP-Clients initiiert wurden.

Weitere Informationen dazu, wie die Benutzeridentität von MCP-Clients an die Datenbanksession propagiert wird, finden Sie unter Identität der Datenbanksession und Rollenpropagierung.

Sie können den einheitlichen Audittrail erweitern, um diese Anwendungskontextattribute zu erfassen, indem Sie das Auditing für CLIENTCONTEXT-Werte konfigurieren. Somit können Sie:

  • Identifizieren Sie den authentifizierten IAM-Principal, der einen Datenbankvorgang über den MCP-Server initiiert hat.
  • Datenbankaktivität mit einem bestimmten MCP-Server und einer bestimmten Anforderung verknüpfen.
  • Korrelieren Sie Datenbankauditdatensätze mit OCI-Auditereignissen.

Um diese Attribute zu erfassen, führen Sie den Befehl AUDIT CONTEXT aus.

OCI-Audit- und Datenbankauditlogs korrelieren

Jede Ausführung des Datenbanktools-MCP-Servers generiert ein OCI-Auditereignis und einen entsprechenden Datenbankauditdatensatz. Diese werden über gemeinsamen Anforderungs- und Identitätskontext verknüpft.

  • Mit der opc-request-id, die in OCI-Auditlogs als data.request.id verfügbar ist, können Sie die MCP-Clientanforderung mit in UNIFIED_AUDIT_TRAIL erfassten Datenbankauditdatensätzen korrelieren.

  • Der über den Namespace CLIENTCONTEXT propagierte IAM-Principal entspricht der in OCI Audit (data.identity.*) aufgezeichneten Identität.

MCP-Auditereignisse filtern

Um MCP-bezogene Auditereignisse zu filtern, verwenden Sie:

eventType = "com.oraclecloud.dbtools-service-mcp.InvokeMcpServer"

Identitäten verwenden

Verbindung mit einer zugehörigen Identitätsressource aktualisieren

Wenn eine Verbindung aktualisiert wird, kann sich die Zieldatenbank oder das Schema ändern. Wenn eine Identität angehängt ist, erstellt der Datenbanktoolservice die Identitätsressource im neuen Zielschema und in der neuen Datenbank neu. Dieser Prozess kann verwaiste Zugangsdaten im vorherigen Schema und in der vorherigen Datenbank hinterlassen. Falls erforderlich, müssen die Zugangsdaten zusammen mit allen zugehörigen Synonymen oder Berechtigungen manuell gelöscht werden.

Benachrichtigungen bei einem Fehler beim Aktualisieren der Identität einrichten

Wenn Sie eine kritische Aufgabe mit einer Identität ausführen, möchten Sie benachrichtigt werden, falls der Aktualisierungsvorgang nicht erfolgreich verläuft. Wenn der Aktualisierungsvorgang nicht erfolgreich verläuft, kann das Resource Principal-Token nicht mehr verwendet werden. Dadurch wird verhindert, dass die zugehörigen Zugangsdaten von OCI Identity and Access Management authentifiziert werden. Mit OCI Monitoring können Sie einen Alarm erstellen, um eine Benachrichtigung zu senden, wenn ein Aktualisierungsvorgang nicht erfolgreich verläuft. Siehe Identitäten anzeigen und überwachen.

Zugangsdatenvorgänge auditieren

Wenn eine Identität erstellt oder aktualisiert wird, werden das Resource-Principal-Token und die Details des Private Keys verwendet, um das entsprechende Datenbankzugangsdatenobjekt zu generieren oder zu ändern. Je nach den konfigurierten Auditingeinstellungen von Oracle Database können diese Informationen in Auditlogs aufgezeichnet werden. Siehe Einführung in Auditing.