Blog

AWS CodeWhisperer sicher nutzen – ohne die typischen Fallstricke von LLMs

APR 29, 2024

KI-gestützte Coding-Assistenten werden für Entwickler schnell unverzichtbar. Zu den beliebtesten zählt AWS CodeWhisperer.

Adriaan Knapen

Adriaan is a DevOps Consultant at Eficode, where he helps clients improve their development processes and build value-adding software. He specializes in cloud technologies, modern web development technologies, and optimizing developer tooling experiences. If he’s not using his free time to read HackerNews or fiddle with bleeding-edge technology, he likes to spend time in the kitchen and at the gym.

Es funktioniert mit integrierten Entwicklungsumgebungen (IDEs) und bietet Unterstützung für mehrere Programmiersprachen, erweiterte Sicherheits- und Anpassungsfunktionen – sowie zusätzliche Vorteile, wenn ihr Teil des AWS-Ökosystems seid.

Wenn ihr jedoch AI-Tools wie diese einsetzt, gibt es reale Risiken, die ihr kennen und bewältigen müsst. Von Problemen mit geistigen Eigentumsrechten und Datenschutz bis hin zu Vorschlägen mit unsicheren oder veralteten Implementierungen: Die Situation kann schnell ernst werden. Neben allgemeiner Frustration und zusätzlichem Aufwand drohen rechtliche Probleme. Und wenn euer Unternehmen gefährdet ist, können Existenzen auf dem Spiel stehen. 

Andererseits kann CodeWhisperer ein echter Rettungsanker sein. In diesem Blogbeitrag zeige ich euch auf grundlegender Ebene die Risiken und wie ihr sie wirksam angeht.  

So entfaltet CodeWhisperer seine Wirkung

Während ihr tippt, liefert CodeWhisperer euch Codevorschläge in Echtzeit – von Vervollständigungen einzelner Zeilen bis hin zu vollständigen Codeblöcken. Doch wie funktioniert das?

Um dies präzise zu tun: 

  1. CodeWhisperer erfasst relevanten Kontext aus eurer integrierten Entwicklungsumgebung. Dazu gehören Quellcodeausschnitte und Dateinamen. 

  2. Die Informationen werden an die AWS Cloud gesendet, wo AWS große Sprachmodelle (LLMs) nutzt, um die Anfrage zu verarbeiten und Vorschläge für euch zu erstellen.

Mit der Anpassungsfunktion von CodeWhisperer erhaltet ihr relevantere Codevorschläge vom LLM. Dadurch macht ihr das LLM mit zusätzlichem Code vertraut, der nicht Teil seiner ursprünglichen Trainingsdaten ist – beispielsweise mit internen Bibliotheken und APIs, Best Practices und Architekturmuster. 

Da CodeWhisperer mit sensiblen Daten arbeitet, ist es wichtig, diese Informationen bei der Übertragung und im Ruhezustand zu schützen.

CodeWhisperer-Sicherheit: So geht ihr richtig vor

CodeWhisperer fällt unter das AWS-Modell der geteilten Verantwortung. Im Rahmen dieses Modells ist AWS für die Sicherheit der Infrastruktur seiner Plattform verantwortlich. Ihr seid dafür verantwortlich, die bereitgestellte Plattform entsprechend euren Anforderungen sicher zu nutzen und zu konfigurieren.

Was könnt ihr als Nutzer von CodeWhisperer also tun, um die Standardkonfiguration abzusichern? Hier sind die wichtigsten Maßnahmen für eine sichere Konfiguration in eurem Unternehmen: 

  • Aktiviert die Multi-Faktor-Authentifizierung (MFA) für alle CodeWhisperer-Nutzer. So können beispielsweise kompromittierte Konten nicht die Inhalte von Anpassungen preisgeben. 

  • Verwendet eine moderne TLS-Version, wenn ihr direkt mit AWS-Services interagiert, etwa beim Hochladen von Dateien für zusätzliche Anpassungen in S3. 

  • Aktiviert die Protokollierung von API- und Nutzeraktivitäten mit AWS CloudTrail, damit ihr besser nachvollziehen könnt, wie die Tools genutzt werden. 

  • Für zusätzliche Sicherheit der gespeicherten Anpassungsdateien aktiviert ihr selbstverwaltete Verschlüsselungsschlüssel für die S3-Buckets mit den Anpassungsdateien. Wenn ihr keine selbstverwalteten Schlüssel konfiguriert habt, stellt AWS die Verschlüsselung im Ruhezustand mit einem von AWS verwalteten Schlüssel sicher. 

  • Verwendet Amazon Macie, um S3-Buckets mit Anpassungsdateien abzusichern. Dazu gehören die Konfiguration der passenden Zugriffskontrollen für diese S3-Buckets sowie die Prüfung auf sensible Inhalte wie personenbezogene Daten (PII).

CodeWhisperer verfügt über ein integriertes Tool für Sicherheitsscans. Es kann verschiedene Programmiersprachen prüfen, darunter Java, Python, JavaScript und andere. Im Hintergrund nutzt das Code-Scanning von CodeWhisperer die AWS CodeGuru Detector Library.

Allgemeine Security Best Practices für die Einführung von CodeWhisperer

Stellt sicher, dass eure Entwickler die Grenzen von AI kennen

Bei der Arbeit mit AI-Tools solltet ihr stets daran denken, dass ihr für die Ergebnisse verantwortlich seid. Das LLM ist lediglich ein Tool, das Entwickler bei ihrer Arbeit unterstützt. Es ist kein autonomer Roboter, der sie vollständig ersetzt. 

Vorschläge von AI-Tools – einschließlich CodeWhisperer – können auf den ersten Blick wie gute Beiträge aussehen. Sie können jedoch weit davon entfernt sein, hohen Codequalitätsstandards zu entsprechen. 

  • Sie könnten schwer erkennbare Bugs oder Sicherheitslücken enthalten.

  • Das Tool könnte etwas anderes implementieren, als ihr als Entwickler beabsichtigt habt.

  • Das Tool berücksichtigt möglicherweise keine Designanforderungen, weil diese der AI eventuell nicht zur Verfügung standen.

Deshalb ist es entscheidend, jeden Entwickler zu den Schwächen von AI zu schulen. Dazu gehören Verzerrungen in den Trainingsdaten, die zu einseitigen Antworten führen, „Halluzinationen“, bei denen die AI selbstsicher nicht funktionierende Vorschläge erstellt, sowie mögliche Konflikte beim geistigen Eigentum (IP), wenn ihr die AI-Ausgabe direkt verwendet.

Wissen, woher die Codevorschläge stammen

Mit einer Professional-Tier-Lizenz für CodeWhisperer ist sichergestellt, dass CodeWhisperer die Daten nicht zum Training des LLM-Modells verwendet. Der von CodeWhisperer zurückgegebene Code kann jedoch weiterhin Ähnlichkeiten mit öffentlichem Code aus den Trainingsdaten aufweisen.

Um sicher mit solchen Vorschlägen umzugehen, gibt es die Funktion „Public Code Filter and Reference Tracking“. Wenn eure Codevorschläge mit öffentlichem Code übereinstimmen, werdet ihr darüber informiert, woher der entsprechende Code stammt. Kennt ihr die Quelle, könnt ihr schnell entscheiden, ob die Lizenz des übereinstimmenden Codes mit der Codebasis kompatibel ist, an der ihr arbeitet.

Um zu vermeiden, dass CodeWhisperer überhaupt Snippets vorschlägt, die mit öffentlichem Code übereinstimmen, deaktiviert einfach die Funktion Reference Tracking auf Organisationsebene.

Security-Scans für verschiedene Sprachen

Eine der großartigen integrierten Sicherheitsfunktionen von CodeWhisperer, die ich zuvor angedeutet habe, ist das Tool für Security-Scans. Um es optimal zu nutzen, richtet Code-Scans so ein, dass sie regelmäßig ausgeführt werden.

Für bestimmte Sprachen – zum Zeitpunkt der Erstellung Java, JavaScript und Python – kann CodeWhisperer Korrekturen für die gefundenen Schwachstellen vorschlagen. Beachtet jedoch, dass sämtlicher Code in Programmiersprachen, die von CodeGuru nicht unterstützt werden, stillschweigend ignoriert wird. Ihr erhaltet daher keine Benachrichtigungen über Schwachstellen in diesen Teilen der Codebasis und keinen Hinweis darauf, dass sie nicht verarbeitet werden können.

Macht das Programmieren nicht unnötig kompliziert

Coding-Assistenten werden für Entwickler immer unverzichtbarer, und AWS CodeWhisperer gehört bei vielen zu den Favoriten. LLMs haben jedoch Grenzen und Risiken: Sensible Daten wie Quellcode und mögliche Secrets werden direkt in die Cloud übertragen. Ihr müsst wissen, wie ihr Vorschläge des LLM sicher und Compliance-konform in den Quellcode für die Produktion integriert.

Die Einführung von CodeWhisperer gelingt mit wenig Aufwand: Härtet die Konfigurationsoptionen im AWS-Administrationsportal für Organisationen und sorgt mit einem guten User Onboarding dafür, dass Entwickler den sicheren und effektiven Umgang mit LLM-basierten Lösungen lernen.

Das Leben und Programmieren kann einfacher sein. Macht es nicht unnötig kompliziert.

  • Software development
  • DevOps
  • Security

Subscribe to our newsletter