다음을 통해 공유


빌드 작업 구성 및 사용자 지정

비고

2022년 12월 31일부터 MSCA(Microsoft 보안 코드 분석) 확장이 사용 중지됩니다. MSCA는 Microsoft Security DevOps Azure DevOps 확장으로 대체됩니다. 구성 지침에 따라 확장을 설치하고 구성합니다.

이 문서에서는 각 빌드 작업에서 사용할 수 있는 구성 옵션을 자세히 설명합니다. 이 문서는 보안 코드 분석 도구에 대한 작업으로 시작합니다. 후처리 작업으로 끝납니다.

맬웨어 방지 스캐너 작업

비고

맬웨어 방지 스캐너 빌드 작업에는 Windows Defender를 사용하도록 설정된 빌드 에이전트가 필요합니다. 호스트된 Visual Studio 2017 이상에서는 이러한 에이전트를 제공합니다. 빌드 작업은 Visual Studio 2015 호스팅 에이전트에서 실행되지 않습니다.

이러한 에이전트에서 서명을 업데이트할 수는 없지만 서명은 항상 3시간 미만이어야 합니다.

작업 구성에 대한 세부 정보는 다음 스크린샷 및 텍스트에 표시됩니다.

맬웨어 방지 스캐너 빌드 작업 구성

스크린샷의 형식 목록 상자에서 기본 선택되어 있습니다. 사용자 지정을 선택하여 스캔을 사용자 정의하는 명령줄 인수를 제공합니다.

Windows Defender는 Windows 업데이트 클라이언트를 사용하여 서명을 다운로드하고 설치합니다. 빌드 에이전트에서 서명 업데이트가 실패하면 HRESULT 오류 코드가 Windows 업데이트에서 제공될 수 있습니다.

Windows 업데이트 오류 및 해당 완화에 대한 자세한 내용은 구성 요소에 의한 Windows 업데이트 오류 코드 와 TechNet 문서 Windows 업데이트 에이전트 - 오류 코드를 참조하세요.

이 작업의 YAML 구성에 대한 자세한 내용은 안티멀웨어 YAML 옵션에서 확인하십시오.

BinSkim 작업

비고

BinSkim 작업을 실행하려면 빌드가 다음 조건 중 하나를 충족해야 합니다.

  • 당신의 빌드는 관리 코드에서 이진 아티팩트를 생성합니다.
  • BinSkim을 사용하여 분석하려는 커밋한 바이너리 파일이 있습니다.

작업 구성에 대한 세부 정보는 다음 스크린샷 및 목록에 표시됩니다.

BinSkim 빌드 작업 구성

  • .pdb 디버그 파일이 생성되도록 빌드 구성을 디버그로 설정합니다. BinSkim은 이러한 파일을 사용하여 출력 이진 파일의 문제를 소스 코드에 다시 매핑합니다.
  • 고유한 명령줄을 조사하고 만들지 않도록 하려면 다음을 수행합니다.
    • 형식 목록에서 기본선택합니다.
    • 함수 목록에서 분석선택합니다.
  • 대상파일, 디렉터리 또는 필터 패턴에 대해 하나 이상의 지정자를 입력합니다. 이러한 지정자는 분석할 하나 이상의 바이너리로 해석됩니다.
    • 지정된 여러 대상은 세미콜론(;) 구분해야 합니다.
    • 지정자는 단일 파일이거나 와일드카드를 포함할 수 있습니다.
    • 디렉터리 사양은 항상 \*로 끝나야 합니다.
    • 예제:
           *.dll;*.exe
           $(BUILD_STAGINGDIRECTORY)\*
           $(BUILD_STAGINGDIRECTORY)\*.dll;$(BUILD_STAGINGDIRECTORY)\*.exe;
  • 형식 목록에서 명령줄 선택하는 경우 binskim.exe실행해야 합니다.
    • binskim.exe 첫 번째 인수가 하나 이상의 경로 사양 뒤에 분석할 동사인지 확인합니다. 각 경로는 원본 디렉터리에 상대적인 전체 경로 또는 경로일 수 있습니다.
    • 여러 대상 경로는 공백으로 구분해야 합니다.
    • /o 또는 /output 옵션을 생략할 수 있습니다. 출력 값이 자동으로 추가되거나 대체됩니다.
    • 표준 명령줄 구성은 다음과 같습니다.
           analyze $(Build.StagingDirectory)\* --recurse --verbose
           analyze *.dll *.exe --recurse --verbose

비고

대상에 대한 디렉터리를 지정하는 경우 후행 \*가 중요합니다.

BinSkim 명령줄 인수, ID별 규칙 또는 종료 코드에 대한 자세한 내용은 BinSkim 사용자 가이드참조하세요.

이 작업의 YAML 구성에 대한 정보를 확인하려면 BinSkim YAML 옵션을 확인하세요.

자격 증명 스캐너 작업

작업 구성에 대한 세부 정보는 다음 스크린샷 및 목록에 표시됩니다.

자격 증명 스캐너 빌드 작업 구성

사용 가능한 옵션은 다음과 같습니다.

  • 표시 이름: Azure DevOps 작업의 이름입니다. 기본값은 자격 증명 스캐너 실행입니다.
  • 도구 주 버전: 사용 가능한 값에는 CredScan V2, CredScan V1포함됩니다. 고객은 CredScan V2 버전을 사용하는 것이 좋습니다.
  • 출력 형식: 사용 가능한 값에는 TSV, CSV, SARIFPREfast포함됩니다.
  • 도구 버전: 최신선택하는 것이 좋습니다.
  • 검색 폴더: 검사할 리포지토리 폴더입니다.
  • 탐색기 파일 형식: 스캔에 사용되는 탐색기 파일을 찾기 위한 옵션입니다.
  • 억제 파일: JSON 파일은 출력 로그에서 문제를 억제할 수 있습니다. 억제 시나리오에 대한 자세한 내용은 이 문서의 FAQ 섹션을 참조하세요.
  • 자세한 출력 : 자체 설명 가능.
  • 일괄 처리 크기: 자격 증명 스캐너를 실행하는 데 사용되는 동시 스레드 수입니다. 기본값은 20입니다. 가능한 값 범위는 1에서 2,147,483,647까지입니다.
  • 일치 시간 제한: 검사를 중단하기 전에 검색자 일치를 시도하는 데 소요되는 시간(초)입니다.
  • 파일 검사 읽기 버퍼 크기: 콘텐츠를 읽는 동안 사용되는 버퍼의 크기(바이트)입니다. 기본값은 524,288입니다.
  • 최대 파일 검색 읽기 바이트: 콘텐츠 분석 중에 파일에서 읽을 최대 바이트 수입니다. 기본값은 104,857,600입니다.
  • 컨트롤 옵션>이 작업실행: 작업이 실행되는 시기를 지정합니다. 사용자 지정 조건 선택하여 더 복잡한 조건을 지정합니다.
  • 버전: Azure DevOps 내의 빌드 작업 버전입니다. 이 옵션은 자주 사용되지 않습니다.

이 작업을 위한 YAML 구성에 관한 정보는 자격 증명 스캐너 YAML 옵션을 확인하세요.

Roslyn 분석기 작업

비고

Roslyn 분석기 작업을 실행하려면 빌드가 다음 조건을 충족해야 합니다.

  • 빌드 정의에는 C# 또는 Visual Basic 코드를 컴파일하는 기본 제공 MSBuild 또는 VSBuild 빌드 작업이 포함됩니다. 분석기 작업은 기본 제공 작업의 입력 및 출력을 사용하여 Roslyn 분석기를 사용하도록 설정된 MSBuild 컴파일을 실행합니다.
  • 이 빌드 작업을 실행하는 빌드 에이전트에는 Visual Studio 2017 버전 15.5 이상이 설치되어 있으므로 컴파일러 버전 2.6 이상을 사용합니다.

작업 구성에 대한 세부 정보는 다음 목록과 참고 항목에 나와 있습니다.

사용 가능한 옵션은 다음과 같습니다.

  • 규칙 집합: 값은 SDL 필수, SDL 권장 , 또는 사용자 지정 규칙 집합입니다.
  • 분석기 버전: 최신을 선택하는 것을 추천합니다.
  • 컴파일러 경고 억제 파일: 억제된 경고 ID 목록이 있는 텍스트 파일입니다.
  • 컨트롤 옵션>이 작업실행: 작업이 실행되는 시기를 지정합니다. 사용자 지정 조건 선택하여 더 복잡한 조건을 지정합니다.

비고

  • Roslyn 분석기는 컴파일러와 통합되며 csc.exe 컴파일의 일부로만 실행할 수 있습니다. 따라서 이 작업을 수행하려면 빌드에서 이전에 실행된 컴파일러 명령을 재생하거나 다시 실행해야 합니다. 이 재생 또는 실행은 MSBuild 빌드 작업 로그에 대한 Azure DevOps(이전의 Visual Studio Team Services)를 쿼리하여 수행됩니다.

    태스크가 빌드 정의에서 MSBuild 컴파일 명령줄을 안정적으로 가져올 수 있는 다른 방법은 없습니다. 사용자가 명령줄을 입력할 수 있도록 자유형 텍스트 상자를 추가하는 것이 좋습니다. 그러나 up-to와 -date 명령줄을 주 빌드와 동기화 상태로 유지하기는 어려울 것입니다.

    사용자 지정 빌드에는 컴파일러 명령뿐만 아니라 전체 명령 집합을 재생해야 합니다. 이러한 경우 Roslyn 분석기를 사용하도록 설정하는 것은 사소하거나 신뢰할 수 없습니다.

  • Roslyn 분석기는 컴파일러와 통합됩니다. 호출하려면 Roslyn 분석기에서 컴파일이 필요합니다.

    이 새 빌드 작업은 이미 빌드된 C# 프로젝트를 다시 컴파일하여 구현됩니다. 새 작업은 원래 작업과 동일한 빌드 또는 빌드 정의에서 MSBuild 및 VSBuild 빌드 작업만 사용합니다. 그러나 이 경우 새 작업은 Roslyn 분석기가 활성화된 상태로 사용됩니다.

    새 작업이 원래 작업과 동일한 에이전트에서 실행되는 경우 새 작업의 출력은 원본 폴더에 있는 원래 작업의 출력을 덮어씁니다. 빌드 출력은 동일하지만 MSBuild를 실행하고 아티팩트 준비 디렉터리에 출력을 복사한 다음 Roslyn 분석기를 실행하는 것이 좋습니다.

Roslyn 분석기 작업에 대한 추가 리소스는 Roslyn 기반 분석기검토하세요.

Microsoft.CodeAnalysis.FxCopAnalyzers NuGet 페이지에서 이 빌드 작업에서 설치하고 사용하는 분석기 패키지를 찾을 수 있습니다.

이 작업의 YAML 구성에 대한 자세한 내용은 Roslyn Analyzers YAML 옵션

TSLint 작업

TSLint에 대한 더 많은 정보는 TSLint GitHub 리포지토리에서 확인할 수 있습니다.

비고

알고 있는 것처럼 TSLint GitHub 리포지토리 홈페이지에 따르면 TSLint는 2019년에 더 이상 사용되지 않습니다. Microsoft는 ESLint 대체 작업으로 조사하고 있습니다.

이 작업에 대한 YAML 구성 정보를 확인하려면 TSLint YAML 옵션을(를) 참조하세요.

보안 분석 로그 게시 작업

작업 구성에 대한 세부 정보는 다음 스크린샷 및 목록에 표시됩니다.

보안 분석 로그 게시 빌드 작업 구성

  • 아티팩트 이름: 모든 문자열 식별자입니다.
  • 아티팩트 유형: 선택한 항목에 따라 Azure DevOps Server 또는 빌드 에이전트에서 액세스할 수 있는 공유 파일에 로그를 게시할 수 있습니다.
  • 도구: 특정 도구에 대한 로그를 유지하도록 선택하거나 모든 도구 선택하여 모든 로그를 유지할 수 있습니다.

이 작업에 대한 YAML 구성 정보를 확인하려면 YAML 옵션으로 보안 로그를 게시하십시오

보안 보고서 작업

보안 보고서 구성의 세부 정보는 다음 스크린샷 및 목록에 표시됩니다.

보안 보고서 빌드 작업 구성

  • 보고서:파이프라인 콘솔, TSV 파일HTML 파일 형식을 선택하세요. 선택한 각 형식에 대해 하나의 보고서 파일이 만들어집니다.
  • 도구: 검색된 문제를 요약할 빌드 정의에서 도구를 선택합니다. 선택한 각 도구에 대해 오류만 표시할지 아니면 요약 보고서에 오류와 경고가 모두 표시되는지 여부를 선택하는 옵션이 있을 수 있습니다.
  • 고급 옵션: 선택한 도구 중 하나에 대한 로그가 없는 경우 경고 또는 오류를 기록하도록 선택할 수 있습니다. 오류를 기록하면 작업이 실패합니다.
  • 기본 로그 폴더: 로그를 찾을 기본 로그 폴더를 사용자 지정할 수 있습니다. 그러나 이 옵션은 일반적으로 사용되지 않습니다.

이 작업에 대한 YAML 구성 정보를 보려면 보안 보고서의 YAML 옵션을 확인하십시오.

분석 후 작업

작업 구성에 대한 세부 정보는 다음 스크린샷 및 목록에 표시됩니다.

사후 분석 빌드 작업 구성

  • 도구: 빌드 중단을 조건부로 삽입할 빌드 정의에서 도구를 선택합니다. 선택한 각 도구에 대해 오류만 중단할지 아니면 오류와 경고 모두에서 중단할지를 선택하는 옵션이 있을 수 있습니다.
  • 보고서: 필요에 따라 빌드 중단을 일으키는 결과를 작성할 수 있습니다. 결과는 Azure DevOps 콘솔 창 및 로그 파일에 기록됩니다.
  • 고급 옵션: 선택한 도구 중 하나에 대한 로그가 없는 경우 경고 또는 오류를 기록하도록 선택할 수 있습니다. 오류를 기록하면 작업이 실패합니다.

이 작업을 위한 YAML 구성에 대한 정보는 분석 후 사용할 수 있는 YAML 옵션을 확인하십시오.

다음 단계

YAML 기반 구성에 대한 자세한 내용은 YAML 구성 가이드참조하세요.

보안 코드 분석 확장 및 제공되는 도구에 대한 추가 질문이 있는 경우 FAQ 페이지 확인하세요.