Product Logo

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:

  1. dem Parameter encrypt-page in der .gitlab-ci.yml
  2. einer CI/CD-Variable ENCRYPT_PASSWORD mit 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.

  1. Öffne dein GitLab-Projekt und gehe zu Einstellungen > CI/CD (Settings > CI/CD).
  2. Klappe den Abschnitt Variablen (Variables) auf und klicke auf Variable hinzufügen (Add variable).
  3. Fülle das Formular aus:
FeldWert
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
  1. Speichere die Variable.

Der Schlüssel muss genau ENCRYPT_PASSWORD heißen. Ein anderer Name wird von der Pipeline nicht gefunden.

Info

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.

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

  1. Öffne Einstellungen > CI/CD > Variablen.
  2. Bearbeite ENCRYPT_PASSWORD und speichere den neuen Wert.
  3. 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.

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 out als Artefakt herunterladen.

Nächste Schritte