Schützen von Azure-Pipelines
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Azure Pipelines stellt unterschiedliche Sicherheitsprobleme dar. Während Pipelines es Ihnen ermöglichen, Skripts auszuführen oder Code in Produktionsumgebungen bereitzustellen, ist es von entscheidender Bedeutung, sie daran zu hindern, für böswilligen Code zu verbinden. Das Ausgleichen der Sicherheit mit der Flexibilität und Leistungsfähigkeit von Entwicklungsteams ist unerlässlich.
Hinweis
Azure Pipelines ist Teil einer Suite von Azure DevOps Services, die alle auf einer sicheren Infrastruktur in Azure basieren. Um ein umfassendes Verständnis der Sicherheitskonzepte in allen Azure DevOps Services zu erhalten, empfehlen wir, die folgenden Ressourcen anzuzeigen:
Traditionell erzwingen Organisationen die Sicherheit durch strenge Sperrungen. Code-, Pipelines- und Produktionsumgebungen haben schwere Zugriffsbeschränkungen. Obwohl dieser Ansatz in kleinen Organisationen mit eingeschränkten Benutzern und Projekten gut funktioniert, sehen sich größere Organisationen einer anderen Realität gegenüber. Mit zahlreichen Mitwirkenden, die Zugriff auf Code haben, wird das Prinzip der "Annahme von Verstößen" entscheidend. Es beinhaltet das Arbeiten, als ob ein Angreifer über einen Mitwirkenden Zugang zu Repositorys verfügt, was eine erhöhte Wachsamkeit erfordert.
Um Sicherheitsziele zu erreichen, berücksichtigen Sie die folgenden Punkte:
Verhindern der Ausführung bösartigen Codes:
- Stellen Sie sicher, dass Ihre Pipelines so konfiguriert sind, dass nicht autorisierter Code ausgeführt wird, der die folgenden Aufgaben umfasst:
- Einschränken des Zugriffs auf vertrauliche geheime Schlüssel und Anmeldeinformationen.
- Überprüfen Sie Eingabeparameter und Argumente, um unbeabsichtigtes Verhalten zu verhindern.
- Überprüfen und überwachen Sie Pipelineskripts regelmäßig auf potenzielle Sicherheitsrisiken.
- Implementieren von Sicherheitspraktiken wie:
- Verwenden Sie parametrisierte Abfragen in Skripts, um die SQL-Einfügung zu verhindern.
- Escape-Sonderzeichen in Argumenten, um die Einfügung von Shellbefehlen zu vermeiden.
- Beschränken Sie die Berechtigungen für Pipelinedienstverbindungen.
- Erwägen Sie die Verwendung von YAML-Pipelines, die eine differenzierte Kontrolle über die Ausführung bieten und weniger anfällig für Sicherheitsrisiken sind.
- Stellen Sie sicher, dass Ihre Pipelines so konfiguriert sind, dass nicht autorisierter Code ausgeführt wird, der die folgenden Aufgaben umfasst:
Abmilderung der lateralen Exposition:
- Isolieren Sie Pipelines, um laterale Bewegungen innerhalb der Projekte und Repositorys Ihrer Organisation zu verhindern.
- Beschränken Sie den Zugriff nur auf die erforderlichen Repositorys und Ressourcen für jede Pipeline.
- Überwachen Sie Pipelineaktivitäten und richten Sie Warnungen für verdächtiges Verhalten ein.
- Überprüfen und aktualisieren Sie Berechtigungen, um die Belichtung regelmäßig zu minimieren.
Verwenden von YAML-Pipelines:
- YAML-Pipelines bieten die folgenden Vorteile hinsichtlich der Sicherheit:
- Definieren Sie Pipelineschritte und Abhängigkeiten explizit.
- Versionssteuerelement für Pipelinedefinitionen.
- Klare Sichtbarkeit der Pipelinekonfiguration.
- Reduziertes Risiko versehentlicher Fehlkonfigurationen.
- Codeüberprüfungs- und Pullanforderungen:
- Behandeln Sie YAML-Pipelines wie jeden anderen Code.
- Erzwingen Sie Pullanforderungen für das Zusammenführen von Änderungen, um schädliche Schritte zu verhindern.
- Verwenden Sie Verzweigungsrichtlinien , um diesen Überprüfungsprozess einzurichten.
- Ressourcenzugriffsverwaltung:
- Ressourcenbesitzer steuern, ob eine YAML-Pipeline auf bestimmte Ressourcen zugreifen kann.
- Dieses Sicherheitsfeature verhindert Angriffe wie das Stehlen eines anderen Repositorys.
- Genehmigungen und Überprüfungen ermöglichen die Zugriffssteuerung für jede Pipelineausführung.
- Laufzeitparameter:
- Laufzeitparameter vermeiden Sicherheitsprobleme im Zusammenhang mit Variablen, z . B. Argument Injection.
- Erwägen Sie die Migration vorhandener Pipelines zum YAML-Format, um die Sicherheit und Wartung zu verbessern.
- YAML-Pipelines bieten die folgenden Vorteile hinsichtlich der Sicherheit:
Sicherheit ist ein fortlaufender Prozess, und regelmäßige Bewertungen und Updates sind unerlässlich. YAML-Pipelines bieten die beste Sicherheit für Ihre Azure-Pipelines.
Die folgenden Artikel enthalten Empfehlungen, die Ihnen bei der Entwicklung einer sicheren YAML-basierten Pipeline helfen: