Azure Pipelines 보안

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

Azure Pipelines는 고유한 보안 문제를 제기합니다. 파이프라인을 사용하여 스크립트를 실행하거나 프로덕션 환경에 코드를 배포할 수 있습니다. 하지만 CI/CD 파이프라인이 악성 코드를 실행하는 방법이 되지 않도록 해야 합니다. 또한 배포하려는 코드만 배포되었는지 확인하려고 합니다. 보안은 팀이 자체 파이프라인을 실행하는 데 필요한 유연성과 성능을 제공하는 것과 균형을 이루어야 합니다.

참고 항목

Azure Pipelines는 모두 Azure에서 동일한 보안 인프라를 기반으로 구축된 Azure DevOps Services 컬렉션 중 하나입니다. 모든 Azure DevOps Services의 보안에 대한 기본 개념을 이해하려면 Azure DevOps Data Protection 개요Azure DevOps 보안 및 ID를 참조하세요.

일반적으로 조직은 드라코니안 잠금을 통해 보안을 구현했습니다. 코드, 파이프라인 및 프로덕션 환경에는 액세스 및 사용에 대한 심각한 제한이 있었습니다. 사용자와 프로젝트가 몇 개인 소규모 조직에서는 이 자세를 비교적 쉽게 관리할 수 있었습니다. 그러나 대규모 조직에서는 그렇지 않습니다. 많은 사용자가 코드에 액세스할 기여자 있는 경우 "위반을 가정"해야 합니다. 위반을 가정하는 것은 악의적 사용자가 리포지토리의 일부(전부는 아님)에 대한 액세스 권한을 기여자 것처럼 동작하는 것을 의미합니다.

이 경우 목표는 악의적 사용자가 파이프라인에서 악성 코드를 실행하지 못하도록 방지하는 것입니다. 악성 코드는 비밀을 도용하거나 프로덕션 환경을 손상할 수 있습니다. 또 다른 목표는 손상된 파이프라인에서 다른 프로젝트, 파이프라인 및 리포지토리에 대한 횡적 노출을 방지하는 것입니다.

YAML 파이프라인은 Azure Pipelines에 가장 적합한 보안을 제공합니다. 클래식 빌드 및 릴리스 파이프라인과 달리 YAML 파이프라인은 다음과 같습니다.

  • 코드를 검토할 수 있습니다. YAML 파이프라인은 다른 코드 조각과 다르지 않습니다. 끌어오기 요청을 사용하여 변경 내용을 병합하도록 적용하여 악의적인 행위자가 파이프라인에 악의적인 단계를 도입하지 못하도록 방지할 수 있습니다. 분기 정책을 사용하면 쉽게 설정할 수 있습니다.
  • 리소스 액세스 관리를 제공합니다. 리소스 소유자는 YAML 파이프라인이 리소스에 액세스할 수 있는지 여부를 결정합니다. 이 보안 기능은 다른 리포지토리 도용과 같은 공격을 제어합니다. 승인 및 검사 파이프라인 실행에 대한 액세스 제어를 제공합니다.
  • 런타임 매개 변수를 지원합니다. 런타임 매개 변수는 인수 삽입과 같은 변수와 관련된 다양한 보안 문제를 방지하는 데 도움이 됩니다.

이 문서 시리즈에서는 보안 YAML 기반 CI/CD 파이프라인을 통합하는 데 도움이 되는 권장 사항을 간략하게 설명합니다. 또한 보안과 유연성 간의 절호를 할 수 있는 장소도 다룹니다. 또한 이 시리즈에서는 Azure Pipelines, 핵심 Azure DevOps 보안 구문 및 Git에 대해 잘 알고 있다고 가정합니다.

다루는 항목: