리소스 계층 구조 보호

리소스, 리소스 그룹, 구독, 관리 그룹 및 테넌트가 리소스 계층 구조를 구성합니다. Azure 사용자 지정 역할 또는 정책 할당과 같은 루트 관리 그룹에서 설정하면 리소스 계층 구조의 모든 리소스에 영향을 줄 수 있습니다. 모든 리소스에 부정적인 영향을 줄 수 있는 변경으로부터 리소스 계층 구조를 보호하는 것이 중요합니다.

관리 그룹에는 테넌트 관리자가 이러한 동작을 제어할 수 있도록 하는 계층 구조 설정이 있습니다. 이 문서에서는 사용 가능한 각 계층 설정과 이러한 계층 설정을 지정하는 방법을 설명합니다.

계층 설정에 대한 Azure RBAC 권한

계층 구조 설정을 구성하려면 루트 관리 그룹에 대해 다음과 같은 리소스 공급자 작업이 필요합니다.

  • Microsoft.Management/managementgroups/settings/write
  • Microsoft.Management/managementgroups/settings/read

이러한 작업은 Azure RBAC(Azure 역할 기반 액세스 제어) 권한에 해당합니다. 이러한 작업을 통해 사용자는 계층 구조 설정을 읽고 업데이트할 수만 있습니다. 해당 작업은 관리 그룹 계층 구조 또는 계층 구조의 리소스에 대한 다른 액세스 권한을 제공하지 않습니다.

이러한 작업은 모두 Azure 기본 제공 역할 계층 설정 관리자에서 사용할 수 있습니다.

설정: 기본 관리 그룹 정의

기본적으로 테넌트에 추가되는 새 구독은 루트 관리 그룹의 멤버가 됩니다. 정책 할당, Azure RBAC 및 기타 거버넌스 구문은 루트 관리 그룹에 할당되면 이러한 새 구독에 즉시 적용됩니다. 이러한 이유로 대부분의 조직에서는, 루트 관리 그룹이 이러한 구문을 할당하기에 적합한 장소이더라도 루트 관리 그룹에 해당 구문을 적용하지 않습니다. 다른 경우에 조직은 새 구독에 대해 더 제한적인 컨트롤 집합을 원하지만, 모든 구독에 해당 컨트롤을 할당하고자 하지는 않습니다. 이 설정은 두 사용 사례 모두 지원합니다.

새 구독에 대한 기본 관리 그룹을 정의하도록 허용하면, 루트 관리 그룹에서 조직 전체의 거버넌스 구문을 적용할 수 있습니다. 새 구독에 더 적합한 정책 할당 또는 Azure 역할 할당을 사용하여 별도의 관리 그룹을 정의할 수 있습니다.

포털에서 기본 관리 그룹 정의

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

  2. 검색 창을 사용하여 관리 그룹을 검색하고 선택합니다.

  3. 루트 관리 그룹에서 관리 그룹 이름 옆에 있는 세부 정보를 선택 합니다.

  4. 설정 아래에서 계층 구조 설정을 선택합니다.

  5. 기본 관리 그룹 변경 단추를 선택합니다.

    기본 관리 그룹 변경 버튼을 사용할 수 없는 경우, 원인은 다음 조건 중 하나입니다.

    • 현재 보고 있는 관리 그룹이 루트 관리 그룹이 아닙니다.
    • 보안 주체에게 계층 구조 설정을 변경하는 데 필요한 권한이 없습니다.
  6. 계층 구조에서 관리 그룹을 선택한 다음, 선택 버튼을 선택합니다.

REST API를 사용하여 기본 관리 그룹 정의

REST API를 사용하여 기본 관리 그룹을 정의하려면, 계층 구조 설정 엔드포인트를 호출해야 합니다. 다음의 REST API URI 및 본문 형식을 사용합니다. {rootMgID}를 루트 관리 그룹의 ID로 바꿉니다. {defaultGroupID}를 기본 관리 그룹이 될 관리 그룹의 ID로 바꿉니다.

  • REST API URI:

    PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{rootMgID}/settings/default?api-version=2020-05-01
    
  • 요청 본문.:

    {
        "properties": {
            "defaultManagementGroup": "/providers/Microsoft.Management/managementGroups/{defaultGroupID}"
        }
    }
    

기본 관리 그룹을 루트 관리 그룹으로 다시 설정하려면, 동일한 엔드포인트를 사용하고 defaultManagementGroup/providers/Microsoft.Management/managementGroups/{rootMgID}의 값으로 설정합니다.

설정: 권한 부여 요구

모든 사용자는 기본값으로 테넌트에 새 관리 그룹을 만들 수 있습니다. 테넌트의 관리자는 관리 그룹 계층 구조에서 일관성과 적합성을 유지하기 위해 특정 사용자에게만 이러한 사용 권한을 제공하려고 할 수 있습니다. 자식 관리 그룹을 만들려면 사용자는 루트 관리 그룹에서 Microsoft.Management/managementGroups/write 작업을 수행해야 합니다.

포털에서 권한 부여 요구

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

  2. 검색 창을 사용하여 관리 그룹을 검색하고 선택합니다.

  3. 루트 관리 그룹에서 관리 그룹 이름 옆에 있는 세부 정보를 선택 합니다.

  4. 설정 아래에서 계층 구조 설정을 선택합니다.

  5. 새 관리 그룹을 만드는 데 필요한 권한 요구 토글을 켭니다.

    새 관리 그룹을 만드는 데 필요한 권한 요구 토글을 사용할 수 없는 경우, 원인은 다음 조건 중 하나입니다.

    • 현재 보고 있는 관리 그룹이 루트 관리 그룹이 아닙니다.
    • 보안 주체에게 계층 구조 설정을 변경하는 데 필요한 권한이 없습니다.

REST API를 사용하여 권한 부여 요구

REST API를 사용하여 권한 부여를 요구하려면 계층 구조 설정 엔드포인트를 호출합니다. 다음의 REST API URI 및 본문 형식을 사용합니다. 이 값은 부울이므로 해당 값에 true 또는 false를 제공합니다. true 값은 이 방법을 통해 관리 그룹 계층 구조를 보호합니다.

  • REST API URI:

    PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{rootMgID}/settings/default?api-version=2020-05-01
    
  • 요청 본문.:

    {
        "properties": {
            "requireAuthorizationForGroupCreation": true
        }
    }
    

이 설정을 사용하지 않으려면 동일한 엔드포인트를 사용하고 requireAuthorizationForGroupCreationfalse 값으로 설정합니다.

Azure PowerShell 샘플

Azure PowerShell에는 기본 관리 그룹을 정의하거나 권한 부여를 요구하는 Az 명령이 없습니다. 이 문제를 해결하려면 다음의 Azure PowerShell 샘플과 함께 REST API를 사용할 수 있습니다.

$root_management_group_id = "Enter the ID of root management group"
$default_management_group_id = "Enter the ID of default management group (or use the same ID of the root management group)"

$body = '{
     "properties": {
          "defaultManagementGroup": "/providers/Microsoft.Management/managementGroups/' + $default_management_group_id + '",
          "requireAuthorizationForGroupCreation": true
     }
}'

$token = (Get-AzAccessToken).Token
$headers = @{"Authorization"= "Bearer $token"; "Content-Type"= "application/json"}
$uri = "https://management.azure.com/providers/Microsoft.Management/managementGroups/$root_management_group_id/settings/default?api-version=2020-05-01"

Invoke-RestMethod -Method PUT -Uri $uri -Headers $headers -Body $body

관리 그룹에 대해 자세히 알아보려면 다음 항목을 참조하세요.