Sichern der Entwicklerumgebung für Zero Trust

Dieser Artikel hilft Ihnen als Entwickler bzw. Entwicklerin, Ihre Entwicklungsumgebung zu schützen, damit Sie Zero Trust-Prinzipien (explizit überprüfen, geringstprivilegierten Zugriff verwenden, von Sicherheitsverletzungen ausgehen) implementieren können. Es enthält Inhalte aus unserem eBook "Schützen von Enterprise DevOps-Umgebungen" und hebt bewährte Methoden für Branch-Sicherheits- und vertrauenswürdige Tools, Erweiterungen und Integrationen hervor.

Die Developer-Geschwindigkeit basiert auf Ihrer Fähigkeit zu arbeiten und wie und wo Sie Geschäftsergebnisse maximieren möchten. Sie möchten leistungsstarke, anpassbare Computer mit Stamm- oder Administratorzugriff. Developer-Anforderungen können jedoch im Gegensatz zu Compliance-Vorschriften ausgeführt werden und die Notwendigkeit, den Zugriff und die Speicherung privater Mitarbeiterumgebungen zu überwachen und zu steuern.

Nicht verwaltete Computer, die eine Verbindung mit dem Organisationsnetzwerk herstellen, fordern Sicherheitsteams, Beschaffungen und das Governance Board heraus. Das beste Szenario der Bereitstellung von Standard- und festgeschriebenen Mitarbeiterumgebungen für Entwickler erzeugt eine Missachtung auf beiden Seiten. Wenn Mitarbeiter von überall aus eine Verbindung herstellen, sind anfällige WLAN-Netzwerke eine offene Tür für Cyberangriffe. Hardwarediebstahl und -verluste sind große Probleme.

Sicherheitsrisiken erstrecken sich auf Integrationen der Entwicklungsumgebung. Entwicklungstools, die sich durch umfangreiche Erweiterungsmöglichkeiten auszeichnen, verfügen möglicherweise über nicht gepflegte Integrationen in ihren Marketplaces. Böswillige Erweiterungen können Entwicklertools gefährden und unternehmensweite Verstöße verursachen.

Beachten Sie im folgenden Diagramm, wie die Entwicklerumgebung eine Verbindung mit der DevOps-Toolsumgebung herstellt, um sich auf Git-Verzweigungen auszuwirken. Die Umgebungsoberfläche wird durch Verbindungen zu Open-Source-Paketen und Anwendungserweiterungen erweitert. Erweiterungen stellen Angriffsvektoren in Abhängigkeits- und Erweiterungsanwendungsrisiken dar.

Die Abbildung veranschaulicht Entwicklungsumgebungen und Sicherheitsbedrohungen wie im oben verlinkten eBook beschrieben und in verwandten Artikeln zusammengefasst, die ebenfalls hier verlinkt sind.

DevOps-Teammitgliedern Flexibilität und Kontrolle zu geben und bösartige Angriffe zu verhindern, ist eine grundlegende Herausforderung für Sicherheitsbüros. DevOps kann die Entwicklerumgebung mit einer Cloudumgebung steuern (siehe Vertrauenswürdiger Start für Azure VMs und GitHub Enterprise Cloud Docs) und mit Containern sichern (siehe Dokumentation zu GitHub Codespaces).

Darüber hinaus können Entwickler diese Zero Trust-Maßnahmen implementieren, um die Entwicklerumgebung zu schützen:

  • Konfigurieren Sie die geringsten Berechtigungen.
  • Beschränken Sie, wer Code mit Verzweigungssicherheit ändern und genehmigen kann.
  • Übernehmen Sie nur vertrauenswürdige Tools, Erweiterungen und Integrationen.

Bewährte Methoden für die geringste Berechtigung

Entwickler glauben oft, dass sie Schadsoftware, Phishing und Verstöße in ihren Umgebungen abfangen können. Bedrohungsoberflächen für große Entwicklerumgebungen machen es für Entwickler unrealistisch, ein omnipräsentes Wissen zum System zu haben. Eine Organisation verliert wertvolle Wartungszeit, wenn eine Sicherheitsverletzung erkannt wird, nachdem ein Angriff eine Entwicklerumgebung, die über Administratorzugriff auf alle Systeme verfügt, kompromittiert hat.

Um potenzielle Zugriffsmöglichkeiten zu beheben, die dazu führen, dass Hacker auf die Rolle des Softwareentwicklers abzielen, sollten Sie die folgenden bewährten Methoden für die Sicherheit von Zero Trust-Methoden für Apps berücksichtigen.

  • Implementieren Sie die geringsten Berechtigungen und Just-in-Time-Zugriff für DevOps. Stellen Sie sicher, dass Teammitglieder nur minimalen Zugriff auf Umgebungen haben und nur für die unbedingt erforderliche Zeit. Erstellen Sie Richtlinien, um Administratorzugriffsrechte auf Standard-Geräten, DevOps-Tools, Veröffentlichungspipelines, Coderepositorys, Umgebungen, geheimen Speichern und Datenbanken abzudecken. Bei DevOps-Teams ist die Basisanforderung eine Verbindung mit dem Identitätsspeicher der Organisation. Verwenden Sie den Identitätsverbund für die Integration in SaaS-Umgebungen, um Duplizierungen von Identitäten auf Drittanbieterplattformen zu vermeiden und das Risiko der Exposition zu verringern.
  • Verwenden Sie keine persönlichen Zugriffstoken für den Quellcodezugriff. Sichere Methoden für DevOps-Teams umfassen den Zugriff auf SaaS-basierte DevOps-Tools und Coderepositorys (über SSH, HTTPS oder persönliche Zugriffstoken). Für den Zugriff auf SaaS-basierte Umgebungen verfügen Sie über klare Anweisungen, wie Zugriffsprinzipien diktieren, wer Systemcoderepositorys herunterladen (Klonen) kann und von welchen Geräten (lokal, Cloud und Container). Beispielsweise kann OneDrive den Zugriff auf nicht verwaltete Geräte blockieren oder einschränken.
  • Standardisieren und Synchronisieren von GitHub Enterprise Managed User (EMU)-Benutzerkonten mit Unternehmensidentitäten. Mit unternehmensverwalteten Benutzern können Sie die Benutzerkonten Ihrer Unternehmensmitglieder über Ihren Identitätsanbieter (IdP) steuern. Definieren Sie im Identitätsspeicher Ihrer Organisation explizit GitHub-Benutzernamen, E-Mails und Anzeigenamen. Benutzer und Benutzerinnen können dann problemlos Projektmitarbeiter identifizieren.
  • Für die drei Möglichkeiten, wie ein Entwickler eine Verbindung mit einer SaaS-Umgebung (HTTPS mit einer Identität, einem persönlichen Zugriffstoken, Herstellen einer Verbindung mit SSH-Schlüssel) herstellen kann, stellen Sie Verbindungen mit dem Identitätsspeicher der Organisation her. Bei GitHub (mit Ausnahme von GitHub EMU-Konten) ist Ihre Identität immer Ihre öffentliche Identität. Der kontrollierte Zugriff über einmaliges Anmelden (SSO) erfordert eine Verbindung mit dem Identitätsspeicher der Organisation.
  • Verwenden Sie eine SSH-Zertifizierungsstelle (CA), um signierte SSH-Zertifikate für Mitglieder bereitzustellen, um sicher auf Ressourcen mit Git zuzugreifen. Ein SSH-Zertifikat ist ein Mechanismus, mit dem ein SSH-Schlüssel einen anderen SSH-Schlüssel signieren kann. GitHub Enterprise Cloud unterstützt SSH-Zertifikate, um Organisationen mehr Kontrolle darüber zu geben, wie Mitglieder auf Repositorys zugreifen. Administratoren können ihren öffentlichen SSH-Schlüssel hochladen und Zertifikate für Mitglieder ausstellen, die für die Git-Authentifizierung verwendet werden sollen. Zertifikate können nur auf Repositorys zugreifen, die zur Organisation gehören. Administratoren können festlegen, dass Mitglieder Zertifikate verwenden, wenn sie auf ihre Repositorys zugreifen.
  • Verwenden Sie einen Git Credential Manager, um den Zugriff auf Ihren Code zu erschweren. Tools wie Visual Studio (VS) verfügen über integrierte Identitätsunterstützung. VS-Code verweist auf einen Git Credential Manager.

Empfohlene Vorgehensweisen für die Verzweigungssicherheit

Wenn Hacker Zugriff auf das Coderepository erhalten, können sie die Systemsicherheit prüfen und Codes ändern, ohne dass die Teams es merken. Um nicht autorisierten Code-Repositoryzugriff zu verhindern, implementieren Sie eine Verzweigungsstrategie, um die Kontrolle über Codeänderungen einzurichten (siehe Beispiel im folgenden Diagramm).

Die Abbildung zeigt ein Beispiel für eine Verzweigungsstrategie zum Schutz des Hauptrepositorys.

Um potenzielle Möglichkeiten für den Repositoryzugriff zu beheben, sollten Sie die folgenden bewährten Methoden für die Verzweigungssicherheit berücksichtigen.

  • Schützen Sie Verzweigungen mit Codeüberprüfungen, um DevOps-Teams die Kontrolle über Codeänderungen und Fortschritte bei der Überwachung zu geben. Die Verzweigungsstrategie im vorherigen Diagramm definiert einen kontrollierten Fluss von Änderungen, die eine klare Kette von Befehlen und Blaupausen für die Behandlung von Codeänderungen liefern. Bei den verschiedenen Ansätzen für die Verzweigungsstrategie gibt es die Gemeinsamkeit, dass geschützte Verzweigungen als Quelle für neue Versionen der Produktion dienen.
  • Verfügen Administratoren von Git-Repositorys über die Steuerung von Genehmigungsautorisierungen. Der Kontrollmechanismus von Verzweigungsstrategien befindet sich im Genehmigungsworkflow. Geschützte Verzweigungen erfordern Validierungen, Überprüfungen und Genehmigungen, bevor Änderungen akzeptiert werden. Eine Möglichkeit besteht darin, eine Schutzregel für Verzweigungen zu erstellen, um Workflows zu erzwingen. Fordern Sie z. B. eine Genehmigungsüberprüfung oder einen Statusüberprüfungsdurchlauf für alle Pull Requests an, die mit der geschützten Verzweigung zusammengeführt werden. Richtlinien für Verzweigungen helfen Teams, wichtige Entwicklungsverzweigungen zu schützen. Richtlinien erzwingen die Codequalitäts- und Change Management-Standards Ihres Teams.

Bewährte Methoden für vertrauenswürdige Tools, Erweiterungen und Integrationen

Die Erweiterbarkeit in integrierten Entwicklerumgebungen (IDE) ist so produktiv, dass es sich im Wesentlichen um ein obligatorisches Feature handelt. Sie verlassen sich auf die Möglichkeit, Erweiterungen auf dem Markt einer bestimmten IDE anzuwenden und zusammenstellen, um Ihre optimale Arbeitsumgebung zu entwerfen.

Um sichere IDEs zu beheben, berücksichtigen Sie das folgende Tool, die Erweiterung und die bewährten Methoden für die Integration.

  • Stellen Sie sicher, dass Sie nur Tools von vertrauenswürdigen Marketplaces und Herausgebern integrieren. Beispielsweise verfügt der VS Code Marketplace über Tausende von Erweiterungen, um Ihr Leben zu vereinfachen. Wenn Ihre Teams neue Tools oder Erweiterungen einführen, kann der wichtigste Aspekt die Prüfung der Vertrauenswürdigkeit eines Herausgebers sein.
  • Definieren Sie sichere Methoden zum Steuern der Erweiterungsnutzung, um die Angriffsfläche von Entwicklerumgebungen einzuschränken. Die meisten IDE-Erweiterungen erfordern die Genehmigung bestimmter Berechtigungen für die Funktion, häufig als Datei mit Leseberechtigungen für das System, um Code zu analysieren. Erweiterungen erfordern Verbindungen zu Cloudumgebungen, um zu funktionieren (häufig in Metriktools). Durch die Genehmigung zusätzlicher Funktionen über die IDE werden Organisationen für weitere Bedrohungen geöffnet.
  • Verfolgen Sie auf Entwicklercomputern die Anzahl und Fälligkeit der verwendeten Erweiterungen, um die potenzielle Angriffsfläche zu kennen. Integrieren Sie nur VS Code Marketplace-Erweiterungen von bestätigten Herausgebern. Wenn Sie Anwendungserweiterungen mit VS Code installieren, überprüfen Sie regelmäßig Erweiterungen, die Sie mit der Befehlszeile, Code --list-extensions --show-versions, ausführen. Verfügen Sie über ein gutes Verständnis erweiterbarer Komponenten, die Sie in Ihrer Entwicklerumgebung ausführen.

Nächste Schritte

  • Wenn Sie Zero Trust-Sicherheit in Ihren Entwicklerworkflow einbetten, können Sie schnell und sicher Innovationen einführen.
  • Sichern der DevOps-Plattformumgebung hilft Ihnen, Zero Trust-Prinzipien in Ihrer DevOps-Plattformumgebung zu implementieren und bewährte Methoden für die geheime und Zertifikatverwaltung hervorzuheben.
  • Secure DevOps-Umgebungen für Zero Trust beschreibt bewährte Methoden zum Sichern Ihrer DevOps-Umgebungen mit einem Zero Trust-Ansatz, um Hacker daran zu hindern, Entwicklerfelder zu gefährden, Releasepipelines mit bösartigen Skripts zu infizieren und Zugriff auf Produktionsdaten über Testumgebungen zu erhalten.
  • Implementieren Sie Zero-Trust-Prinzipien, wie in Memorandum 22-09 beschrieben (zur Unterstützung der US-Executive Order 14028, Improving the Nation's Cyber Security) mithilfe von Microsoft Entra ID als zentralisiertes Identitätsverwaltungssystem.
  • Beschleunigen und sichern Sie Ihren Code mit Azure DevOps mit Tools, mit denen Entwickler den schnellsten und sichersten Code für die Cloudumgebung erhalten.
  • Konfigurieren Sie Azure, um GitHub OIDC als Verbundidentität zu vertrauen. Mit OpenID Connect (OIDC) können Ihre GitHub Action-Workflows auf Ressourcen in Azure zugreifen, ohne dass die Azure-Anmeldeinformationen als langlebige GitHub-Geheimnisse gespeichert werden müssen.