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 파이프라인과의 통합
참고
ACAT GitHub Actions 지원은 미리 보기이며 Microsoft Azure에서 빌드된 앱만 지원합니다. 향후 업데이트에는 다른 클라우드에서 빌드된 앱에 대한 기능이 포함됩니다.
빠른 규정 준수 평가는 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에 연결합니다.
빠른 규정 준수 평가에 사용할 리소스 목록을 가져옵니다.
- CI/CD 파이프라인에서 최신 배포를 사용합니다. Azure PowerShell - Get-AzResourceGroupDeploymentOperation을 검토하여 배포에서 리소스를 가져옵니다.
$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
- 기존 ACAT 준수 보고서를 사용하려면 ACAT REST API 보고서 - 가져오기 를 선택하여 보고서 정의에서 리소스를 가져옵니다.
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
문자열
이 빠른 평가를 위한 수정 단계에 연결합니다.