Cloud-Infrastruktur für PCI-Prüfungen absichern
DeveloperSteve Coochin
3. März 2022
0 Min. LesezeitDer PCI-Zertifizierungsprozess ist umfassend und betrifft die Infrastruktur, die Software und den Zugriff von Mitarbeitenden auf Systeme – insbesondere auf Datensätze und die Art des Zugriffs darauf. Diese Prüfungen sind nicht nur für die gesamte Zahlungsbranche entscheidend, sondern schaffen auch Vertrauen bei den Nutzenden, da sie wissen, dass ihre Daten geschützt sind. Bei der PCI-Compliance werden verschiedene Prüfungen durchgeführt, in der Regel von einer akkreditierten unabhängigen Stelle, um sicherzustellen, dass sichere Verfahren für den Umgang mit Daten vorhanden sind.
In diesem Blogbeitrag erfahren Sie, wie Sie Ihre Cloud-Infrastruktur absichern und PCI-konform gestalten können.
Welche Anforderungen gelten für die PCI-Compliance?
Der Payment Card Industry Data Security Standard, auch als PCI DSS bekannt, umfasst branchenweit regulierte Richtlinien zum Schutz sensibler Daten von Karteninhabern. Der Standard wird vom PCI Security Standards Council gepflegt, der alle Details des Standards festlegt – von Compliance-Vorschriften bis hin zu akkreditierten Anbietern für die PCI-DSS-Zertifizierung.
Die Anforderungen an die PCI-Compliance decken zahlreiche Punkte ab und betreffen insbesondere alle Aspekte des Softwareentwicklungslebenszyklus (SDLC). Eine vollständige Liste finden Sie hier. Die wichtigsten Anforderungen sind:
Installieren und pflegen Sie eine Firewall-Konfiguration, um Karteninhaberdaten zu schützen. Eine Firewall scannt den gesamten Netzwerkverkehr und blockiert den Zugriff nicht vertrauenswürdiger Netzwerke auf das System.
Ändern Sie die vom Anbieter vorgegebenen Standardpasswörter und andere Sicherheitsparameter des Systems. Diese Passwörter lassen sich leicht anhand öffentlich verfügbarer Informationen herausfinden und können von böswilligen Personen genutzt werden, um sich unbefugten Zugriff auf Systeme zu verschaffen.
Schützen Sie gespeicherte Karteninhaberdaten. Verschlüsselung, Hashing, Maskierung und Kürzung sind Methoden zum Schutz dieser Daten.
Verschlüsseln Sie die Übertragung von Karteninhaberdaten über offene, öffentliche Netzwerke. Starke Verschlüsselung, bei der ausschließlich vertrauenswürdige Schlüssel und Zertifikate zum Einsatz kommen, senkt das Risiko gezielter Hackerangriffe durch böswillige Personen.
Schützen Sie alle Systeme vor Malware und aktualisieren Sie die Antivirensoftware regelmäßig. Malware kann auf vielerlei Wegen in ein Netzwerk gelangen, etwa durch die Internetnutzung, E-Mails von Mitarbeitenden, Mobilgeräte oder Speichermedien. Aktuelle Antivirensoftware oder ergänzende Anti-Malware-Software verringert das Risiko, dass Malware Schwachstellen ausnutzt.
Entwickeln und pflegen Sie sichere Systeme und Anwendungen. Schwachstellen in Systemen und Anwendungen ermöglichen es skrupellosen Personen, sich privilegierten Zugriff zu verschaffen. Installieren Sie Sicherheitspatches umgehend, um Schwachstellen zu beheben und zu verhindern, dass diese ausgenutzt und Karteninhaberdaten kompromittiert werden.
Beschränken Sie den Zugriff auf Karteninhaberdaten auf autorisiertes Personal. Systeme und Prozesse müssen den Zugriff auf Karteninhaberdaten nach dem Need-to-know-Prinzip beschränken.
Identifizieren und authentifizieren Sie den Zugriff auf Systemkomponenten. Jede Person mit Zugriff auf Systemkomponenten sollte eine eindeutige Kennung (ID) erhalten, damit der Zugriff auf kritische Datensysteme nachvollziehbar ist.
Beschränken Sie den physischen Zugriff auf Karteninhaberdaten. Der physische Zugriff auf Karteninhaberdaten oder Systeme, in denen diese gespeichert sind, muss abgesichert werden, um unbefugten Zugriff oder die Entfernung von Daten zu verhindern.
Erfassen und überwachen Sie sämtliche Zugriffe auf Karteninhaberdaten und Netzwerkressourcen. Protokollierungsmechanismen sollten Aktivitäten von Nutzenden erfassen, die entscheidend sind, um Datenkompromittierungen zu verhindern, zu erkennen oder deren Auswirkungen zu minimieren.
Testen Sie Sicherheitssysteme und -prozesse regelmäßig. Neue Schwachstellen werden fortlaufend entdeckt. Systeme, Prozesse und Software müssen häufig getestet werden, um Schwachstellen aufzudecken, die von böswilligen Personen ausgenutzt werden könnten.
Pflegen Sie eine Informationssicherheitsrichtlinie für alle Mitarbeitenden. Eine wirksame Sicherheitsrichtlinie stellt sicher, dass Mitarbeitende die Sensibilität der Daten und ihre Verantwortung für deren Schutz verstehen.
PCI-Anforderungen speziell für die Infrastruktur
In diesem Beitrag befassen wir uns genauer mit der umfassenden Liste und insbesondere mit den Punkten, die im Rahmen des SDLC die Infrastruktur betreffen.
1.3 Verhindern Sie den direkten öffentlichen Zugriff zwischen dem Internet und allen Systemkomponenten in der Karteninhaberdatenumgebung.
Wie frühere Sicherheitsvorfälle gezeigt haben, unterstreicht dieser Punkt, wie wichtig es ist, sicherzustellen, dass Schwachstellen und Fehlkonfigurationen keinen unbefugten Zugriff auf zentrale Datenbanken ermöglichen. Das kann auch den Zugriff auf sitzungs- oder nutzerseitig erreichbare Komponenten betreffen.
2.2.2 Aktivieren Sie nur die Dienste, Protokolle, Daemons usw., die für die Funktion des Systems erforderlich sind.
2.2.4 Konfigurieren Sie die Sicherheitsparameter des Systems so, dass Missbrauch verhindert wird.
2.2.3 Implementieren Sie zusätzliche Sicherheitsfunktionen für erforderliche Dienste, Protokolle oder Daemons, die als unsicher gelten.
5.1.1 Stellen Sie sicher, dass Antivirenprogramme alle bekannten Arten von Schadsoftware erkennen, entfernen und vor ihnen schützen können.
5.2 Stellen Sie sicher, dass alle Antivirenmechanismen wie folgt gepflegt werden:
Sie sind auf dem neuesten Stand.
Sie führen regelmäßige Scans durch.
Sie erstellen Audit-Protokolle, die gemäß PCI DSS Requirement 10.7 aufbewahrt werden.
5.3 Stellen Sie sicher, dass Antivirenmechanismen aktiv ausgeführt werden und von Nutzenden weder deaktiviert noch verändert werden können, es sei denn, die Geschäftsleitung hat dies im Einzelfall ausdrücklich und für einen begrenzten Zeitraum genehmigt.
Glücklicherweise lassen sich all diese Punkte mit wenigen Klicks automatisch prüfen und ganz einfach mit einem kostenlosen Snyk-Konto in Prozessabläufe und Pipelines integrieren.
PCI-Prüfungen mit Snyk Container und Snyk IaC effizienter gestalten
Automatisierung begeistert mich immer. Für die PCI-Compliance bedeutet das, Sicherheitsscans in Ihren CI/CD-Pipelines einzurichten. Das bietet mehrere Vorteile, etwa die Erstellung von Protokollen und das Erkennen gefährdeter Bereiche in der Infrastruktur.
Sicherheitsscans lassen sich mit Snyk auf verschiedene Arten einrichten. Sehen wir uns einige Beispiele anhand von Googles E-Commerce-Projekt microservices-demo an.

Direkt aus dem Repository
Wenn Sie mitmachen möchten, können Sie zunächst das Repository microservices-demo forken.
Wenn Sie Code direkt in Ihr GitHub-Konto forken, können Sie ganz einfach auf bestehenden Plattformen aufbauen. Während der Entwicklung lässt sich der Code problemlos in Branches anpassen. Außerdem können Sie ihn in lokale Entwicklungsumgebungen klonen, um ihn zu testen und auszuführen.

Sicherheitsscans mit Snyk
Anschließend können Sie den Code auf verschiedene Arten testen. Eine Möglichkeit ist die Snyk CLI im Stammverzeichnis des Projekts. Mit snyk test können Sie lokale Tests ausführen, während snyk monitor die laufende Überwachung auf Schwachstellen ermöglicht.
Sie können das geforkte Code-Repository auch direkt über die Integration Snyk GitHub mit der Snyk-App verbinden. Melden Sie sich dazu bei Ihrem Snyk-Konto an und klicken Sie in meinem Snyk-Dashboard auf die Schaltfläche Projekt hinzufügen. Im Menü zum schnellen Hinzufügen von Projekten stehen verschiedene Integrationen zur Auswahl. Alternativ können Sie auf Andere klicken und nach Ihrer bevorzugten Git-Plattform suchen.

Sobald die GitHub-Integration verbunden ist, können Sie nach dem geforkten Repository microservices-demo suchen und einen ersten Scan starten.

Nach der Auswahl wird das Repository fortlaufend gescannt und erkannte Probleme werden angezeigt. Die Probleme werden für jede Projektkomponente in einzelnen Einträgen aufgeschlüsselt. So lassen sie sich leichter untersuchen.

Für die Nachverfolgung im Rahmen einer PCI-Prüfung ist besonders hilfreich, dass alle Ergebnisse im Verlaufsbereich des jeweiligen Eintrags gespeichert werden. Dort sehen Sie die erkannten Probleme und Empfehlungen zur Behebung aus jedem Scan – nützlich bei PCI-Compliance-Audits.

Darüber hinaus lässt sich Snyk in Programmier-IDEs integrieren, um Probleme bereits während der App-Entwicklung zu erkennen. Das ist besonders praktisch, da Sie so Probleme früh erkennen und direkt beim Programmieren Empfehlungen zur Behebung erhalten.
Sicherheit in die CI/CD-Pipeline integrieren
Automatisierung ist für alle Beteiligten in sämtlichen Phasen des SDLC von Vorteil. Sie erleichtert nicht nur regelmäßige Deployments, sondern legt auch die erforderlichen Schritte und Prozesse für ein Deployment fest. Eine leistungsfähige Automatisierungspipeline kann Code aus einem Git-Branch abrufen und ihn bereitstellen und deployen, wobei Tests in den gesamten Ablauf integriert sind.
Das Rückgrat jedes automatisierten SDLC ist die CI/CD-Pipeline, die so konfiguriert sein sollte, dass sie alle Aspekte Ihres SDLC miteinander verbindet.
Es wird dringend empfohlen, Sicherheit in Ihre CI/CD-Pipeline zu integrieren, denn auch Sicherheit sollte kontinuierlich gewährleistet sein. Snyk unterstützt Sie dabei und lässt sich in zahlreiche Pipelines sowie alle großen Cloud-Anbieter wie AWS, GCP und Azure integrieren. Weitere Informationen zu Best Practices für die CI/CD-Integration finden Sie auf unserer Seite zu CI/CD-Best-Practices.
Beispiel: Sicherheit in AWS CodePipeline
In diesem Beispiel integrieren wir Sicherheitsscans mithilfe der Snyk AWS-Integration in AWS CodePipeline.
Beginnen wir mit einer einfachen AWS CodePipeline, um ein Deployment mit der Demo-Anwendung microservices zu erstellen. Anschließend integrieren wir Snyk für Sicherheitsscans.

Rufen Sie das AWS-CodePipelines-Dashboard auf und klicken Sie auf Pipeline erstellen. Geben Sie auf dem Bildschirm „Schritt 1“ den Namen der Pipeline ein und wählen Sie eine Servicerolle aus. In Schritt 2 wählen Sie das Git-Repository aus, in dem sich der bereitzustellende Code befindet. Wenn Sie zum ersten Mal eine Verbindung zum Git-Dienst herstellen, führt Sie der Prozess durch die Verbindungseinrichtung und fordert die erforderlichen Berechtigungen an.

Sobald der Speicherort des Quellcodes verbunden ist, können Sie das Repository und den Branch für den Deployment-Ablauf auswählen.
Tipp: Wenn Sie hier eine Verbindung zu GitHub herstellen, verwenden Sie die Verbindungsmethode GitHub Version 2. GitHub Version 1 wird demnächst eingestellt.

Klicken Sie auf Weiter, um zu Schritt 3 zu gelangen und die Build-Parameter festzulegen. Als Build-Anbieter verwende ich in der Regel AWS CodeBuild. Sie können hier aber auch eine Jenkins-Verbindung hinzufügen. Legen Sie den Projektnamen und alle Umgebungsvariablen fest, die Ihre Anwendung benötigt.

Für einfache Demo-App-Deployments können Sie als Build-Typ Einzelner Build auswählen. Bei komplexeren Deployments eignet sich Batch-Build, um größere Infrastruktur-Anforderungen abzudecken.
Als Nächstes legen Sie in Schritt 4 die Deployment-Konfiguration fest. Für diese Demo können wir AWS CodeDeploy verwenden, das vordefinierte Infrastruktur nutzt. In den nächsten Feldern wählen Sie dann die gewünschte Infrastruktur aus. Die verfügbaren Optionen richten sich nach Ihrer bisherigen Auswahl.

Im letzten Schritt, Schritt 5, können Sie die AWS-CodePipeline-Konfiguration überprüfen, bevor Sie sie speichern. Anschließend durchläuft die Pipeline den Deployment-Prozess, beginnend mit dem Abruf des bereitzustellenden Codes.

Sicherheit von Snyk in die Pipeline integrieren
Fügen wir nun mithilfe der Snyk AWS CodePipeline-Integration einen Snyk-Sicherheitsscan in diesen Ablauf ein. Klicken Sie im Dashboard auf den Namen der CodePipeline, um die einzelnen Schritte des Deployment-Ablaufs zu sehen.

Nun fügen wir diesem CodePipeline-Ablauf einen Sicherheitsschritt hinzu. Klicken Sie oben rechts auf die Schaltfläche Bearbeiten.

Geben Sie anschließend einen Namen für die hinzuzufügende Phase ein. In diesem Beispiel verwende ich security, damit dieser Name im fertigen CodePipeline-Ablauf angezeigt wird.

Klicken Sie auf Phase hinzufügen, um die Konfigurationsseite für die Phase zu öffnen. Legen Sie den Aktionsnamen fest und suchen Sie dann in der Dropdown-Liste „Aktionsanbieter“ im Abschnitt Aufrufen nach Snyk.

Im Abschnitt „Eingabeartefakte“ können Sie SourceArtifact als Build-Ausgangsbasis verwenden. Dadurch wird direkt vor dem Build der Anwendung ein Scan durchgeführt.
Klicken Sie auf die Schaltfläche Mit Snyk verbinden. Daraufhin wird das Fenster zur Integration von Snyk in AWS CodePipeline geöffnet.

Nach der Anmeldung werden Sie zurück zur Konfiguration von Snyk AWS CodePipelines geleitet. Hier können Sie die Organisation festlegen und die Gate-Steuerungen konfigurieren, die bei gefundenen Schwachstellen und je nach Schweregrad die Bereitstellung blockieren.
Klicken Sie auf Continue, sobald alles eingerichtet ist. Sie gelangen dann zurück zur Seite zum Bearbeiten der Aktion. Geben Sie abschließend einen Namen für die Ausgabe-Artefakte sowie optional einen Namespace an und klicken Sie auf Done.

Klicken Sie anschließend auf Release Change, um die Änderung produktiv zu setzen. Dadurch wird der Deployment-Ablauf erneut ausgeführt und der Code während der Bereitstellung gescannt.

Wie beim vorherigen Beispiel mit dem direkten Repository-Scan werden alle Scan-Protokolle gespeichert – hilfreich für PCI-Compliance-Prüfungen. Weitere Informationen zu AWS CodePipeline-Integrationen finden Sie in diesem Blogbeitrag: Automatisieren von Schwachstellen-Scans in AWS CodePipeline mit Snyk.
Sichern Sie Ihre Cloud-Infrastruktur kostenlos mit Snyk
PCI-Compliance-Prüfungen sind eine wichtige Aufgabe, die einmal jährlich von einer externen Akkreditierungsstelle durchgeführt wird. Der Prozess ist zwar sehr detailliert und kann zeitaufwendig sein, doch mit den richtigen Prüfungen und Protokollen lässt er sich beschleunigen – und vor allem bleiben Ihre App, Ihre Plattform und Ihre Nutzer sicher.
Sichern Sie Ihren Code mit einem kostenlosen Snyk-Plan. Dieser umfasst auch das Scannen Ihrer Container und Ihrer IaC sowie automatische Korrekturen für anfällige Basis-Images und entwicklerfreundliche, direkt im Code angezeigte Hinweise zur Behebung von IaC-Fehlkonfigurationen.
Sichern Sie Ihre Infrastruktur an der Quelle
Snyk automatisiert die IaC-Sicherheit und Compliance in Workflows und erkennt abweichende sowie fehlende Ressourcen.
