다음을 통해 공유


Azure Data Explorer 클러스터에서 아웃바운드 액세스 제한

데이터 반출과 같은 위험을 완화하려면 클러스터의 아웃바운드 액세스를 제한하는 것이 중요합니다. 악의적인 행위자가 잠재적으로 스토리지 계정에 대한 외부 테이블을 만들고 대량의 데이터를 추출할 수 있습니다. 설명선 정책을 정의하여 클러스터 수준에서 아웃바운드 액세스를 제어할 수 있습니다. 설명선 정책을 관리하면 지정된 SQL, 스토리지 또는 기타 엔드포인트에 대한 아웃바운드 액세스를 허용할 수 있습니다.

이 문서에서는 클러스터에서 호출을 추가로 제한할 수 있는 설명선 정책 확장에 대해 알아봅니다.

설명선 정책 유형

설명선 정책은 다음과 같이 나눌 수 있습니다.

  • 변경할 수 없는 설명선 정책: 클러스터의 표준 정책입니다. 미리 구성되어 있으며 수정할 수 없습니다.
  • 클러스터 설명선 정책: 설명선 정책 명령을 사용하여 수정할 수 있는 정책입니다.

필수 구성 요소

설명선 정책 명령 실행

  1. Azure Data Explorer 웹 UI에 로그인합니다.

  2. 왼쪽 메뉴에서 쿼리를 선택한 다음, 클러스터에 연결합니다.

  3. 쿼리 창에서 다음 쿼리를 실행하여 클러스터에서 변경할 수 없는 설명선 정책 목록을 검사합니다.

    .show cluster policy callout
    

    변경할 수 없는 콜아웃 정책을 보여주는 제한된 쿼리 페이지의 스크린샷.

다음은 변경할 수 없는 설명선 정책의 예를 보여줍니다. 목록에는 외부 데이터와 같은 다른 서비스에 대한 호출을 허용하는 몇 가지 기본 규칙이 있습니다.

[
   {
      "CalloutType":"kusto",
      "CalloutUriRegex":"[a-z0-9]{3,22}\\.(\\w+\\.)?kusto(mfa)?\\.windows\\.net/?$",
      "CanCall":true
   },
   {
      "CalloutType":"kusto",
      "CalloutUriRegex":"//[a-z0-9]{3,22}\\.[a-z0-9-]{1,50}\\.(kusto\\.azuresynapse|kustodev\\.azuresynapse-dogfood)\\.net/?$",
      "CanCall":true
   },
   {
      "CalloutType":"kusto",
      "CalloutUriRegex":"^https://([A-Za-z0-9]+\\.)?(ade|adx)\\.(int\\.)?(applicationinsights|loganalytics|monitor)\\.(io|azure(\\.com|\\.us|\\.cn))/",
      "CanCall":true
   },
   {
      "CalloutType":"sql",
      "CalloutUriRegex":"[a-z0-9][a-z0-9\\-]{0,61}[a-z0-9]?\\.database\\.windows\\.net/?$",
      "CanCall":true
   },
   {
      "CalloutType":"sql",
      "CalloutUriRegex":"[a-z0-9-]{0,61}?(-ondemand)?\\.sql\\.azuresynapse(-dogfood)?\\.net/?$",
      "CanCall":true
   },
   {
      "CalloutType":"external_data",
      "CalloutUriRegex":".*",
      "CanCall":true
   },
   {
      "CalloutType":"azure_digital_twins",
      "CalloutUriRegex":"[A-Za-z0-9\\-]{3,63}\\.api\\.[A-Za-z0-9]+\\.digitaltwins\\.azure\\.net/?$",
      "CanCall":true
   }
]

변경할 수 없는 설명선 정책 목록 비우기

클러스터에서 아웃바운드 액세스를 제한하려면 변경할 수 없는 설명선 정책 목록을 비워야 합니다. Azure CLI 또는 Azure Data Explorer API를 호출하여 다른 도구를 사용해 다음 명령을 실행하여 이 작업을 수행할 수 있습니다.

  1. 업데이트된 ARM 템플릿과 함께 Azure CLI를 사용하여 ARM 배포를 트리거합니다.

    restrictOutboundNetworkAccess 속성이 Enabled로 설정된 "template.json"이라는 ARM 템플릿 파일 예제:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      ...
      "resources": [
          {
              "type": "Microsoft.Kusto/Clusters",
              "apiVersion": "2021-02-01",
              ...
              "properties": {
                  ...
                  "restrictOutboundNetworkAccess": "Enabled",
                  ...
              }
          }
          ...
      ]
    }
    

    위의 템플릿을 참조하는 Azure CLI를 사용하는 호출 예제입니다.

    # Replace the <...> placeholders with the correct values
    az deployment group create   --name RestrictOutboundAccess   --resource-group <resource group>   --template-file ./template.json
    

    restrictOutboundNetworkAccess 클러스터 속성을 업데이트하면 클러스터에서 변경할 수 없는 모든 정책이 제거됩니다. 이렇게 하면 다음 예제와 같이 다른 서비스에 대한 호출을 시작할 수 없습니다.

    변경할 수 없는 콜아웃 정책 오류를 보여주는 제한된 쿼리 페이지의 스크린샷.

  2. 다음 명령을 다시 실행하고 빈 목록을 반환하는지 확인합니다.

    .show cluster policy callout 
    | where EntityType == "Cluster immutable policy"
    

    변경할 수 없는 콜아웃 정책이 없음을 보여주는 제한된 쿼리 페이지의 스크린샷.

제한된 조건에서 설명선에 FQDN 추가

특정 FQDN에 대한 아웃바운드 액세스를 허용하려는 경우 클러스터의 allowedFqdnList 목록에 추가할 수 있습니다. Azure Data Explorer 클러스터의 ARM 템플릿을 변경해 실행하여 이 작업을 수행할 수 있습니다.

  1. 업데이트된 ARM 템플릿과 함께 Azure CLI를 사용하여 ARM 배포를 트리거합니다.

    allowedFqdnList 속성이 ["some.sql.azuresynapse.net", "..."]로 설정된 "template.json"이라는 ARM 템플릿 파일 예제:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      ...
      "resources": [
          {
              "type": "Microsoft.Kusto/Clusters",
              "apiVersion": "2021-02-01",
              ...
              "properties": {
                  ...
                  "restrictOutboundNetworkAccess": "Enabled",
                  "allowedFqdnList": ["some.sql.azuresynapse.net", "..."]
                  ...
              }
          }
          ...
      ]
    }
    

    위의 템플릿을 참조하는 Azure CLI를 사용하는 호출 예제입니다.

    # Replace the <...> placeholders with the correct values
    az deployment group create   --name ConfigureAllowedFqdnList   --resource-group <resource group>   --template-file ./template.json
    
  2. 허용 목록에 FQDN을 추가하면 지정된 FQDN을 호출할 수 있습니다. 다음 명령을 실행하여 배포 결과를 확인할 수 있습니다.

    .show cluster policy callout 
    | project Policy=parse_json(Policy)
    | mv-expand Policy
    | where Policy.CalloutType == "sql" 
    

    구성된 콜아웃 정책을 보여주는 제한된 쿼리 페이지의 스크린샷.

    참고

    Azure Data Explorer가 내부 스토리지 계층과 통신하도록 설정된 기본 정책 세트가 있습니다. 데이터 반출의 위험을 노출하지 않습니다.