Effectuer des appels externes à l'aide d'un portefeuille géré par le client
Lorsque votre instance de base de données IA autonome se trouve sur un point d'extrémité privé, vous pouvez utiliser un portefeuille géré par le client avec des procédures dans UTL_HTTP, DBMS_LDAP, UTL_SMTP ou UTL_TCP. Vous pouvez également utiliser un portefeuille géré par le client lorsque le programmateur envoie des avis par courriel SMTP pour divers événements liés aux tâches du programmateur.
À propos de l'utilisation d'un portefeuille géré par le client avec des appels externes
Lorsque votre instance de base de données Autonomous AI Database se trouve sur un point d'extrémité privé, vous pouvez utiliser un portefeuille géré par le client pour gérer les appels externes, ou avec le programmateur lorsque le programmateur envoie des courriels pour divers événements liés aux tâches du programmateur.
Sur Autonomous AI Database, vous pouvez effectuer des appels externes à l'une des fins suivantes :
-
Pour utiliser les services Web avec
UTL_HTTP. -
Pour accéder aux données des serveurs LDAP à l'aide de
DBMS_LDAP. -
Pour envoyer un courriel à
UTL_SMTP. -
Pour communiquer avec des serveurs TCP/IP externes à l'aide de TCP/IP avec
UTL_TCP. -
Pour les avis par courriel de tâche d'Oracle Scheduler.
Par défaut, lorsque vous utilisez des procédures dans ces packages, Autonomous AI Database gère un portefeuille interne et utilise toujours des connexions sécurisées (le portefeuille géré par Oracle contient plus de 90 des certificats SSL racine et intermédiaire de confiance les plus courants). Lorsque votre base de données Autonomous AI Database réside sur un point d'extrémité privé, vous avez la possibilité d'utiliser le portefeuille géré par Oracle par défaut avec les certifications SLL fiables et intermédiaires, ou vous pouvez fournir un portefeuille géré par le client.
Lorsque votre base de données d'intelligence artificielle autonome réside sur un point d'extrémité privé, vous pouvez spécifier un portefeuille géré par le client pour UTL_HTTP, UTL_SMTP, DBMS_LDAP et DBMS_NETWORK_ACL_ADMIN à l'aide des procédures PL/SQL suivantes :
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 VARCHAR2Dans ces appels, selon la procédure, utilisez le paramètre path ou wallet_path pour spécifier un portefeuille géré par le client. Vous définissez le répertoire de portefeuille avec le préfixe DIR: et incluez un chemin d'accès au portefeuille. Par exemple :
UTL_HTTP.set_wallet('DIR:WALLET_DIR', 'password');L'utilisateur courant qui appelle l'API doit disposer des privilèges READ sur l'objet de répertoire ou disposer du privilège système CREATE ANY DIRECTORY.
Le préfixe DIR: est le formulaire privilégié à utiliser pour spécifier un portefeuille géré par le client. En outre, le préfixe file: est pris en charge. Par exemple :
UTL_HTTP.set_wallet('file:WALLET_DIR/wallet.sso', 'password');Pour plus d'informations, voir Utiliser un portefeuille géré par le client pour les appels externes avec UTL_HTTP :
À propos de l'utilisation d'un portefeuille géré par le client avec le serveur de courriels du programmateur
Le serveur de courriel du programmateur est disponible pour envoyer des avis par courriel pour divers événements liés au programmateur, tels que l'avis de tâches démarrées, en échec ou terminées. Par défaut, le serveur de courriel SMTP du programmateur utilise le portefeuille défini dans la propriété SSL_WALLET pour les communications SSL/TLS. Facultativement, vous pouvez utiliser un portefeuille géré par le client avec le serveur de courriel SMTP du programmateur.
Les attributs globaux suivants prennent en charge l'utilisation d'un portefeuille géré par le client :
-
EMAIL_SERVER_WALLET_DIRECTORY: est réglé à un objet de répertoire qui spécifie le chemin d'accès au portefeuille SSL. -
EMAIL_SERVER_WALLET_CREDENTIAL: est réglé à un objet de données d'identification avec une paire nom d'utilisateur/mot de passe, où le nom d'utilisateur est une valeur et le mot de passe est le mot de passe du portefeuille SSL.
Vous définissez des valeurs pour ces attributs à l'aide de DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE.
Voir ce qui suit pour plus d'informations :
Préalables à l'utilisation d'un portefeuille géré par le client avec des appels externes
Affiche les étapes préalables à l'utilisation d'un portefeuille géré par le client avec des appels externes ou avec des avis par courriel SMTP du programmateur.
Effectuez les étapes préalables suivantes :
-
Vérifiez que l'instance de base de données de l'IA autonome est configurée avec un point d'extrémité privé.
Pour plus d'informations, voir Configurer l'accès au réseau à l'aide de points d'extrémité privés.
-
Réglez le paramètre
private_targetà la valeurTRUElorsque vous accordez les listes de contrôle d'accès requises avecdbms_network_acl_admin.append_wallet_aceou définissez la propriété de base de donnéesROUTE_OUTBOUND_CONNECTIONS.Voir Utiliser un portefeuille géré par le client pour les appels externes avec UTL_HTTP et Sécurité améliorée pour les connexions sortantes avec des points d'extrémité privés et pour plus d'informations.
-
Obtenez ou créez un portefeuille géré par le client.
Par exemple, pour créer un portefeuille avec
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: ********Pour plus d'informations, voir Gestion des éléments d'infrastructure à clé publique.
-
Stockez le portefeuille dans un seau du service de stockage d'objets en nuage.
Après avoir obtenu ou créé le portefeuille géré par le client contenant des certificats auto-signés, stockez le portefeuille dans un emplacement du service de stockage d'objets en nuage.
Utiliser un portefeuille géré par le client pour les appels externes avec UTL_HTTP
Lorsque votre instance de base de données Autonomous AI Database se trouve sur un point d'extrémité privé, vous pouvez utiliser un portefeuille géré par le client pour gérer les appels externes.
Ces étapes décrivent l'utilisation d'un portefeuille géré par le client avec UTL_HTTP. Les étapes sont les mêmes pour les autres ensembles pris en charge, notamment : DMBS_LDAP, UTL_SMTP et UTL_TCP.
Effectuez les étapes préalables pour utiliser un portefeuille géré par le client. Pour plus d'informations, voir Préalables à l'utilisation d'un portefeuille géré par le client avec des appels externes.
Pour configurer une base de données IA autonome afin qu'elle utilise un portefeuille géré par le client :
-
Créez des données d'identification à l'aide de
DBMS_CLOUD.CREATE_CREDENTIALpour accéder au service de stockage d'objets en nuage.BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'user1@example.com', password => 'password' ); END; /Les valeurs que vous indiquez pour
usernameetpassworddépendent du service de stockage d'objets en nuage que vous utilisez .Les données d'identification que vous utilisez pour accéder au service de stockage d'objets en nuage où réside le portefeuille géré par le client.
La création de données d'identification pour accéder au magasin d'objets Oracle Cloud Infrastructure n'est pas requise si vous activez les données d'identification du principal de ressource. Pour plus d'informations, voir Utiliser un principal de ressource pour accéder aux ressources Oracle Cloud Infrastructure.
-
Utilisez un répertoire existant ou créez-en un nouveau pour le fichier de portefeuille.
Exemple :
CREATE DIRECTORY *wallet_dir* AS '*directory_path_of_your_choice*';Voir Créer un répertoire dans Autonomous AI Database pour plus d'informations sur la création de répertoires.
-
Utilisez
DBMS_CLOUD.GET_OBJECTpour charger le portefeuille géré par le client dans le répertoire que vous avez créé à l'étape précédente, WALLET_DIR.Exemple :
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; /Dans cet exemple,
namespace-stringest l'espace de noms du stockage d'objets pour Oracle Cloud Infrastructure etbucketnameest le nom du seau. Pour plus d'informations, voir Présentation des espaces de noms du stockage d'objets. -
Accordez les listes de contrôle d'accès requises pour vous permettre de lire les données d'identification à partir du répertoire spécifié.
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; / -
Définissez le chemin du portefeuille à utiliser avec les procédures
UTL_HTTP.BEGIN UTL_HTTP.set_wallet('DIR:WALLET_DIR', 'password'); END; /Pour spécifier le répertoire de portefeuille avec
UTL_HTTP.set_wallet, vous pouvez utiliser le préfixedir:ou le préfixefile:.Le préfixe
dir:n'est disponible que dans la base de données d'intelligence artificielle autonome. Voir UTL_HTTP pour plus d'informations sur le préfixefile:. -
Vous pouvez maintenant exécuter des procédures
UTL_HTTPpour accéder à un point d'extrémité à l'aide du portefeuille géré par le client avec un certificat auto-signé.Exemple :
SELECT UTL_HTTP.REQUEST('https://example.com') from dual;
Utiliser un portefeuille géré par le client avec les avis par courriel du programmateur
Décrit les étapes à suivre pour utiliser le serveur de courriel SMTP du programmateur avec un portefeuille géré par le client.
Effectuez les étapes préalables pour utiliser un portefeuille géré par le client. Pour plus d'informations, voir Préalables à l'utilisation d'un portefeuille géré par le client avec des appels externes.
Pour utiliser un portefeuille géré par le client avec le serveur de courriel du programmateur :
-
Créez des données d'identification à l'aide de
DBMS_CLOUD.CREATE_CREDENTIALpour accéder au service de stockage d'objets en nuage.Exemple :
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'user1@example.com', password => 'password' ); END; /Les valeurs que vous indiquez pour
usernameetpassworddépendent du service de stockage d'objets en nuage que vous utilisez .Les données d'identification que vous utilisez pour accéder au service de stockage d'objets en nuage où réside le portefeuille géré par le client.
La création de données d'identification pour accéder au magasin d'objets Oracle Cloud Infrastructure n'est pas requise si vous activez les données d'identification du principal de ressource. Pour plus d'informations, voir Utiliser un principal de ressource pour accéder aux ressources Oracle Cloud Infrastructure.
-
Utilisez un répertoire existant ou créez-en un nouveau pour le fichier de portefeuille.
Exemple :
CREATE DIRECTORY WALLET_DIR AS '*directory_path_of_your_choice*';Voir Créer un répertoire dans Autonomous AI Database pour plus d'informations sur la création de répertoires.
-
Utilisez
DBMS_CLOUD.GET_OBJECTpour charger le portefeuille dans le répertoire que vous avez créé à l'étape précédente, WALLET_DIR.Exemple :
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; /Dans cet exemple,
namespace-stringest l'espace de noms du stockage d'objets pour Oracle Cloud Infrastructure etbucketnameest le nom du seau. Pour plus d'informations, voir Présentation des espaces de noms du stockage d'objets. -
Exécutez les commandes pour configurer le programmateur afin d'envoyer un courriel SMTP pour les avis de tâche du programmateur.
Exemple :
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; /Ces commandes définissent le serveur SMTP de courriel du programmateur, créent l'objet de données d'identification contenant les données d'identification SMTP et définissent l'attribut du programmateur pour les données d'identification SMTP, et spécifient d'utiliser TLS pour le courriel envoyé pour l'avis de tâche du programmateur.
Pour plus d'informations, voir Procédure SET_SCHEDULER_ATTRIBUTE.
-
Créez des données d'identification pour stocker le mot de passe du portefeuille géré par le client.
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'WALLET_CRED', username => '*any_user*', password => 'password'); END; /Cela crée les données d'identification que vous utilisez à l'étape suivante pour fournir le mot de passe du portefeuille géré par le client.
-
Définissez le répertoire du portefeuille du programmateur et les données d'identification du portefeuille.
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; / -
Interrogez la vue
DBA_SCHEDULER_GLOBAL_ATTRIBUTEpour vérifier les valeurs que vous avez définies dans les étapes précédentes.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"
Notes pour l'utilisation d'un portefeuille géré par le client avec des appels externes
Fournit des notes pour l'utilisation d'un portefeuille géré par le client avec des appels externes.
-
Les demandes
DBMS_CLOUDne respectent pas le portefeuille personnalisé que vous avez défini avecUTL_HTTP.set_wallet. Cela inclutDBMS_CLOUD.SEND_REQUESTet tous les accès au stockage d'objets pour les tables externesDBMS_CLOUDque vous définissez avecDBMS_CLOUD.CREATE_EXTERNAL_TABLE,DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEouDBMS_CLOUD.CREATE_HYBRID_PART_TABLE. Lorsque vous exécutez une interrogation sur une table externe que vous avez créée avec une procédureDBMS_CLOUD, les interrogations ne respectent pas le portefeuille personnalisé que vous avez défini avecUTL_HTTP.set_wallet. -
Les demandes
APEX_WEB_SERVICEne respectent pas le portefeuille personnalisé que vous avez défini avecUTL_HTTP.set_wallet.Pour utiliser un portefeuille géré par le client avec APEX, spécifiez le paramètre
p_wallet_pathdans les appels d'APIAPEX_WEB_SERVICEou définissez le paramètre d'instance de chemin d'accès au portefeuille dans les services d'administration APEX.Pour plus d'informations, voir Accéder aux services d'administration d'Oracle APEX.
-
Les portefeuilles à connexion automatique et les portefeuilles protégés par mot de passe sont pris en charge. Lorsque vous utilisez un portefeuille à connexion automatique, spécifiez
NULLpour le paramètrewallet_password. -
L'utilisateur courant qui appelle l'API
UTL_HTTP.set_walletdoit disposer des privilègesREADsur l'objet de répertoire ou se voir accorder le privilège systèmeCREATE ANY DIRECTORY. -
L'API
UTL_HTTP.SET_AUTHENTICATION_FROM_WALLETest autorisée. Pour plus d'informations, voir Procédure SET_AUTHENTICATION_FROM_WALLET. -
Le préfixe
file:est pris en charge avecUTL_HTTP.set_wallettant que le chemin d'accès au fichier spécifié est conforme àPATH_PREFIX.Vous pouvez déterminer la conformité
PATH_PREFIXpour un chemin fourni en entrée avec la procédureDBMS_PDB_IS_VALID_PATH(accordé àPUBLIC, y compris l'utilisateurADMIN).Exemple :
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; / -
Pour assurer la compatibilité descendante lorsque vous utilisez
UTL_HTTP.set_wallet, dans les cas où le chemin du portefeuille est ignoré, les valeurs d'entrée telles quefile:,NULL, etc., sont acceptées. Ces valeurs sont ignorées et spécifiez d'utiliser le chemin d'accès au portefeuille SSL par défaut avecUTL_HTTP.set_wallet. -
Les API de liste de contrôle d'accès du portefeuille
DBMS_NETWORK_ACL_ADMIN, telles queAPPEND_WALLET_ACL, sont prises en charge. Ces procédures vous permettent d'accorder ou de révoquer des privilèges de liste de contrôle d'accès pour le portefeuille. Pour plus d'informations, voir DBMS_NETWORK_ACL_ADMIN. -
Pour prendre en charge l'utilisation des données d'identification de mot de passe dans un portefeuille SSL pour l'authentification, l'utilisateur courant qui appelle les API
UTL_HTTPdoit disposer du privilège de liste de contrôle d'accès "use-passwords" sur le chemin du portefeuille. -
Notes pour définir
EMAIL_SERVER_WALLET_DIRECTORYetEMAIL_SERVER_WALLET_CREDENTIALavecDBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE:-
Pour définir les valeurs d'attribut avec
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE, vous devez être un utilisateur administrateur ou un utilisateur doté des privilègesMANAGE SCHEDULER(l'utilisateur ADMIN dispose de ces privilèges). -
En plus du privilège
MANAGE SCHEDULER, l'utilisateur qui appelleDBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTEdoit disposer du privilègeREADsur l'objet de répertoire que vous avez défini avecEMAIL_SERVER_WALLET_DIRECTORYet du privilègeEXECUTEsur l'objet de données d'identification que vous avez défini avecEMAIL_SERVER_WALLET_CREDENTIAL.
-