다음을 통해 공유


DevOps 플랫폼의 보안 고려 사항

Azure DevOpsGitHub와 같은 클라우드 기반 개발 플랫폼에서 보안은 항상 우선 시 되어야 합니다. Microsoft는 기본 클라우드 인프라의 보안을 업데이트하고 유지 관리하지만 사용자 고유의 Azure DevOps 조직 및 GitHub 인스턴스에 대한 보안 모범 사례를 검토하고 구성하는 것은 사용자가 해야 합니다.

인프라를 통해 CI/CD(연속 통합 및 지속적인 배포) 파이프라인의 코드로 환경을 배포하든, Azure에서 호스트되는 애플리케이션에 코드를 배포하든, 다음과 같은 중요한 보안 영역을 고려해야 합니다.

DevOps 도구에 대한 액세스 제한

Microsoft Entra ID를 통해 RBAC(역할 기반 액세스 제어)를 사용하여 최소 권한 원칙을 따릅니다. 사용자 및 서비스에 비즈니스 기능을 수행하는 데 필요한 DevOps 플랫폼에 최소 액세스 권한을 부여합니다. 자세한 내용은 다음 문서를 참조하십시오.

Microsoft Entra ID를 ID 관리 평면으로 설정한 후 모범 사례를 따라 Microsoft Entra 그룹 멤버 자격을 사용하여 Azure DevOps 역할 할당 을 관리합니다. Azure DevOps 역할을 Microsoft Entra 그룹에 할당하고 사용자의 Microsoft Entra 멤버 자격을 조정하여 Azure DevOps 액세스를 변경하거나 제거할 수 있습니다.

  • Microsoft Entra ID 권한 관리를 사용하여 Microsoft Entra 사용자가 작업을 완료하는 데 필요한 리소스에 대한 시간 제한 액세스를 허용하는 액세스 패키지를 만듭니다.

  • 또한 Just-In-Time 액세스에 Microsoft Entra Privileged Identity Management를 사용하여 일정 기간 동안 개인을 Azure DevOps 관리주체 역할로 승격할 수 있습니다.

Azure DevOps 조직, 프로젝트 또는 개체 수준에서 보안 그룹, 정책, 설정을 사용하여 Azure DevOps의 보안을 관리합니다. 가능하면 Azure DevOps에서 권한 상속을 사용하지 않도록 설정하는 것이 좋습니다.

리포지토리 및 분기 액세스 제한

원치 않거나 악의적인 변경으로부터 코드와 환경을 보호하도록 리포지토리 액세스, 권한 및 분기 만들기를 제한합니다. Azure DevOps에서 보안 그룹을 사용하여 리포지토리에 대한 액세스를 제한합니다. 분기 권한을 설정하여 분기에서 코드를 읽고 업데이트할 수 있는 사용자를 제한합니다.

파이프라인 액세스 및 권한 제한

악성 코드는 엔터프라이즈 데이터와 비밀을 도용하고 프로덕션 환경을 손상시킬 수 있습니다. 파이프라인에서 악성 코드 배포를 방지하기 위해 보호책을 구현합니다. 액세스를 제한하고 보호책을 구현하면 손상된 파이프라인에서 다른 프로젝트, 파이프라인 및 리포지토리로 수평 노출을 방지할 수도 있습니다.

YAML 파이프라인을 보호하기 위한 증분 접근 방식을 따르는 것이 좋습니다. 자세한 내용은 YAML 파이프라인을 보호하는 방법 계획을 참조하세요.

보안 요구 사항에 따라 DevOps 에이전트 선택

Microsoft 호스팅 또는 자체 호스팅 에이전트를 사용하여 Azure DevOps 및 GitHub 파이프라인을 구동할 수 있습니다. 에이전트의 유형마다 장단점이 있습니다.

Microsoft 호스팅 에이전트를 사용하면 업그레이드 또는 유지 관리에 대해 걱정할 필요가 없습니다. 자체 호스팅 에이전트를 사용하면 보안 보호책을 보다 유연하게 구현할 수 있습니다. 사용자가 에이전트 하드웨어, 운영 체제 및 설치된 도구를 제어합니다.

에이전트 유형 간의 차이점을 검토하고 잠재적인 보안 고려 사항을 확인하려면 Azure Pipelines 에이전트를 참조하세요.

보안 및 범위가 지정된 서비스 연결 사용

가능하면 서비스 연결을 사용하여 Azure 환경에 인프라 또는 애플리케이션 코드를 배포합니다. 잠재적인 공격 노출 영역을 줄이기 위해 서비스 연결에서는 특정 Azure 리소스 또는 리소스 그룹으로 배포 액세스가 제한되어야 합니다. 또한 개발, 테스트, QA 및 프로덕션 환경을 위한 별도의 서비스 연결을 만드는 것이 좋습니다.

비밀 저장소 사용

코드 또는 리포지토리의 보조 설명서에서 암호를 하드 코딩하지 마세요. 악의적 사용자는 리포지토리를 검색하여 악용하기 위해 노출된 기밀 데이터를 검색합니다. Azure Key Vault 같은 비밀 저장소를 설정하고 Azure Pipelines의 저장소를 참조하여 키, 비밀 또는 인증서를 안전하게 검색합니다. 자세한 내용은 파이프라인 및 CI/CD 워크플로 보호를 참조하세요. GitHub Actions 워크플로에서 Key Vault 비밀을 사용할 수도 있습니다.

강화된 DevOps 워크스테이션을 사용하여 코드 빌드 및 배포

플랫폼 및 개발 팀은 종종 Azure 플랫폼 또는 Azure DevOps 및 GitHub와 같은 다른 서비스에서 상승된 권한을 보유합니다. 이러한 권한은 잠재적인 공격 노출 영역을 크게 증가시킵니다. 보호책을 구현하여 코드를 개발하고 배포하는 데 사용하는 모든 엔드포인트 및 워크스테이션을 보호합니다.

강화된 SAW(보안 관리자 워크스테이션)를 사용하여 위험 수준이 높은 프로덕션 환경에 변경 내용을 배포합니다. 자세한 내용은 제로 트러스트를 사용하는 엔드포인트 보안을 참조하세요.

보안 검사 및 테스트 수행

애플리케이션 코드를 배포하든, 인프라를 코드로 배포하든 간에 파이프라인에서 DevSecOps 모범 사례 및 컨트롤을 구현합니다. CI/CD 경험 초기에 보안을 통합하여 나중에 비용이 많이 드는 보안 위반을 방지합니다. 파이프라인에서 정적 코드 분석, 단위 테스트, 비밀 검사 및 패키지/종속성 검사를 구현하는 전략을 만듭니다.

클라우드용 Microsoft Defender와 같은 엔터프라이즈 보안 도구는 DevOps 도구와 통합할 수 있습니다. 예를 들어 클라우드용 Defender는 CI/CD 워크플로에서 취약한 컨테이너 이미지를 식별할 수 있습니다. GitHub Actions 및 리포지토리의 경우 코드 및 비밀 검사와 종속성 검토에 GitHub Advanced Security를 사용합니다.

감사 이벤트를 주기적으로 검토하여 관리자 및 다른 사용자의 예기치 않은 사용 패턴을 모니터링하고 대응합니다. Azure DevOps 조직에 대한 감사 로그에 액세스하거나 감사 로그를 필터링 및 내보낼 수 있습니다. 장기 스토리지 및 자세한 로그 쿼리를 위해 Azure Monitor Log Analytics 작업 영역 또는 Microsoft Sentinel과 같은 SIEM(보안 정보 및 이벤트 관리) 시스템에 대한 감사 스트림을 만듭니다.