Reports 12c : le caractère générique de FolderAccess ne fonctionne pas -- REP-177 & REP-56133
Reports 12c : caractère générique FolderAccess inopérant
Les erreurs renvoyées sont REP-177 et REP-56133.
S'APPLIQUE À :
Oracle Reports Developer - version 12.2.1.0.0 et ultérieures
Les informations de ce document s'appliquent à toutes les plateformes.
SYMPTÔMES
Reports 12.2.1.0.0 : le caractère générique (*) de folderAccess échoue
Voir la documentation 12c :
https://docs.oracle.com/middleware/1221/formsandreports/use-reports/pbr_conf002.htm#sthref310
Étapes pour reproduire le problème :
Scénario 1 :
1. Configurez le serveur Reports pour autoriser l'écriture dans n'importe quel répertoire en ajoutant * :
<folderAccess>
<write>*</write>
</folderAccess>
2. Exécutez n'importe quel rapport avec desname=<output location> desformat=file.
3. L'exécution échoue avec l'exception suivante :
REP-177: An error occurred while running in a remote server. An internal error occurred
REP-56133: Access is denied to write to the specific location
Autres scénarios :
La configuration suivante fonctionne pour la lecture ("read"), mais pas pour l'écriture ("write") :
Par exemple :
<read>*</read> fonctionne - permet de lire n'importe quel dossier
<write>*</write> ne fonctionne pas
<write> </write> empêche le serveur Reports de démarrer
<write>c:\*</write> ne fonctionne pas
MODIFICATIONS
Nouvelle installation d'Oracle Fusion Middleware 12c v. 12.2.1.0.0
CAUSE
IMPORTANT :
Reports 12c : le caractère générique (*) de folderAccess a changé
Ce changement découle d'une exigence de sécurité, et la documentation en ligne a été modifiée en conséquence pour indiquer que cette fonctionnalité ne fonctionne que dans un sous-répertoire.
Remarque : une valeur vide ou * dans le sous-élément read ou write indique un accès global. Séparez les noms de répertoires par un point-virgule (;).Voir le bogue 22334822 de Reports 12c :
Bug:22334822 : ISSUE WITH FOLDER ACCESS NOT SUPPORTING '*' TO ALLOW READ/WRITE TO ANY LOCATION
SOLUTION
Appliquez la solution suivante :
1. Téléchargez et appliquez le correctif suivant :
https://updates.oracle.com/download/22334822.html
Remarque : consultez le fichier Readme pour les instructions d'installation du correctif.
AVERTISSEMENT : ce correctif n'est pas soumis au même niveau de tests rigoureux que les patchsets Oracle. Les correctifs ponctuels (one-off) sont par nature plus risqués que les patchsets, puisqu'ils n'ont pas suivi l'ensemble de nos tests de régression d'assurance qualité. Les clients qui appliquent des correctifs ponctuels doivent bien comprendre ce risque et effectuer les sauvegardes et les tests supplémentaires qu'ils jugent nécessaires pour être à l'aise avec le correctif avant de le déployer dans leur environnement de production.
2. IMPORTANT : le caractère générique (*) de folderAccess a changé
Ce changement dans Reports 12c découle d'une exigence de sécurité, et la documentation en ligne a été révisée en conséquence.
La fonctionnalité RÉVISÉE de caractère générique (*) de folderAccess de Reports 12c devrait fonctionner comme suit :
a. Reports autorise tous les sous-répertoires d'un répertoire indiqué sous la forme /dir/*
<folderAccess><read>/dir/*</read>
<write>/dir/*</write>
</folderAccess>
Exemple 1 (un seul emplacement) :
<folderAccess><read>/tmp/*</read>
<write>/tmp/*</write>
</folderAccess>
desname=/tmp/a/b/output.pdf ==> test réussi
desname=/tmp/a/output.pdf ==> test réussi
desname=/tmp/output.pdf ==> test réussi
Le bon fonctionnement de tous les sous-répertoires de /tmp a été vérifié.
Exemple 2 (plusieurs emplacements) :
<folderAccess><read>/tmp/*;/home/oracle/*</read>
<write>/tmp/*;/home/oracle/*</write>
</folderAccess>
IMPORTANT : assurez-vous que l'utilisateur dispose de toutes les permissions du système d'exploitation (par ex. chmod 777) sur les dossiers ou répertoires dans lesquels il écrit.
Sinon, l'exécution peut échouer avec l'erreur suivante :
REP-0177: An error occurred while running in a remote server.The report generated successfully but distribution to destinations failed.
... et les lignes suivantes peuvent apparaître dans rwserver_diagnostic.log :
[2016-11-04T11:08:08.594-06:00] [reports] [WARNING] [] [oracle.reports.server] [tid: 1] [ecid: 6f292414-9c6f-49e4-ab5a-d2f2df543ab4-00000002,0] SecurityHelper:start Write directory configured does not exist or is not writeable: /u01/app/xyzb. Les configurations suivantes ne sont PAS autorisées, car elles entraînent des failles de sécurité :
<folderAccess><read>*</read>
<write>*</write>
</folderAccess>
-ou-
<folderAccess><read>/*</read>
<write>/*</write>
</folderAccess>
RÉSUMÉ :
Autrement dit...
Pour des raisons de sécurité, l'implémentation n'autorise pas <write>/*</write> ni <write>*</write>.
Un dossier doit être défini pour la balise <write> ; avec "/folder/*",
tous les sous-répertoires de "/folder/" peuvent alors être utilisés.