다음을 통해 공유


Azure Policy를 사용하여 Azure Virtual Network Manager에서 동적 네트워크 그룹 구성원 정의

이 문서에서는 Azure Policy 조건문을 사용하여 동적 멤버 자격으로 네트워크 그룹을 만드는 방법을 알아봅니다. 드롭다운 메뉴에서 매개 변수와 연산자를 선택하여 기본 편집기를 사용해 이러한 조건문을 만듭니다. 또한 고급 편집기를 사용하여 기존 네트워크 그룹의 조건문을 업데이트하는 방법을 알아봅니다.

Azure Policy는 리소스별 거버넌스를 대규모로 적용할 수 있는 서비스입니다. 이는 가상 네트워크의 명시적 목록이 아닌 그룹 구성원을 정의하는 조건식을 지정하는 데 사용할 수 있습니다. 이 조건은 네트워크 그룹에 동적으로 계속 전원을 공급하여 가상 네트워크에서 조건 처리가 변경될 때 자동으로 그룹에 참가하고 그룹에서 나갈 수 있도록 하며, Network Manager 작업이 필요하지 않습니다.

필수 조건

매개 변수 및 연산자

조건문을 사용하여 동적 구성원이 있는 가상 네트워크를 선택합니다. 선택한 가상 네트워크의 범위를 더 좁혀야 하는 시나리오의 경우 ANDOR 같은 논리 연산자를 사용해 둘 이상의 조건문을 정의할 수 있습니다.

지원되는 매개 변수의 목록:

매개 변수 고급 편집기 필드
이름 Name
ID Id
태그 tag['tagName']
구독 이름 [subscription().Name]
구독 ID [subscription().Id]
구독 태그 [subscription().tags['tagName']]
리소스 그룹 이름 [resourceGroup().Name]
리소스 그룹 ID [resourceGroup().Id]
리소스 그룹 태그 [resourceGroup().tags['tagName']]

지원되는 연산자의 목록:

연산자 고급 편집기
포함 "contains": <>
포함 안 함 "notcontains": <>
In "in": <>
속하지 않음 "notin": <>
같음 "equals": <>
같지 않음 "notequals": <>
임의 항목 포함 "contains": <>
모두 포함 "contains": <>
포함하지 않음 "notcontains": <>
Exists "exists": true
존재하지 않음 "exists": false

참고 항목

ExistsDoes not exist 연산자는 Tags 매개 변수와 함께만 사용됩니다.

기본 편집기

구독에 다음과 같은 가상 네트워크가 있다고 가정합니다. 각 가상 네트워크에는 해당 값이 프로덕션 또는 테스트환경이라는 태그가 연결되어 있습니다.

Virtual Network 태그 이름 태그 값
myVNet01-EastUS environment production
myVNet01-WestUS environment production
myVNet02-WestUS environment 테스트
myVNet03-WestUS environment 테스트

태그가 프로덕션과 동일한 키 값 쌍의 환경을 가진 네트워크만 선택하려고 합니다. 기본 편집기를 사용하여 조건문을 만들려면 새 네트워크 그룹을 만들어야 합니다.

  1. Azure Virtual Network Manager 인스턴스로 이동하여 설정에서 네트워크 그룹을 선택합니다. 그런 다음, + 만들기를 선택하여 새 네트워크 그룹을 만듭니다.

  2. 네트워크 그룹에 대한 이름설명(선택 사항)을 입력하고 추가를 선택합니다.

  3. 목록에서 네트워크 그룹을 선택하고 Azure Policy 만들기를 선택합니다.

  4. 정책 이름을 입력하고, 변경이 필요하지 않는 한 범위 선택을 그대로 둡니다.

  5. 조건매개 변수 아래에 있는 드롭다운에서 태그를 선택한 다음, 연산자 아래에 있는 드롭다운에서 키 값 쌍을 선택합니다.

  6. 조건에서 환경프로덕션을 입력하고 리소스 미리 보기를 선택합니다. myVNet01-EastUS 및 myVNet01-WestUS가 목록에 표시됩니다.

    키 값 쌍을 사용한 Azure Policy 창 설정 태그 만들기의 스크린샷

  7. 닫기저장을 선택합니다.

  8. 몇 분 뒤에 네트워크 그룹을 선택하고 설정에서 그룹 구성원을 선택합니다. myVNet01-WestUS 및 myVNet01-WestUS만 표시됩니다.

Important

기본 편집기는 Azure Policy를 만드는 동안에만 사용할 수 있습니다. 정책이 만들어지면 가상 네트워크 관리자의 정책 섹션에서 JSON을 사용하거나 Azure Policy를 통해 모든 편집이 수행됩니다.

고급 편집기

고급 편집기를 사용하여 네트워크 그룹을 만들거나 기존 네트워크 그룹을 업데이트하는 동안에 가상 네트워크를 선택할 수 있습니다. JSON에 기반한 고급 편집기는 숙련된 사용자가 복잡한 Azure Policy 조건문을 만들고 업데이트하는 데 유용합니다.

고급 편집기를 사용하여 새 정책 만들기

  1. Azure Virtual Network Manager 인스턴스로 이동하여 설정에서 네트워크 그룹을 선택합니다. 그런 다음, + 만들기를 선택하여 새 네트워크 그룹을 만듭니다.

  2. 네트워크 그룹에 대한 이름설명(선택 사항)을 입력하고 추가를 선택합니다.

  3. 목록에서 네트워크 그룹을 선택하고 Azure Policy 만들기를 선택합니다.

  4. 정책 이름을 입력하고, 변경이 필요하지 않는 한 범위 선택을 그대로 둡니다.

  5. 조건 아래에서 고급(JSON) 편집기를 선택하여 편집기를 엽니다.

  6. 텍스트 상자에 다음 JSON 코드를 입력하고 저장을 선택합니다.

       {
       "field": "Name",
       "contains": "myVNet01"
       }
    
  7. 몇 분 뒤에 네트워크 그룹을 선택하고 설정에서 그룹 구성원을 선택합니다. myVNet01-WestUS 및 myVNet01-EastUS만 표시됩니다.

Important

가상 네트워크 관리자를 통해 만든 모든 Azure 정책은 Azure Policy 서비스 영역에 상주합니다. 가상 네트워크 관리자 인스턴스를 삭제해도 Azure Policy 할당 및 정의에서 제거되지 않습니다. 이렇게 하려면 정책을 수동으로 제거해야 합니다. Azure 정책 제거 방법 알아보기

기존 정책 편집

  1. 이전 섹션에서 만든 네트워크 그룹을 선택합니다. 그런 다음, 정책 탭을 선택합니다.

  2. 이전 섹션에서 만든 정책을 선택합니다.

  3. 다음과 같이 네트워크 그룹에 대한 조건문이 사전 편집기 보기에 표시됩니다.

    [
      {
         "field": "Name",
         "contains": "myVNet01"
      }
    ]
    
  4. WestUS포함하지 않는 이름 필드에 다른 조건문을 추가하려면 고급 편집기에 다음을 입력합니다.

    {
       "allOf": [
    
          {
             "field": "Name",
             "contains": "VNet01"
          },
          {
             "field": "Name",
             "notcontains": "WestUS"
          }
       ]
    }
    

    "allOf" 매개 변수에는 AND 논리 연산자로 구분된 조건문이 모두 포함됩니다.

  5. [저장]을 선택합니다.

  6. 몇 분 뒤에 네트워크 그룹을 선택하고 설정에서 그룹 구성원을 선택합니다. myVNet01-EastUS만 표시됩니다.

고급 편집기에서 사용할 수 있는 매개 변수와 연산자의 전체 목록은 매개 변수 및 연산자를 참조하세요.

추가 예

다음은 고급 편집기에서 사용되는 조건문의 추가 예제입니다.

예제 1: OR 연산자만

이 예제에서는 OR 논리 연산자를 사용하여 두 조건문을 구분합니다.

  • 기본 편집기:

    OR 논리 연산자를 사용하는 네트워크 그룹 조건문의 스크린샷

  • 고급 운영자:

    {
       "anyOf": [
          {
             "field": "Name",
             "contains": "myVNet01"
          },
          {
             "field": "Name",
             "contains": "myVNet02"
          }
       ]
    }
    

"anyOf" 매개 변수에는 OR 논리 연산자로 구분된 조건문이 모두 포함됩니다.

예제 2: 동시에 AND 및 OR 연산자

  • 기본 편집기:

    OR 및 AND 논리 연산자를 모두 사용하는 네트워크 그룹 조건문의 스크린샷

  • 고급 편집기:

{
   "allOf": [
      {
         "anyOf": [
            {
               "field": "Name",
               "contains": "myVNet01"
            },
            {
               "field": "Name",
               "contains": "myVNet02"
            }
         ]
      },
      {
         "field": "Name",
         "notcontains": "West"
      }
   ]
}

"allOf""anyOf"가 모두 코드에서 사용됩니다. AND 연산자는 목록의 마지막이므로, OR 연산자가 있는 두 조건문이 포함된 코드의 바깥쪽 부분에 있습니다.

예제 3: 고급 편집기에서 사용자 지정 태그 값 사용

이 예제에서는 이름에 myVNet이 포함되고 environment 태그가 production과 같은 가상 네트워크를 찾는 조건문이 만들어집니다.

  • 고급 편집기:

    
       {
            "allOf": [
              {
                 "field": "Name",
                 "contains": "myVNet"
              },      
              {
                 "field": "tags['environment']",
                 "equals": "production"
              }
            ]    
       }
    
    

    참고 항목

    조건부에서 Microsoft.Network/virtualNetwork 리소스 종류를 필터링하여 효율성을 개선해야 합니다. 이 조건은 포털을 통해 지정된 조건부에 추가됩니다.

다음 단계