다음을 통해 공유


Azure 리소스의 규정 준수 데이터 가져오기

Azure Policy의 가장 큰 혜택 중 하나는 구독 및 구독의 데이터 그룹에 있는 리소스에 제공하는 정보 또는 컨트롤입니다. 이 컨트롤은 리소스가 잘못된 위치에 만들어지는 것을 방지하거나, 일반적이고 일관된 태그 사용을 적용하거나, 적절한 구성 및 설정에 대한 기존 리소스를 감사할 수 있습니다. 모든 경우에 Azure Policy는 환경의 준수 상태를 이해할 수 있는 데이터를 생성합니다.

규정 준수 데이터를 검토하기 전에 Azure Policy의 준수 상태를 이해하는 것이 중요합니다.

정책 및 이니셔티브 할당에 의해 생성된 준수 정보에 액세스할 수 있는 여러 가지 방법이 있습니다.

준수를 보고하는 메서드를 살펴보기 전에 호환성 정보가 업데이트되는 시기 및 평가 주기를 트리거하는 빈도 및 이벤트를 살펴보겠습니다.

평가 트리거

완료된 평가 주기의 결과는 PolicyStatesPolicyEvents 작업을 통해 Microsoft.PolicyInsights 리소스 공급자에서 사용할 수 있습니다. Azure Policy Insights REST API의 작업에 대한 자세한 내용은 Azure Policy Insights를 참조하세요.

할당된 정책 및 이니셔티브의 평가는 다양한 이벤트의 결과로 발생합니다.

  • 정책 또는 이니셔티브는 범위에 새로 할당됩니다. 할당이 정의된 범위에 적용되는 데 약 5분이 걸리고 새로 할당된 정책 또는 이니셔티브에 대해 해당 리소스에 대한 평가 주기가 시작됩니다. 사용된 효과에 따라 리소스는 준수, 비준수, 예외 또는 알 수 없음으로 표시됩니다. 대규모의 리소스에 대해 평가되는 대규모 정책 또는 이니셔티브에는 시간이 걸릴 수 있으므로 평가 주기가 완료될 때 미리 정의된 기대치가 없습니다. 완료되면 업데이트된 준수 결과를 포털 및 SDK(소프트웨어 개발 키트)에서 사용할 수 있습니다.
  • 범위에 새로 할당된 정책 또는 이니셔티브는 업데이트됩니다. 이 시나리오에 대한 평가 주기 및 타이밍은 범위에 대한 새 할당과 동일합니다.
  • 리소스는 Azure Resource Manager, REST API 또는 지원되는 SDK를 통해 할당된 범위 내에 배포되거나 업데이트됩니다. 이 시나리오에서 효과 이벤트(추가, 감사, 거부, 배포) 및 개별 리소스에 대한 호환 상태 정보는 약 15분 후에 포털 및 SDK에서 사용할 수 있습니다. 이 이벤트는 다른 리소스에 대한 평가로 이어지지 않습니다.
  • 구독(리소스 종류 Microsoft.Resources/subscriptions)은 구독 리소스 종류를 대상으로 하는 할당된 정책 정의를 사용하여 관리 그룹 계층 구조 내에서 만들어지거나 이동됩니다. 구독 지원 효과(감사, auditIfNotExist, deployIfNotExists, 수정), 로깅 및 모든 수정 작업의 평가에는 약 30분이 소요됩니다.
  • 정책 예외가 생성, 업데이트 또는 삭제됩니다. 이 시나리오에서는 정의된 예외 범위에 대해 해당 할당이 평가됩니다.
  • 표준 준수 평가 주기입니다. 24시간마다 한 번씩 할당은 자동으로 다시 계산됩니다. 많은 리소스의 대규모 정책 또는 이니셔티브에는 시간이 걸릴 수 있으므로 평가 주기가 완료되는 시기에 대한 미리 정의된 기대는 없습니다. 작업이 완료되면 업데이트된 준수 결과는 포털 및 SDK에서 지원됩니다.
  • 머신 구성 리소스 공급자는 관리되는 리소스를 통해 규정 준수 세부 정보로 업데이트됩니다.
  • 주문형 검사입니다.

참고 항목

기본적으로 Azure Policy는 평가할 수 있는 구독 및 리소스 그룹을 제외한 리소스 공급자의 Microsoft.Resources 모든 리소스를 정책 평가에서 제외합니다.

주문형 평가 검사

구독 또는 리소스 그룹에 대한 평가 검사는 REST, Azure CLI, Azure PowerShell, Visual Studio Code용 Azure Policy 확장 또는 Azure Policy 준수 검사 GitHub 작업으로 시작할 수 있습니다. 주문형 검사는 리소스가 할당된 모든 정책에 대해 평가되기 때문에 실행하는 데 시간이 오래 걸리는 비동기 프로세스입니다.

참고 항목

모든 Azure 리소스 공급자가 주문형 평가 검사를 지원하지는 않습니다. 예를 들어 AVNM(Azure Virtual Network Manager)은 현재 수동 트리거 또는 표준 정책 준수 평가 주기(일일 검사)를 지원하지 않습니다.

REST를 사용한 주문형 평가 검사

비동기 프로세스이므로 REST 엔드포인트는 검사가 응답을 완료할 때까지 기다리지 않습니다. 대신, URI를 제공하여 요청된 평가의 상태를 쿼리합니다.

각 REST API URI에는 사용자가 자신의 값으로 대체해야 하는 변수가 있습니다.

  • {resourceGroupName}: 리소스 그룹의 이름으로 교체합니다.
  • {subscriptionId}: 구독 ID로 대체합니다.

검사는 구독 또는 리소스 그룹에서 리소스의 평가를 지원합니다. 다음 URI 구조를 사용하여 REST API POST 명령으로 범위별 검사를 시작합니다.

다음 명령을 사용하여 구독을 평가합니다. 정책 상태 - 평가 시도 옵션을 사용하여 구독 평가 트리거의 브라우저에서 명령을 실행할 수 있습니다.

POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01

다음 명령을 사용하여 리소스 그룹을 평가합니다. 정책 상태 - Try it 옵션을 사용하여 리소스 그룹 평가 트리거의 브라우저에서 명령을 실행할 수 있습니다.

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01

구독 및 리소스 그룹 REST API 호출은 202 수락됨 상태를 반환합니다. 응답 헤더에 포함된 속성은 location 다음과 같은 형식입니다.

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/asyncOperationResults/{ResourceContainerGUID}?api-version=2019-10-01

{ResourceContainerGUID}는 요청한 범위에 대해 정적으로 생성됩니다. 범위가 이미 주문형 검사를 실행하고 있는 경우 새 검사는 시작되지 않습니다. 대신 새 요청은 상태에 대해 동일한 {ResourceContainerGUID}location URI를 제공합니다. URI에 대한 location REST API GET 명령은 평가가 진행되는 동안 202 Accepted를 반환합니다. 평가 검사가 완료되면 200 OK 상태가 반환됩니다. 완료된 검사의 본문은 다음과 같은 상태가 succeeded있는 JSON 응답입니다.

Azure CLI를 사용한 주문형 평가 검사

az policy state trigger-scan 명령으로 호환성 검사가 시작됩니다.

기본적으로 az policy state trigger-scan은 현재 구독의 모든 리소스에 대한 평가를 시작합니다. 특정 리소스 그룹에 대한 평가를 시작하려면 매개 변수를 resource-group 사용합니다. 다음 예제에서는 리소스 그룹에 대한 현재 구독에서 규정 준수 검사를 시작합니다. 리소스 그룹의 이름으로 대체 resourceGroupName 합니다.

az policy state trigger-scan --resource-group "resourceGroupName"

매개 변수를 계속 no-wait 하기 전에 비동기 프로세스가 완료되기를 기다리지 않도록 선택할 수 있습니다.

Azure PowerShell을 사용한 주문형 평가 검사

Start-AzPolicyComplianceScan cmdlet을 사용하여 준수 검사가 시작됩니다.

기본적으로 Start-AzPolicyComplianceScan은 현재 구독의 모든 리소스에 대한 평가를 시작합니다. 특정 리소스 그룹에 대한 평가를 시작하려면 매개 변수를 ResourceGroupName 사용합니다. 다음 예제에서는 리소스 그룹에 대한 현재 구독에서 규정 준수 검사를 시작합니다. 리소스 그룹의 이름으로 대체 resourceGroupName 합니다.

Start-AzPolicyComplianceScan -ResourceGroupName 'resourceGroupName'

결과 출력을 제공하기 전에 비동기 호출이 완료될 때까지 PowerShell이 기다리게 하거나 백그라운드에서 작업으로 실행되게 할 수 있습니다. PowerShell 작업을 사용하여 백그라운드에서 준수 검사를 실행하려면 매개 변수를 AsJob 사용하고 이 예제와 같이 값을 개체로 $job 설정합니다.

$job = Start-AzPolicyComplianceScan -AsJob

$job 개체를 확인하여 작업 상태를 확인할 수 있습니다. 작업은 Microsoft.Azure.Commands.Common.AzureLongRunningJob 유형입니다. $job 개체에서 Get-Member를 사용하여 사용 가능한 속성과 메서드를 확인합니다.

규정 준수 검사를 실행하는 동안 $job 개체 출력을 확인하면 다음과 같은 결과가 출력됩니다.

$job

Id     Name              PSJobTypeName     State    HasMoreData     Location   Command
--     ----              -------------     -----    -----------     --------   -------
2      Long Running O... AzureLongRunni... Running  True            localhost  Start-AzPolicyCompliance...

규정 준수 검사가 완료되면 속성이 State Completed로 변경됩니다.

Visual Studio Code를 사용한 주문형 평가 검사

Visual Studio Code에 대한 Azure Policy 확장은 특정 리소스에 대한 평가 검사를 실행할 수 있습니다. 이 검색은 Azure PowerShell 및 REST 메서드와 달리 동기 프로세스입니다. 자세한 내용과 단계는 VS Code 확장을 사용한 주문형 평가를 참조하세요.

GitHub Actions를 사용한 주문형 평가 검사

Azure Policy 규정 준수 검사 작업을 사용하면 하나 또는 여러 리소스, 리소스 그룹 또는 구독의 GitHub 워크플로에서 주문형 평가 검사를 트리거하고, 리소스의 규정 준수 상태에 따라 워크플로 경로를 제어할 수 있습니다. 또한 예정된 시간에 실행되어 편리한 시간에 최신 규정 준수 상태를 가져오도록 워크플로를 구성할 수 있습니다. 필요에 따라 GitHub Actions는 추가 분석 또는 보관을 위해 검사한 리소스의 규정 준수 상태에 대한 보고서를 생성할 수도 있습니다.

다음 예제에서는 구독의 규정 준수 검사를 실행합니다. scopes 구독 ID를 사용합니다.

on:
  schedule:
    - cron:  '0 8 * * *'  # runs every morning 8am
jobs:
  assess-policy-compliance:
    runs-on: ubuntu-latest
    steps:
    - name: Login to Azure
      uses: azure/login@v2
      with:
        creds: ${{secrets.AZURE_CREDENTIALS}}

    - name: Check for resource compliance
      uses: azure/policy-compliance-scan@v0
      with:
        scopes: |
          /subscriptions/aaaa6a6a-bb7b-cc8c-dd9d-eeeeee0e0e0e

자세한 내용 및 워크플로 샘플은 Azure Policy 준수 검사 리포지토리에 대한 GitHub Actions을 참조하세요.

포털

Azure Portal에서는 환경에서 준수 상태를 시각화하고 이해하는 그래픽 환경을 보여줍니다. 정책 페이지에서 개요 옵션은 정책 및 이니셔티브 모두에 사용할 수 있는 준수 범위에 대한 세부 정보를 제공합니다. 준수 상태 및 할당별 개수뿐만 아니라 지난 7일 동안의 준수를 표시하는 차트가 포함됩니다. 준수 페이지에는 차트를 제외한 동일한 정보가 대부분 포함되어 있지만 더 많은 필터링 및 정렬 옵션을 제공합니다.

준수 페이지, 필터링 옵션, 세부 정보의 스크린샷

정책 또는 이니셔티브가 서로 다른 범위에 할당될 수 있으므로 테이블에는 각 할당의 범위 및 할당된 정의의 형식이 포함됩니다. 각 할당의 비준수 리소스 및 비준수 정책 수도 제공됩니다. 테이블에서 정책 또는 이니셔티브를 선택하면 해당하는 특정 배포에 대한 준수를 자세히 살펴봅니다.

개수 및 리소스 규격 세부 정보를 포함한 준수 정보 페이지의 스크린샷

리소스 준수 탭의 리소스 목록에는 현재 할당에 대한 기존 리소스의 평가 상태가 표시됩니다. 탭에는 기본적으로 비준수로 표시되지만 필터링할 수 있습니다. 리소스 생성 요청에 의해 트리거되는 이벤트(추가, 감사, 거부, 배포, 수정)는 이벤트 탭에 표시됩니다.

규정 준수 세부 정보 페이지에 있는 이벤트 탭의 스크린샷

리소스 공급자 모드 리소스의 경우 리소스 규정 준수 탭에서 리소스를 선택하거나 행을 마우스 오른쪽 단추로 클릭하고 규정 준수 세부 정보 보기를 선택하면 구성 요소 규정 준수 세부 정보가 열립니다. 이 페이지에는 이 리소스, 이벤트, 구성 요소 이벤트 및 변경 기록에 할당된 정책을 보기 위한 탭도 있습니다.

구성 요소 규정 준수 탭 및 리소스 공급자 모드 할당에 대한 규정 준수 세부 정보의 스크린샷

리소스 규정 준수 페이지로 돌아가 자세한 세부 정보를 수집하려는 이벤트의 행을 길게 선택(또는 마우스 오른쪽 단추로 클릭)하고 활동 로그 표시를 선택합니다. 활동 로그 페이지가 열리고 할당 및 이벤트에 대한 세부 정보를 보여 주는 검색으로 미리 필터링됩니다. 활동 로그는 해당 이벤트에 대한 추가 컨텍스트 및 정보를 제공합니다.

Azure Policy 작업 및 평가에 대한 활동 로그의 스크린샷.

참고 항목

준수 결과는 Azure Resource Graph 쿼리를 사용하여 포털에서 내보낼 수 있습니다.

명령줄

포털에서 사용할 수 있는 동일한 정보는 REST API, Azure CLI 및 Azure PowerShell을 사용하여 검색할 수 있습니다.

REST API

REST API에 대한 자세한 내용은 Azure Policy 참조를 참조하세요. REST API 참조 페이지에는 브라우저에서 명령을 실행할 수 있는 각 작업에 대해 Try It 옵션이 있습니다. Azure CLI 또는 기본 REST API 클라이언트를 사용하여 명령을 실행할 수도 있습니다.

결과 요약

REST API를 사용하면 컨테이너, 정의 또는 할당별로 요약할 수 있습니다. Azure Policy Insight의 구독에 대한 요약을 사용하여 구독 수준에서 요약의 예는 다음과 같습니다.

POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/summarize?api-version=2019-10-01

출력은 구독을 요약하고 요약된 규정 준수는 해당 및 nonCompliantPolicies 속성에 nonCompliantResources 있습니다. 이 요청은 비준수 번호를 구성하는 각 할당과 각 할당에 대한 정의 정보를 포함하여 다른 세부 정보를 제공합니다. 계층 구조의 각 정책 개체는 해당 수준에서 자세한 정보를 얻는 데 사용할 수 있는 개체를 제공합니다 queryResultsUri .

리소스 쿼리

이전 예제 value.policyAssignments.policyDefinitions.results.queryResultsUri 에서는 특정 정책 정의에 대한 모든 비준수 리소스에 대한 샘플 URI를 제공합니다. 값에서 $filter ComplianceState는 같음(eq)NonCompliantPolicyAssignmentId이고 정책 정의에 대해 지정된 다음 PolicyDefinitionId 자체에 지정됩니다. 필터에 PolicyAssignmentId 포함하는 이유는 범위가 다른 여러 정책 또는 이니셔티브 할당에 있을 수 있기 PolicyDefinitionId 때문입니다. 둘 다 PolicyAssignmentIdPolicyDefinitionId지정하여 찾고 있는 결과에서 명시적일 수 있습니다. PolicyStates 이전에는 지난 24시간의 시간 및 기간을 자동으로 설정하는 fromto 데 사용latest했습니다.

값의 queryResultsUri 예:

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2025-01-01 04:28:22Z&$to=2025-02-10 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77' and PolicyDefinitionId eq '/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62'

이벤트 보기

리소스가 생성되거나 업데이트되면 정책 평가 결과가 생성됩니다. 생성된 결과를 정책 이벤트라고 합니다. 다음 URI를 사용하여 구독과 관련된 최신 정책 이벤트를 볼 수 있습니다.

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/default/queryResults?api-version=2019-10-01

정책 이벤트 쿼리에 대한 자세한 내용은 Azure Policy 이벤트를 참조 하세요.

Azure CLI

Azure Policy에 대한 Azure CLI 명령 그룹은 REST 또는 Azure PowerShell에서 사용할 수 있는 대부분의 작업을 다룹니다. 사용 가능한 명령의 전체 목록은 az policy를 참조하세요.

비준수 리소스 수가 가장 많은 최상위 할당 정책에 대한 상태 요약을 가져옵니다.

az policy state summarize --top 1

가장 최근에 평가된 리소스의 상태 레코드를 가져옵니다. 출력 기본값은 타임스탬프의 내림차순입니다.

az policy state list --top 1

모든 비준수 가상 네트워크 리소스에 대한 세부 정보를 가져옵니다.

az policy state list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'"

특정 날짜 이후에 발생한 비준수 가상 네트워크 리소스와 관련된 이벤트를 가져옵니다. from ISO 8601 형식의 날짜와 함께 매개 변수를 사용합니다.

az policy event list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'" --from '2025-02-10T00:00:00Z'

Azure PowerShell

Azure Cloud Shell에서 다음 명령을 실행할 수 있습니다.

비준수 리소스 수가 가장 많은 최상위 할당 정책에 대한 상태 요약을 가져옵니다.

Get-AzPolicyStateSummary -Top 1

가장 최근에 평가된 리소스의 상태 레코드를 가져옵니다. 출력 기본값은 내림차순으로 타임스탬프입니다.

Get-AzPolicyState -Top 1

모든 비준수 가상 네트워크 리소스에 대한 세부 정보를 가져옵니다.

Get-AzPolicyState -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'"

특정 날짜 이후에 발생한 비준수 가상 네트워크 리소스와 관련된 이벤트를 가져옵니다. From ISO 8601 형식의 날짜와 함께 매개 변수를 사용합니다.

Get-AzPolicyEvent -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'" -From '2025-02-10'

출력에는 Azure PowerShell cmdletGet-AzADUser을 사용하여 특정 사용자를 가져오는 데 사용할 수 있는 속성이 포함 PrincipalOid 됩니다. 이전 명령에서 가져온 값으로 바꿉습니다 {principalOid} .

(Get-AzADUser -ObjectId {principalOid}).DisplayName

Azure Monitor 로그

활동 Log Analytics 솔루션에서 구독에 연결된 Log Analytics 작업 영역AzureActivity 이 있는 경우 Kusto 쿼리 및 AzureActivity 테이블을 사용하여 새 리소스 및 업데이트된 리소스의 평가에서 비준수 결과를 볼 수도 있습니다. Azure Monitor 로그의 세부 정보를 사용하여 비준수 여부를 감시하도록 경고를 구성할 수 있습니다.

Azure Resource Graph

준수 레코드는 ARG(Azure Resource Graph)에 저장됩니다. ARG 쿼리에서 데이터를 내보내 관심 있는 범위와 정책을 기반으로 사용자 지정 대시보드를 구성할 수 있습니다. ARG를 통해 준수 데이터를 내보내려면 샘플 쿼리를 검토합니다.

다음 단계