Microsoft Defender for Cloud의 에이전트 없는 코드 검사는 Azure DevOps 및 GitHub의 모든 리포지토리에 대해 빠르고 확장 가능한 보안 범위를 제공합니다. 에이전트 없는 코드 검색은 빌드 또는 배포 파이프라인을 변경하지 않고도 코드, 오픈 소스 종속성 및 IaC(Infrastructure-as-code)를 자동으로 검사하여 취약성 및 잘못된 구성을 식별합니다. 이 방법은 단일 Azure DevOps 또는 GitHub 커넥터를 사용하여 설정 및 유지 관리를 간소화하고 광범위한 범위, 지속적인 인사이트 및 실행 가능한 보안 결과를 제공합니다. 이를 통해 보안 및 개발 팀은 개발 워크플로를 중단하지 않고도 위험을 원활하게 해결하는 데 집중할 수 있습니다.
실행할 스캐너를 사용자 지정하고 검사에서 포함하거나 제외할 조직, 프로젝트 또는 리포지토리를 정확하게 정의할 수 있습니다.
필수 구성 요소
지원되는 사용 사례:
Cloud Security Explorer는 SBOM으로 인한 종속성을 포함하여 리포지토리를 찾기 위해 쿼리합니다.
지원되는 지역: 오스트레일리아 동부, 캐나다 중부, 미국 중부, 동아시아, 미국 동부, 북유럽, 스웨덴 중부, 영국 남부, 서유럽.
지원되는 환경: Azure DevOps 커넥터 및 GitHub 커넥터.
역할 및 권한:
커넥터를 설정하고 구성하려면 다음을 수행합니다.
- 프로젝트 컬렉션 관리자: 초기 설정을 수행하려면 Azure DevOps에서 필요합니다.
- 구독 기여자: 커넥터를 만들고 구성하려면 Azure 구독에 필요합니다.
보안 결과를 보려면 다음을 수행합니다.
- 보안 관리자: 보안 설정, 정책 및 경고를 관리할 수 있지만 커넥터를 수정할 수는 없습니다.
- 보안 읽기 권한자: 권장 사항, 경고 및 정책을 볼 수 있지만 변경할 수는 없습니다.
주요 이점
Microsoft Defender for Cloud에서 에이전트 없는 코드 검색의 주요 이점은 다음과 같습니다.
- 사전 위험 관리: 개발 프로세스 초기에 위험을 식별합니다. 이렇게 하면 안전한 코딩 사례를 사용할 수 있으며 프로덕션에 도달하기 전에 취약성을 줄일 수 있습니다.
- 간편한 온보딩: 최소한의 구성과 파이프라인 변경 없이 빠르게 설정합니다.
- 엔터프라이즈 규모 중앙 집중식 관리: 단일 커넥터를 사용하여 여러 리포지토리에서 코드를 자동으로 검색합니다. 이렇게 하면 대규모 환경에 대한 광범위한 적용 범위가 제공됩니다.
- 빠른 수정을 위한 신속한 인사이트: 온보딩 직후 실행 가능한 취약성 인사이트를 받습니다. 이렇게 하면 빠른 수정이 가능하고 노출 시간이 줄어듭니다.
- 개발자 친화적이고 원활한 기능: CI/CD(지속적인 통합 및 지속적인 배포) 파이프라인과 독립적으로 작동하며, 변경이나 개발자의 직접적인 개입이 필요하지 않습니다. 이를 통해 개발자 생산성 또는 워크플로를 방해하지 않고 지속적인 보안 모니터링을 수행할 수 있습니다.
- 유연한 적용 범위 및 제어: 실행되는 스캐너와 검사할 스캐너를 선택합니다. 기본적으로 모든 항목을 처리하거나 특정 조직, 프로젝트 또는 리포지토리를 포함하거나 제외하도록 설정을 사용자 지정할 수 있습니다. 이렇게 하면 보안 범위를 위험 프로필 및 운영 요구 사항과 일치시켜 추가적인 복잡성을 증가시키지 않습니다.
- SBOM(소프트웨어 청구서) 만들기: 모든 검사에서 SBOM을 자동으로 생성하면 팀에게 추가 워크플로 변경 없이 리포지토리 전체의 종속성 및 버전에 대한 정확하고 쿼리 가능한 인벤토리를 제공합니다. 이를 통해 신속한 영향 분석, 새로 공개된 취약성에 대한 빠른 대응, 특정 패키지 또는 버전에 대한 노출을 평가할 때의 자신감 있는 의사 결정을 수행할 수 있습니다.
위험 검색 기능
에이전트 없는 코드 검색은 애플리케이션 코드, IaC(Infrastructure-as-code) 템플릿 및 타사 종속성에서 대상 지정되고 실행 가능한 권장 사항을 제공하여 보안을 향상시킵니다. 이는 커넥터를 통해 제공되는 클라우드 보안 상태 관리 보안 권장 사항 외에 추가됩니다. 주요 검색 기능은 다음을 포함합니다.
- 코드 취약성: 여러 프로그래밍 언어에서 일반적인 코딩 오류, 안전하지 않은 코딩 사례 및 알려진 취약성을 찾습니다.
- 코드형 인프라 구성 오류: 안전하지 않은 배포로 이어질 수 있는 IaC 템플릿의 보안 구성 오류를 검색합니다.
- 종속성 취약성: 리포지토리에서 검색된 오픈 소스 패키지 및 OS 패키지의 알려진 취약성을 식별합니다.
- SBOM(소프트웨어 청구서): 각 리포지토리에 대한 종속성 및 해당 버전의 포괄적이고 쿼리 가능한 인벤토리를 자동으로 생성합니다.
커넥터를 만들면 리포지토리, 파이프라인 및 서비스 연결에 대한 기본 클라우드 보안 상태 관리 권장 사항을 제공하여 보안을 강화합니다.
검사 도구
에이전트 없는 코드 검사는 다양한 오픈 소스 도구를 사용하여 코드 및 IaC(코드형 인프라) 템플릿에서 취약성 및 잘못된 구성을 찾습니다.
| 도구 | 지원되는 IaC/언어 | 라이선스 |
|---|---|---|
| 템플릿 분석기 | ARM IaC 템플릿, Bicep IaC 템플릿 | MIT |
| Checkov | Terraform IaC 템플릿, Terraform 계획 파일, AWS CloudFormation 템플릿, Kubernetes 매니페스트 파일, Helm 차트 파일, Dockerfiles, Azure ARM(Azure Resource Manager) IaC 템플릿, Azure Bicep IaC 템플릿, AWS SAM 템플릿(서버리스 응용 프로그램 모델), Kustomize 파일, 서버리스 프레임워크 템플릿, OpenAPI 사양 파일 | Apache 2.0 |
| 산적 | 파이썬 | Apache 2.0 |
| ESLint | JavaScript, TypeScript, JSX, TSX | MIT |
| Trivy | 리포지토리 매니페스트 및 잠금 파일에서 종속성 및 OS 패키지 취약성 검사(파일 시스템 모드) | Apache 2.0 |
| Syft | Alpine (apk), Bitnami packages, C (conan), C++ (conan), Dart (pubs), Debian (dpkg), Dotnet (deps.json), Objective-C (cocoapods), Elixir (mix), Erlang (rebar3), Go (go.mod, Go binaries), GitHub (workflows, actions), Haskell (cabel, stack), Java (jar, ear, war, par, sar, nar, rar, native-image), JavaScript (npm, yarn), Jenkins Plugins (jpi, hpi), Linux kernel archives (vmlinz), Linux kernel modules (ko), Nix (outputs in /nix/store), PHP (composer, PECL, Pear), Python (wheel, egg, poetry, requirements.txt, uv), Red Hat (rpm), Ruby (gem), Rust (cargo.lock, auditable binary), Swift (cocoapods, swift-package-manager), Wordpress plugins, Terraform providers (.terraform.lock.hcl) | Apache 2.0 |
이러한 도구는 다양한 언어와 IaC(Infrastructure-as-code) 프레임워크를 지원하여 코드베이스 전체에서 철저한 보안 분석을 보장합니다.
지원되는 시스템 및 파일 형식
버전 제어 시스템
Azure DevOps: Azure DevOps 커넥터를 통한 연결된 리포지토리에 대한 전체 지원.
GitHub: GitHub 커넥터를 통해 연결된 리포지토리에 대한 모든 지원.
프로그래밍 언어
정적 코드 분석: Python; JavaScript/TypeScript.
종속성 에코시스템(Trivy를 통해): Node.js(npm, yarn), Python(pip, Pipenv, Poetry), Java(Maven, Gradle), .NET(NuGet), Go 모듈, Ruby(RubyGems), PHP(Composer), Rust(Cargo), 그리고 매니페스트 및 잠금 파일을 통해 지원되는 기타 언어 및 패키지 에코시스템입니다.
IaC(코드형 인프라) 플랫폼 및 구성
| IaC 플랫폼 | 지원되는 파일 형식 | 참고 사항 |
|---|---|---|
| Terraform |
.tf, .tfvars |
.tfvars에서 변수 파일을 포함하여 HCL2 언어로 Terraform IaC 템플릿을 지원합니다. |
| Terraform 계획 | JSON 파일 | 분석 및 검사에 사용되는 계획된 구성을 나타내는 JSON 파일을 포함합니다. |
| AWS CloudFormation | JSON, YAML 파일 | AWS 리소스를 정의하기 위한 AWS CloudFormation 템플릿을 지원합니다. |
| Kubernetes (쿠버네티스) | YAML, JSON 파일 | 클러스터에서 구성을 정의하기 위한 Kubernetes 매니페스트 파일을 지원합니다. |
| 헬름 | Helm 차트 디렉터리 구조, YAML 파일 | Helm의 표준 차트 구조를 따릅니다. Helm v3 차트 파일을 지원합니다. |
| Docker | Dockerfile이라는 파일 | 컨테이너 구성에 대한 Dockerfiles를 지원합니다. |
| Azure ARM 템플릿 | JSON 파일 | JSON 형식의 ARM(Azure Resource Manager) IaC 템플릿을 지원합니다. |
| Azure Bicep |
.bicep 파일 |
ARM용 DSL(도메인 특정 언어)인 Bicep IaC 템플릿을 지원합니다. |
| AWS SAM | YAML 파일 | 서버리스 리소스에 대한 AWS SAM(서버리스 응용 프로그램 모델) 템플릿을 지원합니다. |
| Kustomize | YAML 파일 | Kubernetes 사용자 지정(Kustomize)에 대한 구성 파일을 지원합니다. |
| Serverless Framework | YAML 파일 | 서버리스 아키텍처를 정의하는 서버리스 프레임워크에 대한 템플릿을 지원합니다. |
| OpenAPI | YAML, JSON 파일 | RESTful API를 정의하기 위한 OpenAPI 사양 파일을 지원합니다. |
Azure DevOps 및 GitHub 조직에서 에이전트 없는 코드 검색 사용
Azure DevOps 및 GitHub 조직을 모두 Defender for Cloud에 연결하여 에이전트 없는 코드 검색을 사용하도록 설정할 수 있습니다. Azure DevOps 조직 연결 또는 GitHub 조직 연결의 단계에 따라 시작합니다.
스캐너 범위 및 범주 사용자 지정
GitHub 및 Azure DevOps의 경우 실행할 스캐너를 제어하고 에이전트 없는 검사에서 포함되거나 제외되는 리포지토리를 정확하게 지정할 수 있습니다.
스캐너 선택: 필요에 따라 각 코드 및 IaC(Infrastructure-as-code) 스캐너를 켜거나 끕니다.
검사 범위를 설정합니다. 기본적으로 모든 리포지토리를 검사할지 또는 특정 조직, 프로젝트 또는 리포지토리를 포함하거나 제외하도록 사용자 지정 범위를 정의할지 결정합니다.
- 제외 모드: 나열한 항목을 제외한 모든 항목을 검색합니다.
- 포함 모드: 나열한 항목만 검색합니다.
사용자 지정 범위 옵션:
- GitHub의 경우 소유자 또는 리포지토리별로 범위를 설정합니다.
- Azure DevOps의 경우 조직, 프로젝트 또는 리포지토리별로 범위를 설정합니다.
새 리포지토리 자동 검색: 새 리포지토리의 자동 검색은 항상 커넥터 범위에 포함된 조직 또는 프로젝트로 제한됩니다. 제외 모드를 사용하는 경우 기본적으로 사용하도록 설정되며 사용자 지정 범위 목록이 설정되지 않습니다. 새로 만든 리포지토리는 자동으로 검사됩니다.
나열된 리포지토리만 검사되므로 자동 검색은 포함 모드에서 사용할 수 없습니다.
이렇게 하면 보안 요구 사항에 맞게 검사를 일치시키고, 환경이 증가함에 따라 검사를 최신 상태로 유지하고, 불필요한 검사 또는 검색되지 않은 영역을 방지할 수 있습니다.
에이전트 없는 코드 검사의 작동 방식
에이전트 없는 코드 검사는 CI/CD 파이프라인과 독립적으로 작동합니다. Azure DevOps 또는 GitHub 커넥터를 사용하여 코드 및 IaC(Infrastructure-as-code) 구성을 자동으로 검색합니다. 파이프라인을 수정하거나 확장을 추가할 필요가 없습니다. 이 설정을 사용하면 여러 리포지토리에서 광범위하고 지속적인 보안 분석을 수행할 수 있습니다. 결과는 처리되고 클라우드용 Microsoft Defender에 직접 표시됩니다.
검사 프로세스
커넥터 내에서 에이전트 없는 코드 검색 기능을 사용하도록 설정하면 검사 프로세스에 다음 단계가 포함됩니다.
리포지토리 검색: 시스템은 커넥터를 만든 직후부터 8시간마다 Azure DevOps 및 GitHub 커넥터를 통해 연결된 모든 리포지토리를 자동으로 식별합니다.
코드 검색: 분석을 위해 각 리포지토리의 기본(기본) 분기에서 최신 코드를 안전하게 검색합니다. 처음에는 커넥터 설정 후 매일 검색됩니다.
분석: 시스템은 Microsoft Defender for Cloud 내에서 관리 및 업데이트되는 기본 제공 검사 도구 집합을 사용하여 코드 및 IaC(Infrastructure-as-code) 템플릿에서 취약성 및 잘못된 구성을 찾습니다. 또한 쿼리 가능한 패키지 관리를 허용하는 SBOM을 만듭니다.
결과 처리: 클라우드용 Defender의 백 엔드를 통해 검색 결과를 처리하여 실행 가능한 보안 권장 사항을 만듭니다.
결과 전달: 시스템은 결과를 클라우드용 Defender에서 보안 권장 사항으로 표시하여 보안 팀이 문제를 검토하고 해결할 수 있도록 합니다.
검사 빈도 및 기간
스캔 빈도:
- 리포지토리, 파이프라인 및 서비스 연결의 보안 태세는 커넥터를 만든 후 8시간마다 평가됩니다.
- 시스템은 커넥터를 만든 후 매일 코드 및 IaC(Infrastructure-as-code) 템플릿에서 취약성을 검사합니다.
검사 기간: 검사는 일반적으로 리포지토리의 크기와 복잡성에 따라 15~60분 이내에 완료됩니다.
검사 결과 보기 및 관리
검사가 완료되면 클라우드용 Microsoft Defender 내에서 보안 결과에 액세스할 수 있습니다.
결과에 액세스
클라우드용 Microsoft Defender에서 보안 권장 사항 탭으로 이동합니다.
다음과 같은 Azure DevOps 및 GitHub 리포지토리 모두에 대한 권장 사항을 검토합니다.
리포지토리에 코드 검사 결과 해결이 있어야 합니다. 코드 리포지토리에 있는 취약성을 나타냅니다.
리포지토리에서 코드형 인프라 검사 결과를 해결해야 함 - IaC 템플릿의 보안 구성 오류에 플래그를 지정합니다.
리포지토리에 종속성 취약성 검사 결과가 확인되어야 합니다 . 리포지토리에서 감지된 취약한 오픈 소스 패키지를 나타냅니다.
두 플랫폼에 대해 지원되는 권장 사항의 전체 범위는 다음을 참조 하세요. Azure DevOps 및 GitHub 보안 권장 사항.
권장 사항에는 다중 검토자 승인 요구, 비밀 액세스 제한, Azure DevOps 및 GitHub 환경 모두에 대한 모범 사례 적용과 같은 항목이 포함됩니다.
영향을 받는 파일, 심각도 및 수정 단계에 대한 세부 정보를 보려면 권장 사항을 선택합니다.
에이전트 없는 코드 검사와 파이프라인 내 검사 간의 차이점
Microsoft Security DevOps 확장을 사용한 에이전트 없는 코드 검색 및 파이프라인 내 검색은 모두 Azure DevOps 및 GitHub 내에서 보안 검사를 제공합니다. 그들은 서로 다른 필요를 제공하지만 서로를 보완합니다. 다음 표에서는 보안 및 개발 요구 사항에 가장 적합한 옵션을 선택하는 데 도움이 되는 주요 차이점을 강조 표시합니다.
| 측면 | 에이전트 없는 코드 검사 | 파이프라인 내 검사 |
|---|---|---|
| 사용 사례 맞춤 | 개발자에게 최소한의 중단으로 광범위한 적용 범위 제공 | 사용자 지정 가능한 컨트롤을 사용하여 자세한 파이프라인 통합 검사 제공 |
| 검사 범위 및 적용 범위 | 예약된 기준으로 IaC(코드형 인프라), 코드 취약성 및 오픈 소스 종속성 취약성에 중점을 둡니다(매일). | 각 파이프라인 실행에서 트리거되는 이진 파일 및 컨테이너 이미지를 포함하여 광범위한 적용 범위를 제공합니다. |
| 설치 및 구성 | 커넥터를 만든 후 추가 설정이 필요하지 않습니다. | 각 CI/CD 파이프라인에서 수동 설치 및 구성 필요 |
| 파이프라인 통합 | 워크플로를 수정하지 않고 (CI/CD) 파이프라인과 독립적으로 실행 | CI/CD 파이프라인 내에 통합되어 각 파이프라인에서 구성이 필요 |
| 스캐너 사용자 지정 | 실행할 스캐너를 선택할 수 있습니다. | 특정 스캐너, 범주, 언어, 민감도 수준 및 Microsoft 이외의 도구를 사용하여 사용자 지정할 수 있습니다. |
| 결과 및 피드백 | 클라우드용 Defender 내의 결과에 대한 액세스를 제공합니다. | CI/CD 파이프라인 내에서 근 실시간 피드백을 제공하며 결과는 클라우드용 Defender에서도 볼 수 있습니다. |
| 중단 및 실패 조건 | 빌드를 중단할 수 없음 | 보안 결과의 심각도에 따라 빌드를 중단하도록 구성할 수 있습니다. |
확장성 및 성능 영향
에이전트 없는 코드 검사는 구독에서 리소스를 만들지 않으며 파이프라인 프로세스 중에 검색할 필요가 없습니다. Azure DevOps 및 GitHub REST API를 사용하여 메타데이터 및 코드를 가져옵니다. 즉, API 호출은 Azure DevOps 및 GitHub 속도 제한에 포함되지만 직접 데이터 전송 비용이 발생하지는 않습니다. 이 서비스는 검색을 관리하여 개발 환경을 중단하지 않고 Azure DevOps 및 GitHub 속도 제한 내에 유지되도록 합니다. 이 메서드는 DevOps 워크플로에 영향을 주지 않고 리포지토리 전체에서 효율적인 고성능 검사를 제공합니다. 자세한 내용은 GitHub REST API에 대한Azure DevOps 속도 및 사용량 제한 및 속도 제한을 참조하세요.
에이전트 없는 코드 검사에 대한 데이터 보안, 규정 준수 및 액세스 제어
클라우드용 Microsoft Defender의 에이전트 없는 코드 검사 서비스는 엄격한 데이터 보안 및 개인 정보 보호 조치를 구현하여 코드의 안전하고 규정을 준수하는 처리를 보장합니다.
- 데이터 암호화 및 액세스 제어: 시스템은 업계 표준 프로토콜을 사용하여 전송 중인 모든 데이터를 암호화합니다. 권한 있는 클라우드용 Defender 서비스만 코드에 액세스할 수 있습니다.
- 데이터 보존 및 보존: 검사는 데이터 보호법을 준수하기 위해 Azure DevOps 및 GitHub 커넥터(미국 또는 EU)와 동일한 지역에서 발생합니다. 시스템은 검사하는 동안에만 코드를 처리하고 장기간 저장하지 않고 이후에 안전하게 삭제합니다.
- 리포지토리에 대한 액세스: 서비스는 검사를 수행하기 위해 Azure DevOps 및 GitHub에 대한 보안 액세스 토큰을 생성합니다. 이 토큰을 사용하면 구독에서 리소스를 만들지 않고도 필요한 메타데이터 및 코드를 검색할 수 있습니다. 클라우드용 Defender 구성 요소만 액세스하여 데이터 무결성을 보호합니다.
- 규정 준수 지원: 이 서비스는 데이터 처리 및 개인 정보 보호에 대한 규정 및 보안 표준에 부합하여 지역 데이터 보호 요구 사항에 따라 고객 코드의 안전한 처리 및 검사를 보장합니다.
이러한 조치는 데이터의 개인 정보 보호 및 무결성을 유지하면서 안전하고 규정을 준수하며 효율적인 코드 검사 프로세스를 보장합니다.
제한 사항(공개 미리 보기)
공개 미리 보기 단계에서는 다음과 같은 제한 사항이 적용됩니다.
- 이진 검색 없음: SAST(코드) 및 IaC 검색 도구만 실행됩니다.
- 스캔 빈도: 활성화 시 리포지토리를 검사한 다음 매일 검사합니다.
- 리포지토리 크기: 검사를 1GB 미만의 리포지토리로 제한합니다.
-
분기 검사: 검사는 기본 분기(일반적으로
main)만 포함합니다. - 도구 사용자 지정: 검사 도구를 사용자 지정할 수 없습니다.
Syft(SBOM)에는 현재 다음과 같은 제한 사항이 있습니다.
SBOM은 다운로드할 수 없으며 Syft의 결과를 사용하여 특정 패키지 및 해당 패키지를 사용하는 리포지토리를 쿼리할 수 있습니다.
리포지토리에는 잠금 파일이 필요하고 그렇지 않으면 직접 종속성만 발견됩니다.
SBOM 크기 제한은 1MB로 제한됩니다. 확인된 패키지가 많은 경우 클라우드 맵으로의 수집이 실패합니다.
SBOM 사용은 구성할 수 없거나 다운로드할 수 없습니다. 모든 에이전트 없는 검사에서 SBOM이 생성됩니다.
시간 제한은 SBOM 도구가 실행되도록 15분으로 설정됩니다.
Agentless를 사용하지 않도록 설정해도 SBOM 권장 사항은 삭제되지 않습니다.