다음을 통해 공유


Microsoft 365용 앱 준수 자동화 도구를 사용하여 Microsoft 365 애플리케이션을 지속적으로 준수

Microsoft 365 ACAT(앱 준수 자동화 도구)는 Microsoft 365 인증에 대한 필수 컨트롤을 간소화합니다. ACAT를 사용하여 Microsoft 365 애플리케이션에 대한 지속적인 규정 준수를 유지합니다. 알림을 통해 규정 준수 실패에 대한 업데이트를 유지하고 ACAT를 연속 통합/지속적인 배포 파이프라인에 원활하게 통합합니다.

참고

ACAT는 현재 공개 미리 보기로 제공되며 Azure에서 빌드된 애플리케이션만 지원합니다. 향후 업데이트에는 비 Microsoft 호스팅 클라우드 서비스를 기반으로 하는 앱에 대한 기능이 포함됩니다. ACAT 공개 미리 보기에 대한 피드백은 이 양식을 작성하세요. ACAT 제품 팀 전문가가 가능한 한 빨리 후속 조치를 취합니다.

알림을 통해 규정 준수 보고서의 최신 제어 평가 받기

Microsoft 365 애플리케이션 또는 환경에 대한 규정 준수 보고서를 만든 후 ACAT는 자동으로 규정 준수 데이터를 수집하고 일일 제어 평가를 수행합니다. 또한 보고서 설정 또는 평가의 변경 내용에 대한 알림을 받을 수 있습니다.

웹후크를 사용하여 알림 받기

ACAT에서 알림을 받을 웹후크를 만듭니다.

  • 왼쪽의 보고서 로 이동합니다.

  • 알림을 받을 보고서를 엽니다.

  • 도구 모음에서 알림을 선택합니다.

  • 알림 만들기를 선택한 다음 웹후크를 선택합니다.

    • 웹후크 이름: 이 보고서 내의 웹후크의 고유 식별자입니다.
    • 페이로드 URL: 페이로드 URL은 ACAT에서 웹후크 POST 요청을 수신하는 서버의 URL입니다.
    • 콘텐츠 형식: ACAT는 현재 POST 요청의 본문으로 직접 JSON 페이로드를 제공하는 애플리케이션/json 콘텐츠 형식만 지원합니다.
    • 비밀: 웹후크 비밀을 설정하면 페이로드 URL로 전송된 POST 요청이 ACAT에서 전송되었는지 확인할 수 있습니다. 비밀이 설정되면 ACAT는 이를 사용하여 각 페이로드가 있는 해시 서명을 만듭니다. 이 해시 서명은 각 요청의 헤더에 x-acat-signature-256으로 포함됩니다.
    • SSL 확인: SSL 확인은 페이로드 URL이 보안 사이트(HTTPS)인 경우에만 표시되며 페이로드가 페이로드 URL에 안전하게 전달되도록 하는 데 도움이 됩니다. SSL 확인 사용을 선택한 상태로 유지하는 것이 좋습니다.
    • 트리거 이벤트: ACAT 이벤트를 구독하여 알림을 받습니다.

    웹후크 알림 만들기

    웹후크 페이로드에 대해 자세히 알아보세요.

연속 통합/지속적인 배포 파이프라인에서 빠른 규정 준수 평가 받기

ACAT는 일반 포털 사용 및 최신 알림 수신 외에도 CI/CD(연속 통합/지속적인 배포) 파이프라인 내에서 빠른 규정 준수 평가를 수행할 수 있습니다. Microsoft 365 애플리케이션의 지속적인 규정 준수를 보장합니다.

ACAT에서 제어 평가는 Microsoft 365 인증 보안 도메인, 제어 패밀리 및 개별 컨트롤에 따라 분류된 구조적 준수 평가입니다. ACAT 원시 규정 준수 데이터 내에서 제어 평가를 시작하려면 수집해야 합니다. 그러나 이러한 원시 규정 준수 정보 중 일부는 기술적인 관점에서 쉽게 액세스할 수 없습니다. 이 문제를 해결하기 위해 ACAT는 '빠른 규정 준수 평가'라는 개념을 소개합니다. 이 기능은 규정 준수 상태 신속하게 평가하여 필수 원시 규정 준수 데이터를 즉시 수집할 수 있도록 설계되었습니다.

빠른 규정 준수 평가 구현은 다음 두 가지 용도로 사용됩니다.

  • Timely Insights: 규정 준수 상태를 실시간으로 쉽게 이해할 수 있도록 하여 애플리케이션이 보안 표준 및 모범 사례를 준수할 수 있도록 합니다.
  • 원활한 통합: 빠른 규정 준수 평가는 CI/CD 파이프라인에 원활하게 통합되어 애플리케이션이 견고하고 규정 준수 요구 사항에 맞게 유지되도록 할 수 있습니다.

GitHub Actions CI/CD 파이프라인과의 통합

빠른 규정 준수 평가는 Microsoft 365 인증 빠른 평가 GitHub Action을 사용하여 CI/CD 파이프라인에서 사용할 수 있습니다. 이 GitHub 작업에는 다음 두 가지 사용이 있습니다.

  • CI/CD 파이프라인의 최신 배포를 애플리케이션의 최종 상태로 활용: ACAT는 파이프라인 내의 최신 배포를 기반으로 빠른 규정 준수 평가를 수행합니다. 또한 ACAT에 이 배포에 따라 해당 규정 준수 보고서를 새로 고치도록 요청할 수 있으며, 일일 업데이트를 통해 포괄적인 제어 평가를 부여할 수 있습니다.
  • 기존 규정 준수 보고서를 애플리케이션에 대한 참조로 사용합니다.** ACAT는 기존 규정 준수 보고서에 정의된 리소스를 활용하여 빠른 준수 평가를 수행합니다.

ACAT REST API를 통한 CI/CD 파이프라인 통합

ACAT REST API를 통해 CI/CD 파이프라인에서 빠른 규정 준수 평가를 가져옵니다.

  • 서비스 주체 인증을 사용하여 Azure 리소스에 연결합니다. 이 가이드 에 따라 리소스에 액세스할 수 있는 서비스 주체를 만드는 방법을 알아봅니다. 서비스 주체가 만들어지면 파이프라인 도구의 지침에 따라 자격 증명을 저장합니다. 예를 들어 ARM 서비스 연결을 사용하여 Microsoft Azure에 연결합니다.

  • 빠른 규정 준수 평가에 사용할 리소스 목록을 가져옵니다.

    $resourceGroupName
    $deploymentName
    
    $resourceIds = @()
    Get-AzResourceGroupDeploymentOperation `
        -ResourceGroupName $resourceGroupName `
        -Name $deploymentName `
    | ForEach-Object {
        if (![String]::IsNullOrEmpty($_.TargetResource)) {
            $resourceIds += $_.TargetResource
        }
    }
    
    • 클라우드 리소스 관리 정책(예: 특정 태그가 있는 리소스, 특정 리소스 그룹 등의 리소스)을 기반으로 리소스를 가져오려면 Azure PowerShell - Get-AzResource를 검토합니다.
    # Get resources with same tag
    $key = "<key-of-your-tag>"
    $value = "<value-of-your-tag>"
    
    $resourceIds = (Get-AzResource -TagName $key -TagValue $value).ResourceId
    
    try {
        $token = "<your-Azure-credentials>"
        $reportName = "<report-name>"
        $apiVersion = "2023-02-15-preview"
    
        $header = @{}
        $header["Authorization"] = $token
        $header["x-ms-aad-user-token"] = $token
        $header["accept"] = "application/json"
    
        $uri = "https://management.azure.com/providers/Microsoft.AppComplianceAutomation/reports/" + $reportName + "?api-version=" + $apiVersion
        $response = Invoke-WebRequest $uri `
            -Method GET `
            -Headers $header `
            -ContentType "application/json" `
            -Verbose `
            -UseBasicParsing
    
        $resourceIds = @()
        if ($response.StatusCode -ne 200) {
            Write-Host "Failed to get resources from compliance report: $response"
            return 
        }
    
        $resources = $response.Content | ConvertFrom-Json
        $resourceIds = $resources.properties.resources.resourceId
    }
    catch {
        Write-Output "Failed to get resources from compliance report with exception: $_"
    }
    
  • triggerEvaluation API를 사용하여 지정된 리소스에 대한 빠른 규정 준수 평가를 가져옵니다.

try {
    $token = "<your-Azure-credentials>"
    $resourceIds = "<resource-ids-from-previous-step>"
    $apiVersion = "2023-02-15-preview"

    $header = @{}
    $header["Authorization"] = $token
    $header["x-ms-aad-user-token"] = $token
    $header["accept"] = "application/json"

    $body = @{resourceIds = $resourceIds }

    $uri = "https://management.azure.com/providers/Microsoft.AppComplianceAutomation/triggerEvaluation?api-version=$apiVersion"
    $response = Invoke-WebRequest $uri `
        -Method POST `
        -Headers $header `
        -ContentType "application/json" `
        -Body (ConvertTo-Json $body -Depth 8) `
        -Verbose `
        -UseBasicParsing
    
    # The triggerEvaluation API is asynchronous. Therefore, you need to pull the status to check whether it is completed. 
    # StatusCode 200: OK. The response indicates the quick compliance evaluation for given resource ids is completed.
    # StatusCode 202: Accepted. The response indicates the quick compliance evaluation for given resource ids is triggered and performing in backend. 
    if ($response.StatusCode -eq 200) {
        $result = $response.Content | ConvertFrom-Json
        Write-Host "Successfully get evaluation result:$result"
        return $result
    }
    elseif ($response.StatusCode -eq 202) {
        $retry_url = $response.Headers["Location"]

        do {
            Start-Sleep 10
            Write-Host "retry_url: $retry_url"
            $opResponse = Invoke-WebRequest `
                -Uri $retry_url `
                -ContentType "application/json" `
                -Verbose `
                -Method GET `
                -Headers $header `
                -UseBasicParsing

            if ($opResponse.StatusCode -eq 200) {
                $opResult = $opResponse.Content | ConvertFrom-Json
                Write-Host "Successfully get evaluation result: $opResult"
                return $opResult
            }
            elseif ($opResponse.StatusCode -eq 202) {
                continue
            }
            else {
                Write-Host "Failed to get evaluation result"
                break
            }
        } while ($true)
    }
    else {
        Write-Host "Failed to get compliance evaluation with triggerEvaluation API: $response"
    }
}
catch {
    Write-Output "Failed to get quick compliance assessment with exception: $_"
}
  • triggerEvaluation API의 결과에서 빠른 준수 평가를 가져옵니다.

참조

웹후크 페이로드

각 이벤트에 대한 ACAT 웹후크 페이로드의 경우 몇 가지 일반적인 속성이 포함됩니다.

필수 여부

유형

설명

EventDesc

String

알림을 트리거하는 특정 이벤트입니다.

메시지

String

알림의 콘텐츠입니다. 일반적으로 이 이벤트가 발생할 때 보고서 이름을 고유 식별자로 포함하고 타임스탬프를 포함합니다.

세부 정보

아니오

String

이 알림의 세부 정보가 포함된 JSON 형식 콘텐츠입니다. 제어 평가 실패를 예로 들어 세부 정보에는 각 컨트롤 및 영향을 받는 리소스에 대한 실패한 모든 고객 책임이 포함됩니다.

ACAT REST API triggerEvaluation

API 이름: triggerEvaluation

  • 서비스: 앱 준수 자동화
  • API 버전: 2023-02-15-preview

지정된 리소스에 대한 빠른 규정 준수 평가를 가져옵니다.

POST https://management.azure.com/providers/Microsoft.AppComplianceAutomation/triggerEvaluation?api-version=2023-02-15-preview
URI 매개 변수

이름

In

필수

유형

설명

api-version

쿼리

True

문자열

이 작업에 사용할 API 버전입니다. "2023-02-15-preview"를 사용할 수 있습니다.

요청 헤더

이름

In

필수

유형

설명

권한 부여

머리

True

문자열

전달자 + " " + 액세스 토큰

x-ms-aad-user-token

머리

True

문자열

전달자 + " " + 액세스 토큰

Content-Type

머리

True

문자열

value: "application/json"

요청 본문

이름

필수

유형

설명

resourceIds

True

문자열 배열

평가할 리소스 ID 목록

응답 헤더

이름

유형

설명

200 OK

응답은 지정된 리소스 ID에 대한 빠른 준수 평가가 완료되었음을 나타냅니다.

202 수락됨

응답은 지정된 리소스 ID에 대한 빠른 준수 평가가 백 엔드에서 트리거되고 수행됨을 나타냅니다.

기타 상태 코드

ErrorResponse

오류 응답입니다.

TriggerEvaluationResponse

이름

유형

설명

triggerTime

문자열

평가가 트리거되는 시간입니다.

evaluationEndTime

문자열

평가가 종료되는 시간입니다.

resourceIds

string[]

평가할 리소스 ID 목록

quickAssessments

빠른 평가 목록

QuickAssessment

이름

유형

설명

Resourceid

문자열

리소스 ID

responsibilityId

문자열

책임 ID

타임 스탬프

문자열

UTC(리소스 만들기)의 타임스탬프입니다.

resourceStatus

ResourceStatus

빠른 평가 상태.

displayName

문자열

빠른 평가 표시 이름입니다.

description

문자열

빠른 평가에 대한 설명입니다.

remediationLink

문자열

이 빠른 평가를 위한 수정 단계에 연결합니다.