Checkliste für gehärtete Container
Hinweis: Die hier aufgeführten Anforderungen sind Empfehlungen und Best Practices und keine verbindlichen Kriterien für die Listung auf container.gov.de. Die relevanten, automatisch durchgesetzten Zugangsvoraussetzungen sind in den Technischen Zugangsvoraussetzungen definiert. Dennoch wird den Betreuern dringend empfohlen, sich an die in dieser Checkliste beschriebenen Praktiken zu halten – sie spiegeln etablierte Sicherheitsstandards wider und erhöhen das allgemeine Sicherheitsniveau der veröffentlichten Images erheblich. Die folgende Liste wurde aus dem englischen Original übersetzt.
Ein gehärteter Container erfüllt die folgenden Sicherheits- und Transparenzanforderungen:
Sicherheit des Basis-Images
-
Es werden minimale Basis-Images verwendet (MUSS) - Der Container verwendet das kleinstmögliche Basis-Image (distroless, scratch oder minimal Alpine), um die Angriffsfläche zu reduzieren und die Identifizierung von Komponenten zu vereinfachen. Es sind nur die für die Anwendung erforderlichen Binärdateien und Bibliotheken enthalten. Dies reduziert die Anzahl potenzieller Schwachstellen und erleichtert die Verfolgung und Sicherung der tatsächlich in Ihrem Container enthaltenen Elemente. 1 2 3 4 5 6 7 8
-
Die Herkunft des Basisimages wird überprüft (MUSS) - Basisimages stammen aus vertrauenswürdigen Registern mit verifizierter Lieferkette, und ihre Signaturen und Attestations werden vor der Verwendung validiert. Dadurch werden Angriffe auf die Lieferkette verhindert, bei denen böswillige Akteure kompromittierte Basisimages in Ihren Build-Prozess einschleusen. 9 10 11 3 12 13 14 15
-
Es werden unveränderliche Artefaktreferenzen verwendet - Das Basisimage wird anhand eines Digest (SHA256) und nicht anhand eines veränderlichen Tags referenziert, um sicherzustellen, dass immer genau das richtige Artefakt abgerufen wird. Dadurch wird „Tag-Hijacking” verhindert, bei dem ein Angreifer ein getaggtes Image durch eine bösartige Version ersetzt. 9 12 13 5 6
-
Das Basisimage kann automatisch aktualisiert werden (oder nach einem festgelegten Zeitraum, um nicht Opfer eines Supply-Chain-Angriffs zu werden) (MUSS) - (Erfordert eine Herkunftsüberprüfung) Es gibt eine automatisierte Pipeline, um Aktualisierungen des Basisimages ohne manuelles Eingreifen zu erkennen, zu testen und bereitzustellen. Dadurch wird sichergestellt, dass Sicherheitspatches schnell angewendet werden, wodurch das Risiko bekannter Schwachstellen verringert wird. 16 12 13 17 18
Sicherheit des Build-Prozesses
-
Reproduzierbare Builds werden implementiert (SOLL) - Der Build-Prozess ist deterministisch und erzeugt aus demselben Quellcode und denselben Abhängigkeiten bitweise identische Images. Dies ermöglicht eine unabhängige Überprüfung, dass Ihr Container während des Build-Prozesses nicht manipuliert wurde. 19 20
-
Die Build-Umgebung ist isoliert - Builds werden in kurzlebigen, isolierten Umgebungen ausgeführt, die für jeden Build neu erstellt und anschließend zerstört werden, um eine Kreuzkontamination zu verhindern. Dadurch wird verhindert, dass bösartiger Code aus einem Build nachfolgende Builds infiziert oder Geheimnisse aus der Build-Umgebung stiehlt. 19
-
Die Herkunft des Builds wird bestätigt (SOLL) - Der Build-Prozess generiert eine kryptografisch signierte Herkunftsangabe über das Artifakt, idealerweise auf SLSA-Level 2 oder höher. Dadurch entsteht ein überprüfbarer Nachweis, dass der Container aus Ihrem legitimen Build-System stammt und nicht ersetzt wurde. 19 11
-
Container sind signiert (SOLL) - Container-Images werden kryptografisch signiert, um ihre Authentizität und Integrität zu überprüfen und somit sicherzustellen, dass sie nicht manipuliert wurden. Dies liefert einen kryptografischen Nachweis dafür, dass der Container aus einer vertrauenswürdigen Quelle stammt und seit seiner Erstellung nicht verändert wurde. 9 11 3 21
-
Abhängigkeiten aus dem Entwicklungs-/Kompilierungsprozess werden entfernt - Der Build-Prozess verwendet mehrstufige Builds, um sicherzustellen, dass Entwicklungswerkzeuge, Compiler und Abhängigkeiten zur Build-Zeit aus dem endgültigen Image ausgeschlossen werden. Dadurch werden unnötige Werkzeuge eliminiert, die Angreifer ausnutzen könnten, wenn sie Zugriff auf den laufenden Container erhalten. 2 3
-
Öffentliche Einsicht in alle verwendeten Software-Assets (MUSS) - Informationen zur Erstellung aller Software-Assets sind öffentlich verfügbar. Dies ermöglicht reproduzierbare Builds und die Überprüfung des Build-Prozesses durch Dritte. 22
-
Release-Änderungsprotokoll wird bereitgestellt (MUSS) - Alle Releases enthalten ein beschreibendes Änderungsprotokoll, in dem funktionale Änderungen, Sicherheitskorrekturen und Aktualisierungen von Abhängigkeiten dokumentiert sind. Dadurch können Benutzer die Auswirkungen von Updates beurteilen, was bei Sicherheitsaudits und der Dokumentation der Compliance hilfreich ist. 23
-
Testverfahren werden implementiert (MUSS) - Testverfahren werden implementiert und angewendet. Dadurch wird die Codequalität sichergestellt und verhindert, dass Fehler und Schwachstellen in Produktionsumgebungen gelangen. 24
-
Maßnahmen zur Speichersicherheit sind implementiert (SOLL) - Das Projekt ergreift Maßnahmen, um Probleme mit der Speichersicherheit zu reduzieren oder zu vermeiden. Dadurch wird das Risiko häufiger Sicherheitslücken wie Buffer overflows, Use-after-free und anderen Angriffen auf den Speicher reduziert. 25
-
Codeänderungen werden einer Peer-Review unterzogen (SOLL) - Alle Änderungen am Quellcode werden vor dem merge mit dem Main-Branch einer Peer-Review unterzogen. Dies erhöht die Codequalität, erkennt Sicherheitsprobleme frühzeitig und verhindert, dass bösartiger Code in die Codebasis gelangt. 26
-
Quellpakete enthalten nur Repository-Inhalte (MUSS) - Veröffentlichte Quellpakete enthalten keine Inhalte, die nicht im Repository des Projekts vorhanden sind oder nicht deterministisch aus diesem Repository generiert werden können. Dadurch wird verhindert, dass kompromittierter oder nicht geprüfter Code in Releases aufgenommen wird, und die Integrität der Lieferkette wird gewährleistet. 27
-
Alle Laufzeitabhängigkeiten sind im Image enthalten (MUSS) - Alle Module, Bibliotheken und Abhängigkeiten, die zur Laufzeit benötigt werden, sind im Image enthalten. Das Laden von Modulen zur Laufzeit ist nicht zulässig. Dies verhindert Supply-Chain-Angriffe zur Laufzeit und stellt sicher, dass das gescannte und signierte Image genau das enthält, was ausgeführt wird. 28
Komponentenverwaltung und Transparenz
-
Alle Komponenten sind identifiziert (MUSS) - Jede Softwarekomponente, Bibliothek und Abhängigkeit innerhalb des Containers wird katalogisiert und dokumentiert. Dadurch können Sie genau wissen, was Sie ausführen, und Ihre Gefährdung einschätzen, wenn neue Schwachstellen entdeckt werden. 29 30 31
-
Komponenten-PURLs werden mit CVE-Berichten abgeglichen (optional, wenn VEX mit URL implementiert und auf dem neuesten Stand gehalten wird) - Jede Komponente verfügt über eine Paket-URL (PURL), die einen automatischen Abgleich mit CVE-Datenbanken ermöglicht. Dadurch können automatisierte Tools Sie sofort benachrichtigen, wenn eine Komponente in Ihrem Container eine bekannte Schwachstelle aufweist. 29
-
Komponenten-Prüfsummen werden verifiziert - Alle Komponenten verfügen über kryptografische Prüfsummen (SHA256 oder stärker), die während des Build-Prozesses verifiziert werden. Dadurch wird erkannt, ob Abhängigkeiten während des Downloads oder der Speicherung beschädigt oder böswillig verändert wurden. 19
-
Für alle Komponenten oder neuesten Builds werden regelmäßig Updates bereitgestellt (SOLL) - Komponenten erhalten zeitnah Updates und Patches aus Upstream-Quellen, und Ihr Build-Prozess integriert diese Updates regelmäßig. Dadurch wird sichergestellt, dass Ihr Container vor neu entdeckten Schwachstellen in seinen Komponenten geschützt bleibt. 30
-
Komponenten werden automatisch zeitnah (oder nach einem festgelegten Zeitraum) aktualisiert (SOLL) - Es gibt eine automatisierte Pipeline, um Updates von Komponenten ohne manuelles Eingreifen zu erkennen, zu testen und bereitzustellen.Dadurch wird sichergestellt, dass Sicherheitspatches schnell angewendet werden, wodurch das Risiko bekannter Schwachstellen verringert wird. 16 30
-
Kein Fernzugriff im Image (SOLL) - Das Container-Image enthält keine Tools die einen Fernzugriff ermöglichen wie SSH, Telnet oder ähnliche Software. Dies reduziert die Angriffsfläche erheblich und verhindert, dass Angreifer integrierte Tools nutzen, um Zugriff auf den Container zu erlangen. 32
Geheimnisse und sensible Daten
- Keine Geheimnisse in Images (MUSS) - Anmeldedaten, API-Schlüssel, Zertifikate und andere sensible Daten werden niemals in Container-Images eingebettet, sondern zur Laufzeit über Geheimnisverwaltungssysteme eingefügt. Dadurch wird verhindert, dass Geheimnisse in Image-Layern offengelegt werden, die von jedem mit Zugriff auf das Image extrahiert werden können. 33 34 35
Laufzeitkonfiguration
-
Ressourcenbeschränkungen sind dokumentiert (MUSS) - Die erwarteten CPU-, Speicher- und Speicheranforderungen werden als Metadaten oder in der Begleitdokumentation dokumentiert, um Informationen für das Betreiben des Images bereitzustellen. Dies kann mithilfe von Labels erfolgen:
LABEL org.opencontainers.image.title="myapp" LABEL org.opencontainers.image.description="Web API for X" LABEL org.opencontainers.image.resource.cpu="500m" LABEL org.opencontainers.image.resource.memory="256Mi" LABEL org.opencontainers.image.resource.ephemeral-storage="1Gi"Dies ermöglicht eine ordnungsgemäße Ressourcenzuweisung, um Denial-of-Service-Angriffe zu verhindern, und stellt sicher, dass der Container innerhalb der erwarteten Parameter läuft. 36 37 38
-
Container läuft als Nicht-Root-Benutzer (MUSS) - Die Anwendung wird als nicht privilegierter Benutzer (UID > 1000) ausgeführt, um den potenziellen Schaden durch Container-Ausbrüche oder Exploits zu begrenzen. Dies schränkt die Möglichkeiten eines Angreifers ein, wenn er die Anwendung kompromittiert, und verhindert, dass er Systemdateien verändert oder seine Berechtigungen erweitert. 39 40 41 42
-
Das Laufzeitanwendungsprofil ist definiert (SOLL) - Sicherheitsprofile (AppArmor, SELinux, seccomp) werden erstellt und angewendet, um Systemaufrufe und Funktionen zu beschränken, die der Container zur Laufzeit nutzen kann. Dies bietet eine zusätzliche Verteidigungsebene, indem die Aktionen, die die containerisierte Anwendung ausführen kann, eingeschränkt werden, wodurch die Angriffsfläche reduziert wird. 43 44 45
-
Das Root-Dateisystem des Containers ist schreibgeschützt (MUSS) - Das Root-Dateisystem des Containers ist als schreibgeschützt konfiguriert; Schreibvorgänge finden nur in dedizierten Volumes statt. Dadurch wird verhindert, dass Angreifer den Container zur Laufzeit verändern oder Malware im Dateisystem des Containers dauerhaft installieren können. 46
-
Temporäre Daten verwenden kurzlebige Volumes (SOLL) - Temporäre Daten werden in dedizierte kurzlebige Volumes geschrieben, nicht in das Dateisystem des Containers. Dies ermöglicht ein zustandsloses Containerdesign, erlaubt saubere Neustarts und verhindert, dass temporäre Daten über Deployments hinweg bestehen bleiben. 47
-
Schreibgeschützte Daten verwenden schreibgeschützte Volumes (SOLL) - Daten, die nur gelesen werden, werden als schreibgeschützte Volumes gemountet. Dies verhindert versehentliche oder böswillige Änderungen an Konfigurationsdaten und setzt das Prinzip von least privilege durch. 48
-
Der Container ist für Neustarts und Node-Migrationen ausgelegt (SOLL) - Der Container ist zustandslos mit transaktionaler Verarbeitung konzipiert, sodass Neustarts und Node-Migrationen zur Laufzeit ohne Datenverlust oder Inkonsistenzen möglich sind. Dies ermöglicht Bereitstellungen ohne Ausfallzeiten, erhöht die Ausfallsicherheit und verhindert inkonsistente Zustände, die zu Sicherheitsproblemen führen könnten. 49
-
Zustandsprüfungen sind definiert (SOLL) - Es sind Lebens-, Bereitschafts- und/oder Startprüfungen definiert, um den Zustand des Containers zu überwachen. Dadurch kann die Plattform fehlerhafte oder kompromittierte Container automatisch erkennen und neu starten, was die Verfügbarkeit erhöht und die Angriffsfläche verringert. 50 51
-
Der Container ist nicht an bestimmte Benutzer-IDs gebunden (MUSS) - Die Ausführung der Anwendung funktioniert mit beliebigen Benutzer-IDs. Dies ermöglicht die Ausführung in Umgebungen, die Containern zufällige Benutzer-IDs zuweisen (z. B. OpenShift), und erhöht die Portabilität. 52
-
Der Container ist zur Laufzeit unveränderbar (MUSS) - Um Änderungen an den Konfigurationen von laufenden Containern vorzunehmen werden diese Container nicht angepasst sondern ersetzt. Dadurch wird sichergestellt, dass der laufende Container genau mit dem Image übereinstimmt, Konfigurationsabweichungen verhindert werden und reproduzierbare Bereitstellungen möglich sind. 53 54
-
Kein privilegierter Modus (MUSS) - Der Container läuft nicht im privilegierten Modus und verfügt über keine erweiterten Host-Rechte. Ausnahmen sind nur für Infrastruktur-Container zulässig. Dies verhindert das Angreifer aus Containern ausbrechen und schützt das Host-System davor, über den Container kompromittiert zu werden. 55
-
Container-UIDs/GIDs haben keine Host-Berechtigungen (MUSS) - Die im Container verwendeten Benutzer- und Gruppen-IDs benötigen keine Berechtigungen für die Dateien und Verzeichnisse des Hostsystems. Dadurch wird sichergestellt, dass der Angreifer selbst im Falle eines Ausbruch aus dem Container die Host-Ressourcen nicht manipulieren kann. 56
-
Anwendungsprotokollierung unterstützt forensische Analyse (SOLL) - Die Anwendung protokolliert sicherheitsrelevante Ereignisse in strukturierter Form: eingehende/ausgehende Anfragen, Authentifizierungsversuche, Autorisierungsfehler, Konfigurationsänderungen, usw. Die Protokolle enthalten keine sensiblen Daten. Dies ermöglicht eine forensische Analyse nach Sicherheitsvorfällen, unterstützt die Erkennung von Angriffsmustern und erfüllt Compliance-Anforderungen. 57
-
Alle Protokolle werden in stdout/stderr geschrieben (MUSS) - Alle Anwendungsprotokolle werden in die Standardausgabe (stdout) und die Standardfehlerausgabe (stderr) geschrieben, nicht in Protokolldateien im Dateisystem des Containers. Dies ermöglicht eine zentrale Protokollaggregation durch die Containerplattform, verhindert das Volllaufen des Dateisystems des Containers und stellt sicher, dass die Protokolle auch nach einem Neustart des Containers für forensische Analysen verfügbar bleiben. 58
Compliance- und Schwachstellenmanagement
-
SBOM ist attestiert (SOLL) - Es wird eine SBOM erstellt, die vollständig und kryptografisch attestiert ist, um den Inhalt des Containers zu bestätigen. Dies bietet eine manipulationssichere Bestandsaufnahme der Komponenten für Compliance, Lizenzmanagement, Sicherheitsscans und Incident Response. 29 30 3
-
Das Schwachstellenmanagement erfolgt zeitnah (SOLL) - Bekannte Schwachstellen werden bewertet, priorisiert und gemäß definierten SLAs auf der Grundlage ihres Schweregrads behoben. Dadurch wird sichergestellt, dass kritische Sicherheitsprobleme behoben werden, bevor Angreifer diese im Software-Produkt ausnutzen können. 16 30 3 59
-
VEX wird bestätigt (SOLL) - Es werden VEX-Dokumente (Vulnerability Exploitability eXchange) bereitgestellt und bestätigt, aus denen hervorgeht, welche Schwachstellen im spezifischen Container-Kontext ausnutzbar sind und welche gemindert wurden. Dies reduziert die sog. alert fatigue, indem dokumentiert wird, welche CVEs aufgrund von Konfigurations- oder Nutzungsmustern tatsächlich keine Auswirkungen auf Ihren Container haben. 16 30
Tagging-Format
Weitere Informationen finden Sie in der Tagging-Struktur.
Referenzen
Footnotes
-
NIST Special Publication 800-190, Section 4.1.2, listing 4, “base layers from minimalistic technologies […] to reduce attack surface areas” ↩
-
NIST Special Publication 800-190, Section 4.5.1, “Whenever possible, organizations should use these minimalistic OSs to reduce their attack surfaces and mitigate the typical risks and hardening activities associated with general-purpose OSs.” ↩ ↩2
-
Containers Secure Supply Chain Framework (CSSC), Microsoft, Build Stage, Recommended practices ↩ ↩2 ↩3 ↩4 ↩5 ↩6
-
ISO/IEC 27001:2022 – 8.25 Sicherer Entwicklungslebenszyklus
Regeln für die sichere Entwicklung von Software und Systemen müssen festgelegt und angewendet werden. ↩ -
ISO/IEC 27001:2022 – 8.26 Anwendungssicherheit
Die Anforderungen an die Informationssicherheit müssen bei der Entwicklung oder Beschaffung von Anwendungen ermittelt, spezifiziert und genehmigt werden. ↩ ↩2 -
ISO/IEC 27001:2022 – 8.27 Sichere Systemarchitektur
Grundsätze für die Entwicklung sicherer Systeme müssen festgelegt, dokumentiert, aufrechterhalten und bei allen Aktivitäten der Informationssystemsentwicklung angewendet werden. ↩ ↩2 -
ISO/IEC 27001:2022 – 8.28 Sichere Codierung
Bei der Softwareentwicklung müssen die Grundsätze der sicheren Codierung angewandt werden. ↩ -
“Vorgaben für möglichst minimale Images festlegen und veröffentlichen. (SYS1.6.A6 S)” ↩
-
NIST Special Publication 800-190, Section 4.1.5, “Organizations should maintain a set of trusted images and registries”, “identification of each image by cryptographic signature” ↩ ↩2 ↩3
-
BSI IT-Grundschutz 2023, SYS.1.6.A6 Verwendung sicherer Images (B), “Images nur aus vertrauenswürdigen Quellen stammen. Es MUSS eindeutig identifizierbar sein, wer das Image erstellt hat.”, “Die Quelle MUSS danach ausgewählt werden, dass die im Image enthaltene Software regelmäßig auf Sicherheitsprobleme geprüft wird und diese behoben sowie dokumentiert werden.” ↩
-
BSI IT-Grundschutz 2023, SYS.1.6.A12 Verteilung sicherer Images (S), “Quellen für Images als vertrauenswürdig klassifiziert wurden und warum”, “wie Images bzw. die im Image enthaltenen Softwarebestandteile aus vertrauenswürdigen Quellen bezogen und schließlich für den produktiven Betrieb bereitgestellt werden”, “Metadaten verfügen, die die Funktion und die Historie des Images nachvollziehbar machen”, “Digitale Signaturen SOLLTEN jedes Image gegen Veränderung absichern.” ↩ ↩2 ↩3
-
ISO/IEC 27001:2022 – 5.19 Informationssicherheit in Lieferantenbeziehungen
Es müssen Prozesse und Verfahren festgelegt und umgesetzt werden, um die mit der Nutzung der Produkte oder Dienstleistungen des Lieferanten verbundenen Informationssicherheitsrisiken zu beherrschen. ↩ ↩2 ↩3 -
ISO/IEC 27001:2022 – 5.21 Informationssicherheit in der IKT-Lieferkette
Es müssen Prozesse und Verfahren festgelegt und umgesetzt werden, um die mit der IKT-Produkt- und Dienstleistungslieferkette verbundenen Informationssicherheitsrisiken zu beherrschen. ↩ ↩2 ↩3 -
ISO/IEC 27001:2022 – 5.22 Überwachung von Lieferantendienstleistungen
Die Organisation muss regelmäßig die Informationssicherheitspraktiken der Lieferanten und die Erbringung von Dienstleistungen überwachen, überprüfen, bewerten und Änderungen steuern. ↩ -
“bewerten und sicherstellen, dass sämtliche Bestandteile seiner Anwendungsimages aus vertrauenswürdigen Quellen stammen. Dabei kann auf vom Plattformbetreiber freigegebene Base-Images aufgesetzt werden. (SYS.1.6.A6 S)” ↩
-
NIST Special Publication 800-190, Section 4.1.1, “use tools that take the pipeline-based build approach and immutable nature of containers and images into their design to provide more actionable and reliable results”, “There is a need for container technology-specific vulnerability management”, “prevent the progression of images that include vulnerabilities with Common Vulnerability Scoring System (CVSS) ratings above a selected threshold” ↩ ↩2 ↩3 ↩4
-
ISO/IEC 27001:2022 – 8.8 Technische Schwachstellen
Es müssen Informationen über technische Schwachstellen verwendeter Informationssysteme eingeholt, die Gefährdung der Organisation durch derartige Schwachstellen bewertet und angemessene Maßnahmen ergriffen werden. ↩ -
“bei sicherheitsrelevanten und featurebasierten Updates der Anwendungen oder der Standardimages neue Images erstellen und eindeutig versioniert innerhalb der vereinbarten Zeiträume / SLAs zur Verfügung stellen. (SYS.1.6.A14 S)” ↩
-
https://slsa.dev/spec/v1.2-rc1/build-track-basics, “Provenance showing how the package was built (Mistakes, documentation)”, “Signed provenance, generated by a hosted build platform (Tampering after the build)”, “Hardened build platform (Tampering during the build)” ↩ ↩2 ↩3 ↩4
-
BSI Secure Software Lifecycle for Open Source Software, TR-03185-2.BR.06 Requirements Build and Release, “Builds SHOULD be reproducible.” ↩
-
“das Image signieren. (SYS.1.6.A12 S)” ↩
-
BSI Secure Software Lifecycle for Open Source Software, TR-03185-2.BR.01 Requirements Build and Release, “Information on how to build all software assets MUST be publicly available.” ↩
-
BSI Secure Software Lifecycle for Open Source Software, TR-03185-2.BR.04 Requirements Build and Release, “All releases MUST provide a descriptive log of functional and security modifications.” ↩
-
BSI Secure Software Lifecycle for Open Source Software, TR-03185-2.QA.04 Requirements Quality, “Procedures for testing MUST be implemented and utilised.” ↩
-
BSI Secure Software Lifecycle for Open Source Software, TR-03185-2.QA.05 Requirements Quality, “The project SHOULD take measures to reduce or avoid memory safety issues.” ↩
-
BSI Secure Software Lifecycle for Open Source Software, TR-03185-2.QA.06 Requirements Quality, “All changes to the source code SHOULD be peer-reviewed.” ↩
-
BSI Secure Software Lifecycle for Open Source Software, TR-03185-2.BR.05 Requirements Build and Release, “Released source packages MUST NOT contain any content that is not present in the project’s repository or cannot be deterministically generated from that repository.” ↩
-
“dem Softwarebetreiber Container Images mit allen zur Runtime benötigten Modulen bereitstellen. Ein Nachladen von Modulen DARF NICHT erfolgen. (SYS.1.6.A6 S)” ↩
-
NIST Special Publication 800-190, Section 4.1.1, listing 2, “Visibility into vulnerabilities at all layers of the image, not just the base layer of the image but also application frameworks and custom software” ↩ ↩2 ↩3
-
BSI IT-Grundschutz 2023, SYS.1.6.A14 Aktualisierung von Images (S), “Patch- und Änderungsmanagement […] wann und wie die Updates der Images bzw. der betriebenen Software oder des betriebenen Dienstes ausgerollt werden” ↩ ↩2 ↩3 ↩4 ↩5 ↩6
-
BSI Secure Software Lifecycle for Open Source Software, TR-03185-2.QA.01 Requirements Quality, “A list of third-party components used in the software MUST be available.” ↩
-
“die Software so bereitstellen, dass keine Fernwartung möglich ist.1 (SYS.1.6.A16 S)” ↩
-
NIST Special Publication 800-190, Section 4.1.4, “Secrets (e.g., passwords, API keys, certificates) should not be stored in images” ↩
-
BSI IT-Grundschutz 2023, SYS.1.6.A8 Sichere Speicherung von Zugangsdaten bei Containern (B), “MUSS sichergestellt sein, dass Zugangsdaten nur an besonders geschützten Orten und nicht in den Images liegen” ↩
-
“sicherstellen, dass keine Zugangsdaten (z.B. Passworte, geheime/private Schlüssel, API-Keys, Schlüssel für symmetrische Verschlüsselungen) in Container-Images bzw. in Konfigurationsdateien gespeichert werden.2 (SYS.1.6.A8 B)” ↩
-
NIST Special Publication 800-190, Section 5.3, listing 4, “Implementing runtime controls that limit the container’s ability to abuse resources, escalate privileges, and run executables.” ↩
-
BSI IT-Grundschutz 2023, SYS.1.6.A15 Limitierung der Ressourcen pro Container (S), “Ressourcen auf dem Host-System, wie CPU, flüchtiger und persistenter Speicher sowie Netzbandbreite, angemessen reserviert und limitiert werden” ↩
-
“die Container mit Ressourcenbeschränkungen ausliefern (z.B. Datenmenge und Speicherzugriffe). (SYS.1.6A23 H)” ↩
-
NIST Special Publication 800-190, Section 4.1.2, “secure configuration best practices. For example, images should be configured to run as non-privileged users” ↩
-
BSI IT-Grundschutz 2023, SYS.1.6.A18 Accounts der Anwendungsdienste (S), “Die System-Accounts innerhalb eines Containers SOLLTEN keine Berechtigungen auf dem HostSystem haben” ↩
-
“für seine Software sicherstellen, dass diese mit minimalen Berechtigungen lauffähig ist.3 (SYS.1.6.A21 H)” ↩
-
“die Software so gestalten, dass die Container-Runtime und alle instanziierten Container nur von einem nicht-privilegierten System-Account ausgeführt werden, der keine erweiterten Rechte für den Container-Dienst bzw. das Betriebssystem des Host-Systems benötigt oder diese Rechte erlangen kann. Ausnahmen hiervon sind Container, welche Aufgaben des Host-Systems übernehmen. 1 (SYS.1.6.A17 S)” ↩
-
NIST Special Publication 800-190, Section 4.4.3, “profiles are another mechanism that can be used to constrain the system-level capabilities containers are allocated at runtime” ↩
-
NIST Special Publication 800-190, Section 4.4.4, “These tools should be able to automatically profile containerized apps using behavioral learning and build security profiles for them to minimize human interaction. ” ↩
-
BSI IT-Grundschutz 2023, SYS.1.6.A21 Erweiterte Sicherheitsrichtlinien (H), “Erweiterte Richtlinien SOLLTEN die Berechtigungen der Container einschränken.” ↩
-
“für seine Software sicherstellen, dass diese nicht in das Root-File-System des Containers schreiben darf. (SYS.1.6A23 H)” ↩
-
“das temporäre Speichern von Daten5 in dediziert dafür bereitgestellten Volumes (gängigerweise Ephemeral Storage) vornehmen. (SYS.1.6.A23 H)” ↩
-
“sicherstellen, dass Daten, die im Container ausschließlich gelesen werden, als Read-Only-Volume in den Container eingebunden werden. (SYS.1.6A23 H)” ↩
-
“die Anwendung Stateless gestalten, um die Mittel der Plattform bei einer Umsetzung von Hochverfügbarkeit nutzen zu können.2 (APP.4.4.A19 H)” ↩
-
“Start-up-Checks für den Start der Container implementieren.4 (APP.4.4.A11 S)” ↩
-
“Start-up-Checks für den Start der Container implementieren.3 (APP.4.4.A11 S)” ↩
-
“Der Softwarelieferant MUSS die Container Images so umsetzen, dass die Ausführung der Anwendung nicht an spezifische User IDs gebunden ist.” ↩
-
“Konfigurationsanpassungen so ausführen, dass keine manuellen Anpassungen in laufenden Containern erfolgen. (SYS.1.6.A9 S)” ↩
-
“sicherstellen, dass Updates von Software nicht im laufenden Container installiert werden. Bei persistenten Containern SOLLTE geprüft werden, ob in (absolut seltenen) Ausnahmefällen ein Update des jeweiligen Containers geeigneter ist, als den Container vollständig neu zu provisionieren.1 (SYS.1.6.A14 S)” ↩
-
“die Privilegien für Container auf das erforderliche Minimum begrenzen. (SYS.1.6.A17 S)” ↩
-
“die Software so gestalten, dass die genutzten User- und Group-ID’s keine Berechtigungen auf die System- und Datenbereiche des Hosts erfordern. (SYS.1.6.A18 S)” ↩
-
“die forensische Analyse unterstützen, indem u.a. die eingehenden und ausgehenden Requests, sowie Konfigurationsänderungen geloggt werden. (SYS.1.6.A22 H)” ↩
-
“alle Protokolldaten der Anwendung im Container über die Standardausgabe ausgeben.1 (SYS.1.6.A7 B)” ↩
-
“regelmäßig Images auf Schwachstellen und Schadcode prüfen2 und bei Bedarf geeignete Updates zur Verfügung stellen.3 (SYS.1.6.A6 S)” ↩