Passwortschutz einrichten
So schützt du eine veröffentlichte Webseite mit einem Passwort. Das ist zum Beispiel während einer Abstimmungsphase sinnvoll, solange das Dokument noch nicht öffentlich sein soll.
Der Schutz besteht immer aus zwei Teilen:
- dem Parameter
encrypt-pagein der.gitlab-ci.yml - einer CI/CD-Variable
ENCRYPT_PASSWORDmit dem Passwort
Beide Teile sind nötig. Fehlt die Variable, veröffentlicht die Pipeline die Seite mit einem leeren Passwort. Es erscheint dann zwar eine Passwortabfrage, aber jede Person kommt mit einem leeren Feld auf die Seite.
Voraussetzungen
- Eine laufende Pipeline mit der Komponente
md-to-web, siehe CI/CD-Pipeline einrichten - Die Rolle Maintainer oder Owner im GitLab-Projekt, um CI/CD-Variablen anlegen zu können
Schritt 1: Passwort als CI/CD-Variable anlegen
Lege das Passwort zuerst an, bevor du die Verschlüsselung aktivierst.
- Öffne dein GitLab-Projekt und gehe zu Einstellungen > CI/CD (Settings > CI/CD).
- Klappe den Abschnitt Variablen (Variables) auf und klicke auf Variable hinzufügen (Add variable).
- Fülle das Formular aus:
| Feld | Wert |
|---|---|
| Schlüssel (Key) | ENCRYPT_PASSWORD |
| Wert (Value) | Dein Passwort, empfohlen sind mindestens 14 Zeichen |
| Typ (Type) | Variable |
| Sichtbarkeit (Visibility) | Maskiert (Masked), damit das Passwort nicht in den Job-Logs erscheint |
| Variable schützen (Protect variable) | Nur aktivieren, wenn der Branch oder Tag geschützt ist, siehe Hinweis unten |
- Speichere die Variable.
Der Schlüssel muss genau ENCRYPT_PASSWORD heißen. Ein anderer Name wird von der Pipeline nicht gefunden.
Für die Sichtbarkeit Maskiert verlangt GitLab einen Wert von mindestens 8 Zeichen ohne Leerzeichen und ohne Sonderzeichen wie ", ', $ oder \. Akzeptiert GitLab dein Passwort nicht, wähle ein längeres Passwort aus Buchstaben, Zahlen und den Zeichen @ : . ~ - _ +.
Hinweis zu geschützten Variablen
Die Option Variable schützen hat eine Nebenwirkung, die leicht übersehen wird: eine geschützte Variable steht nur Jobs auf geschützten Branches und geschützten Tags zur Verfügung. Läuft dein Deployment auf einem ungeschützten Branch oder Tag, ist die Variable im Job leer, und die Seite wird ohne wirksames Passwort veröffentlicht. Die Pipeline läuft dabei fehlerfrei durch.
Der Parameter deploy-only-on bestimmt, wo das Deployment läuft. Der Standardwert ist tags.
Du hast zwei Möglichkeiten:
- Empfohlen: Schütze den Branch oder Tag, von dem deployt wird, unter Einstellungen > Repository > Geschützte Branches bzw. Geschützte Tags. Für Tags kannst du dort das Muster
*eintragen, damit alle Tags geschützt sind. - Oder lasse Variable schützen deaktiviert. Dann steht das Passwort allen Jobs zur Verfügung, auch in Merge Requests aus Forks.
Schritt 2: Verschlüsselung in der Pipeline aktivieren
Setze encrypt-page in der .gitlab-ci.yml:
Der Wert muss die Zeichenkette "true" sein. Jeder andere Wert deaktiviert die Verschlüsselung.
Der Titel aus document-title erscheint als Überschrift auf der Passwortseite.
Der Passwortschutz ist eine Funktion der CI/CD-Komponente und steht nur im Easy Mode zur Verfügung. Im Developer Mode gibt es keinen entsprechenden Parameter.
Schritt 3: Ergebnis prüfen
Löse die Pipeline aus und öffne die veröffentlichte Seite in einem privaten Fenster. Es erscheint eine Passwortabfrage.
Prüfe dort zwei Dinge:
- Mit dem Passwort aus der Variable kommst du auf die Seite.
- Mit einem leeren Feld kommst du nicht auf die Seite.
Kommst du mit einem leeren Feld durch, war ENCRYPT_PASSWORD im Job nicht gesetzt. Die häufigste Ursache ist eine geschützte Variable auf einem ungeschützten Branch oder Tag. Gehe dann zurück zu Schritt 1.
Passwort ändern
- Öffne Einstellungen > CI/CD > Variablen.
- Bearbeite
ENCRYPT_PASSWORDund speichere den neuen Wert. - Löse die Pipeline erneut aus.
Die Seite wird bei jedem Deployment neu verschlüsselt. Nach dem nächsten erfolgreichen Deployment gilt nur noch das neue Passwort.
Es gibt keine Wiederherstellung für ein vergessenes Passwort. Hast du die Variable als maskiert und versteckt angelegt, kann der Wert nach dem Speichern nicht mehr angezeigt werden. Setze in diesem Fall einfach ein neues Passwort und deploye erneut.
Passwortschutz wieder entfernen
Setze encrypt-page: "false" oder entferne die Zeile ganz und löse die Pipeline erneut aus. Das nächste Deployment veröffentlicht die Seite ohne Passwortabfrage. Die Variable kannst du stehen lassen, sie wird dann nicht mehr verwendet.
Was der Passwortschutz nicht leistet
Der Passwortschutz ist eine leichte Hürde, kein vollständiger Zugriffsschutz. Wichtig zu wissen:
- Nur HTML-Dateien werden verschlüsselt. Alle anderen Dateien der Webseite bleiben ohne Passwort abrufbar, zum Beispiel der Suchindex
search-data.json, die JavaScript-Dateien unter_next/sowie Bilder und PDFs. Wer die genaue Adresse einer solchen Datei kennt, kann sie herunterladen. - Es ist ein gemeinsames Passwort für alle. Es gibt keine Benutzerkonten, keine Rechte pro Person und keine Aufzeichnung darüber, wer die Seite geöffnet hat.
- Die Build-Artefakte der Pipeline sind unverschlüsselt. Alle Personen mit Leserechten am Projekt können den Ordner
outals Artefakt herunterladen.
Verwende den Passwortschutz für Entwürfe und Abstimmungsphasen. Für vertrauliche oder personenbezogene Inhalte ist er nicht geeignet.
Nächste Schritte
- CI/CD-Pipeline einrichten - Grundkonfiguration der Pipeline
- CI/CD-Komponenten - alle Easy-Mode-Parameter im Überblick