{"id":150,"date":"2024-01-15T17:28:26","date_gmt":"2024-01-15T17:28:26","guid":{"rendered":"https:\/\/cyber-resilience.mobi\/?p=150"},"modified":"2024-01-15T17:30:05","modified_gmt":"2024-01-15T17:30:05","slug":"principe-de-moindre-privilege","status":"publish","type":"post","link":"https:\/\/cyber-resilience.mobi\/?p=150","title":{"rendered":"Principe de moindre privil\u00e8ge"},"content":{"rendered":"\n<ul class=\"wp-block-list\">\n<li><strong>Principe de moindre privil\u00e8ge<\/strong>&nbsp;: Il s\u2019agit de n\u2019accorder aux utilisateurs que le niveau minimal de permissions dont ils ont besoin pour effectuer leurs t\u00e2ches. Entra ID vous aide \u00e0 appliquer ce principe en proposant un large \u00e9ventail de r\u00f4les int\u00e9gr\u00e9s et en vous permettant de cr\u00e9er des r\u00f4les personnalis\u00e9s et de les attribuer \u00e0 des utilisateurs ou \u00e0 des groupes en fonction de leurs responsabilit\u00e9s et de leurs besoins d\u2019acc\u00e8s.<\/li>\n\n\n\n<li><strong>Audit et surveillance des r\u00f4les<\/strong>&nbsp;: Il est important de v\u00e9rifier r\u00e9guli\u00e8rement les attributions de r\u00f4les et de g\u00e9n\u00e9rer des alertes sur les nouvelles attributions de r\u00f4les pour suivre et g\u00e9rer les attributions de r\u00f4les privil\u00e9gi\u00e9s. Vous pouvez \u00e9galement utiliser Entra ID pour r\u00e9viser et r\u00e9voquer les attributions de r\u00f4les qui ne sont plus n\u00e9cessaires ou appropri\u00e9es.<\/li>\n\n\n\n<li><strong>Permissions privil\u00e9gi\u00e9es<\/strong>&nbsp;: Il s\u2019agit des permissions qui peuvent \u00eatre utilis\u00e9es pour d\u00e9l\u00e9guer la gestion des ressources de l\u2019annuaire \u00e0 d\u2019autres utilisateurs, modifier les informations d\u2019identification, les politiques d\u2019authentification ou d\u2019autorisation, ou acc\u00e9der \u00e0 des donn\u00e9es restreintes.&nbsp;Les r\u00f4les Entra ID ont chacun une liste de permissions qui leur sont d\u00e9finies.&nbsp;Lorsqu\u2019une identit\u00e9 se voit attribuer un r\u00f4le, elle h\u00e9rite \u00e9galement des permissions d\u00e9finies dans le r\u00f4le.<\/li>\n\n\n\n<li><strong>Analyse des journaux d\u2019audit<\/strong>&nbsp;: Vous pouvez utiliser les journaux d\u2019audit Entra ID pour interroger et identifier les utilisateurs qui ont des r\u00f4les inutiles et sur privil\u00e9gi\u00e9s. Vous pouvez ensuite trouver un r\u00f4le alternatif appropri\u00e9 pour eux.&nbsp;Vous pouvez envoyer les journaux d\u2019audit Entra ID \u00e0 un espace de travail Log Analytics ou les connecter \u00e0 une instance Sentinel.<br><br>Pour ing\u00e9rer les journaux d\u2019audit d\u2019ID&nbsp;Entra dans Microsoft Sentinel, le connecteur de donn\u00e9es d\u2019ID Microsoft Entra&nbsp;doit \u00eatre activ\u00e9 et les&nbsp;<em>journaux d\u2019audit&nbsp;<\/em>doivent \u00eatre coch\u00e9s comme indiqu\u00e9 ci-dessous.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"323\" src=\"https:\/\/cyber-resilience.mobi\/wp-content\/uploads\/2024\/01\/log_entraid-1024x323.png\" alt=\"\" class=\"wp-image-151\" srcset=\"https:\/\/cyber-resilience.mobi\/wp-content\/uploads\/2024\/01\/log_entraid-1024x323.png 1024w, https:\/\/cyber-resilience.mobi\/wp-content\/uploads\/2024\/01\/log_entraid-300x95.png 300w, https:\/\/cyber-resilience.mobi\/wp-content\/uploads\/2024\/01\/log_entraid-768x243.png 768w, https:\/\/cyber-resilience.mobi\/wp-content\/uploads\/2024\/01\/log_entraid.png 1491w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"787\" src=\"https:\/\/cyber-resilience.mobi\/wp-content\/uploads\/2024\/01\/log_entraid2-1024x787.png\" alt=\"\" class=\"wp-image-153\" srcset=\"https:\/\/cyber-resilience.mobi\/wp-content\/uploads\/2024\/01\/log_entraid2-1024x787.png 1024w, https:\/\/cyber-resilience.mobi\/wp-content\/uploads\/2024\/01\/log_entraid2-300x231.png 300w, https:\/\/cyber-resilience.mobi\/wp-content\/uploads\/2024\/01\/log_entraid2-768x591.png 768w, https:\/\/cyber-resilience.mobi\/wp-content\/uploads\/2024\/01\/log_entraid2.png 1069w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La requ\u00eate ci-dessous donne une liste unique des activit\u00e9s qu\u2019un compte a effectu\u00e9es, ainsi que les r\u00f4les qui lui ont \u00e9t\u00e9 attribu\u00e9s :\u00a0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AuditLogs \n| where TimeGenerated &gt; ago(90d) \n| extend ActorName = iif( \n                         isnotempty(tostring(InitiatedBy&#91;\"user\"])),  \n                         tostring(InitiatedBy&#91;\"user\"]&#91;\"userPrincipalName\"]), \n                         tostring(InitiatedBy&#91;\"app\"]&#91;\"displayName\"]) \n                     ) \n| extend ActorID = iif( \n                       isnotempty(tostring(InitiatedBy&#91;\"user\"])),  \n                       tostring(InitiatedBy&#91;\"user\"]&#91;\"id\"]), \n                       tostring(InitiatedBy&#91;\"app\"]&#91;\"id\"]) \n                   ) \n| where isnotempty(ActorName) \n| join (IdentityInfo \n    | where TimeGenerated &gt; ago(7d) \n    | where strlen(tostring(AssignedRoles)) &gt; 2 \n    | summarize arg_max(TimeGenerated, *) by AccountUPN \n    | project AccountObjectId, AssignedRoles) \n    on $left.ActorID == $right.AccountObjectId \n| summarize Operations = make_set(OperationName) by ActorName, ActorID, Identity, tostring(AssignedRoles) \n| extend OperationsCount = array_length(Operations) \n| project ActorName, AssignedRoles, Operations, OperationsCount, ActorID, Identity \n| sort by OperationsCount desc <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cela donnera des r\u00e9sultats pour tous les comptes qui ont effectu\u00e9 des t\u00e2ches dans Entra ID et peut g\u00e9n\u00e9rer trop d\u2019op\u00e9rations qui n\u2019\u00e9taient pas privil\u00e9gi\u00e9es. Pour filtrer des r\u00f4les d\u2019ID d\u2019entr\u00e9e sp\u00e9cifiques, la requ\u00eate suivante peut \u00eatre ex\u00e9cut\u00e9e \u00e0 l\u2019endroit o\u00f9 les r\u00f4les sont d\u00e9finis dans une liste. Trois r\u00f4les ont \u00e9t\u00e9 ajout\u00e9s \u00e0 titre d\u2019exemple, mais cette liste peut et doit \u00eatre \u00e9largie pour inclure d\u2019autres r\u00f4les :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>let PrivilegedRoles = dynamic(&#91;\"Global Administrator\", \n                               \"Security Administrator\", \n                               \"Compliance Administrator\" \n                              ]); \nAuditLogs \n| where TimeGenerated &gt; ago(90d) \n| extend ActorName = iif( \n                         isnotempty(tostring(InitiatedBy&#91;\"user\"])),  \n                         tostring(InitiatedBy&#91;\"user\"]&#91;\"userPrincipalName\"]), \n                         tostring(InitiatedBy&#91;\"app\"]&#91;\"displayName\"]) \n                     ) \n| extend ActorID = iif( \n                       isnotempty(tostring(InitiatedBy&#91;\"user\"])),  \n                       tostring(InitiatedBy&#91;\"user\"]&#91;\"id\"]), \n                       tostring(InitiatedBy&#91;\"app\"]&#91;\"id\"]) \n                   ) \n| where isnotempty(ActorName) \n| join (IdentityInfo \n    | where TimeGenerated &gt; ago(7d) \n    | where strlen(tostring(AssignedRoles)) &gt; 2 \n    | summarize arg_max(TimeGenerated, *) by AccountUPN \n    | project AccountObjectId, AssignedRoles) \n    on $left.ActorID == $right.AccountObjectId \n| where AssignedRoles has_any (PrivilegedRoles) \n| summarize Operations = make_set(OperationName) by ActorName, ActorID, Identity, tostring(AssignedRoles) \n| extend OperationsCount = array_length(Operations) \n| project ActorName, AssignedRoles, Operations, OperationsCount, ActorID, Identity \n| sort by OperationsCount desc <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois la requ\u00eate ex\u00e9cut\u00e9e, les r\u00e9sultats donnent un aper\u00e7u des activit\u00e9s effectu\u00e9es dans votre locataire Entra ID et des r\u00f4les de ces comptes<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9tant donn\u00e9 qu\u2019il n\u2019existe pas de table contenant les r\u00f4les qui ont \u00e9t\u00e9 attribu\u00e9s \u00e0 une identit\u00e9, vous devez ajouter la liste des utilisateurs \u00e0 la requ\u00eate et les filtrer. Il existe plusieurs fa\u00e7ons d\u2019obtenir une liste des utilisateurs auxquels un r\u00f4le d\u2019ID Entra sp\u00e9cifique a \u00e9t\u00e9 attribu\u00e9. Un moyen rapide de le faire est d\u2019acc\u00e9der \u00e0 Entra ID, puis de s\u00e9lectionner R\u00f4les et administrateurs. \u00c0 partir de l\u00e0, s\u00e9lectionnez le r\u00f4le et exportez les identit\u00e9s qui lui ont \u00e9t\u00e9 attribu\u00e9es. Il est important d\u2019avoir les noms d\u2019utilisateur principaux (UPN) des utilisateurs privil\u00e9gi\u00e9s. Vous devez ajouter ces UPN, ainsi que les r\u00f4les de l\u2019utilisateur, \u00e0 la requ\u00eate<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>datatable(UserPrincipalName:string, Roles:dynamic) &#91; \n    \"admin@contoso.com\", dynamic(&#91;\"Global Administrator\"]), \n    \"admin2@contoso.com\", dynamic(&#91;\"Global Administrator\", \"Security Administrator\"]), \n    \"admin3@contoso.com\", dynamic(&#91;\"Compliance Administrator\"]) \n] \n| join (AuditLogs \n        | where TimeGenerated &gt; ago(90d) \n        | extend ActorName = iif( \n                                isnotempty(tostring(InitiatedBy&#91;\"user\"])),  \n                                tostring(InitiatedBy&#91;\"user\"]&#91;\"userPrincipalName\"]), \n                                tostring(InitiatedBy&#91;\"app\"]&#91;\"displayName\"]) \n                            ) \n        | extend ActorID = iif( \n                            isnotempty(tostring(InitiatedBy&#91;\"user\"])),  \n                            tostring(InitiatedBy&#91;\"user\"]&#91;\"id\"]), \n                            tostring(InitiatedBy&#91;\"app\"]&#91;\"id\"]) \n                        ) \n        | where isnotempty(ActorName) ) on $left.UserPrincipalName == $right.ActorName \n| summarize Operations = make_set(OperationName) by ActorName, ActorID, tostring(Roles) \n| extend OperationsCount = array_length(Operations) \n| project ActorName, Operations, OperationsCount, Roles, ActorID \n| sort by OperationsCount desc <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois que vous avez ex\u00e9cut\u00e9 la requ\u00eate, les r\u00e9sultats donnent un aper\u00e7u des activit\u00e9s effectu\u00e9es dans votre locataire Entra ID par les utilisateurs que vous avez filtr\u00e9s.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La requ\u00eate ci-dessous donne une liste unique des activit\u00e9s qu\u2019un compte a effectu\u00e9es, ainsi que les r\u00f4les qui lui ont \u00e9t\u00e9 attribu\u00e9s :\u00a0 Cela donnera des r\u00e9sultats pour tous les comptes qui ont effectu\u00e9 des t\u00e2ches dans Entra ID et peut g\u00e9n\u00e9rer trop d\u2019op\u00e9rations qui n\u2019\u00e9taient pas privil\u00e9gi\u00e9es. Pour filtrer des r\u00f4les d\u2019ID d\u2019entr\u00e9e sp\u00e9cifiques, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26,20],"tags":[18,25,22],"class_list":["post-150","post","type-post","status-publish","format-standard","hentry","category-identite","category-kql-sentinel","tag-kql","tag-microsoft-entra-id","tag-sentinel"],"_links":{"self":[{"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=\/wp\/v2\/posts\/150","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=150"}],"version-history":[{"count":2,"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=\/wp\/v2\/posts\/150\/revisions"}],"predecessor-version":[{"id":154,"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=\/wp\/v2\/posts\/150\/revisions\/154"}],"wp:attachment":[{"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cyber-resilience.mobi\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}