Definition

Container-Repository

Ein Container-Repository ist eine Sammlung zusammengehöriger Container-Images, die dazu dienen, verschiedene Versionen einer Anwendung bereitzustellen. Ein Container wird anhand der Informationen in einem Container-Image von einer Software ausgeführt, dazu gehören mehrere Schichten von Code, Ressourcen und Tools. Ein Container-Repository enthält eine Sammlung solcher Images. Unternehmen verwenden Repositories, um Images zu verwalten, abzurufen und zu verteilen.

Container-Image-Repositories sind ein integraler Bestandteil von Entwicklungs- und Bereitstellungspraktiken, die Container und PaaS-Umgebungen (Platform as a Service) nutzen. DevOps-Teams nutzen Container, und die meisten Teams ziehen eine Vielzahl von Container-Images aus zahlreichen Quellen, zum Beispiel offenen, auf die Community ausgerichteten Registries, um eine schnellere und flexiblere Anwendungsentwicklung zu ermöglichen.

Ein Container-Repository hilft dabei, Container-Images mit seinem Team oder mit der breiteren Community der Repository-Plattform zu teilen. Ein öffentliches Repository ist ein Repository, zu dem eine größere Gemeinschaft Zugang hat, während ein privates Repository es Images innerhalb eines Accounts oder Teams privat hält.

Ein Beispiel für ein Container-Repository sind Docker-Repositories auf Docker Hub, das einen Ort für das Speichern und Veröffentlichen von Docker-Images mit verschiedenen Tags vorsieht. Das Tag ist ein Identifikator für ein Image in einem Repository.

Container-Repositories haben unter anderem die folgenden Vorteile:

  • Sie sind in der Regel als Teil von Containerdiensten wie Docker und Kubernetes verfügbar.
  • Organisation geben Container-Images entweder innerhalb von Teams oder für größere Gemeinschaften über öffentliche oder private Einstellungen frei.
  • Einige Container-Dienste stellen den Nutzern ein kostenloses privates Repository zur Verfügung, wenn sie ein Konto anlegen.
  • Sie erhöhen die Geschwindigkeit des Pushens und Pullens von Images.
  • Große Images führen zu Leistungs- oder Latenzproblemen, wenn Sie diese Bilder über das Internet abrufen müssen. Der Abruf von Images aus einem Repository innerhalb der eigenen Infrastruktur umgeht dieses Problem.
  • Das Abrufen von Images aus dem Internet bedeutet, dass eine Organisation vom Dienst abhängig ist, von dem sie die Images bezieht. Fällt dieser Dienst aus oder wird er kompromittiert, sind die Images nicht mehr zugänglich. Container-Repositories umgehen dieses potenzielle Problem.

Unterschied zwischen Container-Repository und Container-Registry

Auf den ersten Blick sind sich die Begriffe Container-Repository und Container-Registry recht ähnlich. Während ein Container-Repository eine Sammlung zusammengehöriger Container-Images ist, die zum Verwalten, Pullen und Pushen von Images verwendet wird, ist eine Container-Registry eine Sammlung von Repositories zum Speichern von Container-Images. Container-Registries speichern sowohl Container-Images als auch API-Pfade und Zugriffskontrollregeln speichern. Eine Registry kann öffentlich oder privat gehostet werden – wie ein Repository – oder von einer dritten Partei. Der wichtigste Unterschied zwischen einer Registry und einem Repository ist jedoch, dass eine Registry eine Sammlung von Repositories ist, während Repositories eine Sammlung von zusammengehörigen Images enthalten.

Ein Benutzer fungiert als Host für ein Container-Image, indem er das Image in eine Container-Registry einstellt, damit andere darauf zugreifen. Einer Container-Registry kann beispielsweise sinnvoll sein, wenn ein Unternehmen eine native Cloud-Anwendung hostet.

Repositories werden von vielen Container-Registry-Diensten unterstützt, wie zum Beispiel der Container Registry von Google Cloud Platform, Azure Container Registry und AWS Elastic Compute Cloud Container Registry.

Sicherheit

Die Sicherheit eines Container-Repositorys kann für ein bestimmtes Repository oder für eine größere Registry implementiert werden.

Images und Repositorys lassen sich auf ihre Sicherheit hin scannen. Die meisten Organisationen, die Registry- und Repository-Dienste anbieten, unterstützen ihre eigenen Scans. Docker Scans zum Beispiel wurde 2016 für offizielle Images veröffentlicht, die in Docker Hub gehostet werden, und kann als Add-on für private Docker-Repositories erworben werden. Docker Security Scanning lässt sich nutzen, indem ein Benutzer die dedizierte Scan-Option auswählt oder automatisch bei jedem Docker-Push in ein Repository. Jede Schicht eines Images wird gescannt, wobei die Softwarekomponenten in jeder Schicht identifiziert werden. Der Scan indiziert die Secure Hash Algorithms (SHA) jeder Komponente und vergleicht sie dann mit der National Vulnerability Database (Nationale Datenbank für Sicherheitsrisiken) in der Datenübertragungsrate (DTR) des Benutzers.

Die Benutzer sollten regelmäßige Scans ihres Repositorys planen, um mögliche Schwachstellen zu erkennen. Dies ist wichtig, da viele Teams Container-Images von Community-fokussierten Registries beziehen und nicht alle von ihnen validiert oder auf Sicherheitslücken geprüft werden.

Ein privater Secure-Socket-Shell-Schlüssel (SSH) kann ebenfalls erforderlich sein, wenn eine Anwendung innerhalb eines Docker-Images erstellt wird. Der Schlüssel zieht entweder Code aus dem privaten Repository, oder der Benutzer benötigt Sicherheitstoken.

Um ein Repository abzusichern, sollten Benutzer ihre Images ständig aktualisieren, um sicherzustellen, dass alle anfälligen Komponenten gepatcht sind. Nach der Aktualisierung sollten Benutzer einen neuen Build ausführen, um ein Image zu erstellen, zu markieren und als Test zu pushen, mit dem Ziel, das Image danach erneut zu scannen, um sicherzustellen, dass es frei von Schwachstellen ist.

Die Sicherheit der Registrierung bezieht sich auf kompromittierte Container, Schwachstellen, veralteten Code und Zugriff. Die Sicherheit von Registrys, die sich auf Repositories beziehen, umfasst kompromittierte Container aus schlecht verwalteten öffentlichen Repositories und einzelne Images. Auch der Zugriff ist ein Problem für Registries. Der Zugriff bezieht sich auf Benutzer, die Lese- und Schreibzugriff auf ein Image haben, sowie auf Benutzer, die ein Image bearbeiten oder löschen dürfen. Bei einem öffentlichen Repository unterliegt der Zugriff meist der Kontrolle des Repository-Administrators, im Gegensatz zu einem privaten Repository, bei dem die Benutzer den Zugriff aktiv verwalten müssen. Private Repositorys – wie Docker Hub – bieten den Nutzern ein grundlegendes Gefühl der Zugriffskontrolle.

Öffentliche Container gelten als weniger sicher, da einzelne Container-Images bösartigen oder veralteten Code enthalten können, der, wenn er nicht gepatcht wird, zu einem Datenverstoß führen kann. Wenn das Hauptanliegen eines Unternehmens die Sicherheit ist, dann sollte der erste Schritt darin bestehen, ein privates Registry oder Repository zu implementieren. Andere Sicherheitsansätze für Container-Registries umfassen die Zuweisung einer rollenbasierten Zugriffskontrolle (Role Based Access Control, RBAC), das digitale Signieren von Images, um sicherzustellen, dass jedes Image vertrauenswürdig ist, Authentifizierungsmethoden wie Zugriffstoken oder JavaScript Object Notation (JSON)-Schlüsseldateien oder Identitäts- und Zugriffsmanagementeinstellungen (IAM).

Spezifische Registries und Repositories bieten ebenfalls unterschiedliche Sicherheit. Amazon Elastic Container Registry vermarktet sich selbst als sicheres privates Container-Repository, da es Images im Ruhezustand verschlüsselt und komprimiert. Google Cloud Containers sichert und speichert Docker-Images über die Google Cloud Platform und ermöglicht die Kontrolle darüber, wer Images anzeigen, darauf zugreifen und herunterladen kann.

Sicherheitsteams sollten die verfügbaren Sicherheitsoptionen für Container-Image-Repositories mit allen Teams besprechen, die Container verwenden, um festzustellen, welche die beste Sicherheit und Benutzerfreundlichkeit bieten.

Diese Definition wurde zuletzt im Dezember 2022 aktualisiert

Erfahren Sie mehr über Containervirtualisierung