Schützen von Azure-Pipelines

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Azure-Pipelines bringen einzigartige Sicherheitsprobleme mit sich. Sie können eine Pipeline verwenden, um Skripts auszuführen oder Code in Produktionsumgebungen bereitzustellen. Sie möchten jedoch sicherstellen, dass Ihre CI/CD-Pipelines nicht zu Angriffspunkten für bösartigen Code werden. Sie möchten auch sicherstellen, dass nur Code bereitgestellt wird, der bereitgestellt werden soll. Die Sicherheit muss mit der Flexibilität und den Möglichkeiten, die Teams zum Ausführen ihrer eigenen Pipelines benötigen, in Einklang gebracht werden.

Hinweis

Azure Pipelines gehört zu einer Sammlung von Azure DevOps Services, die alle auf derselben sicheren Infrastruktur in Azure basieren. Informationen zu den Hauptkonzepten für die Sicherheit für alle Azure DevOps Services finden Sie unter Übersicht zum Datenschutz und Informationen zu Sicherheit, Authentifizierung und Autorisierung.

Traditionell implementierten Organisationen Sicherheit durch drakonische Sperrungen. Für Code, Pipelines und Produktionsumgebungen galten strenge Zugriffs- und Nutzungsbeschränkungen. In kleinen Organisationen mit wenigen Benutzer*innen und Projekten war diese Vorgehensweise relativ einfach zu bewerkstelligen. Das ist jedoch in größeren Organisationen nicht der Fall. Wenn viele Benutzer*innen Zugriff für Mitwirkende auf Code haben, muss davon ausgegangen werden, dass Sicherheitsverletzungen vorliegen. Unter der Annahme einer Sicherheitsverletzung wird so getan, als hätte ein*e Angreifer*in Zugriff auf einige (wenn auch nicht alle) der Repositorys.

Ziel in diesem Fall ist es, zu verhindern, dass Angreifer*innen bösartigen Code in der Pipeline ausführen. Bösartiger Code kann Geheimnisse stehlen oder Produktionsumgebungen beschädigen. Ein weiteres Ziel ist es, zu verhindern, dass die kompromittierte Pipeline auf andere Projekte, Pipelines und Repositorys Auswirkungen hat.

YAML-Pipelines bieten die beste Sicherheit für Ihre Azure-Pipelines. Anders als bei klassischen Build- und Releasepipelines ist bei YAML-Pipelines Folgendes der Fall:

  • Der Code kann überprüft werden. YAML-Pipelines unterscheiden sich nicht von anderen Codeabschnitten. Sie können verhindern, dass böswillige Akteure bösartige Schritte in Ihre Pipelines einführen, indem Sie die Verwendung von Pull Requests zum Mergen von Änderungen erzwingen. Branchrichtlinien erleichtern die Einrichtung.
  • Sie bieten Funktionen für die Ressourcenzugriffsverwaltung. Ressourcenbesitzer*innen entscheiden, ob eine YAML-Pipeline auf eine Ressource zugreifen kann oder nicht. Diese Sicherheitsfunktion kontrolliert Angriffe wie den Diebstahl eines anderen Repositorys. Genehmigungen und Überprüfungen bieten Zugriffssteuerung für jede Pipelineausführung.
  • Sie unterstützen Laufzeitparameter. Mit Laufzeitparametern können Sie eine Vielzahl von Sicherheitsproblemen im Zusammenhang mit Variablen vermeiden, z. B. die Argumentinjektion.

Diese Artikelreihe enthält Empfehlungen, die Ihnen helfen, eine sichere YAML-basierte CI/CD-Pipeline einzurichten. Sie deckt auch die Situationen ab, in denen Sie Kompromisse zwischen Sicherheit und Flexibilität eingehen können. Bei der Reihe wird Erfahrung mit Azure Pipelines, den wichtigsten Azure DevOps-Sicherheitskonstrukten und Git vorausgesetzt.

Behandelte Themen: