Automatisierung mit dem security.manager NEXT
Verwalten von Zugriffsrechten in GitHub
Einer der großen Vorteile des security.manager NEXT liegt in seiner Automatisierbarkeit. Aber wie genau kann man sich dies zu Nutze machen? Mit dem folgenden Tipp auf Basis von GitHub wollen wir ein praktisches Beispiel dafür geben, wie Sie Zugriffsrechte verwalten und automatisch anwenden können. Damit lassen sich die folgenden Mehrwerte realisieren:
- Zugriffsrechte werden an einem zentralen Ort verwaltet, selbst wenn mehrere Personen diese administrieren und bearbeiten („Single Point of Truth“)
- Alle Änderungen werden historisiert, Sie können jederzeit einfach wieder auf historische Stände zurückgreifen.
- Nach Änderung von Zugriffsrechten wird der ArcGIS Server automatisch aktualisiert. Dies bedeutet mehr Komfort für den Administrator, beugt Fehlern bei der manuellen Administration vor und sorgt für Konsistenz der Zugriffsrechte zwischen ArcGIS Server und GitHub-Repository.
1. GitHub einreichen
Zunächst benötigen Sie also einen GitHub-Account. Wenn Sie noch keinen besitzen, können Sie sich auf https://github.com/ kostenlos registrieren. Nach der Anmeldung können Sie zunächst unter Repositories mit dem Button New ein neues Repository anlegen.
2. Repository einreichen
Vergeben Sie dabei einen Repository name (z. B. secman_policies), und stellen Sie das Repository auf Private, da Ihre Zugriffsrechte vermutlich nicht öffentlich sichtbar sein sollen.
3. Verwaltung des Repository mit Visual Studio Code
Nach der Erzeugung wird Ihnen ein Link angezeigt. Kopieren Sie diesen (HTTPS-) Link in die Zwischenablage. Anschließend öffnen Sie Visual Studio Code. Dies ist ein kostenloser Editor, der Ihnen weitgehende Unterstützung zur Verwaltung Ihres Repositorys und bei der Bearbeitung der Zugriffsrechte bietet. Falls VS Code bei Ihnen noch nicht installiert ist, installieren Sie diesen bitte. Klicken Sie auf die Schaltfläche (Source Control) Und wählen Sie im Menü des Eintrags Source Control die Option Clone aus.
Geben Sie nun die URL aus der Zwischenablage ein und wählen Sie Clone from URL aus. Nun können Sie ein Verzeichnis anlegen, in dem Sie Ihre Zugriffsrechte verwalten möchten. Anschließend können Sie Ihr Repository öffnen.
4. Zugriffsrechte definieren
Nun sehen Sie in der Verzeichnisstruktur Ihr neu erzeugtes Repository (falls Sie noch ein Welcome-Fenster sehen, können Sie dies einfach schließen). Wählen Sie neben dem Namen des Repositorys das Symbol New Folder, und legen Sie einen Unterordner mit dem Namen services an.
Jetzt können Sie beginnen, Ihre Zugriffsrechte zu definieren. Um für einen Service ein Zugriffsrecht anzulegen, erzeugen Sie dafür eine Datei mit dem Namen <Service-Name>.json (also z. B. SampleWorldCities.json). Für Services, die nicht im Stammverzeichnis des ArcGIS Servers, sondern in einem Unterverzeichnis liegen, legen Sie bitte auch in Ihrem Repository ein Unterverzeichnis mit dem gleichen Namen an und erzeugen dort die Dateien mit den Zugriffsrechten.
Weitere Informationen zur Strukturierung des Repositories können Sie unserer Online-Dokumentation entnehmen: https://docs.conterra.de/de/securitymanager-next/latest/reference/policy-cli.html#policies-working-directory
5. Änderung von Zugriffsrechten
Wenn Sie Änderungen an Ihren Zugriffsrechten vornehmen, sollten Sie diese in Ihrem GitHub-Repository aktualisieren. Wechseln Sie dazu wieder im VS Code auf die Ansicht Source Control, klicken Sie auf das + hinter Changes (Stage all changes) und geben eine kurze Beschreibung der Änderung in das Message-Textfeld ein. Anschließend klicken Sie auf das hinter dem Namen Ihres Repositories (Commit). Nun können Sie über die drei Punkte hinter dem Namen Ihres Repositorys die Funktion Push ausführen, um die Änderung in Ihr GitHub-Repository zu übertragen.
6. Anlegen eines Synchronisations-Scripts
Automatische Aktualisierung der Zugriffsrechte auf dem ArcGIS Server
Um nach einer Änderung der Zugriffsrechte in Ihrem Repository diese automatisch auf den ArcGIS Server zu übertragen und dort zu aktivieren, können Sie über GitHub Actions einen automatischen Prozess hinterlegen.
Zunächst legen Sie dazu im VS Code im Stammverzeichnis Ihres Repositorys eine Datei mit dem Namen sync.sh an. Editieren Sie diese Datei wie folgt:
# Abort on errors
#Abort on errors
set -e
SERVER=<Server-URL>
ROOT="./"
#login
TOKEN=$(echo $AGS_PASS | secmanctl login -d $SERVER -u $AGS_USR -p - --plain)
# sync
secmanctl sync -d $SERVER -f $ROOT -t $TOKEN
Ersetzen Sie dabei <Server-URL> durch die URL Ihres ArcGIS Servers. Bitte überprüfen Sie, dass dabei die Adresse <Server-URL>/admin zugreifbar ist.
Dieses Script führt eine Anmeldung am ArcGIS Server durch, speichert das Token, das als Ergebnis dieser Anmeldung zurückgegeben wird, in einer Variablen und ruft damit den sync-Befehl des security.manager-Kommandozeilen-Werkzeugs aus. Bitte beachten Sie, dass hier davon ausgegangen wird, dass der ArcGIS Server Token-Authentifizierung verwendet und mit vertrauenswürdigen HTTPS-Zertifikaten arbeitet. Eine genauere Dokumentation dieses Werkzeugs finden Sie unter https://docs.conterra.de/de/securitymanager-next/latest/reference/policy-cli.html.
Aktualisieren Sie ihr GitHub-Repository wie weiter oben beschrieben.
7. Erzeugen einer GitHub-Action
Wechseln Sie nun wieder zu GitHub, melden sich an und wählen Sie das Repository aus. Dort finden Sie einen Menü-Eintrag Actions. Wenn Sie diesen anklicken, erscheint als erste Option Simple workflow, klicken Sie hier auf Set up this workflow. In dem sich nun öffnenden Editierfenster vergeben Sie zunächst einen Namen (z. B. sync.yml) und löschen Sie anschließend die vorhandenen Code-Zeilen. Fügen Sie stattdessen folgenden Code ein:
# Sync workflow for security.manager NEXT
name: sync
env:
AGS_USR: ${{ secrets.USERNAME }}
AGS_PASS: ${{ secrets.PASSWORD }}
# Controls when the workflow will run
on:
# Triggers the workflow on push request events but only for the master branch
push:
branches: [ master ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
# This workflow contains a single job called "sync"
sync:
# The type of runner that the job will run on
runs-on: ubuntu-latest
.
steps:
- uses: actions/setup-node@v2
with:
node-version: '14'
- uses: actions/checkout@v2
- run: npm install @conterra/secmanctl -g
- run: bash ./sync.sh
Zunächst werden zwei Umgebungsvariablen gesetzt, die später mit dem Nutzernamen und dem Passwort eines ArcGIS-Administrator-Accounts belegt werden.
Weiterhin wird definiert, dass dieser Prozess bei jedem Push-Befehl und manuell ausgeführt werden kann.
Innerhalb des Jobs wird ausgewählt, auf welchem System der Job laufen soll (ubuntu-latest). Als nächstes wird npm installiert, um darüber das Kommandozeilenwerkzeug zu laden (siehe https://docs.conterra.de/de/securitymanager-next/latest/installation/installation.html#_installation_%C3%BCber_npm). In der letzten Zeile wird schließlich das sync.sh Script aufgerufen, dass die Synchronisation der Zugriffsrechte aus dem Repository auf den ArcGIS Server durchführt.
Über die Schaltfläche Start Commit werden die Änderungen gespeichert.
8. Sichere Hinterlegung von Nutzername und Passwort
Als letzter Schritt müssen noch der Nutzername und das Passwort des ArcGIS-Administratoraccounts hinterlegt werden. Diese Informationen sollten im GitHub-Repository auf keinen Fall im Klartext hinterlegt werden.
Darum klicken Sie in Ihrem GitHub-Repository auf Settings und weiter auf Secrets. Klicken Sie hier auf New repository secret und verwenden als Name USERNAME. Unter Value tragen Sie den Administrator-Benutzernamen des ArcGIS Servers ein und klicken Sie auf Add secret. Für das Passwort verfahren Sie ebenso und verwenden den Namen PASSWORD. Auf diese beiden Secrets wird nun bei Ausführung des Prozesses zurückgegriffen, um die Umgebungsvariablen zu füllen.
Somit haben Sie nun erfolgreich ein GitHub-Repository erstellt, das die Zugriffsrechte Ihres ArcGIS Servers verwaltet, und zudem sichergestellt, dass bei jeden „Push“ in dieses Repository der neue Stand auf den ArcGIS Server synchronisiert wird.
Dieses Vorgehen kann weiter ausgebaut werden, um beispielsweise mit Stage- und Produktionsumgebungen umzugehen.
Mehr Informationen zu security.manager NEXT finden Sie unter https://www.conterra.de/securitymanager