Externe Anrufe mit einem vom Kunden verwalteten Wallet tätigen
Wenn sich Ihre autonome AI-Datenbankinstanz auf einem privaten Endpunkt befindet, können Sie ein vom Kunden verwaltetes Wallet mit Prozeduren in UTL_HTTP, DBMS_LDAP, UTL_SMTP oder UTL_TCP verwenden. Sie können auch ein vom Kunden verwaltetes Wallet verwenden, wenn der Scheduler SMTP-E-Mail-Benachrichtigungen für verschiedene Ereignisse im Zusammenhang mit Scheduler-Jobs sendet.
Vom Kunden verwaltetes Wallet mit externen Aufrufen verwenden
Wenn sich Ihre autonome AI-Datenbankinstanz auf einem privaten Endpunkt befindet, können Sie ein vom Kunden verwaltetes Wallet verwenden, um externe Aufrufe zu verarbeiten, oder mit dem Scheduler, wenn der Scheduler E-Mails für verschiedene Ereignisse im Zusammenhang mit Scheduler-Jobs sendet.
In einer autonomen KI-Datenbank können Sie externe Aufrufe für einen der folgenden Zwecke ausführen:
-
Zur Verwendung von Webservices mit
UTL_HTTP. -
Zum Zugriff auf Daten von LDAP-Servern mit
DBMS_LDAP. -
E-Mail an
UTL_SMTPsenden. -
Kommunikation mit externen TCP/IP-basierten Servern über TCP/IP mit
UTL_TCP. -
Für Oracle Scheduler-Job-E-Mail-Benachrichtigungen.
Wenn Sie Prozeduren in diesen Packages verwenden, verwaltet Autonomous AI Database standardmäßig ein internes Wallet und verwendet immer sichere Verbindungen (das von Oracle verwaltete Wallet enthält mehr als 90 der gängigsten vertrauenswürdigen Root- und Zwischen-SSL-Zertifikate). Wenn sich Ihre autonome KI-Datenbank auf einem privaten Endpunkt befindet, haben Sie die Möglichkeit, das von Oracle verwaltete Standard-Wallet mit den vertrauenswürdigen und intermediären SLL-Zertifizierungen zu verwenden, oder Sie können ein vom Kunden verwaltetes Wallet bereitstellen.
Wenn sich Ihre autonome KI-Datenbank auf einem privaten Endpunkt befindet, können Sie ein vom Kunden verwaltetes Wallet für UTL_HTTP, UTL_SMTP, DBMS_LDAP und DBMS_NETWORK_ACL_ADMIN mit den folgenden PL/SQL-Prozeduren angeben:
UTL_HTTP.SET_WALLET (
path IN VARCHAR2,
password IN VARCHAR2 DEFAULT NULL);
UTL_HTTP.REQUEST (
wallet_path IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL)
UTL_HTTP.REQUEST_PIECES (
wallet_p ath IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL,
UTL_HTTP.CREATE_REQUEST_CONTEXT (
wallet_path IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL)
UTL_TCP.OPEN_CONNECTION
wallet_path IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL);
UTL_SMTP.OPEN_CONNECTION
wallet_path IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL)
DBMS_LDAP.OPEN_SSL(
sslwrl IN VARCHAR2,
sslwalletpasswd IN VARCHAR2)
DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE
wallet_path IN VARCHAR2
DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACL(
wallet_path IN VARCHAR2Verwenden Sie bei diesen Aufrufen je nach Prozedur entweder den Parameter path oder wallet_path, um ein vom Kunden verwaltetes Wallet anzugeben. Sie legen das Wallet-Verzeichnis mit dem Präfix DIR: fest und fügen einen Wallet-Pfad hinzu. Beispiel:
UTL_HTTP.set_wallet('DIR:WALLET_DIR', 'password');Der aktuelle Benutzer, der die API aufruft, muss über READ-Berechtigungen für das Verzeichnisobjekt verfügen oder die Systemberechtigung CREATE ANY DIRECTORY erhalten.
Das Präfix DIR: ist das bevorzugte Formular zur Angabe eines vom Kunden verwalteten Wallets. Darüber hinaus wird das Präfix file: unterstützt. Beispiel:
UTL_HTTP.set_wallet('file:WALLET_DIR/wallet.sso', 'password');Weitere Informationen finden Sie unter Von Kunden verwaltetes Wallet für externe Aufrufe mit UTL_HTTP verwenden:
Vom Kunden verwaltetes Wallet mit Scheduler Email Server verwenden
Der Scheduler-E-Mail-Server ist zum Senden von E-Mail-Benachrichtigungen für verschiedene Ereignisse im Zusammenhang mit dem Scheduler verfügbar, wie z.B. Benachrichtigung über gestartete, nicht erfolgreiche oder abgeschlossene Jobs. Standardmäßig verwendet der SMTP-E-Mail-Server des Schedulers das in der Eigenschaft SSL_WALLET definierte Wallet für SSL/TLS-Kommunikationen. Optional können Sie ein vom Kunden verwaltetes Wallet mit dem SMTP-E-Mail-Server des Schedulers verwenden.
Die folgenden globalen Attribute werden mit einem vom Kunden verwalteten Wallet unterstützt:
-
EMAIL_SERVER_WALLET_DIRECTORY: wird auf ein Verzeichnisobjekt gesetzt, das den Pfad für das SSL-Wallet angibt. -
EMAIL_SERVER_WALLET_CREDENTIAL: ist auf ein Zugangsdatenobjekt mit einem Paar aus Benutzername/Kennwort gesetzt, wobei der Benutzername ein beliebiger Wert und das Kennwort das SSL-Wallet-Kennwort ist.
Sie legen Werte für diese Attribute mit DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE fest.
In den folgenden Themen finden Sie weitere Informationen:
Voraussetzungen für die Verwendung eines vom Kunden verwalteten Wallets mit externen Aufrufen
Zeigt die erforderlichen Schritte zur Verwendung eines vom Kunden verwalteten Wallets mit externen Aufrufen oder mit Scheduler-SMTP-E-Mail-Benachrichtigungen an.
Führen Sie die erforderlichen Schritte aus:
-
Prüfen Sie, ob die Instanz der autonomen KI-Datenbank mit einem privaten Endpunkt konfiguriert ist.
Weitere Informationen finden Sie unter Netzwerkzugriff mit privaten Endpunkten einrichten.
-
Setzen Sie den Parameter
private_targetauf den WertTRUE, wenn Sie die erforderlichen ACLs mitdbms_network_acl_admin.append_wallet_aceerteilen oder die DatenbankeigenschaftROUTE_OUTBOUND_CONNECTIONSfestlegen.Weitere Informationen finden Sie unter Vom Kunden verwaltetes Wallet für externe Anrufe mit UTL_HTTP verwenden und Verbesserte Sicherheit für ausgehende Verbindungen mit privaten Endpunkten.
-
Rufen Sie ein vom Kunden verwaltetes Wallet ab, oder erstellen Sie es.
Beispiel: So erstellen Sie ein Wallet mit
orapki:-- Create an SSL Wallet and load the Root CERTs using orapki utility $ORACLE_HOME/bin/orapki wallet create -wallet /u01/web/wallet -pwd ******** $ORACLE_HOME/bin/orapki wallet add -wallet /u01/web/wallet -trusted_cert -cert MyWebServer.cer -pwd ******** -- Store the credentials in the SSL Wallet using mkstore utility $ORACLE_HOME/bin/mkstore -wrl /u01/web/wallet -createCredential secret-from-the-wallet 'example@oracle.com' ******** Enter wallet password: ********Weitere Informationen finden Sie unter Public Key Infrastructure-(PKI-)Elemente verwalten.
-
Speichern Sie das Wallet in einem Bucket im Cloud-Objektspeicher.
Nachdem Sie das vom Kunden verwaltete Wallet mit selbstsignierten Zertifikaten abgerufen oder erstellt haben, speichern Sie das Wallet an einem Speicherort in Ihrem Cloud Object Storage.
Vom Kunden verwaltetes Wallet für externe Aufrufe mit UTL_HTTP verwenden
Wenn sich Ihre autonome KI-Datenbankinstanz auf einem privaten Endpunkt befindet, können Sie ein vom Kunden verwaltetes Wallet verwenden, um externe Aufrufe zu verarbeiten.
Diese Schritte beschreiben die Verwendung eines vom Kunden verwalteten Wallets mit UTL_HTTP. Die Schritte für die anderen unterstützten Packages sind identisch, einschließlich: DMBS_LDAP, UTL_SMTP und UTL_TCP.
Führen Sie die erforderlichen Schritte aus, um ein vom Kunden verwaltetes Wallet zu verwenden. Weitere Informationen finden Sie unter Voraussetzungen für die Verwendung eines vom Kunden verwalteten Wallets mit externen Aufrufen.
So konfigurieren Sie eine autonome KI-Datenbank für die Verwendung eines vom Kunden verwalteten Wallets:
-
Erstellen Sie Zugangsdaten mit
DBMS_CLOUD.CREATE_CREDENTIAL, um auf Cloud Object Storage zuzugreifen.BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'user1@example.com', password => 'password' ); END; /Die Werte, die Sie für
usernameundpasswordangeben, hängen vom verwendeten Cloud-Objektspeicherservice ab.Dadurch werden die Zugangsdaten erstellt, mit denen Sie auf den Cloud Object Storage zugreifen, in dem sich das vom Kunden verwaltete Wallet befindet.
Das Erstellen von Zugangsdaten für den Zugriff auf den Oracle Cloud Infrastructure-Objektspeicher ist nicht erforderlich, wenn Sie Resource-Principal-Zugangsdaten aktivieren. Weitere Informationen finden Sie unter Resource Principal für den Zugriff auf Oracle Cloud Infrastructure-Ressourcen nutzen.
-
Verwenden Sie ein vorhandenes Verzeichnis, oder erstellen Sie ein neues Verzeichnis für die Wallet-Datei.
Beispiel:
CREATE DIRECTORY *wallet_dir* AS '*directory_path_of_your_choice*';Informationen zum Erstellen von Verzeichnissen finden Sie unter Verzeichnis in autonomer KI-Datenbank erstellen.
-
Mit
DBMS_CLOUD.GET_OBJECTkönnen Sie das vom Kunden verwaltete Wallet in das Verzeichnis hochladen, das Sie im vorherigen Schritt WALLET_DIR erstellt haben.Beispiel:
BEGIN DBMS_CLOUD.GET_OBJECT( credential_name => 'DEF_CRED_NAME', object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/cwallet.sso', directory_name => 'WALLET_DIR'); END; /In diesem Beispiel ist
namespace-stringder Oracle Cloud Infrastructure-Objektspeicher-Namespace undbucketnameder Bucket-Name. Weitere Informationen finden Sie unter Object Storage-Namespaces. -
Erteilen Sie die erforderlichen ACLs, damit Sie die Zugangsdaten aus dem angegebenen Verzeichnis lesen können.
BEGIN dbms_network_acl_admin.append_wallet_ace( wallet_path => 'dir:WALLET_DIR', ace => xs$ace_type( privilege_list => xs$name_list('use_client_certificates', 'use_passwords'), principal_name => '*USER_NAME*', principal_type => xs_acl.ptype_db) ); END; / -
Legen Sie den Wallet-Pfad für die Verwendung mit
UTL_HTTP-Prozeduren fest.BEGIN UTL_HTTP.set_wallet('DIR:WALLET_DIR', 'password'); END; /Um das Wallet-Verzeichnis mit
UTL_HTTP.set_walletanzugeben, können Sie entweder das Präfixdir:oder das Präfixfile:verwenden.Das Präfix
dir:ist nur in einer autonomen KI-Datenbank verfügbar. Informationen zum Präfixfile:finden Sie unter UTL_HTTP. -
Jetzt können Sie
UTL_HTTP-Prozeduren ausführen, um mit dem vom Kunden verwalteten Wallet mit einem selbstsignierten Zertifikat auf einen Endpunkt zuzugreifen.Beispiel:
SELECT UTL_HTTP.REQUEST('https://example.com') from dual;
Vom Kunden verwaltetes Wallet mit Scheduler-E-Mail-Benachrichtigungen verwenden
Beschreibt die Schritte zur Verwendung des SMTP-E-Mail-Servers für den Scheduler mit einem vom Kunden verwalteten Wallet.
Führen Sie die erforderlichen Schritte aus, um ein vom Kunden verwaltetes Wallet zu verwenden. Weitere Informationen finden Sie unter Voraussetzungen für die Verwendung eines vom Kunden verwalteten Wallets mit externen Aufrufen.
So verwenden Sie ein vom Kunden verwaltetes Wallet mit dem Scheduler-E-Mail-Server:
-
Erstellen Sie Zugangsdaten mit
DBMS_CLOUD.CREATE_CREDENTIAL, um auf Ihren Cloud-Objektspeicher zuzugreifen.Beispiel:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'user1@example.com', password => 'password' ); END; /Die Werte, die Sie für
usernameundpasswordangeben, hängen vom verwendeten Cloud-Objektspeicherservice ab.Dadurch werden die Zugangsdaten erstellt, mit denen Sie auf Cloud Object Storage zugreifen, in dem sich das vom Kunden verwaltete Wallet befindet.
Das Erstellen von Zugangsdaten für den Zugriff auf den Oracle Cloud Infrastructure-Objektspeicher ist nicht erforderlich, wenn Sie Resource-Principal-Zugangsdaten aktivieren. Weitere Informationen finden Sie unter Resource Principal für den Zugriff auf Oracle Cloud Infrastructure-Ressourcen nutzen.
-
Verwenden Sie ein vorhandenes Verzeichnis, oder erstellen Sie ein neues Verzeichnis für die Wallet-Datei.
Beispiel:
CREATE DIRECTORY WALLET_DIR AS '*directory_path_of_your_choice*';Informationen zum Erstellen von Verzeichnissen finden Sie unter Verzeichnis in autonomer KI-Datenbank erstellen.
-
Verwenden Sie
DBMS_CLOUD.GET_OBJECT, um das Wallet in das Verzeichnis hochzuladen, das Sie im vorherigen Schritt WALLET_DIR erstellt haben.Beispiel:
BEGIN DBMS_CLOUD.GET_OBJECT( credential_name => 'DEF_CRED_NAME', object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/cwallet.sso', directory_name => 'WALLET_DIR'); END; /In diesem Beispiel ist
namespace-stringder Oracle Cloud Infrastructure-Objektspeicher-Namespace undbucketnameder Bucket-Name. Weitere Informationen finden Sie unter Object Storage-Namespaces. -
Führen Sie die Befehle aus, um den Scheduler so einzurichten, dass SMTP-E-Mails für Scheduler-Jobbenachrichtigungen gesendet werden.
Beispiel:
BEGIN DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER','smtp.email.us-ashburn-1.oci.oraclecloud.com:587'); DBMS_CLOUD.create_credential('EMAIL_CRED', 'ocid1.user.oc1..username', 'password'); DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER_CREDENTIAL','ADMIN.EMAIL_CRED'); DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER_ENCRYPTION','STARTTLS'); END; /Mit diesen Befehlen wird der SMTP-Server für Scheduler-E-Mails festgelegt, das Zugangsdatenobjekt mit den SMTP-Zugangsdaten erstellt und das Scheduler-Attribut für die SMTP-Zugangsdaten festgelegt. Außerdem wird angegeben, dass TLS für E-Mails verwendet wird, die für die Scheduler-Jobbenachrichtigung gesendet werden.
Weitere Informationen finden Sie unter Prozedur SET_SCHEDULER_ATTRIBUTE.
-
Erstellen Sie Zugangsdaten, um das Kennwort für das vom Kunden verwaltete Wallet zu speichern.
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'WALLET_CRED', username => '*any_user*', password => 'password'); END; /Dadurch werden die Zugangsdaten erstellt, die Sie im nächsten Schritt zur Angabe des Kennworts für das vom Kunden verwaltete Wallet verwenden.
-
Legen Sie das Wallet-Verzeichnis des Schedulers und die Wallet-Zugangsdaten fest.
BEGIN DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER_WALLET_DIRECTORY','WALLET_DIR'); DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER_WALLET_CREDENTIAL', 'ADMIN.WALLET_CRED'); END; / -
Fragen Sie die Ansicht
DBA_SCHEDULER_GLOBAL_ATTRIBUTEab, um die Werte zu prüfen, die Sie in den vorherigen Schritten festgelegt haben.SELECT attribute_name, value FROM DBA_SCHEDULER_GLOBAL_ATTRIBUTE WHERE attribute_name LIKE 'EMAIL_SERVER%' ORDER BY 1, 2;ATTRIBUTE_NAME VALUE ------------------------------ ----------------------------------------------- EMAIL_SERVER smtp.email.us-ashburn-1.oci.oraclecloud.com:587 EMAIL_SERVER_CREDENTIAL "ADMIN"."EMAIL_CRED" EMAIL_SERVER_ENCRYPTION STARTTLS EMAIL_SERVER_WALLET_CREDENTIAL "ADMIN"."WALLET_CRED" EMAIL_SERVER_WALLET_DIRECTORY "WALLET_DIR"
Hinweise zur Verwendung eines vom Kunden verwalteten Wallets mit externen Aufrufen
Bietet Notizen für die Verwendung eines vom Kunden verwalteten Wallets mit externen Anrufen.
-
DBMS_CLOUD-Anforderungen berücksichtigen nicht das benutzerdefinierte Wallet, das Sie mitUTL_HTTP.set_walletfestgelegt haben. Dazu gehörenDBMS_CLOUD.SEND_REQUESTund der gesamte Objektspeicherzugriff für externeDBMS_CLOUD-Tabellen, die Sie mitDBMS_CLOUD.CREATE_EXTERNAL_TABLE,DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEoderDBMS_CLOUD.CREATE_HYBRID_PART_TABLEdefinieren. Wenn Sie eine Abfrage für eine externe Tabelle ausführen, die Sie mit einerDBMS_CLOUD-Prozedur erstellt haben, berücksichtigen die Abfragen nicht das benutzerdefinierte Wallet, das Sie mitUTL_HTTP.set_walletfestgelegt haben. -
APEX_WEB_SERVICE-Anforderungen berücksichtigen nicht das benutzerdefinierte Wallet, das Sie mitUTL_HTTP.set_walletfestgelegt haben.Um ein vom Kunden verwaltetes Wallet mit APEX zu verwenden, geben Sie den Parameter
p_wallet_pathinAPEX_WEB_SERVICE-API-Aufrufen an, oder legen Sie die Instanzeinstellung "Wallet-Pfad" in APEX Administration Services fest.Weitere Informationen finden Sie unter Auf Oracle APEX Administration Services zugreifen.
-
Sowohl Wallets mit automatischer Anmeldung als auch passwortgeschützte Wallets werden unterstützt. Wenn Sie ein Wallet für die automatische Anmeldung verwenden, geben Sie
NULLfür den Parameterwallet_passwordan. -
Der aktuelle Benutzer, der die
UTL_HTTP.set_wallet-API aufruft, muss überREAD-Berechtigungen für das Verzeichnisobjekt verfügen oder die SystemberechtigungCREATE ANY DIRECTORYerhalten. -
Die
UTL_HTTP.SET_AUTHENTICATION_FROM_WALLET-API ist zulässig. Weitere Informationen finden Sie unter Prozedur SET_AUTHENTICATION_FROM_WALLET. -
Das Präfix
file:wird mitUTL_HTTP.set_walletunterstützt, solange der angegebene DateipfadPATH_PREFIX-konform ist.Sie können die
PATH_PREFIX-Compliance für einen Pfad bestimmen, der als Eingabe mit der ProzedurDBMS_PDB_IS_VALID_PATHbereitgestellt wird (erteilt anPUBLIC, einschließlich des BenutzersADMIN).Beispiel:
with function check_path_prefix_compliance(file_path varchar2) return varchar2 as BEGIN if dbms_pdb_is_valid_path(file_path) then return 'YES'; else return 'NO'; end if; END; SELECT check_path_prefix_compliance('/u03/dbfs/1276CDexample/data/dpdump') as PATH_PREFIX_COMPLIANT, check_path_prefix_compliance('/u01/app/oracle/diag') as PATH_PREFIX_COMPLIANT FROM dual; / -
Um die Abwärtskompatibilität sicherzustellen, wenn Sie
UTL_HTTP.set_walletverwenden, werden Eingabewerte wiefile:,NULLusw. akzeptiert, wenn der Wallet-Pfad ignoriert wird. Diese Werte werden ignoriert und geben an, dass der Standard-SSL-Wallet-Pfad mitUTL_HTTP.set_walletverwendet werden soll. -
Die
DBMS_NETWORK_ACL_ADMIN-Wallet-ACL-APIs, wieAPPEND_WALLET_ACL, werden unterstützt. Mit diesen Prozeduren können Sie Wallet-ACL-Berechtigungen erteilen/entziehen. Weitere Informationen finden Sie unter DBMS_NETWORK_ACL_ADMIN. -
Um die Verwendung der Kennwortzugangsdaten in einem SSL-Wallet zur Authentifizierung zu unterstützen, muss der aktuelle Benutzer, der die
UTL_HTTP-APIs aufruft, die ACL-Berechtigung "use-passwords" für den Wallet-Pfad aufweisen. -
Hinweise zum Festlegen von
EMAIL_SERVER_WALLET_DIRECTORYundEMAIL_SERVER_WALLET_CREDENTIALmitDBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE:-
Um die Attributwerte mit
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTEfestzulegen, müssen Sie ein administrativer Benutzer oder ein Benutzer mitMANAGE SCHEDULER-Berechtigungen sein (der ADMIN-Benutzer verfügt über diese Berechtigungen). -
Zusätzlich zur Berechtigung
MANAGE SCHEDULERmuss der Benutzer, derDBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTEaufruft, über die BerechtigungREADfür das Verzeichnisobjekt verfügen, das Sie mitEMAIL_SERVER_WALLET_DIRECTORYfestlegen, und über die BerechtigungEXECUTEfür das Zugangsdatenobjekt, das Sie mitEMAIL_SERVER_WALLET_CREDENTIALfestlegen.
-