Azure Policy를 사용하여 비준수 리소스 수정
정책 deployIfNotExists
또는 modify
효과를 준수하지 않는 리소스는 수정을 통해 규격 상태로 전환할 수 있습니다. 수정은 해당 할당이 관리 그룹, 구독, 리소스 그룹 또는 개별 리소스에 있는지 여부에 관계없이 템플릿을 배포 deployIfNotExists
하는 수정 작업 또는 modify
기존 리소스 및 구독에 할당된 정책의 작업을 통해 수행됩니다. 이 문서에서는 Azure Policy를 통한 수정을 이해하고 수행하는 데 필요한 단계를 보여 줍니다.
수정 액세스 제어의 작동 방식
정책을 평가할 때 Azure Policy가 템플릿 배포를 deployIfNotExists
시작하거나 정책을 평가할 때 리소스를 수정하면 modify
정책 할당과 연결된 관리 ID를 사용합니다. 정책 할당은 Azure 리소스 권한 부여에 관리 ID를 사용합니다. 정책 서비스에서 만든 시스템 할당 관리 ID 또는 사용자가 제공한 사용자 할당 ID를 사용할 수 있습니다. 관리 ID에는 리소스를 수정하는 데 필요한 최소 Azure RBAC(Azure 역할 기반 액세스 제어) 역할이 할당되어야 합니다. 관리 ID에서 역할이 누락된 경우 정책 또는 이니셔티브를 할당하는 동안 포털에 오류가 표시됩니다. 포털을 사용하는 경우 Azure Policy는 할당이 시작되면 나열된 역할을 관리 ID에 자동으로 부여합니다. Azure SDK(소프트웨어 개발 키트)를 사용하는 경우 관리 ID에 역할을 수동으로 부여해야 합니다. 관리 ID의 위치는 Azure Policy를 사용하는 작업에 영향을 주지 않습니다.
참고 항목
정책 정의를 변경해도 할당 또는 연결된 관리 ID가 자동으로 업데이트되지 않습니다.
수정 보안은 다음 단계를 통해 구성할 수 있습니다.
정책 정의 구성
필수 구성 요소로서 정책 정의는 포함된 템플릿의 콘텐츠를 성공적으로 배포하는 데 필요한 역할을 deployIfNotExists
modify
정의해야 합니다. 이러한 역할은 미리 채워져 있으므로 기본 제공 정책 정의에 대한 작업이 필요하지 않습니다. 사용자 지정 정책 정의의 details
경우 속성 아래에 속성을 추가합니다 roleDefinitionIds
. 이 속성은 환경의 역할과 일치하는 문자열 배열입니다. 전체 예제는 deployIfNotExists 또는 수정을 참조하세요.
"details": {
...
"roleDefinitionIds": [
"/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
"/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
]
}
이 속성은 roleDefinitionIds
전체 리소스 식별자를 사용하며 역할에 미치지 않습니다 roleName
. 사용자 환경에서 기여자 역할에 대한 ID를 가져오려면 다음 Azure CLI 코드를 사용합니다.
az role definition list --name "Contributor"
Important
사용 권한은 정책 정의 내에서 정의 roleDefinitionIds
하거나 관리 ID에 권한을 수동으로 할당할 때 가능한 가장 작은 집합으로 제한되어야 합니다. 더 많은 모범 사례는 관리 ID 모범 사례 권장 사항을 참조하세요.
관리 ID 구성
각 Azure Policy 할당은 하나의 관리 ID와만 연결할 수 있습니다. 그러나 관리 ID에는 여러 역할이 할당될 수 있습니다. 구성은 두 단계로 이루어집니다. 먼저 시스템이 할당하거나 사용자가 할당한 관리 ID를 만든 다음, 필요한 역할을 부여합니다.
참고 항목
포털을 통해 관리 ID를 만들 때 역할이 관리 ID에 자동으로 부여됩니다. 나중에 정책 정의에서 편집되는 경우 roleDefinitionIds
포털에서도 새 권한을 수동으로 부여해야 합니다.
관리 ID 만들기
포털을 사용하여 할당을 만들 때 Azure Policy는 시스템 할당 관리 ID를 생성하고 정책 정의 roleDefinitionIds
에 정의된 역할을 부여할 수 있습니다. 또는 동일한 역할 할당을 받는 사용자 할당 관리 ID를 지정할 수 있습니다.
포털에서 시스템이 할당한 관리 ID를 설정하려면:
할당 만들기/편집 보기의 수정 탭에 있는 관리 ID 유형 아래에서 시스템이 할당한 관리 ID가 선택되어 있는지 확인합니다.
관리 ID를 배치할 위치를 지정합니다.
범위가 할당 범위에서 상속되므로 시스템 할당 관리 ID에 대한 범위를 할당하지 마세요.
포털에서 사용자가 할당한 관리 ID를 설정하려면:
할당 만들기/편집 보기의 수정 탭에 있는 관리 ID 유형 아래에서 사용자가 할당한 관리 ID가 선택되어 있는지 확인합니다.
관리 ID가 호스트되는 범위를 지정합니다. 관리 ID의 범위는 할당 범위와 동일할 필요는 없지만 동일한 테넌트에 있어야 합니다.
기존 사용자 할당 ID에서 관리 ID를 선택합니다.
정의된 역할을 통해 관리 ID에 권한 부여
Important
필요한 수정 작업을 실행하는 데 필요한 권한이 관리 ID에 없는 경우 포털을 통해서만 자동으로 권한이 부여됩니다. 포털을 통해 관리 ID를 만드는 경우 이 단계를 건너뛸 수 있습니다.
다른 모든 방법의 경우 역할 추가를 통해 액세스 권한을 할당의 관리 ID에 수동으로 부여해야 합니다. 그렇지 않으면 수정 배포가 실패합니다.
수동 권한이 필요한 예제 시나리오는 다음과 같습니다.
- Azure SDK(소프트웨어 개발 키트)를 통해 할당을 만든 경우
- 수정된
deployIfNotExists
리소스가 정책 할당의 범위를 벗어나는modify
경우 - 템플릿이 정책 할당 범위를 벗어난 리소스의 속성에 액세스하는 경우
포털을 사용하여 정의된 역할을 할당의 관리 ID에 부여하는 두 가지 방법은 액세스 제어(IAM)를 사용하거나, 정책 또는 이니셔티브 할당을 수정하고 저장을 선택하는 것입니다.
할당의 관리 ID에 역할을 추가하려면 다음 단계를 수행합니다.
모든 서비스를 선택한 후 정책을 검색하고 선택하여 Azure Portal에서 Azure Policy 서비스를 시작합니다.
Azure Policy 페이지의 왼쪽에서 할당을 선택합니다.
관리 ID가 있는 할당을 찾아 이름을 선택합니다.
편집 페이지에서 할당 ID 속성을 찾습니다. 할당 ID는 다음 예제와 같습니다.
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/2802056bfc094dfb95d4d7a5
관리 ID의 이름은 할당 리소스 ID의 끝부분(이 예제에서는
2802056bfc094dfb95d4d7a5
)입니다. 할당 리소스 ID의 이 부분을 복사합니다.역할 정의를 수동으로 추가해야 하는 리소스 또는 리소스 상위 컨테이너(리소스 그룹, 구독, 관리 그룹)로 이동합니다.
리소스 페이지에서 액세스 제어(IAM) 링크를 선택한 다음 액세스 제어 페이지 위쪽의 + 역할 할당 추가를 선택합니다.
정책 정의에서 일치하는
roleDefinitionIds
적절한 역할을 선택합니다. '사용자, 그룹 또는 애플리케이션'의 기본값으로 설정하려면 액세스 할당을 그대로 둡니다. 선택 상자에 앞에서 찾은 할당 리소스 ID 부분을 붙여넣거나 입력합니다. 검색이 완료되면 이름이 같은 개체를 클릭하여 ID를 선택하고 저장을 클릭합니다.
수정 작업 만들기
모든 서비스를 선택한 후 정책을 검색하고 선택하여 Azure Portal에서 Azure Policy 서비스를 시작합니다.
1단계: 수정 작업 만들기 시작
포털을 통해 수정 작업을 만드는 세 가지 방법이 있습니다.
옵션 1: 수정 페이지에서 수정 작업 만들기
Azure Policy 페이지의 왼쪽에서 수정을 선택합니다.
modify
수정할 정책 탭에 모든deployIfNotExists
정책 할당이 표시됩니다. 비준수 리소스가 있는 할당을 선택하여 새 수정 작업 페이지를 엽니다.단계에 따라 수정 작업 세부 정보를 지정합니다.
옵션 2: 비준수 정책 할당에서 수정 작업 만들기
Azure Policy 페이지의 왼쪽에서 규정 준수를 선택합니다.
비준수 정책 또는 효과 포함 또는
modify
효과를 포함하는 이니셔티브 할당을deployIfNotExists
선택합니다.페이지 위쪽의 수정 작업 만들기 단추를 선택하여 새 수정 작업 페이지를 엽니다.
단계에 따라 수정 작업 세부 정보를 지정합니다.
옵션 3: 정책 할당 중 수정 작업 만들기
할당 deployIfNotExists
할 정책 또는 이니셔티브 정의에 영향을 주거나 modify
적용하는 경우 마법사의 수정 탭에서 수정 작업 만들기 옵션을 제공하여 정책 할당과 동시에 수정 작업을 만듭니다.
참고 항목
이는 수정 작업을 만들기 위한 가장 간소화된 방법이며 구독에 할당된 정책에 대해 지원됩니다. 관리 그룹에 할당된 정책의 경우 평가에서 리소스 규정 준수가 확인되면 옵션 1 또는 옵션 2를 사용하여 수정 작업을 만들어야 합니다.
포털의 할당 마법사에서 수정 탭으로 이동합니다. 수정 작업 만들기 확인란을 선택합니다.
수정 작업이 이니셔티브 할당에서 시작되는 경우 드롭다운에서 수정할 정책을 선택합니다.
관리 ID를 구성하고, 마법사의 나머지 부분을 작성합니다. 수정 작업은 할당을 만들 때 만들어집니다.
2단계: 수정 작업 세부 정보 지정
이 단계는 옵션 1 또는 옵션 2를 사용하여 수정 작업 만들기를 시작하는 경우에만 적용됩니다.
수정 작업이 이니셔티브 할당에서 시작되는 경우 드롭다운에서 수정할 정책을 선택합니다. 한 번에 하나의
deployIfNotExists
수정 작업을 통해 하나 또는modify
정책을 수정할 수 있습니다.필요에 따라 페이지에서 수정 설정을 수정합니다. 각 설정이 제어하는 내용에 대한 자세한 내용은 수정 작업 구조를 참조하세요.
같은 페이지에서 범위 줄임표를 통해 정책이 할당된 자식 리소스를 선택하여(개별 리소스 개체까지 포함) 수정할 리소스를 필터링합니다. 또한 위치 드롭다운 목록을 사용하여 리소스를 추가로 필터링합니다.
수정을 선택하여 리소스를 필터링한 후 수정 작업을 시작합니다. 정책 준수 페이지에서 수정 작업 탭이 열리고 작업 진행 상태가 표시됩니다. 수정 작업으로 만든 배포가 바로 시작됩니다.
3단계: 수정 작업 진행률 추적
수정 페이지의 수정 작업 탭으로 이동합니다. 수정 작업을 선택하여 사용된 필터링, 현재 상태 및 수정 중인 리소스 목록에 대한 세부 정보를 확인합니다.
수정 작업 세부 정보 페이지에서 마우스 오른쪽 단추로 리소스를 클릭하여 수정 작업의 배포 또는 리소스를 확인합니다. 행 끝에서 관련 이벤트를 선택하여 오류 메시지와 같은 세부 정보를 확인합니다.
수정 작업을 통해 배포된 리소스는 정책 할당 세부 정보 페이지의 배포된 리소스 탭에 추가됩니다.
다음 단계
- Azure Policy 샘플에서 예제를 검토합니다.
- Azure Policy 정의 구조를 검토합니다.
- 정책 효과 이해를 검토합니다.
- 프로그래밍 방식으로 정책을 만드는 방법을 이해합니다.
- 규정 준수 데이터를 가져오는 방법을 알아봅니다.
- Azure 관리 그룹으로 리소스 구성을 포함하는 관리 그룹을 검토합니다.