Fachartikel

Seite 2 - Automatisierung mit der PowerShell

Die PowerShell als Grundlage für IT-Automation
Die Evolution der PowerShell im täglichen Einsatz ist in den letzten Jahren sichtbarer geworden. Nachdem immer mehr Admins der täglichen Klickorgien leid waren, konnten sie mit der PowerShell Cmdlets viele Aufgaben auf der Kommandozeile ausführen – immer mehr davon gibt es sogar nur noch dort. Um Aufgabenstellungen in ihrer Gesamtheit besser abbilden zu können, bot sich in einem nächsten Schritt die Verwendung von PowerShell-Skripten an. Auch diese werden auf der Kommandozeile gestartet, heute oftmals noch lokal, nachdem sich der Administrator per RDP auf das System verbunden hat. Ein weiterer evolutionärer Schritt ist die Verwendung von PowerShell-Remoting. Somit lassen sich Befehle und Skripte auf entfernten Zielsystemen ausführen, ohne sich erst dort am System einloggen zu müssen.


Bild 3: Die Ziele einer Automation mit der PowerShell und die Schritte, die dorthin führen.

Die PowerShell eignet sich vor diesem Hintergrund perfekt für den Bottom-Up Ansatz, weil Admins damit:

  • für ihre tägliche Arbeit schnelle Verbesserungen und Ergebnisse erzielen
  • schrittweise persönliche Erfahrungen sammeln können
  • es ein kostengünstiger und wenig komplexer Einstieg ist
  • nicht jeder Admin sofort zum PowerShell-Profi werden muss

Jeder der genannten Punkte ist eine Voraussetzung und notwendige Erfahrung für eine spätere Automation mit PowerShell. Essenziell für die eigentliche Automation im IT-Betriebsteam sind dann die weiteren Fragestellungen:

  • Wie verwenden Administratoren die Skripte im Team?
  • Wie lässt sich eine zentrale Bereitstellung der Skripte sicherstellen?
  • Wer darf wann und wie welche Skripte auf welchen Systemen ausführen? Wie wird sichergestellt, dass die Skripte nur kontrolliert, richtliniengesteuert und jederzeit sicher auf den Zielsystemen verarbeitet werden?
  • Wie transparent ist das Ganze? Wo und wie erfolgt ein zentrales Reporting und welche Audit-Möglichkeiten sind notwendig?
  • Wie soll der Entwicklungs- und Testprozess für Skripte aussehen und wie lässt er sich im Betrieb etablieren?
In diesem Kontext könnte zum Beispiel die sicheren Delegation von Aufgaben eine der ersten Stufen für eine Automation mit der PowerShell sein.
Beispiel User Provisioning
User Provisioning bedeutet vereinfacht, Benutzerkonten in der IT-Infrastruktur und in Unternehmensanwendungen automatisch zu erstellen, zu ändern, zu deaktivieren und zu entfernen. Gleichzeitig sollen dabei auch die passenden Berechtigungen vergeben oder entzogen werden. Die Verwaltung von Benutzerkonten und Berechtigungen ist erfahrungsgemäß zeitraubend. Aber nicht nur das. Auch die Delegation der damit verbundenen Aufgaben etwa an den Service Desk stellt eine Herausforderung dar.

Um eine sichere Delegation zu ermöglichen, können zum Beispiel das Active Directory (AD) und Exchange mit Role Based Access Control (RBAC) versehen werden. Anschließend erfolgt dann eine Schulung der Service-Desk-Anwender für zwei administrativen Werkzeugen, die AD User und Computers Console sowie die Exchange Management Console. Das ist jedoch relativ aufwändig und auch unter Sicherheitsgesichtspunkten ist nicht unproblematisch. So etwa sieht ein wirksames Sicherheits-Schalenmodell einen direkten Zugriff von Service-Desk-Mitarbeitern auf zentrale Systeme gar nicht vor. Die Zugriffe erfolgen stattdessen immer indirekt, kontrolliert und überwacht.

Sehen wir uns dazu ein konkretes Beispiel an: Es soll ein neuer Benutzer im AD sowie eine Mailbox angelegt, der Zugriff auf Dateien und Drucker berechtigt, die Verteilerlisten aktualisiert und eine erste Mail mit weiteren Informationen versendet werden. Im klassischen Click, Copy & Paste erwarten den  Administrator eine Fülle von Fenstern, Tabs und Clicks. Reproduzierbarkeit und Nachvollziehbarkeit sind nicht wirklich gegeben, die Fehleranfälligkeit ist hoch, der Zeitaufwand entsprechend auch.

Nachdem ein Administrator erste Erfahrungen mit PowerShell-Befehlen gemacht hat, könnte ein Skript entstehen, das die Einzelaufgaben bündelt. Der Einsatz des Skripts auf der PowerShell Console führt nun zu einer höheren Reproduzierbarkeit mit deutlich weniger Fehlern, ein Logging verbessert auch die Nachvollziehbarkeit. Der Zeitaufwand sinkt merklich. In einem nächsten Schritt könnte der Administrator nach den guten Erfahrungen die Skriptanwendung im Team teilen. Er stellt das Skript allen zur Verfügung. Außerdem erklärt sich ein Mitarbeiter aus dem Service Desk bereit, am Experiment mit dem User-Provisioning-Skript teilzunehmen. Nach kurzer Zeit stellen sich jedoch gravierende Probleme ein:

  • Es gibt unterschiedliche Versionen des Skripts, weil einige Kollegen persönliche Anpassungen vorgenommen haben.
  • Die Ausführung und Ergebnisse der unterschiedlichen Skripte ist nicht mehr reproduzier- und vergleichbar.
  • Die Ausführung der Skripte in der persönlichen PowerShell Console verhindert eine einheitliche Protokollierung und damit Nachvollziehbarkeit.
  • Einige Kollegen im Team möchten das Skript zwar anwenden, fragen jedoch nach einer grafischen Eingabemaske, da sie die Befehlszeile und die vielen notwendigen Parameter für den Aufruf nicht immer sofort parat haben.
  • Bei der Anwendung des Skripts durch den Mitarbeiter im Service Desk stellt sich heraus, dass er zu viele administrative Berechtigungen bräuchte. Alternativ könnten diese Berechtigungen nur im Skript-Code hinterlegt werden. Eine viel zu hohes Sicherheitsrisiko.
  • Zu alledem wurde das Skript inzwischen weiterentwickelt und verbessert. Nötig wäre also ein Prozess, der Entwicklung, Test und Überführen von Skripten in die Produktion sicherstellt.
Bei genauer Betrachtung zeigen sich die zwei Seiten der Medaille: Auf der Pro-Seite ist zu vermerken, dass ein Anfang für die Automation gemacht ist und das PowerShell-Skript für das komplexe User Provisioning reproduzierbare Ergebnisse liefert. Die Kehrseite zeigt, dass die Anwendung der Lösung nur als Ein-Mann-Prozess reibungslos zu funktionieren scheint. Die Verwendung im Team scheitert an organisatorischen und technischen Hürden, an eine sichere Delegation ist nicht zu denken.

Der Administrator könnte in einem nächsten Schritt versuchen, die Skripte auf einem gemeinsamen Verzeichnis zu speichern. Die Erfahrungen sind aber oft eher schlecht, die Anzahl der persönlichen Varianten nimmt meist nicht wirklich ab. Auch um professioneller entwickeln zu können, fällt die Entscheidung häufig zugunsten Visual Studio Code mit einem zentralen Git. Versucht ein Administrator, mit Bordmitteln auch grafische Benutzerelemente für seine Kollegen zu implementieren, stellt er meist fest, dass das viel zu kompliziert ist und sich die Erfordernisse für den Service Desk darüber hinaus so nicht erfüllen lassen.

Stattdessen müsste er jetzt kompilierte EXE-Dateien an die einzelnen Mitarbeiter verteilen. Deren Ausführung verlangt allerdings die gleichen administrativen Rechte und Randbedingungen wie ein Skript. Außerdem lassen sich die Skripte immer noch nicht zentralisiert ausführen. Die Ausführungsberechtigungen stellen weiterhin ein Problem dar, ein zusammenhängendes und übergreifendes Reporting ist mit den verteilten Logdateien nicht handhabbar. Eine Richtlinienvorgabe, welches Skript wie und wo ausgeführt werden soll, ist unmöglich.

   Seite 1: Zwei Strategien zur Automation
   Seite 2: User Provisioning als Beispiel für Automation
   Seite 3: Komponenten einer Automationslösung

<< Vorherige Seite Seite 2 von 3 Nächste Seite >>
2.05.2018/ln/Frank Kresse, Head of Products Division bei der AppSphere AG
und Entwickler von ScriptRunner.

Nachrichten

Kommandozeile für die Cloud [20.02.2020]

Während die Cloud eine Vielzahl von Vorteilen bietet, wird die Verwaltung mehrerer Archivierungskonfigurationen und SLAs schwierig und erfordert oft eine Reihe von Tools. Rubrik, das Multi-Cloud Data Control-Unternehmen, hat nun ein auf Rubrik-APIs basierendes Command Line Interface namens rbkcli vorgestellt. Die Befehlszeilenschnittstelle erleichtert es Unternehmen, die administrativen Herausforderungen der Cloud auf einfachere Weise zu bewältigen. [mehr]

Fernzugriff für kleine Umgebungen [12.02.2020]

TeamViewer stellt mit "Remote Access" ein neues Angebot für Fernzugriffe vor. Dieses wurde speziell für Existenzgründer und kleine Unternehmen entwickelt. Möglich ist der Zugriff auf bis zu drei Computer, auch von Android- oder iOS-Geräten aus. [mehr]

Tipps & Tools

Download der Woche: Sniptool [19.02.2020]

Die meisten Screenshot-Werkzeuge sind in ihrem Umfang eingeschränkt und bieten keine oder nur wenige Funktionen zur Bildbearbeitung. Mit dem kostenlosen Programm "Sniptool" können Sie mehrere Screenshots erstellen und diese in einer Oberfläche kombinieren. Darüber hinaus lassen sich die Bilder mit Text, Pfeilen und verschiedenen Formen versehen. [mehr]

Mit 1820 Servern zum Supercomputer [18.02.2020]

52 Petaflops – also 52 Billiarden Operationen pro Sekunde – beträgt die Leistung des unlängst in Betrieb genommenen Supercomputers HPC5. Laut dem italienischen Gas- und Erdölkonzern Eni handelt es sich dabei um den derzeit schnellsten Supercomputer in privatwirtschaftlicher Hand. Der Rechner steht in einem Green Data Center des Unternehmens südlich von Mailand und nutzt vor Ort erzeugte Solarenergie zur Reduzierung der Emissionen. [mehr]

Buchbesprechung

Technik der IP-Netze

von Anatol Badach und Erwin Hoffmann

Anzeigen