Übersicht

Auf dieser Seite finden Sie eine Übersicht über die Binärautorisierung.

Einführung

Die Binärautorisierung ist ein Dienst auf der Google Cloud Platform (GCP), der beim Bereitstellen von containerbasierten Anwendungen Sicherheit für die Softwarelieferkette bietet. Der Dienst ist eine Erweiterung von Google Kubernetes Engine (GKE) und erzwingt beim Deployment Sicherheitsrichtlinien. Die Binärautorisierung funktioniert mit Container-Images von Container Registry oder von einer anderen Container-Image-Registry.

Mit der Binärautorisierung können Sie jede Komponente Ihrer Softwarelieferkette automatisch und digital auf Qualität und Integrität prüfen, bevor die Anwendung in der Produktionsumgebung bereitgestellt wird.

Die Binärautorisierung ist Teil einer Deployment-Architektur, die Folgendes umfasst:

  • Container Registry oder eine andere Registry, in der die Container-Images gespeichert sind, die Sie bereitstellen möchten
  • GKE zum Ausführen der Images in einem Cluster
  • Container Analysis zum Speichern vertrauenswürdiger Metadaten, die beim Autorisierungsprozess verwendet werden
  • Die Binärautorisierung selbst, mit der das Deployment von Images in GKE anhand einer von Ihnen konfigurierten Richtlinie zugelassen oder blockiert werden kann

Die Binärautorisierung basiert auf der Spezifikation Kritis, die Teil des Open-Source-Projekts Grafeas ist.

Hintergrund

Mit GKE können Teams stark entkoppelte Systeme entwickeln, z. B. Systeme, die auf Mikrodienstarchitekturen beruhen. GKE ermöglicht die Nutzung von Prozessen mit kurzem Lebenszyklus im Zusammenhang mit Continuous Integration (CI) und Continuous Deployment (CD). In solchen Umgebungen wechselt die Software während des Stagings und der Tests häufig von Deployment-Cluster zu Deployment-Cluster. Dadurch lässt sich nicht immer sicher gewährleisten, dass die gesamte Software gemäß internen Best Practices und Standards erstellt, getestet, veröffentlicht und bereitgestellt wird.

Die Binärautorisierung verringert das Risiko, dass in dieser Art von Umgebung falsche, fehlerhafte oder nicht autorisierte Software bereitgestellt wird. Sie können mit diesem Dienst explizit angeben, welche internen Prozesse abgeschlossen werden müssen, bevor ein Container-Image in die einzelnen Deployment-Phasen übergeht, und dann prüfen, ob autorisierte Parteien den Abschluss des Prozesses bestätigt haben.

Die Binärautorisierung gibt keine internen Prozesse oder Best Practices für die Integrität und Qualität Ihrer Software vor. Stattdessen können Sie Ihre eigenen Praktiken festlegen und dafür das Deployment von Container-Images, die die erforderlichen Prüfungen nicht bestanden haben, einschränken.

Typische Anwendungsfälle

Bei den häufigsten Anwendungsfällen der Binärautorisierung werden Attestierungen genutzt. In diesen Fällen wird der eindeutige Digest beim Einrichten des Container-Images digital von einem Signaturgeber signiert, um eine Attestierung zu erstellen.

Beim Deployment verwendet die Binärautorisierungserzwingung einen Attestierer, um die Attestierung zu prüfen. Dadurch werden nur Container-Images mit bestätigten Attestierungen bereitgestellt.

Zu Anwendungsfällen mit Attestierungen gehören:

  • Die Build-Prüfung, bei der mit der Binärautorisierung geprüft wird, ob das Container-Image von einem bestimmten Build-System oder von einer CI-Pipeline (Continuous Integration) erstellt wurde.
  • Das Scannen auf Sicherheitslücken, wobei das mit CI erstellte Container-Image auch von Container Analysis gescannt wird und erkannte Sicherheitslücken behoben werden, bevor die CI-Pipeline selbst oder ein Mitarbeiter die Attestierung erstellt.
  • Die manuelle Prüfung, bei der ein Mitarbeiter, z. B. aus dem Bereich Qualitätssicherung (QA), die Attestierung manuell erstellt.

Eine vollständige schrittweise Anleitung zu Attestierungen finden Sie unter Erste Schritte mit der Console.

Lebenszyklus

Ein Deployment-Lebenszyklus für Container-Images kann aus den im Folgenden aufgeführten Phasen bestehen, wobei der Abschluss einer Phase Voraussetzung für das Eintreten in die nächste Phase ist:

  • Builds und Einheitentests
  • Deployment in einer Entwicklungsumgebung, in der keine Nutzer betroffen sind
  • Deployment in einer QA-Umgebung, in der nur interne Nutzer betroffen sind
  • Deployment in einer Canary-Umgebung, in der nur ein Bruchteil der externen Nutzer betroffen ist
  • Deployment in der Produktion

Nach dem Erstellen und Testen hat jede Phase eine eigene Deployment-Umgebung. In diesem Fall ist dies ein GKE-Cluster. Für jede Phase gelten außerdem eigene Kriterien, die erfüllt sein müssen, bevor ein Image in die nächste Phase übergehen kann. Mit der Binärautorisierung können Sie Kriterien dafür definieren, wann ein Image von einer Phase in eine andere Phase übergeben wird. Sie haben damit auch die Möglichkeit, die Kriterien zu erzwingen.

Features

Die Binärautorisierung bietet folgende Features:

  • Ein Richtlinienmodell, mit dem Sie die Einschränkungen für das Bereitstellen von Container-Images festlegen können
  • Ein Attestierungsmodell, mit dem Sie vertrauenswürdige Zertifizierungsstellen definieren können, die attestieren oder prüfen, ob die erforderlichen Prozesse in Ihrer Umgebung vor dem Deployment abgeschlossen wurden
  • Eine Erzwingungsfunktion, die verhindert, dass falsche, fehlerhafte oder nicht autorisierte Images in die Deployment-Umgebung übernommen werden

Richtlinienmodell

Die Binärautorisierung dient der Umsetzung eines Richtlinienmodells, wobei eine Richtlinie ein Satz von Regeln ist, die das Deployment von Container-Images in einem GKE-Cluster steuern. Die Regeln in einer Richtlinie geben die Kriterien an, die ein Image erfüllen muss, bevor es bereitgestellt werden kann. Eine typische Richtlinie legt fest, dass ein Container-Image eine bestätigte digitale Signatur haben muss, bevor es bereitgestellt werden kann.

Bei diesem Richtlinientyp gibt eine Regel an, welche vertrauenswürdigen Zertifizierungsstellen, als Signaturgeber bezeichnet, bestätigen müssen, dass die erforderlichen Prozesse abgeschlossen wurden und dass ein Image in die nächste Phase des Deployments übergehen kann. Ein Signaturgeber ist ein menschlicher Nutzer bzw. in den meisten Fällen ein Maschinenprozess wie ein Build- und Testsystem oder ein Teil der Continuous Deployment-Pipeline.

Im Entwicklungszyklus signieren die Signaturgeber digital global eindeutige Container-Image-Deskriptoren und erstellen so zertifizierte Anweisungen, die als Attestierungen bezeichnet werden. In einer späteren Deployment-Phase prüft die Binärautorisierung mithilfe von Attestierern das Zertifikat, mit dem bestätigt wird, dass die erforderlichen Prozesse in der Pipeline abgeschlossen wurden.

Weitere Informationen zum Richtlinienmodell der Binärautorisierung und zu anderen Konzepten finden Sie unter Schlüsselkonzepte.

Einrichtung

Zum Einrichten der Binärautorisierung müssen Sie den Dienst zuerst für die Projekte aktivieren, die zu Ihrer Deployment- und Autorisierungspipeline gehören. Danach erstellen Sie mit dem aktivierten Dienst GKE-Cluster nach Bedarf.

Anschließend definieren Sie die Richtlinie, in der die Einschränkungen für das Deployment von Container-Images festgelegt sind. Wenn Ihre Richtlinie vor dem Deployment Attestierungen verlangt, müssen Sie außerdem Attestierer einrichten, die die Attestierungen prüfen, bevor die zugehörigen Container-Images bereitgestellt werden können.

Weitere Informationen zu den Einrichtungsschritten finden Sie unter Übersicht über die Einrichtung.

Autorisierung

Damit ein Container-Image bereitgestellt werden kann, müssen alle erforderlichen Signaturgeber eine Attestierung erstellen, mit der bestätigt wird, dass das Image für die nächste Deployment-Phase bereit ist. Die Attestierung ist ein Eintrag, der den Registry-Pfad und den Digest des Container-Images enthält und der mit dem privaten kryptografischen Schlüssel des Signaturgebers digital signiert wurde.

Weitere Informationen zur Autorisierung finden Sie unter Attestierungen erstellen.

Erzwingung

Wenn Sie ein Container-Image in GKE bereitstellen, prüft die Binärautorisierung die Richtlinie und erzwingt alle Regeln, mit denen das Deployment gesteuert wird. Wenn die Regel Attestierer verlangt, prüft die Binärautorisierung, ob alle Attestierer das Image sicher bestätigt haben.

Wenn das Image die in der Richtlinie definierten Einschränkungen erfüllt, wird von der Binärautorisierung das Deployment im Cluster zugelassen. Ist dies nicht der Fall, blockiert der Dienst das Deployment und schreibt eine Nachricht in das Audit-Log. In dieser ist angegeben, warum das Image nicht der Richtlinie entspricht.

Weitere Informationen zum Deployment finden Sie unter Container bereitstellen.

Binärautorisierung mit VPC Service Controls schützen

Mit VPC Service Controls lässt sich das Risiko verringern, dass unbefugt Daten aus von Google verwalteten Diensten und Ressourcen kopiert oder übertragen werden.

Weitere Informationen zum Schützen von Ressourcen für die Binärautorisierung finden Sie unter Mit VPC Service Controls schützen.