{"id":2147,"date":"2026-06-18T15:48:57","date_gmt":"2026-06-18T13:48:57","guid":{"rendered":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/?p=2147"},"modified":"2026-06-19T10:02:09","modified_gmt":"2026-06-19T08:02:09","slug":"replacing-javas-securitymanager-with-an-agent-using-byte-buddy","status":"publish","type":"post","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/","title":{"rendered":"Remplacer le SecurityManager de Java  par un agent gr\u00e2ce \u00e0 Byte Buddy"},"content":{"rendered":"<p>Le <code>SecurityManager<\/code> de Java \u00e9tait un composant essentiel du mod\u00e8le de s\u00e9curit\u00e9 de Java. Il permettait de mettre en places des r\u00e8gles de s\u00e9curit\u00e9s en impl\u00e9mentant des m\u00e9thodes <code>check*()<\/code> telle que <code>checkExec(String cmd)<\/code> pour l&rsquo;ex\u00e9cution d&rsquo;une commande sur la machine h\u00f4te ou <code>checkRead(String file)<\/code> pour l&rsquo;acc\u00e8s en lecture \u00e0 un fichier. Plus de d\u00e9tail dans sa <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/21\/docs\/api\/java.base\/java\/lang\/SecurityManager.html\">JavaDoc<\/a>.<\/p>\n<p>Il a \u00e9t\u00e9 d\u00e9pr\u00e9ci\u00e9 en Java 17 (<a href=\"https:\/\/openjdk.org\/jeps\/411\">JEP 411<\/a>) et supprim\u00e9 en Java 24 (<a href=\"https:\/\/openjdk.org\/jeps\/411\">JEP 486<\/a>).<\/p>\n<p>Au sein de <a href=\"https:\/\/kestra.io\">Kestra<\/a>, la plateforme d&rsquo;orchestration universelle, nous l&rsquo;utilisions pour :<\/p>\n<ul>\n<li>Restreindre l&rsquo;acc\u00e8s au syst\u00e8me de fichier de la machine h\u00f4te (liste allow\/deny).<\/li>\n<li>Emp\u00eacher l&rsquo;ex\u00e9cution d&rsquo;une commande sur la machine h\u00f4te.<\/li>\n<li>Emp\u00eacher le d\u00e9marrage d&rsquo;un thread.<\/li>\n<li>Emp\u00eacher d&rsquo;arr\u00eater la JVM.<\/li>\n<\/ul>\n<p>Kestra a un syst\u00e8me de plugin extensible, chaque plugin pouvant ex\u00e9cuter de code non fiable, offrir de la s\u00e9curit\u00e9 avanc\u00e9e est primordiale dans les contextes d&rsquo;ex\u00e9cution critiques.<\/p>\n<p>Suite \u00e0 la suppression du <code>SecurityManager<\/code>, nous l&rsquo;avons remplac\u00e9 par un agent <a href=\"https:\/\/bytebuddy.net\">Byte Buddy<\/a> : les m\u00eames r\u00e8gles, impl\u00e9ment\u00e9es diff\u00e9remment.<\/p>\n<p>Ici, je vais uniquement prendre en exemple la restriction de l&rsquo;acc\u00e8s aux fichiers, mais la m\u00eame technique a \u00e9t\u00e9 utilis\u00e9e pour les autres r\u00e8gles de s\u00e9curit\u00e9.<\/p>\n<p>Byte Buddy est une librairie open source qui permet de cr\u00e9er ou modifier des classes \u00e0 l&rsquo;ex\u00e9cution de votre application. Elle offre une API haut-niveau et d\u00e9clarative qui ne n\u00e9cessite pas de connaissance du bytecode java. Il est utilis\u00e9 par beaucoup de framework populaire tel qu&rsquo;Hibernate, Mockito, OpenTelemetry, &#8230;<\/p>\n<p>Voici un exemple, <em>by-the-book<\/em> d&rsquo;un agent Byte Buddy pour intercepter l&rsquo;acc\u00e8s aux fichiers via un <code>RandomAccessFile<\/code>.<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\nstatic void main() {\n    Instrumentation instrumentation = ByteBuddyAgent.install(); \/\/ &lt;1&gt;\n\n    new AgentBuilder.Default() \/\/ &lt;2&gt;\n        .with(new AgentBuilder.Listener.WithErrorsOnly(AgentBuilder.Listener.StreamWriting.toSystemError())) \/\/ &lt;3&gt;\n        .type(ElementMatchers.is(RandomAccessFile.class)) \/\/ &lt;4&gt;\n        .transform((builder, _, _, _, _) -&gt;\n                builder.method(\n                        ElementMatchers.isMethod()\n                                                .and(ElementMatchers.named(&quot;open&quot;)) \/\/ &lt;5&gt;\n                            .and(ElementMatchers.takesArguments(String.class, int.class))\n                            .and(ElementMatchers.returns(void.class))\n                            .and(ElementMatchers.isPrivate())\n                    )\n                    .intercept(MethodDelegation.to(FileInterceptor.class)) \/\/ &lt;6&gt;\n            )\n            .installOn(instrumentation); \/\/ &lt;7&gt;\n}\n\npublic static class FileInterceptor { \/\/ &lt;8&gt;\n    public static void open(String path, int mode) {\n        throw new RuntimeException(&quot;You shall not pass&quot;);\n    }\n}\n<\/pre>\n<ol><li>Installe l&rsquo;agent Byte Buddy, c&rsquo;est une sorte de <em>meta agent<\/em> (mes mots) qui permet d&rsquo;installer facilement votre propre agent. Retourne une instance d&rsquo;<code>Instrumentation<\/code>.<\/li>\n<li>Pour cr\u00e9er notre agent, on va utiliser l&rsquo;<code>AgentBuilder<\/code> de Byte Buddy qui offre une API fluide permettant de cha\u00eener les transformations.<\/li>\n<li>Log les erreurs dans stderr.<\/li>\n<li>Cible la classe <code>RandomAccessFile<\/code>. <code>ElementMatchers<\/code> est une des classes centrale de Byte Buddy qui permet de cibler des \u00e9l\u00e9ments de votre code applicatif tels qu&rsquo;une classe, une m\u00e9thode, un champ, &#8230;<\/li>\n<li>Cible la m\u00e9thode nomm\u00e9e <code>open<\/code> qui prend en argument une <code>String<\/code> et un <code>int<\/code>, ne retourne rien, et est priv\u00e9e. C&rsquo;est la m\u00e9thode de la classe <code>RandomAccessFile<\/code> qui est appel\u00e9e pour chaque ouverture de fichier.<\/li>\n<li>D\u00e9l\u00e8gue l&rsquo;impl\u00e9mentation de cette m\u00e9thode \u00e0 la classe <code>FileInterceptor<\/code> : c&rsquo;est une des formes de transformation, on remplace la m\u00e9thode transform\u00e9e par une autre.<\/li>\n<li>Installe l&rsquo;agent dans l&rsquo;application.<\/li>\n<li>Une classe statique contenant une m\u00e9thode statique dont la signature correspond \u00e0 la m\u00e9thode intercept\u00e9e : cette m\u00e9thode sera appell\u00e9e \u00e0 la place de la m\u00e9thode correspondante de la classe  <code>RandomeAccessFile<\/code>.<\/li>\n<\/ol>\n<p>Cet exemple <em>by-the-book<\/em> ne marche h\u00e9las pas pour les classes internes du JDK charg\u00e9e au d\u00e9marrage de l&rsquo;application, donc, via le <strong>Bootstrap<\/strong> class loader. Pour celles-ci, il faut configurer sp\u00e9cifiquement l&rsquo;agent, et utiliser un <code>Advice<\/code> et non une d\u00e9l\u00e9gation de m\u00e9thode.<\/p>\n<p>Les <code>Advice<\/code> Byte Buddy, bien qu&rsquo;absent de la documentation, sont plus puissants et flexibles d&rsquo;utilisation qu&rsquo;une d\u00e9l\u00e9gation de m\u00e9thode ; ils reprennent les principes de la programmation orient\u00e9e aspect (AOP) en permettant de d\u00e9finir une m\u00e9thode appel\u00e9e avant ou apr\u00e8s l&rsquo;appel de la m\u00e9thode cible.<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\nstatic void main() {\n    Instrumentation instrumentation = ByteBuddyAgent.install();\n\n    new AgentBuilder.Default()\n            .ignore(ElementMatchers.none()) \/\/ &lt;1&gt;\n            .with(AgentBuilder.RedefinitionStrategy.REDEFINITION) \/\/ &lt;2&gt;\n            .with(new AgentBuilder.Listener.WithErrorsOnly(AgentBuilder.Listener.StreamWriting.toSystemError()))\n            .type(ElementMatchers.is(RandomAccessFile.class))\n            .transform((builder, _, _, _, _) -&gt;\n                builder.visit( \/\/ &lt;3&gt;\n                        Advice.to(FileInterceptor.class).on(\n                        ElementMatchers.isMethod()\n                                                .and(ElementMatchers.named(&quot;open&quot;))\n                            .and(ElementMatchers.takesArguments(String.class, int.class))\n                            .and(ElementMatchers.returns(void.class))\n                            .and(ElementMatchers.isPrivate())\n                    ))\n            )\n            .installOn(instrumentation);\n}\n\npublic static class FileInterceptor { \/\/ &lt;4&gt;\n    @Advice.OnMethodEnter\n    public static void openEnter(String path, int mode) {\n        IO.println(&quot;Try to access file: &quot; + path);\n    }\n\n    @Advice.OnMethodExit\n    public static void openExit(String path, int mode) {\n        throw new RuntimeException(&quot;You shall not pass&quot;);\n    }\n}\n<\/pre>\n<ol><li>Par d\u00e9faut, les classes du JDK sont ignor\u00e9es ; il faut configurer l&rsquo;agent pour n&rsquo;ignorer aucune classes.<\/li>\n<li>Par d\u00e9faut, les classes d\u00e9j\u00e0 charg\u00e9es ne sont pas re-transform\u00e9es ; il faut configurer l&rsquo;agent pour retransformer les classes d\u00e9j\u00e0 charg\u00e9es via red\u00e9finition. <\/li>\n<li>Au lieu de transformer une m\u00e9thode, on visite la m\u00e9thode avec un advice.<\/li>\n<li>Un advice est d\u00e9fini via des m\u00e9thodes annot\u00e9es par <code>@Advice.OnMethodEnter<\/code>, ex\u00e9cut\u00e9e avant l&rsquo;entr\u00e9e dans la m\u00e9thode cibl\u00e9es, et\/ou <code>@Advice.OnMethodExit<\/code>, ex\u00e9cut\u00e9e apr\u00e8s la sortie de la m\u00e9thode.<\/li>\n<\/ol>\n<p>Voil\u00e0, maintenant, vous savez tous les secrets de transformations de classes internes de la JVM !<\/p>","protected":false},"excerpt":{"rendered":"<p>Le SecurityManager de Java \u00e9tait un composant essentiel du mod\u00e8le de s\u00e9curit\u00e9 de Java. Il permettait de mettre en places des r\u00e8gles de s\u00e9curit\u00e9s en impl\u00e9mentant des m\u00e9thodes check*() telle que checkExec(String cmd) pour l&rsquo;ex\u00e9cution d&rsquo;une commande sur la machine h\u00f4te ou checkRead(String file) pour l&rsquo;acc\u00e8s en lecture \u00e0 un fichier. Plus de d\u00e9tail dans sa JavaDoc. Il a \u00e9t\u00e9 d\u00e9pr\u00e9ci\u00e9 en Java 17 (JEP 411) et supprim\u00e9 en Java 24 (JEP 486). Au sein de Kestra, la plateforme d&rsquo;orchestration&#8230;<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/\">Lire la suite<span class=\"screen-reader-text\"> Lire la suite<\/span><\/a><\/p><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[9],"tags":[235,234,11,214],"class_list":["post-2147","post","type-post","status-publish","format-standard","hentry","category-informatique","tag-agent","tag-bytebuddy","tag-java","tag-security"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"Le SecurityManager de Java \u00e9tait un composant essentiel du mod\u00e8le de s\u00e9curit\u00e9 de Java. Il permettait de mettre en places des r\u00e8gles de s\u00e9curit\u00e9s en impl\u00e9mentant des m\u00e9thodes check*() telle que checkExec(String cmd) pour l&#039;ex\u00e9cution d&#039;une commande sur la machine h\u00f4te ou checkRead(String file) pour l&#039;acc\u00e8s en lecture \u00e0 un fichier. Plus de d\u00e9tail dans\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"admin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Loic&#039;s Blog | Blog traitant du d\u00e9velopement informatique et de quelques autres sujets (voyages, \u00e9cologie, ...).\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Remplacer le SecurityManager de Java par un agent gr\u00e2ce \u00e0 Byte Buddy | Loic&#039;s Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"Le SecurityManager de Java \u00e9tait un composant essentiel du mod\u00e8le de s\u00e9curit\u00e9 de Java. Il permettait de mettre en places des r\u00e8gles de s\u00e9curit\u00e9s en impl\u00e9mentant des m\u00e9thodes check*() telle que checkExec(String cmd) pour l&#039;ex\u00e9cution d&#039;une commande sur la machine h\u00f4te ou checkRead(String file) pour l&#039;acc\u00e8s en lecture \u00e0 un fichier. Plus de d\u00e9tail dans\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-06-18T13:48:57+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-06-19T08:02:09+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Remplacer le SecurityManager de Java par un agent gr\u00e2ce \u00e0 Byte Buddy | Loic&#039;s Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Le SecurityManager de Java \u00e9tait un composant essentiel du mod\u00e8le de s\u00e9curit\u00e9 de Java. Il permettait de mettre en places des r\u00e8gles de s\u00e9curit\u00e9s en impl\u00e9mentant des m\u00e9thodes check*() telle que checkExec(String cmd) pour l&#039;ex\u00e9cution d&#039;une commande sur la machine h\u00f4te ou checkRead(String file) pour l&#039;acc\u00e8s en lecture \u00e0 un fichier. Plus de d\u00e9tail dans\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/informatique\\\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\\\/#article\",\"name\":\"Remplacer le SecurityManager de Java par un agent gr\\u00e2ce \\u00e0 Byte Buddy | Loic's Blog\",\"headline\":\"Remplacer le SecurityManager de Java  par un agent gr\\u00e2ce \\u00e0 Byte Buddy\",\"author\":{\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/#organization\"},\"datePublished\":\"2026-06-18T15:48:57+02:00\",\"dateModified\":\"2026-06-19T10:02:09+02:00\",\"inLanguage\":\"fr-FR\",\"commentCount\":2,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/informatique\\\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/informatique\\\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\\\/#webpage\"},\"articleSection\":\"informatique, agent, bytebuddy, java, security\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/informatique\\\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/category\\\/informatique\\\/#listItem\",\"name\":\"informatique\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/category\\\/informatique\\\/#listItem\",\"position\":2,\"name\":\"informatique\",\"item\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/category\\\/informatique\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/informatique\\\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\\\/#listItem\",\"name\":\"Remplacer le SecurityManager de Java  par un agent gr\\u00e2ce \\u00e0 Byte Buddy\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/informatique\\\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\\\/#listItem\",\"position\":3,\"name\":\"Remplacer le SecurityManager de Java  par un agent gr\\u00e2ce \\u00e0 Byte Buddy\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/category\\\/informatique\\\/#listItem\",\"name\":\"informatique\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/#organization\",\"name\":\"Loic's Blog\",\"description\":\"Blog traitant du d\\u00e9velopement informatique et de quelques autres sujets (voyages, \\u00e9cologie, ...).\",\"url\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/author\\\/admin\\\/\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/informatique\\\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b39eb909797d1241a4191e41489c1fbe0b3d68daf31e77779b61ce2f4422b52?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"admin\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/informatique\\\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\\\/#webpage\",\"url\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/informatique\\\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\\\/\",\"name\":\"Remplacer le SecurityManager de Java par un agent gr\\u00e2ce \\u00e0 Byte Buddy | Loic's Blog\",\"description\":\"Le SecurityManager de Java \\u00e9tait un composant essentiel du mod\\u00e8le de s\\u00e9curit\\u00e9 de Java. Il permettait de mettre en places des r\\u00e8gles de s\\u00e9curit\\u00e9s en impl\\u00e9mentant des m\\u00e9thodes check*() telle que checkExec(String cmd) pour l'ex\\u00e9cution d'une commande sur la machine h\\u00f4te ou checkRead(String file) pour l'acc\\u00e8s en lecture \\u00e0 un fichier. Plus de d\\u00e9tail dans\",\"inLanguage\":\"fr-FR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/informatique\\\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2026-06-18T15:48:57+02:00\",\"dateModified\":\"2026-06-19T10:02:09+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/\",\"name\":\"Loic's Blog\",\"description\":\"Blog traitant du d\\u00e9velopement informatique et de quelques autres sujets (voyages, \\u00e9cologie, ...).\",\"inLanguage\":\"fr-FR\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.loicmathieu.fr\\\/wordpress\\\/fr\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Remplacer le SecurityManager de Java par un agent gr\u00e2ce \u00e0 Byte Buddy | Loic's Blog","description":"Le SecurityManager de Java \u00e9tait un composant essentiel du mod\u00e8le de s\u00e9curit\u00e9 de Java. Il permettait de mettre en places des r\u00e8gles de s\u00e9curit\u00e9s en impl\u00e9mentant des m\u00e9thodes check*() telle que checkExec(String cmd) pour l'ex\u00e9cution d'une commande sur la machine h\u00f4te ou checkRead(String file) pour l'acc\u00e8s en lecture \u00e0 un fichier. Plus de d\u00e9tail dans","canonical_url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/#article","name":"Remplacer le SecurityManager de Java par un agent gr\u00e2ce \u00e0 Byte Buddy | Loic's Blog","headline":"Remplacer le SecurityManager de Java  par un agent gr\u00e2ce \u00e0 Byte Buddy","author":{"@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/#organization"},"datePublished":"2026-06-18T15:48:57+02:00","dateModified":"2026-06-19T10:02:09+02:00","inLanguage":"fr-FR","commentCount":2,"mainEntityOfPage":{"@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/#webpage"},"isPartOf":{"@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/#webpage"},"articleSection":"informatique, agent, bytebuddy, java, security"},{"@type":"BreadcrumbList","@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr#listItem","position":1,"name":"Home","item":"https:\/\/www.loicmathieu.fr\/wordpress\/fr","nextItem":{"@type":"ListItem","@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/#listItem","name":"informatique"}},{"@type":"ListItem","@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/#listItem","position":2,"name":"informatique","item":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/#listItem","name":"Remplacer le SecurityManager de Java  par un agent gr\u00e2ce \u00e0 Byte Buddy"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/#listItem","position":3,"name":"Remplacer le SecurityManager de Java  par un agent gr\u00e2ce \u00e0 Byte Buddy","previousItem":{"@type":"ListItem","@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/#listItem","name":"informatique"}}]},{"@type":"Organization","@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/#organization","name":"Loic's Blog","description":"Blog traitant du d\u00e9velopement informatique et de quelques autres sujets (voyages, \u00e9cologie, ...).","url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/"},{"@type":"Person","@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/author\/admin\/#author","url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/author\/admin\/","name":"admin","image":{"@type":"ImageObject","@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/2b39eb909797d1241a4191e41489c1fbe0b3d68daf31e77779b61ce2f4422b52?s=96&d=mm&r=g","width":96,"height":96,"caption":"admin"}},{"@type":"WebPage","@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/#webpage","url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/","name":"Remplacer le SecurityManager de Java par un agent gr\u00e2ce \u00e0 Byte Buddy | Loic's Blog","description":"Le SecurityManager de Java \u00e9tait un composant essentiel du mod\u00e8le de s\u00e9curit\u00e9 de Java. Il permettait de mettre en places des r\u00e8gles de s\u00e9curit\u00e9s en impl\u00e9mentant des m\u00e9thodes check*() telle que checkExec(String cmd) pour l'ex\u00e9cution d'une commande sur la machine h\u00f4te ou checkRead(String file) pour l'acc\u00e8s en lecture \u00e0 un fichier. Plus de d\u00e9tail dans","inLanguage":"fr-FR","isPartOf":{"@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/#website"},"breadcrumb":{"@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/#breadcrumblist"},"author":{"@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/author\/admin\/#author"},"creator":{"@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/author\/admin\/#author"},"datePublished":"2026-06-18T15:48:57+02:00","dateModified":"2026-06-19T10:02:09+02:00"},{"@type":"WebSite","@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/#website","url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/","name":"Loic's Blog","description":"Blog traitant du d\u00e9velopement informatique et de quelques autres sujets (voyages, \u00e9cologie, ...).","inLanguage":"fr-FR","publisher":{"@id":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/#organization"}}]},"og:locale":"fr_FR","og:site_name":"Loic's Blog | Blog traitant du d\u00e9velopement informatique et de quelques autres sujets (voyages, \u00e9cologie, ...).","og:type":"article","og:title":"Remplacer le SecurityManager de Java par un agent gr\u00e2ce \u00e0 Byte Buddy | Loic's Blog","og:description":"Le SecurityManager de Java \u00e9tait un composant essentiel du mod\u00e8le de s\u00e9curit\u00e9 de Java. Il permettait de mettre en places des r\u00e8gles de s\u00e9curit\u00e9s en impl\u00e9mentant des m\u00e9thodes check*() telle que checkExec(String cmd) pour l'ex\u00e9cution d'une commande sur la machine h\u00f4te ou checkRead(String file) pour l'acc\u00e8s en lecture \u00e0 un fichier. Plus de d\u00e9tail dans","og:url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/","article:published_time":"2026-06-18T13:48:57+00:00","article:modified_time":"2026-06-19T08:02:09+00:00","twitter:card":"summary","twitter:title":"Remplacer le SecurityManager de Java par un agent gr\u00e2ce \u00e0 Byte Buddy | Loic's Blog","twitter:description":"Le SecurityManager de Java \u00e9tait un composant essentiel du mod\u00e8le de s\u00e9curit\u00e9 de Java. Il permettait de mettre en places des r\u00e8gles de s\u00e9curit\u00e9s en impl\u00e9mentant des m\u00e9thodes check*() telle que checkExec(String cmd) pour l'ex\u00e9cution d'une commande sur la machine h\u00f4te ou checkRead(String file) pour l'acc\u00e8s en lecture \u00e0 un fichier. Plus de d\u00e9tail dans"},"aioseo_meta_data":{"post_id":"2147","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":[],"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-06-17 10:15:38","updated":"2026-06-19 09:00:32","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.loicmathieu.fr\/wordpress\/fr\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/\" title=\"informatique\">informatique<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tRemplacer le SecurityManager de Java  par un agent gr\u00e2ce \u00e0 Byte Buddy\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr"},{"label":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},{"label":"Remplacer le SecurityManager de Java  par un agent gr\u00e2ce \u00e0 Byte Buddy","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/remplacer-le-securitymanager-de-java-par-un-agent-grace-a-byte-buddy\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":739,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/les-optimisations-de-performances-de-java-9\/","url_meta":{"origin":2147,"position":0},"title":"Les optimisations de performances de Java 9","author":"admin","date":"vendredi 26 janvier 2018","format":false,"excerpt":"Dans un pr\u00e9c\u00e9dent article sur Java 9, j'avais parcouru les principales nouveaut\u00e9s \u00e0 destination des d\u00e9veloppeurs : http:\/\/www.loicmathieu.fr\/wordpress\/informatique\/les-nouveautes-de-java-9-pour-les-developeurs. Je vais ici parcourir les principales nouveaut\u00e9s ax\u00e9es sur la performance Je vais encore reprendre les principales JEP : JEP 143: Improve Contended Locking Optimisation des monitors Java (optimisation des locks) en\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1839,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-vers-une-integrite-par-defaut-de-la-jvm\/","url_meta":{"origin":2147,"position":1},"title":"Java : vers une int\u00e9grit\u00e9 par d\u00e9faut de la JVM","author":"admin","date":"mardi  4 f\u00e9vrier 2025","format":false,"excerpt":"Cet article est paru pour la premi\u00e8re fois dans le magazine Programmez! Hors s\u00e9rie #16. La Machine Virtuelle Java (JVM) est un environnement d'ex\u00e9cution qui permet \u00e0 des programmes \u00e9crits en Java (ou dans d'autres langages compil\u00e9s en bytecode Java) de s'ex\u00e9cuter sur diff\u00e9rents syst\u00e8mes d'exploitation et architectures mat\u00e9rielles. D\u00e8s\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1375,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-18-quoi-de-neuf\/","url_meta":{"origin":2147,"position":2},"title":"Java 18 : quoi de neuf ?","author":"admin","date":"mardi  4 janvier 2022","format":false,"excerpt":"Maintenant que Java 18 est features complete (Rampdown Phase One au jour d\u2019\u00e9criture de l\u2019article), c\u2019est le moment de faire le tour des fonctionnalit\u00e9s qu\u2019apporte cette nouvelle version, \u00e0 nous, les d\u00e9veloppeurs. Cet article fait partie d\u2019une suite d\u2019article sur les nouveaut\u00e9s des derni\u00e8res versions de Java, pour ceux qui\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1816,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-23-quoi-de-neuf\/","url_meta":{"origin":2147,"position":3},"title":"Java 23 : quoi de neuf ?","author":"admin","date":"jeudi 25 juillet 2024","format":false,"excerpt":"Maintenant que Java 23 est features complete (Rampdown Phase Two au jour d\u2019\u00e9criture de l\u2019article), c\u2019est le moment de faire le tour des fonctionnalit\u00e9s qu\u2019apporte cette nouvelle version, \u00e0 nous, les d\u00e9veloppeurs. Cet article fait partie d\u2019une suite d\u2019article sur les nouveaut\u00e9s des derni\u00e8res versions de Java, pour ceux qui\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1946,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-25-quoi-de-neuf\/","url_meta":{"origin":2147,"position":4},"title":"Java 25 : Quoi de neuf?","author":"admin","date":"vendredi  4 juillet 2025","format":false,"excerpt":"Maintenant que Java 25 est features complete (Rampdown Phase One au jour d\u2019\u00e9criture de l\u2019article), c\u2019est le moment de faire le tour des fonctionnalit\u00e9s qu\u2019apporte cette nouvelle version, \u00e0 nous, les d\u00e9veloppeurs. Cet article fait partie d\u2019une suite d\u2019article sur les nouveaut\u00e9s des derni\u00e8res versions de Java, pour ceux qui\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1877,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-24-quoi-de-neuf\/","url_meta":{"origin":2147,"position":5},"title":"Java 24 : quoi de neuf ?","author":"admin","date":"vendredi 10 janvier 2025","format":false,"excerpt":"Maintenant que Java 24 est features complete (Rampdown Phase One au jour d\u2019\u00e9criture de l\u2019article), c\u2019est le moment de faire le tour des fonctionnalit\u00e9s qu\u2019apporte cette nouvelle version, \u00e0 nous, les d\u00e9veloppeurs. Cet article fait partie d\u2019une suite d\u2019article sur les nouveaut\u00e9s des derni\u00e8res versions de Java, pour ceux qui\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/2147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/comments?post=2147"}],"version-history":[{"count":10,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/2147\/revisions"}],"predecessor-version":[{"id":2160,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/2147\/revisions\/2160"}],"wp:attachment":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/media?parent=2147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/categories?post=2147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/tags?post=2147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}