GitHub 및 Azure DevOps에서 끌어오기 요청 주석 사용

DevOps 보안은 보안 결과를 PR(끌어오기 요청)의 주석으로 공개합니다. 보안 운영자는 클라우드용 Microsoft Defender PR 주석을 사용하도록 설정할 수 있습니다. 노출된 문제는 개발자가 해결할 수 있습니다. 이 프로세스는 프로덕션 단계에 들어가기 전에 잠재적인 보안 취약성 및 잘못된 구성을 방지하고 수정할 수 있습니다. DevOps 보안은 전체 파일에서 검색된 모든 취약성이 아닌 끌어오기 요청 중에 발생한 차이점 내의 취약성에 주석을 추가합니다. 개발자는 소스 코드 관리 시스템에서 주석을 볼 수 있으며 보안 운영자는 클라우드용 Microsoft Defender에서 해결되지 않은 결과를 볼 수 있습니다.

클라우드용 Microsoft Defender를 사용하여 Azure DevOps에서 PR 주석을 구성할 수 있습니다. GitHub Advanced Security 고객인 경우 GitHub에서 PR 주석을 가져올 수 있습니다.

끌어오기 요청 주석이란?

끌어오기 요청 주석은 GitHub 또는 Azure DevOps의 끌어오기 요청에 추가되는 주석입니다. 이러한 주석은 끌어오기 요청의 코드 변경 내용 및 식별된 보안 문제에 대한 피드백을 제공하고 검토자가 변경 내용을 이해하는 데 도움이 됩니다.

리포지토리에 대한 액세스 권한이 있는 사용자가 주석을 추가할 수 있으며, 변경 내용을 제안하거나, 질문을 하거나, 코드에 대한 피드백을 제공하는 데 사용할 수 있습니다. 주석을 사용하여 코드가 기본 분기에 병합되기 전에 수정해야 하는 문제 및 버그를 추적할 수도 있습니다. 클라우드용 Defender의 DevOps 보안은 주석을 사용하여 보안 결과를 표시합니다.

필수 조건

GitHub의 경우:

Azure DevOps의 경우:

GitHub에서 끌어오기 요청 주석 사용 설정

개발자는 GitHub에서 끌어오기 요청 주석을 사용하도록 설정하여 기본 분기에서 직접 PR을 만들 때 보안 문제를 볼 수 있습니다.

GitHub에서 끌어오기 요청 주석을 사용하도록 설정하려면 다음을 수행합니다.

  1. GitHub로 이동하여 로그인합니다.

  2. 클라우드용 Defender에 온보딩한 리포지토리를 선택합니다.

  3. Your repository's home page>.github/workflows로 이동합니다.

    GitHub 워크플로 폴더를 선택하기 위해 이동할 위치를 보여 주는 스크린샷

  4. 필수 구성 요소에서 만든 msdevopssec.yml을 선택합니다.

    화면에서 msdevopssec.yml 파일을 선택할 위치를 보여 주는 스크린샷

  5. 편집을 선택합니다.

    편집 단추의 모양을 보여 주는 스크린샷

  6. 트리거 섹션을 찾아 업데이트하여 다음을 포함합니다.

    # Triggers the workflow on push or pull request events but only for the main branch
    pull_request:
      branches: ["main"]
    

    샘플 리포지토리를 볼 수도 있습니다.

    (선택 사항) 트리거 섹션 아래에 분기를 입력하여 실행할 분기를 선택할 수 있습니다. 모든 분기를 포함하려면 분기 목록이 있는 줄을 제거합니다. 

  7. 커밋 시작을 선택합니다.

  8. 변경 내용 커밋을 선택합니다.

    스캐너에서 검색된 모든 문제는 끌어오기 요청의 변경된 파일 섹션에서 볼 수 있습니다.

    • 테스트에 사용됨 - 경고가 프로덕션 코드에 없습니다.

Azure DevOps에서 끌어오기 요청 주석 사용

개발자는 Azure DevOps에서 끌어오기 요청 주석을 사용하도록 설정하여 기본 분기에서 직접 PR을 만들 때 보안 문제를 볼 수 있습니다.

CI 빌드에 빌드 유효성 검사 정책 사용

끌어오기 요청 주석을 사용하도록 설정하려면 먼저 주 분기에서 CI 빌드에 대한 빌드 유효성 검사 정책을 사용하도록 설정해야 합니다.

CI 빌드에 빌드 유효성 검사 정책을 사용하도록 설정하려면 다음을 수행합니다.

  1. Azure DevOps 프로젝트에 로그인합니다.

  2. 프로젝트 설정>리포지토리로 이동합니다.

    리포지토리를 선택하기 위해 탐색할 위치를 보여 주는 스크린샷

  3. 끌어오기 요청을 사용하도록 설정할 리포지토리를 선택합니다.

  4. 정책을 선택합니다.

  5. 분기 정책>기본 분기로 이동합니다.

    분기 정책을 찾을 위치를 보여 주는 스크린샷

  6. 빌드 유효성 검사 섹션을 찾습니다.

  7. 리포지토리에 대한 빌드 유효성 검사가 켜기로 전환되어 있어야 합니다.

    CI 빌드 토글이 있는 위치를 보여 주는 스크린샷

  8. 저장을 선택합니다.

    빌드 유효성 검사를 보여 주는 스크린샷

이러한 단계를 완료한 후에는 이전에 만든 빌드 파이프라인을 선택하고 필요에 맞게 설정을 사용자 지정할 수 있습니다.

끌어오기 요청 주석 사용

Azure DevOps에서 끌어오기 요청 주석을 사용하도록 설정하려면 다음을 수행합니다.

  1. Azure Portal에 로그인합니다.

  2. 클라우드용 Defender>DevOps 보안으로 이동합니다.

  3. 끌어오기 요청 주석을 사용하도록 설정하려면 모든 관련 리포지토리를 선택합니다.

  4. 리소스 관리를 선택합니다.

    리소스를 관리하는 방법을 보여 주는 스크린샷

  5. 끌어오기 요청 주석을 켜기로 전환합니다.

    켜기로 전환된 모습을 보여 주는 스크린샷

  6. (선택 사항) 드롭다운 메뉴에서 범주를 선택합니다.

    참고 항목

    코드로서의 인프라 구성 오류(ARM, Bicep, Terraform, CloudFormation, Dockerfiles, Helm 차트 등) 결과만 현재 지원됩니다.

  7. (선택 사항) 드롭다운 목록에서 심각도 수준을 선택합니다.

  8. 저장을 선택합니다.

이제부터 끌어오기 요청의 모든 주석은 구성에 따라 표시됩니다.

Azure DevOps에서 내 프로젝트 및 조직에 대한 끌어오기 요청 주석을 사용하도록 설정하려면:

Microsoft에 노출된 Azure DevOps 리소스 업데이트 API를 호출하여 프로그래밍 방식으로 이 작업을 수행할 수 있습니다. 보안 리소스 공급자.

API 정보:

Http 메서드: 패치 URL:

  • Azure DevOps 프로젝트 업데이트: https://management.azure.com/subscriptions/<subId>/resourcegroups/<resourceGroupName>/providers/Microsoft.Security/securityConnectors/<connectorName>/devops/default/azureDevOpsOrgs/<adoOrgName>/projects/<adoProjectName>?api-version=2023-09-01-preview
  • Azure DevOps 조직 업데이트]: https://management.azure.com/subscriptions/<subId>/resourcegroups/<resourceGroupName>/providers/Microsoft.Security/securityConnectors/<connectorName>/devops/default/azureDevOpsOrgs/<adoOrgName>?api-version=2023-09-01-preview

요청 본문:

{
   "properties": {
"actionableRemediation": {
              "state": <ActionableRemediationState>,
              "categoryConfigurations":[
                    {"category": <Category>,"minimumSeverityLevel": <Severity>}
               ]
           }
    }
}

매개 변수/사용 가능한 옵션

<ActionableRemediationState>설명: PR 주석 구성 상태 옵션: 사용 | 사용 안 함

<Category>설명: 끌어오기 요청에 주석이 추가될 결과 범주입니다. 옵션: IaC | 코드 | 아티팩트 | 종속성 | 컨테이너 참고: 현재 IaC만 지원됩니다.

<Severity>설명: PR 주석을 작성할 때 고려할 결과의 최소 심각도입니다. 옵션: 높음 | 중간 | 낮음

az cli 도구를 사용하여 최소 심각도가 보통인 IaC 범주에 대해 Azure DevOps 조직의 PR 주석을 사용하도록 설정하는 예입니다.

조직 업데이트:

az --method patch --uri https://management.azure.com/subscriptions/4383331f-878a-426f-822d-530fb00e440e/resourcegroups/myrg/providers/Microsoft.Security/securityConnectors/myconnector/devops/default/azureDevOpsOrgs/testOrg?api-version=2023-09-01-preview --body "{'properties':{'actionableRemediation':{'state':'Enabled','categoryConfigurations':[{'category':'IaC','minimumSeverityLevel':'Medium'}]}}}

az cli 도구를 사용하여 최소 심각도가 높음인 IaC 범주에 대해 Azure DevOps 프로젝트의 PR 주석을 사용하도록 설정하는 예입니다.

프로젝트 업데이트:

az --method patch --uri https://management.azure.com/subscriptions/4383331f-878a-426f-822d-530fb00e440e/resourcegroups/myrg/providers/Microsoft.Security/securityConnectors/myconnector/devops/default/azureDevOpsOrgs/testOrg/projects/testProject?api-version=2023-09-01-preview --body "{'properties':{'actionableRemediation':{'state':'Enabled','categoryConfigurations':[{'category':'IaC','minimumSeverityLevel':'High'}]}}}"

자세한 정보

다음 단계

이제 DevOps 보안에 대해 자세히 알아봅니다.