{"id":459,"date":"2023-12-31T14:18:44","date_gmt":"2023-12-31T13:18:44","guid":{"rendered":"https:\/\/sparrow365.de\/?p=459"},"modified":"2024-11-04T20:22:12","modified_gmt":"2024-11-04T19:22:12","slug":"theater-gegen-overprivilege-pam-edition-theorie","status":"publish","type":"post","link":"https:\/\/sparrow365.de\/index.php\/2023\/12\/31\/theater-gegen-overprivilege-pam-edition-theorie\/","title":{"rendered":"Theater gegen Overprivilege: PAM Edition &#8211; Theorie"},"content":{"rendered":"<h2>Vorhang auf<\/h2>\n<p>Es gibt manche Dinge, die mich immer wieder <strong>st\u00f6ren<\/strong> &#8211; so frage ich mich oft, wo die ganzen <strong>API Rechte<\/strong> gerechtfertigt sein sollen, die von Applikationen gefordert werden.<br \/>\nUnd mit dem <strong>Privileged Access Management<\/strong> St\u00fcck habe ich doch einige Zeit verbracht &#8211; aber ich greife vorweg, lernen wir doch erst mal unsere Akteure f\u00fcr das heutige Schauspiel rund um \u00fcberm\u00e4\u00dfige Rechte kennen.<\/p>\n<h3>Das Monster &#8211; Overprivilege<\/h3>\n<p>Man kennt es vielleicht als Buzzword-Gegenst\u00fcck zu Least Privilege. Oder es wird einem vom Sicherheitsbeauftragten \/ der Security Abteilung als Argument f\u00fcr eine Identity Governance L\u00f6sung an die Wand gemalt.<\/p>\n<p>In den systemnahen IT-Teams kennt man es aber eher als die erste Anfrage, die ein Mitadministrator oder Entwickler stellt &#8211; es braucht nat\u00fcrlich jeder root, dbowner und lokalen Administrator. Denn in erster Linie steht meistens im Vordergrund, etwas zum laufen zu bringen, nicht ob man vielleicht \u00fcber das Ziel hinausschie\u00dft.   <\/p>\n<p>So schleichen sich oftmals mehr und mehr Rechte ein, die man gar nicht braucht, sondern nur dazu einladen <strong>miss<\/strong>braucht zu werden.<\/p>\n<h3>Die Festung &#8211; Entra ID<\/h3>\n<p>Entra ID ist die Mauer um nicht nur unsere Office 365-Daten sondern auch um immer mehr angebundene Applikationen &#8211; inzwischen oftmals m\u00e4chtiger als Active Directory fr\u00fcher war. Entsprechend wollen wir sicherstellen, dass diejenigen die hinter den Mauern sind wirklich nur genau dort Zutritt haben, wo wir es erwarten bzw. wollen.<\/p>\n<h3>Die Torw\u00e4rter &#8211; (PAM) Entwickler<\/h3>\n<p>Wir sind also davon abh\u00e4ngig, dass die Software, die gebaut wird, <em>sehr<\/em> genau darauf achtet was ben\u00f6tigt wird. Entwickler (und auch Admins) machen sich oft nicht gedanken, ob es vielleicht L\u00f6sungen mit weniger Rechten gibt, oder ob die angeforderten Rechte missbraucht werden k\u00f6nnten. Im Worst Case bietet <strong>Microsoft selbst<\/strong> nur Suboptimale Rechte an, so dass es gar nicht besser geht. <\/p>\n<p>Es gleicht also fast einem Wunder, wenn es mal nichts gibt wor\u00fcber man sich beschweren kann \ud83d\ude09<\/p>\n<p><br class=\"\"><\/p>\n<h3>Das Einfallstor &#8211; Kennwortrotation<\/h3>\n<blockquote>\n<p><em>Zur Erinnerung: wir konzentrieren uns gerade auf Overprivilege, PAM L\u00f6sungen sind in der Regel ein sehr gutes Tor<\/em><br \/>\n<em>Ich werde hier aber auch nicht versuchen ein PAM-System zu verkaufen, dazu gibt es genug <a href=\"https:\/\/delinea.com\/what-is\/privileged-access-management-pam#pam-software-capabilities\">Hersteller<\/a>, die ihre <a href=\"https:\/\/www.cyberark.com\/resources\/all-blog-posts\/why-intelligent-privilege-controls-are-essential-for-identity-security\">PAM<\/a>-L\u00f6sungen <a href=\"https:\/\/www.beyondtrust.com\/resources\/glossary\/privileged-access-management-pam#privileged-risks-privileged-threats-why-pam-is-needed\">anpreisen<\/a><\/em><\/p>\n<\/blockquote>\n<p>Stellen wir uns vor, es wird eine Privileged Access Management L\u00f6sung eingesetzt. Damit erschwert man b\u00f6swilligen Akteuren das Leben, aber meistens auch regul\u00e4ren Admins. Es gibt also immer zwei motivierte Gruppen, die gerne ohne PAM arbeiten w\u00fcrden. Ein Teil davon diese Beip\u00e4sse zu schlie\u00dfen ist es, dass idealerweise nach jedem Login die Kennw\u00f6rter der Konten rotiert werden.<\/p>\n<p>Es gibt auch mehr als genug andere Stellen an denen man vielleicht nur ein Kennwort zur\u00fccksetzen will, hier k\u00f6nnen wir aber konkrete Beispiele betrachten.<\/p>\n<p>Wir gehen also weiter mit dem gew\u00fcnschten Ergebnis, dass unser System Kennw\u00f6rter rotieren kann &#8211; <strong>sonst nichts<\/strong> &#8211; und sehen uns die Dokumentationen von den drei mir bekanntesten Herstellern an. Dabei werden wir recht schnell feststellen, dass wir uns oft mehr in die Festung holen als wir wollen&#8230;<\/p>\n<p><br class=\"\"><\/p>\n<h2>Der Angriff<\/h2>\n<p><em>Ich gehe davon aus, dass die PAM-L\u00f6sung nicht auch Herr \u00fcber den Account Lifecycle ist &#8211; also keine Benutzerkonten erstellt werden oder Rechte zugewiesen werden.<br \/>\nSonst wird die Betrachtung komplexer als ich mich traue in einen Blog Post zu packen.<br \/>\nIst Ihre PAM-L\u00f6sung auch ein Identity-Governance-System, bitte dieses Kapitel mit einer gro\u00dfen Prise Salz genie\u00dfen<\/em><\/p>\n<p><br class=\"\"><\/p>\n<blockquote>\n<p>Wer gute Artikel von Beratern oder Admins findet, wie man es in der Praxis machen sollte, gerne an mich weiterleiten &#8211; dass Hersteller oft nicht am besten mit ihrem Produkt umgehen ist bekannt<\/p>\n<\/blockquote>\n<p><br class=\"\"><\/p>\n<table>\n<thead>\n<tr>\n<th><strong><strong>____<\/strong><\/strong><\/th>\n<th><a href=\"https:\/\/docs.cyberark.com\/PrivCloud-SS\/Latest\/en\/Content\/PASIMP\/MSAzurePasswordManagement.htm\">CyberArk<\/a><\/th>\n<th><a href=\"https:\/\/www.beyondtrust.com\/docs\/beyondinsight-password-safe\/ps\/cloud\/admin\/add-assets\/configure-azure.htm\">BeyondTrust<\/a><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Geforderte Berechtigungen<\/td>\n<td><strong>Service Account<\/strong> <br class=\"\"> User Admin <br class=\"\"> Password Admin <br class=\"\"> <strong>Global Admin<\/strong><\/td>\n<td><strong>Application Permissions<\/strong> <br class=\"\"> UserAuthenticationMethod.ReadWrite.All <br class=\"\">  Domain.Read.All  <br class=\"\"> Group.Read.All <br class=\"\">  User.Read.All <br class=\"\"> <strong>Entra ID: Helpdesk administrator<\/strong> <br class=\"\"> <br class=\"\"> <em><a href=\"https:\/\/www.beyondtrust.com\/docs\/remote-support\/how-to\/vault\/azure-create-service-principal.htm\">&quot;F\u00fcr Service Account Verwaltung&quot;<\/a><\/em> <br class=\"\"> <strong>Entra ID: Privileged Authentication Administrator<\/strong> <br class=\"\"> Directory.AccessAsUser.All<\/td>\n<\/tr>\n<tr>\n<td>\u00dcberberechtigungen<\/td>\n<td>Das eigene Kennwort \u00e4ndern (nicht nur wiederherstellen) ben\u00f6tigt Admin Rechte im System<\/td>\n<td>UserAuthenticationMethod.ReadWrite.All kann nicht f\u00fcr Kennwortwechsel genutzt werden &#8211; mir ist nicht ganz klar wof\u00fcr der Scope genutzt werden soll<\/td>\n<\/tr>\n<tr>\n<td>Sonstiges<\/td>\n<td>Es ist angeblich nur f\u00fcr Global Admins ein Systeminterner Global Admin Account notwendig, in Realit\u00e4t muss aber schon f\u00fcr Mitglieder einer Role Assignable Group ein Privileged Authentication Administrator ran<\/td>\n<td>\u00c4nderungen bei Benutzern in Role Assignable Groups und mit Admin Rechten werden fehlschlagen, wenn nicht zuf\u00e4llig Service Accounts im Einsatz sind<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><br class=\"\"><\/p>\n<p><strong>Das Ergebnis<\/strong>: Wir haben jetzt neue Service Konten in unserer Umgebung mit <strong>Global Admin<\/strong> Rechten <em>(Privileged Authentication Admin kann auch Global Admin vergeben)<\/em>, nur um Passw\u00f6rter zu verwalten. Diese Applikationen k\u00f6nnen jetzt also <strong>vollen Zugriff<\/strong> auf unsere M365 Umgebung aus\u00fcben &#8211; Endger\u00e4te, Daten, Logins an Entra ID Enterprise Applikationen, etc. <\/p>\n<p><strong><em>Autsch!<\/em><\/strong><\/p>\n<p><br class=\"\"><\/p>\n<p>Zur <strong>Verteidigung<\/strong> der PAM-Hersteller, Entra ID ist nur <strong>ein Authentifizierungsanbieter unter anderen<\/strong> wie SSH, AD, Okta, etc., die angebunden werden k\u00f6nnen &#8211; es gibt also mehr als genug Bereiche an denen gearbeitet wird. Trotzdem finde ich die Umsetzung f\u00fcr gro\u00dfe sicherheitsfokussierte Firmen doch sehr unangenehm. Und wirklich einfach macht es ihnen Microsoft auch nicht.<\/p>\n<p><br class=\"\"><\/p>\n<h3>Mitschuld des Burgherren<\/h3>\n<p>Von Microsoft bekommen wir keine Werkzeuge, nur spezifische Authentifierungsmthoden zu verwalten. Wenn wir also z.B. eine Applikation haben, die nur User Onboarding nur Temporary Access P\u00e4sse generieren k\u00f6nnen soll, kann sie auch gleichzeitig MFA Methoden verwalten&#8230;<br \/>\n<em>Stand Januar 2024<\/em><\/p>\n<p>Suchen wir in den API Rechten nach AuthenticationMethod <a href=\"https:\/\/learn.microsoft.com\/en-us\/graph\/permissions-reference#userauthenticationmethodreadwrite\">finden wir nur Folgendes<\/a>:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/sparrow365.de\/wp-content\/uploads\/2023\/12\/image.png\" alt=\"AuthMethodsPermissions\" \/><\/p>\n<p>Ein <em>UserAuthenticationMethod.ReadWrite.<strong>Passwords<\/strong><\/em> Scope w\u00e4re wirklich sehr hilfreich&#8230;<\/p>\n<p><br class=\"\"><\/p>\n<h3>Die Gegenwehr<\/h3>\n<p>Ich habe relativ schnell die Idee <strong>verworfen<\/strong>, <strong>Administrative Units<\/strong> als Einschr\u00e4nkung zu nutzen &#8211; die notwendigen Rollen sind <a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity\/role-based-access-control\/admin-units-assign-roles#roles-that-can-be-assigned-with-administrative-unit-scope\">nicht verf\u00fcgbar<\/a>. Es w\u00fcrde auch generell <strong>keinen Sinn<\/strong> machen einen Global Admin nur auf bestimmte Benutzer einzuschr\u00e4nken, wenn er dann eh die Tenant-Einstellungen einfach <strong>\u00fcberschreiben<\/strong> k\u00f6nnte.<\/p>\n<p>Wer genau mitgelesen hat erinnert sich, dass ich <strong>drei<\/strong> gro\u00dfe PAM L\u00f6sungen betrachten wollte.<br \/>\nBei Delinea habe ich keinen dedizierten Entra ID Passwortmanager gefunden. Ich hatte anhand des Ergebnisses bei den anderen Anbietern \u00fcberlegt, das schon als Plus zu werten, aber ich denke ein &quot;Did not Qualify&quot; trifft es eher. Warum habe ich sie aber nicht aus dem Thema gestrichen?<\/p>\n<p>F\u00fcr Delinea m\u00fcsste man einen <strong>eigenen Passwort Connector<\/strong> f\u00fcr Entra ID bauen &#8211; und das w\u00fcrde ich, wenn es die M\u00f6glichkeit gibt, bei den anderen beiden auch Vorschlagen. So stellt sich die Frage &#8211; was w\u00fcrde ich tun, um nicht dieses Global Admin Monster in meiner Burg zu haben?<\/p>\n<p>Nun, wie schon in meinem <a href=\"https:\/\/sparrow365.de\/index.php\/2023\/12\/13\/414\/#toc-1\">passwortzentrischen Blogpost<\/a> angesprochen &#8211; ein Benutzer kann immer sein <strong>eigenes Kennwort \u00e4ndern<\/strong>, wenn er sich authentifizieren kann und das alte kennt &#8211; Wenn wir also zu einem Benutzer das Kennwort im Vault haben, ist der <a href=\"https:\/\/learn.microsoft.com\/en-us\/graph\/api\/user-changepassword?view=graph-rest-1.0&amp;tabs=http\">changePassword Endpunkt<\/a> f\u00fcr uns verf\u00fcgbar. Rein Theoretisch m\u00fcssen wir also gar keine Admin Rechte vergeben!<\/p>\n<p>Jetzt m\u00fcssten wir also nur noch eine L\u00f6sung finden, dass die PAM L\u00f6sung von Anfang an das Kennwort der Benutzer kennt die wir mit ihr verwalten wollen.<br \/>\nNachteil w\u00e4re, dass leider <strong>keine automatische Korrektur<\/strong> m\u00f6glich w\u00e4re, wenn ein Kennwort von dem in der PAM L\u00f6sung gespeicherten abweicht <em>(reconciliation)<\/em> &#8211; dort m\u00fcsste also wieder ein Admin t\u00e4tig werden. F\u00fcr mich w\u00e4re das ein akzeptabler tradeoff, weil das <strong>nicht oft vorkommen<\/strong> sollte.<\/p>\n<p><br class=\"\"><\/p>\n<p>Ist automatische reconciliation Pflicht w\u00e4re eine <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-functions\/functions-overview?pivots=programming-language-powershell\">Azure Function<\/a>, die <strong>nichts anderes<\/strong> tut als Kennw\u00f6rter zu rotieren, eine Alternative.<br \/>\nMit Entra ID <strong>Authentifizierung<\/strong> nat\u00fcrlich, damit nur berechtigte Identit\u00e4ten ein neues Kennwort abrufen k\u00f6nnen. Dann w\u00e4re die Azure Function zwar overpriviliged, aber es kann \u00fcber Bindung an eine <a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity\/managed-identities-azure-resources\/overview\">Managed Identity<\/a> eine viel <strong>striktere Trennung<\/strong> zwischen Applikation und Recht geschaffen werden &#8211; zus\u00e4tzlich w\u00e4re die Identity idealerweise in der Hand von jemandem, der sowieso die selben hochprivilegierte Rechte hat, statt dass sie jemand neuem zur verf\u00fcgung gestellt werden.<\/p>\n<p><br class=\"\"><\/p>\n<h2>Review<\/h2>\n<p>Wer jetzt im zweiten Akt schon einen Proof of Concept erwartet hat den muss ich entt\u00e4uschen &#8211; der Praktische Part <a href=\"https:\/\/sparrow365.de\/index.php\/2024\/02\/17\/theater-gegen-overprivilege-pam-edition-praxis\/\">wird ein separater Post<\/a>. <\/p>\n<p>Wir haben aber schon mal festgestellt, dass auch sicherheitsnahe Applikationen wie PAM-L\u00f6sungen nicht optimal Konzepte wie Least Privilege einhalten, aber es gibt trotzdem noch Optionen die wir ausloten k\u00f6nnten. Hoffentlich habe ich inspiriert, in Zukunft n\u00e4her auf die Rechte zu schauen die man vergibt, und ich freue mich auf R\u00fcckmeldung zu L\u00f6sungen oder Ideen!<\/p>\n<p><br class=\"\"><\/p>\n<p>Ich werde keine Kommentare moderieren und m\u00f6chte Ihre E-Mail-Adresse nicht; bitte beteiligen Sie sich an der Diskussion \u00fcber <a href=\"https:\/\/www.linkedin.com\/posts\/julian-sperling-4bba72228_theater-gegen-overprivilege-pam-edition-activity-7149060589519044610-3iq5?utm_source=share&amp;utm_medium=member_desktop\">meinen Zugeh\u00f6rigen LinkedIn Post<\/a>.<\/p>\n<p><br class=\"\"><\/p>\n<p>Wenn sie an den Dingen interessiert sind die ich tue <a href=\"https:\/\/www.linkedin.com\/in\/julian-sperling-4bba72228\/\">folgen sie mir auf LinkedIn<\/a>.   <\/p>\n<p><br class=\"\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vorhang auf Es gibt manche Dinge, die mich immer wieder st\u00f6ren &#8211; so frage ich mich oft, wo die ganzen API Rechte gerechtfertigt sein sollen, die von Applikationen gefordert werden. Und mit dem Privileged Access Management St\u00fcck habe ich doch einige Zeit verbracht &#8211; aber ich greife vorweg, lernen wir doch erst mal unsere Akteure&#8230; &raquo; <a class=\"read-more-link\" href=\"https:\/\/sparrow365.de\/index.php\/2023\/12\/31\/theater-gegen-overprivilege-pam-edition-theorie\/\">weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":464,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[72,70,156,162,64,52,56,160,150,148,152,154],"class_list":["post-459","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-me-id","tag-aad","tag-azure-ad","tag-best-practices","tag-cybersecurity","tag-entra","tag-entra-id","tag-graph-api","tag-minimize-access","tag-overprivilege","tag-pam","tag-pam-solutions","tag-privileged-access-management"],"_links":{"self":[{"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/posts\/459","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/comments?post=459"}],"version-history":[{"count":17,"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/posts\/459\/revisions"}],"predecessor-version":[{"id":546,"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/posts\/459\/revisions\/546"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/media\/464"}],"wp:attachment":[{"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/media?parent=459"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/categories?post=459"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/tags?post=459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}