Stellen Sie mithilfe eines MCP-Servers mit Kiro und anderen Programmierassistenten eine Sicherheitsvalidierung in Echtzeit bereit. - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Stellen Sie mithilfe eines MCP-Servers mit Kiro und anderen Programmierassistenten eine Sicherheitsvalidierung in Echtzeit bereit.

Ivan Girardi und Iker Reina Fuente, Amazon Web Services

Zusammenfassung

Dieses Muster beschreibt, wie ein Model Context Protocol (MCP) -Server implementiert wird, der drei branchenübliche Tools für Sicherheitsscans integriert, um eine umfassende Code-Sicherheitsanalyse zu ermöglichen. Der Server ermöglicht KI-Codierungsassistenten (wie Kiro, Amazon Q Developer und Cline), Codefragmente und Infrastructure-as-Code-Konfigurationen (IaC) automatisch zu scannen. Mit diesen Scans können die Codierungsassistenten dabei helfen, Sicherheitslücken, Fehlkonfigurationen und Compliance-Verstöße zu identifizieren.

KI-Codegeneratoren, die auf Millionen von Codefragmenten trainiert wurden, schaffen einen blinden Fleck in der Sicherheit — wie sicher waren diese Trainingsdaten? Dieses Muster ermöglicht eine Sicherheitsvalidierung in Echtzeit während der Codegenerierung und hilft Entwicklern, potenzielle Sicherheitsprobleme beim Programmieren zu erkennen und zu verstehen. Dieser Ansatz hilft Entwicklern dabei, sowohl direkte Sicherheitslücken als auch vererbte Risiken aufgrund von Abhängigkeiten zu beheben. Durch die Überbrückung der Lücke zwischen KI-Effizienz und Einhaltung von Sicherheitsvorschriften trägt dieses Muster dazu bei, die sichere Einführung von KI-gestützten Entwicklungstools zu ermöglichen.

Dieses Muster hilft Unternehmen dabei, ihre Sicherheitspraktiken bei der Entwicklung durch KI-gestützte Codierungstools zu verbessern und so kontinuierliche Sicherheitsüberprüfungen in mehreren Programmiersprachen und Infrastrukturdefinitionen bereitzustellen. Die Lösung kombiniert die Funktionen der folgenden Tools:

  • Checkov zum Scannen von IAC-Dateien, einschließlich Terraform- und Kubernetes-Manifestdateien AWS CloudFormation

  • Semgrep für die Analyse mehrerer Programmiersprachen wie Python JavaScript, Java und andere

  • Bandit für spezialisiertes Python-Sicherheitsscanning

Zu den wichtigsten Funktionen dieser Lösung gehören:

  • Delta-Scannen neuer Codesegmente, wodurch der Rechenaufwand reduziert wird

  • Isolierte Umgebungen mit Sicherheitstools, wodurch eine werkzeugübergreifende Kontamination verhindert wird

  • Nahtlose Integration mit KI-Codierungsassistenten (Kiro, Amazon Q Developer, Cline und andere)

  • Sicherheitsfeedback in Echtzeit während der Codegenerierung

  • Individuell anpassbare Scanregeln zur Einhaltung organisatorischer Vorschriften

Das Pattern bietet eine einheitliche Oberfläche für Sicherheitsscans mit standardisierten Antwortformaten und erleichtert so die Integration von Sicherheitsprüfungen in Entwicklungsabläufe. Das Muster verwendet Python und das MCP-Framework, um automatisiertes Sicherheitsfeedback zu liefern. Dieser Ansatz hilft Entwicklern dabei, Sicherheitsprobleme frühzeitig im Entwicklungsprozess zu erkennen und zu beheben und gleichzeitig anhand detaillierter Ergebnisse mehr über bewährte Sicherheitsverfahren zu erfahren.

Voraussetzungen und Einschränkungen

Voraussetzungen

Einschränkungen

  • Das Scannen von Banditen ist nur auf Python-Dateien beschränkt.

  • Das Scannen in Echtzeit kann die Leistung großer Codebasen beeinträchtigen.

  • Toolspezifische Einschränkungen hängen von den unterstützten Dateiformaten und Sprachen ab.

  • Zur Validierung der Sicherheitsfeststellungen ist eine manuelle Überprüfung erforderlich.

  • Für die korrekte Interpretation der Ergebnisse von Sicherheitsscans ist Sicherheitsexpertise erforderlich.

  • Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter AWS Dienste nach Regionen. Informationen zu bestimmten Endpunkten finden Sie unter Dienstendpunkte und Kontingente. Wählen Sie dort den Link für den Dienst aus.

Produktversionen

  • Python-Version 3.10 oder höher

  • Checkov Version 3.0.0 oder höher

  • Semgrep Version 1.45.0 oder höher

  • Bandit Version 1.7.5 oder höher

  • MCP [cli] Version 1.11.0 oder höher

  • Pydantic Version 1.10.0 oder höher

  • Loguru Version 0.6.0 oder höher

Architektur

Das folgende Diagramm zeigt die Architektur für diese Lösung.

KI-Assistenten senden Code an den MCP-Sicherheitsscanner-Server, um ihn an spezialisierte Scanner weiterzuleiten. Die Scanergebnisse werden an den Entwickler gesendet.

Das Diagramm zeigt den folgenden Workflow:

  1. Der Entwickler verwendet KI-Assistenten (z. B. Kiro, Cline, Amazon Q Developer oder Roo Code), um Code zu generieren oder zu analysieren. Der KI-Assistent sendet den Code für den Sicherheitsscan.

  2. Der MCP-Sicherheitsscanner-Server verarbeitet die Anfrage, indem er sie an den entsprechenden Spezialscanner weiterleitet: Checkov für IAC-Dateien, Semgrep für die Analyse mehrerer Programmiersprachen oder Bandit für Python-spezifische Sicherheitsscans.

  3. Die Ergebnisse des Scanners mit Sicherheitsergebnissen, Schweregraden, detaillierten Beschreibungen und Lösungsvorschlägen werden über den KI-Assistenten an den Entwickler zurückgesendet.

  4. Es wird eine kontinuierliche Feedback-Schleife eingerichtet, in der der Entwickler eine Sicherheitsvalidierung in Echtzeit erhält, was automatisierte Korrekturen durch KI-Assistenten ermöglicht und bewährte Sicherheitsverfahren während der Entwicklung fördert.

Die Architektur mindert die folgenden allgemeinen Sicherheitsrisiken:

  • Befehlsinjektion

  • Sofortige Injektion

  • Durchqueren von Pfaden

  • Angriffe auf Abhängigkeiten

  • Erschöpfung der Ressourcen

Die Architektur mindert diese häufigen Sicherheitsrisiken durch die Implementierung der folgenden bewährten Methoden:

  • Alle Benutzer- und KI-Modelleingaben werden in temporäre Dateien geschrieben.

  • Es werden keine direkten Eingaben für Befehle der Befehlszeilenschnittstelle (CLI) bereitgestellt.

  • Der Dateisystemzugriff ist nur auf temporäre Verzeichnisse und Dateien beschränkt.

  • Temporäre Dateien werden automatisch bereinigt.

  • Die Antworten auf das Scannen werden bereinigt.

  • Die Prozessisolierung, die die Prozessfähigkeiten einschränkt, wird durchgesetzt.

  • Alle Scanaktivitäten werden protokolliert.

Automatisierung und Skalierung

Das Muster unterstützt die Automatisierung durch die folgenden Funktionen:

  • Integration mit KI-Codierungsassistenten für automatisches Codescannen

  • Standardisierte API-Antworten für die automatisierte Verarbeitung

  • Konfiguration über MCP-Konfigurationsdateien

  • Support für die Stapelverarbeitung mehrerer Dateien

  • Skalierbares Scannen in mehreren Programmiersprachen und IaC-Formaten

Der Scanvorgang kann über die bereitgestellten API-Endpunkte automatisiert werden:

  • scan_with_checkovfür IaC-Scannen

  • scan_with_semgrepfür das Scannen von mehrsprachigem Code

  • scan_with_banditfür Python-spezifisches Scannen

  • get_supported_formatszur Formatvalidierung

Beachten Sie bei der Erweiterung der Scan-Tools die zuvor in diesem Abschnitt beschriebenen Entwurfsprinzipien und bewährten Methoden. Weitere Informationen finden Sie auch unter Bewährte Methoden.

Tools

AWS-Services

  • Kiro ist ein agentischer Programmierdienst, der mit Entwicklern zusammenarbeitet, um Eingabeaufforderungen in detaillierte Spezifikationen und dann in funktionierenden Code, Dokumente und Tests umzuwandeln. Die Agenten von Kiro helfen Entwicklern dabei, schwierige Probleme zu lösen und Aufgaben wie die Generierung von Dokumentation und Komponententests zu automatisieren.

  • Amazon Q Developer ist ein generativer KI-gestützter Konversationsassistent, der Ihnen helfen kann, Anwendungen zu verstehen, zu erstellen, zu erweitern und zu betreiben AWS .

Andere Tools

  • Bandit ist ein spezialisiertes Python-Sicherheitsscanner-Tool. Es erkennt häufig auftretende Python-Sicherheitsprobleme wie unsichere Funktionen, fest codierte Geheimnisse und Injection-Schwachstellen. Bandit bietet detaillierte Vertrauens- und Schweregradbewertungen.

  • Checkov ist ein statisches Codeanalyse-Tool, das IaC auf Sicherheits- und Compliance-Fehlkonfigurationen überprüft. Darüber hinaus erkennt Checkov Compliance-Verstöße und bewährte Sicherheitsverfahren.

  • Cline ist ein KI-gestützter Codierungsassistent, der in VS Code läuft.

  • Loguru ist eine Datenvalidierungsbibliothek für Python.

  • Model Context Protocol (MCP) ist ein Open-Source-Framework für die Erstellung von KI-gestützten Entwicklungstools.

  • Pydantic ist eine Datenvalidierungsbibliothek für Python.

  • Semgrep analysiert den Quellcode auf Sicherheitslücken und Bugs. Es unterstützt mehrere Programmiersprachen. Semgrep verwendet sicherheitsorientierte Regelsätze für umfassende Analysen. Es bietet detaillierte Vertrauens- und Schweregradbewertungen.

Code-Repository

Der Code für dieses Muster ist im Repository GitHub MCP Security Scanner: Real-Time Protection for AI Code Assistants verfügbar. Das Repository enthält die MCP-Serverimplementierung, Details zur MCP-Konfiguration für Kiro, Amazon Q Developer, Cline und andere, Konfigurationsbeispiele und Testdienstprogramme.

Die Repository-Struktur umfasst:

  • security_scanner_mcp_server/- Implementierung des Hauptservers

  • docs/- Dokumentation und Demomaterialien

  • tests/- Testdateien

  • mcp-config-example.json- Beispiel für eine MCP-Konfiguration

  • requirements.txt- Projektabhängigkeiten

Best Practices

Implementierung von Sicherheitsscans

  • Überprüfen Sie die Sicherheitsergebnisse, um Probleme zu validieren und zu priorisieren.

  • Halten Sie die Scan-Tools (Checkov, Semgrep und Bandit) auf dem neuesten Stand.

  • Verwenden Sie das MCP-Sicherheitstool dieses Musters in Verbindung mit anderen Sicherheitsmaßnahmen und Tools.

  • Aktualisieren Sie regelmäßig Sicherheitsregelsätze und -richtlinien.

Verwaltung der Konfiguration

  • Verwenden Sie die MCP-Konfigurationsdateien in der offiziellen Versionskontrollquelle.

  • Dokumentieren Sie benutzerdefinierte Regeln und Konfigurationen.

Integration

  • Integrieren Sie Sicherheitsscans früh in den Entwicklungszyklus.

  • Richten Sie automatisiertes Scannen in Pre-Commit-Hooks oder in CI/CD-Pipelines (Continuous Integration and Continuous Deployment) ein.

  • Konfigurieren Sie geeignete Schweregradschwellenwerte für Ihre Umgebung.

  • Legen Sie klare Verfahren für den Umgang mit Sicherheitsergebnissen fest.

Betriebliche Überlegungen

  • Überwachen Sie die Scanleistung und den Ressourcenverbrauch.

  • Implementieren Sie die richtige Fehlerbehandlung und Protokollierung.

  • Pflegen Sie die Dokumentation der benutzerdefinierten Konfigurationen.

  • Richten Sie einen Prozess zur Überprüfung und Aktualisierung der Sicherheitsregeln ein.

Beachten Sie außerdem die folgenden bewährten Methoden:

  • Überprüfen Sie die Sicherheitsergebnisse immer in Ihrem spezifischen Kontext.

  • Halten Sie die Sicherheitstools und Abhängigkeiten auf dem neuesten Stand.

  • Verwenden Sie mehrere Sicherheitstools für eine umfassende Abdeckung.

  • Halten Sie sich in Ihrem Entwicklungsprozess an bewährte Sicherheitsmethoden.

Epen

AufgabeDescriptionErforderliche Fähigkeiten

Konfigurieren Sie die MCP-Einstellungen.

Sie können die Konfigurationsdateien in Kiro entweder bearbeiten, indem Sie (Option 1) die Konfigurationsdateien manuell suchen oder (Option 2) die Kiro IDE verwenden.

  • (Option 1) Suchen und bearbeiten Sie die Konfigurationsdateien manuell wie folgt:

    • Pfad: .kiro/settings/mcp.json (lokal) oder ~/.kiro/settings/mcp.json (global)

  • (Option 2) Ändern Sie die Konfigurationsdateien mithilfe der Kiro IDE wie folgt:

    • Wählen Sie das Kiro-Symbol im linken Navigationsmenü.

    • Navigieren Sie zum Abschnitt „MCP SERVERS“.

    • Bearbeiten Sie die Konfigurationseinstellungen. Mit der Kiro IDE vorgenommene Änderungen werden in einer der folgenden Konfigurationsdateien gespeichert: .kiro/settings/mcp.json (lokal) oder ~/.kiro/settings/mcp.json (global)

  • (Beide Optionen) Nachdem Sie entweder Option 1 oder Option 2 abgeschlossen haben, fügen Sie die Sicherheitsscanner-Konfiguration .kiro/settings/mcp.json (lokal) oder ~/.kiro/settings/mcp.json (global) hinzu:

{ "mcpServers": { "security-scanner": { "command": "uvx", "args": [ "--from", "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main", "security_scanner_mcp_server" ], "env": { "FASTMCP_LOG_LEVEL": "ERROR" }, "disabled": false, "autoApprove": [] } } }
App-Developer
AufgabeDescriptionErforderliche Fähigkeiten

Konfigurieren Sie die MCP-Einstellungen.

Gehen Sie wie folgt vor, um die MCP-Einstellungen manuell zu konfigurieren:

  1. Bearbeiten Sie die MCP-Konfigurationsdatei unter ~/.aws/amazonq/mcp.json (global) oder .amazonq/mcp.json (lokal).

  2. Fügen Sie die folgende Sicherheitsscanner-Konfiguration ~/.aws/amazonq/mcp.json (global) oder .amazonq/mcp.json (lokal) hinzu:

{ "mcpServers": { "security-scanner": { "command": "uvx", "args": [ "--from", "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main", "security_scanner_mcp_server" ], "env": { "FASTMCP_LOG_LEVEL": "ERROR" } } } }
App-Developer
AufgabeDescriptionErforderliche Fähigkeiten

Konfigurieren Sie die MCP-Einstellungen.

Gehen Sie wie folgt vor, um die MCP-Einstellungen manuell zu konfigurieren:

  1. Wählen Sie die Erweiterung aus, um sie zu öffnen, und wählen Sie dann MCP-Server aus.

  2. Wählen Sie die Registerkarte Installiert und dann MCP-Server konfigurieren, um die cline_mcp_settings.json Datei zu öffnen.

  3. Fügen Sie die folgende Sicherheitsscanner-Konfiguration hinzu: cline_mcp_settings.json

{ "mcpServers": { "security-scanner": { "command": "uvx", "args": [ "--from", "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main", "security_scanner_mcp_server" ], "env": { "FASTMCP_LOG_LEVEL": "ERROR" }, "disabled": false, "autoApprove": [] } } }
App-Developer
AufgabeDescriptionErforderliche Fähigkeiten

Führen Sie eine Codeanalyse durch.

Gehen Sie wie folgt vor, um eine Codeanalyse mit Python und Bandit durchzuführen:

  1. Erstellen Sie eine neue Python-Datei bandit_test.py mit dem folgenden Inhalt:

    import pickle import yaml import subprocess from flask import Flask, request import hashlib app = Flask(__name__) @app.route("/unsafe_pickle", methods=["POST"]) def unsafe_pickle_usage(): data = request.get_data() return pickle.loads(data) @app.route("/command_injection", methods=["GET"]) def command_injection(): command = request.args.get("cmd") return subprocess.Popen(command, shell=True) def weak_crypto(): password = "secret_password" return hashlib.md5(password.encode()).hexdigest() PASSWORD = "super_secret_password123"
  2. Öffnen Sie den Programmierassistenten. Fordere die folgenden Aktionen im Chat an: Scanne das aktuelle Skript und teile mir die Ergebnisse mit.

App-Developer
AufgabeDescriptionErforderliche Fähigkeiten

Führen Sie eine Codeanalyse durch.

Gehen Sie wie folgt vor, um eine Codeanalyse mithilfe von Terraform und Checkov durchzuführen:

  1. Erstellen Sie eine neue Terraform-Datei mit dem terraform_test.tf folgenden Inhalt:

    resource "aws_s3_bucket" "insecure_bucket" { bucket = "my-insecure-bucket" acl = "public-read" } resource "aws_security_group" "wide_open" { name = "allow_all" description = "Allow all inbound traffic" ingress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } }
  2. Öffnen Sie den Codierungsassistenten. Fordere die folgenden Aktionen im Chat an: Scanne das aktuelle Skript und teile mir die Ergebnisse mit.

App-Developer
AufgabeDescriptionErforderliche Fähigkeiten

Führen Sie gezieltes Scannen durch.

Im Folgenden finden Sie Beispiele für Anfragen, mit denen Sie einen gezielten Scan durchführen können:

  • Scannen Sie das aktuelle Projekt und teilen Sie mir die Ergebnisse mit.

  • Scannt die Zeilen 6-10 im aktuellen Skript.

App-Developer

Verwenden Sie Sicherheitsscans bei der Codegenerierung.

Gehen Sie wie folgt vor, um Sicherheitslücken mithilfe von Codegenerierungsschleifen zu beheben (in diesem Beispiel wird Kiro als Programmierassistent verwendet):

  1. Fragen Sie in Kiro: Erstellen Sie eine DynamoDB-Tabelle in Terraform und scannen Sie den Code mit dem Sicherheitsscanner.

  2. Fragen Sie in Kiro: Überprüfen Sie den generierten Code und die Ergebnisse der Sicherheitsscans und folgen Sie den Codegenerierungsschleifen, um die Sicherheitslücken zu lösen.

App-Developer

Fehlerbehebung

ProblemLösung

Probleme bei der Einrichtung der Umgebung

  • Stellen Sie sicher, dass Python Version 3.10 oder höher installiert ist.

  • Stellen Sie sicher, dass der uv Paketmanager installiert ist.

Probleme mit dem Scanner

  • Stellen Sie sicher, dass Dateiformate unterstützt werden.

  • Überprüfen Sie, ob die Dateisyntax gültig ist.

  • Stellen Sie sicher, dass die richtigen Dateierweiterungen verwendet werden.

  • Überprüfen Sie die Einstellungen für das Scan-Timeout.

Probleme bei der Integration

  • Stellen Sie sicher, dass der MCP-Server läuft.

  • Überprüfen Sie, ob die Konfigurationsdatei korrekt ist.

  • Validieren Sie die API-Endpunkte.

  • Stellen Sie sicher, dass das Antwortformat gültig ist.

Zusätzlicher Support

  • Überprüfen Sie die Protokolle auf detaillierte Fehlermeldungen.

  • Lesen Sie in der werkzeugspezifischen Dokumentation nach.

  • Erstellen Sie ein Problem im Repository.

Zugehörige Ressourcen

AWS Dokumentation

Andere Ressourcen AWS

Sonstige Ressourcen

Zusätzliche Informationen

Beispiel für eine MCP-Konfiguration mit aktivierter auto Genehmigung

Ohne autoApprove Konfiguration muss der Benutzer die Genehmigung erteilen, den Code zum Scannen an den MCP-Sicherheitsserver zu senden. Wenn autoApprove konfiguriert, darf der Code-Assistent die Tools ohne Zustimmung des Benutzers aufrufen. Diese Tools werden lokal auf dem Computer ausgeführt, es werden keine Daten gesendet und es wird nur ein Codescan durchgeführt.

Die folgende Konfiguration ermöglicht die automatische Ausführung aller Sicherheitsscan-Funktionen:

{ "mcpServers": { "security-scanner": { "command": "uvx", "args": [ "--from", "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main", "security_scanner_mcp_server" ], "env": { "FASTMCP_LOG_LEVEL": "ERROR" }, "disabled": false, "autoApprove": [ "scan_with_checkov", "scan_with_semgrep", "scan_with_bandit", "get_supported_formats" ] } } }

Um die Debug-Protokollierung zu aktivieren, setzen Sie "FASTMCP_LOG_LEVEL" auf"DEBUG".

Dateiformate, die von Sicherheitsscan-Tools unterstützt werden

Jedes Sicherheitsscan-Tool in dieser Lösung unterstützt die folgenden Dateiformate:

Checkov (IaC)

  • Terraform — .tf, .tfvars, .tfstate

  • CloudFormation — .yaml, .yml, .json, .template

  • Kubernetes — .yaml, .yml

  • Dockerfile — Docker-Datei

  • ARM — .json (Azure-Ressourcenmanager)

  • Bizeps — .Bizep

  • Serverlos — .yml, .yaml

  • Helm — .yaml, .yml, .tpl

  • GitHub Aktionen — .yml, .yaml

  • GitLab_ci — .yml, .yaml

  • Ansible — .yml, .yaml

Semgrep (Quellcode)

  • Python — .py

  • JavaScript — .js

  • TypeScript — .ts

  • Java — .java

  • Geh — .go

  • C — c..

  • C ++ — .cpp

  • C# — .cs

  • Rubin — .rb

  • PHP — .php

  • Scala — .scala

  • Kotlin — .kt

  • Rost — .rs

Bandit (nur Python)

  • Python — .py

Demos

Probieren Sie zum Scannen von Code die folgenden Beispielanweisungen mit Ihrem KI-Assistenten aus:

  • „Scanne das aktuelle Skript und teile mir die Ergebnisse mit.“

  • „Scannen Sie die Zeilen 20—60 und teilen Sie mir die Ergebnisse mit.“

  • „Scannen Sie diese Amazon DynamoDB-Tabellenressource und teilen Sie mir das Ergebnis mit.“

Weitere Informationen finden Sie in dieser Demo zum Scannen von Code im Repository dieses Patterns GitHub .

Probieren Sie die folgenden Beispielaufforderungen aus, um sicheren Code zu generieren:

  • „Generieren Sie eine Terraform-Konfiguration, um eine DynamoDB-Tabelle mit aktivierter Verschlüsselung zu erstellen, und scannen Sie sie auf Sicherheitsprobleme.“

  • „Erstellen Sie eine Python-Lambda-Funktion, die in DynamoDB schreibt, und scannt sie auf Sicherheitslücken.“

  • „Generieren Sie eine CloudFormation Vorlage für einen S3-Bucket mit den richtigen Sicherheitseinstellungen und stellen Sie sicher, dass er die Sicherheitsüberprüfungen besteht.“

  • „Schreiben Sie ein Python-Skript, um DynamoDB mit Paginierung abzufragen und nach bewährten Sicherheitsmethoden zu suchen.“

  • „Erstellen Sie ein Kubernetes-Bereitstellungsmanifest für einen Microservice mit Sicherheitsverstärkung und validieren Sie es.“

Weitere Informationen finden Sie in dieser Demo zur Codegenerierung mit Sicherheitsscanning im Repository dieses Patterns. GitHub