Aucun message portant le libellé UTL_HTTP. Afficher tous les messages
Aucun message portant le libellé UTL_HTTP. Afficher tous les messages

jeudi 20 décembre 2012

Un portefeuille pour la base de données


Afin de permettre à la base de données d’accéder au contenu d’un site sécurisé par le protocole SSL, celui-ci doit avoir un portefeuille (wallet) dans lequel on retrouve les certificats.

1. Obtention des certificats
Cette section décrit comment procéder à l’exportation des certificats associés au domaine (site) dont nous voulons que la base de données puisse accéder.
Note : Les étapes de cette section dépendent du fureteur utilisé. Dans le cas actuel, le fureteur Firefox de Mozilla est utilisé.
  • Accéder au site via son adresse sécurisée à l’aide d’un fureteur Internet
  • Accéder au détail du certificat du site en cliquant à la gauche de l’adresse URL puis, sur le bouton « More Information… »
  • Cliquez sur le bouton « View Certificate » pour faire afficher la fenêtre des propriétés
  • Ensuite, déplacez-vous vers l’onglet « Details ». À ce moment, il est important de remarquer dans la partie du haut que la hiérarchie est constituée de plusieurs niveaux. Cela indique que vous devez exporter plusieurs certificats (1 par niveau).
  • Pour débuter, sélectionnez le premier niveau puis appuyez sur le bouton « Export » au bas de la fenêtre
  • Choisissez le format « X.509 Certificate (PEM) » puis enregistrez le certificat sous un emplacement de votre choix.
  • Répéter les deux étapes précédentes pour chacun des niveaux
2. Création du portefeuille
  • Accéder au serveur de base de données via un outil tel que « Putty »
  • Établir une connexion avec le compte propriétaire (ex. oracle)
  • Créer une nouvelle entrée dans le portefeuille
Note : Veuillez spécifier un emplacement et un mot de passe pour le protéger.
(oracle) $ orapki wallet create –wallet [répertoire/du/wallet] -pwd [mot_de_passe] -auto_login
3. Importer les certificats dans le portefeuille
  • Transférer les certificats précédemment exportés sur le serveur de base de données
  • Accéder au serveur de base de données via un outil tel que « Putty »
  • Établir une connexion avec le compte propriétaite (ex. oracle)
  • Importer tous les trois certificats en exécutant cette commande pour chacun  :
Note : Assurez-vous de préciser le nom exact du fichier correspondant au certificat.
(oracle) $ orapki wallet add -wallet  [répertoire/du/wallet]  -trusted_cert -cert [Nom_fichier_crt] -pwd [mot_de_passe]
4. Afficher le contenu du portefeuille
Vous pouvez exécuter la commande suivant pour vérifier le contenu du portefeuille. La commande affiche les certificats qu’il contient.

(oracle) $ orapki wallet display -wallet [répertoire/du/wallet]
5. Vérifier le fonctionnement
  • Démarrer l’outil SQL*Plus
  • Établir une connexion à la base de données avec un compte administrateur (DBA)
  • Exécuter la requête SQL suivante :
Note : avant d’exécuter la requête, veuillez spécifier l’emplacement (répertoire) où se trouve le fichier (portefeuille) ainsi que le mot de passe de ce dernier
SELECT utl_http.request('https://[Adresse_URL]','',
       'file:[Nom_fichier_Wallet_incluant_Repertoire]', '[Mot de passe]')
  FROM dual;
Si la requête retourne une série de balise « HTML », cela confirme que c’est fonctionnel.
Et pour terminer, n'oubliez pas de jeter un oeil à la liste de contrôle ACL pour que votre schéma (utilisateur) soit autorisé à accéder au site web.

mercredi 31 octobre 2012

Incapable d'émettre un droit malgré la clause "With Grant Option"


Après avoir octroyer le droit d'exécution sur le package UTL_HTTP à un schéma particulier avec la clause "With Grant Option", ce dernier n'a pas été en mesure d'émettre à son tour, ce même droit à un autre schéma malgré la présence de la clause. Lors de l'émission du privilège, l'erreur "ORA-01031 INSUFFICIENT PRIVILEGES" est soulevé. Ce qui ne fait aucun sens.

Après quelques recherches, j'ai alors remarqué que ce comportement est un bug répertorié chez Oracle et il a été observé sur la version 11.2.0.3 de la base de données. (Bug 13036331 : ORA-01031 INSUFFICIENT PRIVILEGES WHEN GRANTING EXECUTE ON DBMS PACKAGES)

Étrangement, mais heureusement, il y a une solution de contournement. Dans mon cas, il a suffit d'effectuer un "Alter system flush shared_pool;" puis d'émettre à nouveau le privilège initial qui comportait la clause "With Grant Option" et ensuite, d'octroyer de nouveau le privilège à l'autre schéma dont il était impossible de faire. Cette fois-ci, ça l'a réussi.

vendredi 18 mai 2012

Accès controlés aux services réseaux (ACL)

Dorénavant, toutes les fonctionnalités de base de données exigeant une interaction avec les services réseaux sont maintenant contrôlées par une liste d’accès. Cette liste est appelée « Access Control List (ACL) ». Oracle a mis en place un contrôle d’accès granulaire aux services externes.

Ce mécanisme permet de contrôler les accès aux fonctionnalités « UTL_TCP », « UTL_SMTP », « UTL_MAIL », « UTL_HTTP », et « UTL_INADDR ». Si le schéma Oracle exécutant ces fonctionnalités ne possède pas les droits nécessaires, une erreur sera soulevée. Pour octroyer des privilèges, vous pouvez utiliser le package d’Oracle « DBMS_NETWORK_ACL_ADMIN ».