{"id":565,"date":"2019-05-28T13:49:59","date_gmt":"2019-05-28T11:49:59","guid":{"rendered":"https:\/\/corsaire-consulting.fr\/blog\/?p=565"},"modified":"2019-05-28T13:49:59","modified_gmt":"2019-05-28T11:49:59","slug":"modification-a-chaud-de-la-configuration-des-serveurs-weblogic-12-2-1-3","status":"publish","type":"post","link":"https:\/\/corsaire-consulting.fr\/blog\/index.php\/2019\/05\/28\/modification-a-chaud-de-la-configuration-des-serveurs-weblogic-12-2-1-3\/","title":{"rendered":"Modification \u00e0 chaud de la configuration des serveurs WebLogic 12.2.1.3"},"content":{"rendered":"<p>La version 12.2.1.3 de Oracle WebLogic Server introduit une nouvelle fonctionnalit\u00e9 qui permet de modifier \u00e0 chaud la configuration d&rsquo;un serveur via un simple fichier XML : <a href=\"https:\/\/docs.oracle.com\/middleware\/12213\/wls\/NOTES\/whatsnew.htm#NOTES-GUID-A8D70C0E-1CD5-4F6A-A327-36E202F9F0A1\" target=\"_blank\" rel=\"noopener noreferrer\">Temporary Configuration Overriding<\/a>.<\/p>\n<p><!--more--><\/p>\n<p>L&rsquo;objectif est simple : Modifier la configuration d&rsquo;un ou plusieurs serveurs Weblogic du domaine \u00e0 partir d&rsquo;informations contenues dans un simple fichier xml. Ce fichier doit \u00eatre plac\u00e9 dans le sous-r\u00e9pertoire\u00a0 optconfig du domaine. Ce r\u00e9pertoire n&rsquo;existe pas par d\u00e9faut, il faut le cr\u00e9er. Ce fichier XML constitue une surcharge du fichier config.xml du domaine.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Outre le c\u00f4t\u00e9 assez rapide de la mise en oeuvre, cette fonctionnalit\u00e9 pr\u00e9sente l&rsquo;avantage de limiter dans le temps la modification qui est apport\u00e9e aux serveurs. En effet, il est obligatoire d&rsquo;indiquer dans le fichier une date et une heure d&rsquo;expiration au-del\u00e0 desquelles la modification sera annul\u00e9e pour revenir \u00e0 la configuration originale. Ceci peut \u00eatre tr\u00e8s pratique par exemple pour activer temporairement des flags de debug sur un serveur comme le montre le fichier ci-dessous :<\/p>\n<p>[pastacode lang=\u00a0\u00bbmarkup\u00a0\u00bb manual=\u00a0\u00bb%3C%3Fxml%20version%3D&rsquo;1.0&rsquo;%20encoding%3D&rsquo;UTF-8&rsquo;%3F%3E%0A%3Cdom%3Adomain%0A%20xmlns%3Adom%3D%22http%3A%2F%2Fxmlns.oracle.com%2Fweblogic%2Fdomain%22%0A%20xmlns%3Af%3D%22http%3A%2F%2Fxmlns.oracle.com%2Fweblogic%2Fdomain-fragment%22%0A%20xmlns%3As%3D%22http%3A%2F%2Fxmlns.oracle.com%2Fweblogic%2Fsituational-config%22%20%3E%0A%20%20%20%3Cs%3Aexpiration%3E%202019-05-22T19%3A24-08%3A00%20%3C%2Fs%3Aexpiration%3E%0A%20%20%3Cdom%3Aname%3Ewls12213Domain%3C%2Fdom%3Aname%3E%0A%20%20%3Cdom%3Aserver%3E%0A%20%20%20%20%3Cdom%3Aname%3Ems2%3C%2Fdom%3Aname%3E%0A%09%3Cdom%3Aserver-log%3E%0A%09%09%3Cdom%3Astdout-severity%20f%3Acombine-mode%3D%22replace%22%3EDebug%3C%2Fdom%3Astdout-severity%3E%0A%09%3C%2Fdom%3Aserver-log%3E%0A%20%20%20%20%3Cdom%3Aserver-debug%3E%0A%09%09%20%20%20%20%20%20%3Cdom%3Adebug-http%20f%3Acombine-mode%3D%22replace%22%3Etrue%3C%2Fdom%3Adebug-http%3E%0A%20%20%20%20%20%20%3Cdom%3Aclass-loader%20f%3Acombine-mode%3D%22replace%22%3Efalse%3C%2Fdom%3Aclass-loader%3E%0A%20%20%20%20%3C%2Fdom%3Aserver-debug%3E%0A%20%20%3C%2Fdom%3Aserver%3E%0A%20%20%3C%2Fdom%3Adomain%3E\u00a0\u00bb message=\u00a0\u00bbExemple de fichier de configuration\u00a0\u00bb highlight=\u00a0\u00bb\u00a0\u00bb provider=\u00a0\u00bbmanual\u00a0\u00bb\/]<\/p>\n<p>Les d\u00e9tails du fonctionnement de cette nouveaut\u00e9 sont disponible dans cette <a href=\"https:\/\/docs.oracle.com\/middleware\/12213\/wls\/DOMCF\/changes.htm#DOMCF-GUID-3C5A2D0B-437C-41F1-B914-81F0184985CC\" target=\"_blank\" rel=\"noopener noreferrer\">documentation<\/a>.<\/p>\n<p>Voil\u00e0 pour le fonctionnement, quelques remarques maintenant.<\/p>\n<p>Le r\u00e9pertoire optconfig est scrut\u00e9 r\u00e9guli\u00e8rement par les serveurs, toutes les 5 secondes par d\u00e9faut. Le d\u00e9lai entre 2 lectures du r\u00e9pertoire n&rsquo;est modifiable que par WLST :<\/p>\n<p>[pastacode lang=\u00a0\u00bbpython\u00a0\u00bb manual=\u00a0\u00bbconnect(&#8230;)%0Aedit()%0AstartEdit()%0AdomainConfig()%0Aas%3Dcmo.lookupServer(&lsquo;AdminServer&rsquo;)%0Aas.setSitConfigPollingInterval(30)%20%0Asave()%0Aactivate()%0Adisconnect()\u00a0\u00bb message=\u00a0\u00bbModification du d\u00e9lai entre 2 lectures du r\u00e9pertoire optconfig\u00a0\u00bb highlight=\u00a0\u00bb\u00a0\u00bb provider=\u00a0\u00bbmanual\u00a0\u00bb\/]<\/p>\n<p>Cette fonctionnalit\u00e9 est active par d\u00e9faut et il n&rsquo;est pas possible de la d\u00e9sactiver.<\/p>\n<p>\u00c9videment, seuls les param\u00e8tres dynamiques de la configuration, c&rsquo;est \u00e0 dire ne n\u00e9cessitant pas de red\u00e9marrage sont pris en compte par cette fonctionnalit\u00e9.<\/p>\n<p>C&rsquo;est la classe weblogic.management.provider.internal.situationalconfig.SituationalConfigManagerImpl qui est en charge de cette fonctionnalit\u00e9.<\/p>\n<p>On est en droit de se demander si cette nouvelle fonctionnalit\u00e9 constitue une faille de s\u00e9curit\u00e9 ou non. En effet, toute modification \u00e0 chaud de la configuration des serveurs effectu\u00e9es avec les autres outils (console ou WLST par exemple) n\u00e9cessitent de s&rsquo;authentifier. <strong>Pas celle-l\u00e0<\/strong>. Oracle a \u00e9t\u00e9 sollicit\u00e9 sur ce point et a r\u00e9pondu officiellement que cette fonctionnalit\u00e9 ne constitue en rien une faille de s\u00e9curit\u00e9.<\/p>\n<p>&nbsp;<\/p>\n<h1>Conclusion<\/h1>\n<p>Ca sent la fonctionnalit\u00e9 d\u00e9velopp\u00e9e pour les environnements cloud !<\/p>\n<p>Elle est int\u00e9ressante par exemple dans le cadre du support quand il est n\u00e9cessaire d&rsquo;activer temporairement certains param\u00e8tres comme les flags de debug. Je trouve dommage qu&rsquo;elle soit active par d\u00e9faut et qu&rsquo;on ne puisse pas la d\u00e9sactiver.<\/p>\n<p>Son mode de fonctionnement justifie encore un peu plus la n\u00e9cessit\u00e9 d&rsquo;avoir un utilisateur d\u00e9di\u00e9 pour lancer les instances WebLogic et que lui-seul puisse avoir un droit en \u00e9criture sur le r\u00e9pertoire du domaine et ses sous-r\u00e9pertoires.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La version 12.2.1.3 de Oracle WebLogic Server introduit une nouvelle fonctionnalit\u00e9 qui permet de modifier \u00e0 chaud la configuration d&rsquo;un serveur via un simple fichier XML : Temporary Configuration Overriding.<\/p>\n","protected":false},"author":1,"featured_media":576,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[59,4],"tags":[89,48,56,8],"class_list":["post-565","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-securite","category-weblogic","tag-configuration","tag-oracle","tag-securite","tag-weblogic-server"],"_links":{"self":[{"href":"https:\/\/corsaire-consulting.fr\/blog\/index.php\/wp-json\/wp\/v2\/posts\/565","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/corsaire-consulting.fr\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/corsaire-consulting.fr\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/corsaire-consulting.fr\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/corsaire-consulting.fr\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=565"}],"version-history":[{"count":12,"href":"https:\/\/corsaire-consulting.fr\/blog\/index.php\/wp-json\/wp\/v2\/posts\/565\/revisions"}],"predecessor-version":[{"id":578,"href":"https:\/\/corsaire-consulting.fr\/blog\/index.php\/wp-json\/wp\/v2\/posts\/565\/revisions\/578"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/corsaire-consulting.fr\/blog\/index.php\/wp-json\/wp\/v2\/media\/576"}],"wp:attachment":[{"href":"https:\/\/corsaire-consulting.fr\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=565"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/corsaire-consulting.fr\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=565"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/corsaire-consulting.fr\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=565"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}