다음을 통해 공유


Azure DevOps 보안 만들기

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

특히 Azure DevOps Services와 같은 클라우드 기반 솔루션에서 정보 및 데이터를 처리하는 경우 보안이 최우선 순위여야 합니다. Microsoft는 기본 클라우드 인프라의 보안을 보장하지만 Azure DevOps 내에서 보안을 구성하는 것은 사용자의 책임입니다. 이 문서에서는 위협 및 취약성으로부터 Azure DevOps 환경을 보호하는 데 필요한 보안 관련 구성에 대한 개요를 제공합니다.

네트워크 및 데이터 보호

Azure DevOps를 사용하여 무단 액세스 및 잠재적 위협으로부터 데이터와 리소스를 보호하는 경우 네트워크 보안이 중요합니다. 신뢰할 수 있는 원본만 Azure DevOps 환경에 액세스할 수 있도록 네트워크 보안 및 데이터 보호 조치를 구현합니다. Azure DevOps로 작업할 때 네트워크를 보호하려면 다음 작업을 수행합니다.

  • IP 허용 목록 설정: 특정 IP 주소에 대한 액세스를 제한하여 신뢰할 수 있는 원본의 트래픽만 허용하여 공격 노출 영역을 줄입니다. 조직이 방화벽 또는 프록시 서버로 보호되는 경우 허용 목록에 IP 및 URL을 추가합니다.
  • 데이터 암호화 사용: 암호화, 백업 및 복구 전략을 사용하여 데이터를 보호합니다. 전송 중 또는 저장된 데이터를 항상 암호화합니다. HTTPS와 같은 프로토콜을 사용하여 통신 채널을 보호합니다. Azure Encryption에 대해 자세히 알아봅니다.
  • 인증서 유효성 검사: 연결을 설정할 때 신뢰할 수 있는 기관에서 인증서가 유효하고 발급되었는지 확인합니다.
  • WAF(웹 애플리케이션 방화벽) 구현: 일반적인 공격에 대한 추가 보호 계층을 위해 WAF를 사용하여 악의적인 웹 기반 트래픽을 필터링, 모니터링 및 차단합니다.
  • NSG(네트워크 보안 그룹) 개요: NSG를 사용하여 Azure 리소스에 대한 인바운드 및 아웃바운드 트래픽을 제어하여 권한 있는 트래픽만 허용되도록 합니다.
  • Azure Firewall 사용: Azure Firewall을 배포하여 여러 Azure 구독 및 가상 네트워크에서 중앙 집중식 네트워크 보안 정책을 제공합니다.
  • Azure Network Watcher를 사용하여 네트워크 트래픽 모니터링: Azure Network Watcher를 사용하여 네트워크 문제를 모니터링하고 진단하여 네트워크의 보안 및 성능을 보장합니다.
  • Azure DDoS Protection을 사용하여 DDoS 보호 구현: Azure DDoS Protection을 사용하도록 설정하여 DDoS(분산 서비스 거부) 공격으로부터 애플리케이션을 보호합니다.

자세한 내용은 애플리케이션 관리 모범 사례참조하세요.

제로 트러스트 구현

DevOps 프로세스에서 제로 트러스트 원칙을 채택하여 원본에 관계없이 모든 액세스 요청이 철저히 확인되도록 합니다. 제로 트러스트는 "절대 신뢰 안 함, 항상 확인"이라는 원칙에 따라 작동합니다. 즉, 네트워크 내부 또는 외부에 관계없이 기본적으로 신뢰할 수 있는 엔터티가 없습니다. 제로 트러스트를 구현하면 보안 위반 위험을 크게 줄이고 권한 있는 사용자 및 디바이스만 리소스에 액세스할 수 있도록 할 수 있습니다.

제로 트러스트는 네트워크 내의 횡적 이동으로부터 보호하는 데 도움이 되며, 네트워크의 손상된 부분이 있더라도 위협이 포함되고 확산될 수 없도록 합니다. 자세한 내용은 제로 트러스트 평가 가이드참조하세요.

업계 표준 준수

Azure DevOps 환경이 환경을 보호하고 사용자와의 신뢰를 유지하는 업계 표준 및 규정을 준수하는지 확인합니다.

  • 업계 표준 준수 보장: Azure DevOps는 ISO/IEC 27001, SOC 1/2/3 및 GDPR과 같은 다양한 업계 표준 및 규정을 준수합니다. 환경이 이러한 표준을 준수하는지 확인합니다.
  • 규정 준수 정책 적용: 파이프라인에 대한 분기 정책규정 준수 정책을 구현합니다.
  • CI/CD에 대한 구성 요소 거버넌스에 온보딩하면 다음과 같은 이점이 제공됩니다.
    • 보안 취약성 검색: 오픈 소스 구성 요소의 알려진 취약성에 대해 경고합니다.
    • 라이선스 준수: 구성 요소가 조직의 라이선스 정책을 준수하는지 확인합니다.
    • 정책 적용: 승인된 버전만 사용되도록 합니다.
    • 추적이 포함된 표시 유형: 더 쉽게 관리할 수 있게 리포지토리 전체의 구성 요소에 대한 가시성을 제공합니다.

액세스 제어 및 제한

관리자가 조직에 액세스할 수 있는 사용자를 제한하고 제어하는 데 사용할 수 있는 모든 보안 정책을 검토합니다. 불필요한 프로젝트 생성을 방지하여 조직의 제어를 유지 관리합니다.

  • "공용 프로젝트 허용"을 사용하지 않도록 설정합니다.공용 프로젝트를 만드는 옵션을 사용하지 않도록 설정합니다. 필요에 따라 프로젝트 가시성을 공용에서 프라이빗으로 전환합니다. 로그인하지 않은 사용자는 공용 프로젝트에 대한 읽기 전용 액세스 권한을 가지지만 로그인한 사용자는 프라이빗 프로젝트에 대한 액세스 권한을 부여하고 허용된 변경을 수행할 수 있습니다.
  • 불필요한 인증 메커니즘을 제한 하고 허용되는 인증에 대한 액세스 권한이 있는 사용자를 제한합니다.
  • 조건부 액세스 정책을 사용하여 액세스 제한: 사용자에게 액세스 권한이 부여되기 전에 로그인 이벤트에 반응하고 다른 작업을 요청하는 Microsoft Entra에서 CAP(조건부 액세스 정책)를 정의 하여 조직을 보호합니다.

외부 게스트 관리

외부 게스트 액세스는 제대로 관리되지 않는 경우 잠재적인 보안 위험을 초래할 수 있습니다. 이러한 위험을 최소화하고 외부 게스트가 환경의 보안을 손상시키지 않고 적절한 수준의 액세스 권한을 갖도록 합니다.

  • 외부 게스트 액세스 차단: 비즈니스가 필요하지 않은 경우 외부 게스트 액세스를 방지하기 위해 "모든 도메인에 초대를 보낼 수 있도록 허용" 정책 사용하지 않도록 설정합니다.
  • 고유한 전자 메일 또는 UPN 사용: 개인 및 비즈니스 계정에 다른 전자 메일 주소 또는 UPN(사용자 계정 이름)을 사용하여 개인 계정과 회사 관련 계정 간의 모호성을 제거합니다.
  • 그룹 외부 게스트 사용자: 모든 외부 게스트 사용자를 단일 Microsoft Entra 그룹에 배치하고 이 그룹에 대한 권한을 적절하게 관리할있습니다. 이러한 사용자에게 그룹 규칙이 적용되도록 직접 할당을 제거합니다.
  • 규칙 다시 평가: 사용자 페이지의 그룹 규칙 탭에서 규칙을 정기적으로 검토합니다. 조직에 영향을 줄 수 있는 Microsoft Entra ID의 그룹 멤버 자격 변경을 고려합니다. Microsoft Entra ID는 동적 그룹 멤버 자격을 업데이트하는 데 최대 24시간이 걸릴 수 있으며, 규칙은 그룹 규칙이 변경될 때마다 24시간마다 자동으로 다시 평가됩니다.

자세한 내용은 B2B 게스트에 대한 Microsoft Entra ID을 참조하십시오.

불필요한 사용자 제거

조직에서 비활성 또는 권한이 없는 사용자를 제거하면 보안 환경을 유지하고 잠재적인 보안 위반 위험을 줄일 수 있습니다.

  • 비활성 MICROSOFT 계정 사용자(MSA)를 직접 제거합니다 . MSA를 사용하는 경우 조직에서 비활성 사용자를 직접 제거합니다. 제거된 MSA 계정에 할당된 작업 항목에 대한 쿼리는 만들 수 없습니다.
  • Microsoft Entra 사용자 계정 사용 안 함 또는 삭제: Microsoft Entra ID에 연결된 경우 Azure DevOps 사용자 계정을 활성 상태로 유지하면서 Microsoft Entra 사용자 계정을 사용하지 않도록 설정하거나 삭제합니다. Azure DevOps 사용자 ID를 사용하여 작업 항목 기록을 계속 쿼리할 수 있습니다.
  • 관리자에 대한 사용자 PAT를 해지합니다. 기존 사용자 PAT를 정기적으로 검토하고 해지하여 이러한 중요한 인증 토큰을 안전하게 관리합니다.
  • 개별 사용자에게 부여된 특별 사용 권한을 취소합니다. 최소 권한 원칙과 일치하도록 개별 사용자에게 부여된 특별한 권한을 감사하고 해지합니다.
  • 제거된 사용자의 작업 재할당 : 사용자를 제거하기 전에 작업 항목을 현재 팀 구성원에게 다시 할당하여 부하를 효과적으로 분산합니다.

범위 권한

권한 있는 개인 및 서비스만 중요한 정보에 액세스하고 중요한 작업을 수행할 수 있도록 필요한 최소 권한액세스 수준 제공합니다. 이 방법은 무단 액세스 및 잠재적인 데이터 위반의 위험을 최소화하는 데 도움이 됩니다.

정기적으로 이러한 설정을 검토하고 업데이트하여 역할 변경, 신입 사원 또는 이탈과 같은 조직의 변경 사항에 맞게 조정합니다. 권한 및 액세스 수준의 정기적인 감사 구현하면 불일치를 식별하고 수정하여 보안 태세가 견고하고 모범 사례에 맞게 유지되도록 할 수 있습니다.

권한에 대해 자세히 알아보세요.

권한의 안전하고 효율적인 관리를 보장하려면 Azure DevOps 환경 내에서 권한 의 범위를 적절하게 지정합니다. 권한 범위 지정에는 역할 및 책임에 따라 사용자 및 그룹에 대한 적절한 액세스 수준을 정의하고 할당하는 작업이 포함됩니다. 이 방법은 권한이 있는 개인만 중요한 정보 및 중요한 작업에 액세스할 수 있도록 하여 무단 액세스 및 잠재적인 데이터 위반의 위험을 최소화하는 데 도움이 됩니다.

사용 권한의 범위를 효과적으로 지정하려면 다음 작업을 수행합니다.

  • 상속 사용 안 함:권한 상속을 피하고 의도하지 않은 액세스를 방지합니다. 상속은 기본적으로 허용 특성으로 인해 권한이 없어야 하는 사용자에게 실수로 권한을 부여할 수 있습니다. 사용 권한을 신중하게 관리하고 명시적으로 설정하여 의도한 사용자만 액세스할 수 있도록 합니다.
  • 세그먼트 환경: 개발, 테스트 및 프로덕션과 같은 다양한 환경에 대해 별도의 Azure 계정을 사용하여 보안을 강화하고 충돌을 방지합니다. 이 방법은 환경 간의 리소스 충돌 및 데이터 오염 위험을 최소화하고 리소스의 관리 및 격리를 향상할 수 있도록 합니다. 자세한 내용은 Azure 랜딩 존 참조하세요.
  • 액세스를 제어하고 규정 준수를 보장 합니다. Azure Policy 를 사용하여 사용하지 않는 Azure 지역 및 서비스에 대한 액세스를 제한하여 조직 표준을 준수합니다. 이 작업은 무단 액세스 및 사용을 방지하여 모범 사례를 적용하고 보안 환경을 유지하는 데 도움이 됩니다.
  • ABAC(Azure 역할 기반 제어) 구현: 제대로 태그가 지정된 리소스와 함께 ABAC를 사용하여 무단 액세스를 제한합니다. 이 작업을 수행하면 특정 특성에 따라 액세스 권한이 부여되어 무단 리소스 생성 및 액세스를 방지하여 보안을 강화합니다.
  • 보안 그룹 사용:보안 그룹을 사용하여 여러 사용자의 사용 권한을 효율적으로 관리합니다. 이 방법을 사용하면 권한을 개별적으로 할당하는 것에 비해 액세스 권한 부여 및 해지가 간소화되고 조직 전체에서 일관성과 관리가 더 쉬워질 수 있습니다.
    • 많은 사용자를 관리할 때 Microsoft Entra ID, Active Directory 또는 Windows 보안 그룹을 사용합니다.
    • 프로젝트 및 리포지토리에 대한 액세스를 기본 제공 또는 사용자 지정 보안 그룹으로 제한하여 중요한 정보를 유출하고 안전하지 않은 코드를 배포할 위험을 줄입니다.
    • 기본 제공 역할을 활용하고 개발자에게 참가자 역할을 기본값으로 설정합니다. 관리자는 향상된 권한을 부여받기 위해 프로젝트 관리자 보안 그룹에 할당되어 보안 권한을 구성할 수 있습니다.
    • 그룹을 가능한 한 작게 유지하여 액세스를 제한합니다.
    • Microsoft Entra PIM(Privileged Identity Management) 그룹을 사용하여 Just-In-Time 액세스를 구현합니다. 필요한 경우에만 상승된 권한을 부여하여 영구 액세스와 관련된 위험을 줄입니다.

서비스 계정 사용 중지

지금까지 서비스 계정은 PAT(개인용 액세스 토큰) 와 함께 자동화된 프로세스 및 서비스를 실행하는 도구를 빌드하는 데 사용되었습니다. 따라서 권한 상승이 발생하는 경우가 많습니다. 서비스 계정으로 계속 빌드하도록 선택하기 전에 여전히 올바른 인증 방법인지 살펴보세요.

  • PAT를 Microsoft Entra 토큰으로 바꾸기:Microsoft Entra 토큰은 대부분의 PAT 대신 사용할 수 있는 수명이 짧은(1시간) 토큰입니다. PAT는 사용 편의성으로 인해 인기가 있지만 유출되는 용이성으로 인해 인기 있는 공격 벡터이기도 합니다.
  • 인증 메커니즘을 선택하기 전에 사용할 수 있는 모든 인증 메커니즘 을 읽어 줍니다.
  • 대신 서비스 주체 사용:서비스 주체는 Microsoft Entra 애플리케이션의 ID를 나타내며 지정된 테넌트에서 애플리케이션이 수행할 수 있는 작업을 정의하는 고유한 권한을 갖습니다. 서비스 주체는 앱에 필요한 권한을 관리하는 데 권장되는 선택입니다. 서비스 계정의 PAT를 서비스 주체에 대해 획득한 Microsoft Entra 토큰으로 바꿉니다.
    • Azure 리소스를 기반으로 빌드하는 경우 관리 ID를 사용하여 인증하여 한 단계 더 나아가세요. 관리 ID는 자격 증명 관리를 자동으로 처리합니다.
  • 서비스 연결 사용: 서비스 연결을 사용하면 파이프라인 내에서 서비스 주체를 사용할 수 있습니다. 가능한 경우 언제든지 서비스 연결을 사용하여 비밀 변수를 빌드에 직접 전달하지 않고 서비스에 안전하게 연결합니다. 특정 사용 사례에 대한 연결을 제한합니다. 자세한 내용은 이 문서의 범위 서비스 연결 섹션을 참조하세요.
    • 워크로드 ID 페더레이션을 통해, 비밀 없이 앱 등록 또는 관리 ID를 사용하여 Azure 리소스 인증을 수행하세요.

서비스 계정이 계속 사용 중인 경우:

  • 단일 용도 서비스 계정 만들기: 각 서비스에는 위험을 최소화하기 위한 전용 계정이 있어야 합니다. 일반 사용자 계정을 서비스 계정으로 사용하지 말아야 합니다.
  • 사용되지 않는 서비스 계정을 식별하고 사용하지 않도록 설정합니다. 더 이상 사용되지 않는 계정을 정기적으로 검토하고 식별합니다. 삭제를 고려하기 전에 사용하지 않는 계정을 사용하지 않도록 설정합니다.
  • 권한 제한: 서비스 계정 권한을 필요한 최소로 제한합니다. 서비스 계정에 대한 대화형 로그인 권한을 사용하지 마세요.
  • 보고서 읽기 프로그램에 별도의 ID 사용: 서비스 계정에 도메인 계정을 사용하는 경우 보고서 판독기에서 다른 ID를 사용하여 권한을 격리하고 불필요한 액세스방지합니다.
  • 작업 그룹 설치에 로컬 계정 사용: 작업 그룹에 구성 요소를 설치할 때 사용자 계정에 로컬 계정을 사용합니다. 이 시나리오에서는 도메인 계정을 사용하지 않습니다.
  • 서비스 계정 활동 모니터링: 감사를 구현하고 감사 스트림 만들어 서비스 계정 활동을 모니터링합니다.

서비스 연결 범위

Azure 리소스에 안전하고 효율적으로 액세스하려면 서비스 연결의 범위를 적절하게 지정합니다. 서비스 연결을 통해 Azure DevOps는 외부 서비스 및 리소스에 연결할 수 있으며, 이러한 연결의 범위를 지정하여 필요한 리소스에 대한 액세스만 제한하고 무단 액세스 위험을 줄일 수 있습니다.

  • 액세스 제한: 특정 리소스 및 그룹에 대한 Azure Resource Manager 서비스 연결의 범위를 지정하여 액세스를 제한합니다. 전체 Azure 구독에서 광범위한 기여자 권한을 부여하지 마세요.
  • Azure Resource Manager 사용: 앱 등록이나 관리 ID를 통해 워크로드 아이덴티티 페더레이션을 사용하여 Azure 리소스와 인증합니다. 이는 앱 등록 시 비밀을 사용하는 것 대신에 권장되는 방법입니다. 자세한 내용은 워크로드 ID 페더레이션사용하는 Azure Resource Manager 서비스 연결 만들기를 참조하세요.
  • 범위 리소스 그룹: 리소스 그룹에 빌드 프로세스에 필요한 VM(Virtual Machines) 또는 리소스만 포함되는지 확인합니다.
  • 클래식 서비스 연결 방지: 범위 지정 옵션이 없는 클래식 연결 대신 최신 Azure Resource Manager 서비스 연결을 선택합니다.
  • 용도별 팀 서비스 계정 사용: 용도별 팀 서비스 계정을 사용하여 서비스 연결을 인증하여 보안 및 제어를 유지합니다.

자세한 내용은 공통 서비스 연결 유형참조하세요.

감사 이벤트 검토

감사를 사용하여 조직 내에서 사용자 작업, 사용 권한 변경 및 사용 패턴을 추적할 수 있습니다. 이러한 도구를 사용하여 잠재적인 보안 인시던트 식별 및 해결

  • 감사 활성화: 사용자 작업, 권한, 변경 사항 및 보안 사고와 관련된 이벤트를 추적하고 모니터링합니다.
  • 감사 로그 및 스트림을 정기적으로 검토합니다. 정기적으로 감사 로그를 검토하여 사용자 활동을 모니터링하고 의심스러운 동작을 검색합니다. 특히 관리자 및 다른 사용자가 예기치 않은 사용 패턴을 찾습니다. 이 작업은 잠재적인 보안 위반을 식별하고 수정 작업을 수행하는 데 도움이 됩니다. 당사가 추적 중인 감사 이벤트에 대해 자세히 알아봅니다.
  • 보안 경고 구성: 보안 인시던트 또는 정책 위반을 알리도록 경고를 구성합니다. 이 작업은 잠재적인 위협에 적시에 대응하도록 보장합니다.

서비스 보안

Azure DevOps에서 서비스의 보안 및 무결성을 보장하려면 각 서비스에 대한 보안 조치를 구현합니다. 이러한 조치에는 권한 설정, 액세스 관리 및 각 서비스와 관련된 보안 기능 사용이 포함됩니다.

보안 검사 자동화

파트너 팀에서 빌드한 다음과 같은 자동화된 보안 도구를 사용하여 코드 및 비밀 취약성을 모니터링합니다.

  • 코드 검색 및 분석 사용:Microsoft Defender 같은 도구를 활용하여 코드에서 취약성, 비밀 및 잘못된 구성을 검색합니다. 이 작업은 개발 프로세스 초기에 보안 문제를 식별하고 수정하는 데 도움이 됩니다.
  • Azure DevOps에 GitHub Advanced Security를 사용합니다. 관리 ID를 사용하는 것은 옵션이 아닌 경우 자격 증명을 코드 및 구성 파일에 포함하는 대신 Azure Key Vault와 같은 보안 위치에 저장해야 합니다. Azure DevOps용 GitHub Advanced Security를 사용하여 코드 내에서 자격 증명을 식별합니다. 자세한 내용은 Azure DevOps에 대한 GitHub 고급 보안 구성을 참조하세요.
  • GitHub에 대한 네이티브 시크릿 스캐닝 사용: 관리 ID를 사용할 수 없는 경우, 코드와 구성 파일에 포함시키지 않고 Azure Key Vault와 같은 보안 위치에 시크릿을 저장하도록 합니다. 네이티브 비밀 검사 기능을 사용하여 코드 내에서 비밀을 식별합니다. 자세한 내용은 비밀 검사참조하세요.

자세한 내용은 GitHub 고급 보안 개요참조하세요.