Udostępnij za pośrednictwem


Ograniczanie dostępu wychodzącego z klastra usługi Azure Data Explorer

Ograniczenie dostępu wychodzącego klastra jest ważne, aby ograniczyć ryzyko, takie jak eksfiltracja danych. Złośliwy aktor może potencjalnie utworzyć tabelę zewnętrzną na koncie magazynu i wyodrębnić duże ilości danych. Dostęp wychodzący można kontrolować na poziomie klastra, definiując zasady objaśnień. Zarządzanie zasadami objaśnień umożliwia zezwalanie na dostęp wychodzący do określonych punktów końcowych SQL, storage lub innych punktów końcowych.

W tym artykule dowiesz się, jak rozszerzenie do zasad objaśnień, które umożliwia dalsze ograniczanie wywołań z klastra.

Typy zasad objaśnień

Zasady objaśnienie można podzielić w następujący sposób:

  • Niezmienne zasady objaśnień: są to standardowe zasady klastra. Są one wstępnie skonfigurowane i nie można ich modyfikować.
  • Zasady objaśnień klastra: są to zasady, które można modyfikować przy użyciu poleceń zasad objaśnień.

Wymagania wstępne

Uruchamianie poleceń zasad objaśnień

  1. Zaloguj się do internetowego interfejsu użytkownika usługi Azure Data Explorer.

  2. W menu po lewej stronie wybierz pozycję Zapytanie, a następnie połącz się z klastrem.

  3. W oknie zapytania uruchom następujące zapytanie, aby sprawdzić listę niezmiennych zasad objaśnienia w klastrze:

    .show cluster policy callout
    

    Zrzut ekranu przedstawiający stronę zapytania z ograniczeniami pokazującą niezmienne zasady objaśnienia.

Poniżej przedstawiono przykład niezmiennych zasad objaśnienia. Zwróć uwagę, że na liście istnieje kilka domyślnych reguł, które umożliwiają wykonywanie wywołań do innych usług, takich jak dane zewnętrzne.

[
   {
      "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
   }
]

Opróżnij listę niezmiennych zasad objaśnień

Aby ograniczyć dostęp wychodzący do z klastra, należy opróżnić listę niezmiennych zasad objaśnień. Możesz to zrobić, uruchamiając następujące polecenie przy użyciu interfejsu wiersza polecenia platformy Azure lub innych narzędzi, wywołując interfejsy API usługi Azure Data Explorer.

  1. Wyzwalanie wdrożenia usługi ARM przy użyciu interfejsu wiersza polecenia platformy Azure ze zaktualizowanym szablonem usługi ARM:

    Przykładowy plik szablonu usługi ARM o nazwie "template.json" z właściwością restrictOutboundNetworkAccess ustawioną na wartość Włączone:

    {
      "$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",
                  ...
              }
          }
          ...
      ]
    }
    

    Przykładowe wywołanie przy użyciu interfejsu wiersza polecenia platformy Azure odwołującego się do powyższego szablonu.

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

    Zaktualizowanie właściwości klastra restrictOutboundNetworkAccess spowoduje usunięcie wszystkich niezmiennych zasad w klastrze. Zapobiega to inicjowaniu wywołań do innych usług, jak pokazano w poniższym przykładzie.

    Zrzut ekranu przedstawiający stronę zapytania z ograniczeniami z błędem niezmiennych zasad objaśnienia.

  2. Uruchom ponownie następujące polecenie i sprawdź, czy zwraca pustą listę:

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

    Zrzut ekranu przedstawiający stronę zapytania z ograniczeniami bez niezmiennych zasad objaśnienia.

Dodawanie nazw FQDN do objaśnień w ograniczonych warunkach

Jeśli chcesz zezwolić na dostęp wychodzący do określonej nazwy FQDN, możesz dodać go do allowedFqdnList listy klastra. Możesz to zrobić, uruchamiając polecenie, wprowadzając zmiany w szablonie usługi ARM klastra usługi Azure Data Explorer.

  1. Wyzwalanie wdrożenia usługi ARM przy użyciu interfejsu wiersza polecenia platformy Azure ze zaktualizowanym szablonem usługi ARM:

    Przykładowy plik szablonu usługi ARM o nazwie "template.json" z właściwością allowedFqdnList ustawioną na wartość ["some.sql.azuresynapse.net", "..."]:

    {
      "$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", "..."]
                  ...
              }
          }
          ...
      ]
    }
    

    Przykładowe wywołanie przy użyciu interfejsu wiersza polecenia platformy Azure odwołującego się do powyższego szablonu.

    # Replace the <...> placeholders with the correct values
    az deployment group create   --name ConfigureAllowedFqdnList   --resource-group <resource group>   --template-file ./template.json
    
  2. Dodając nazwę FQDN do listy dozwolonych, będzie można wykonywać wywołania określonej nazwy FQDN. Wynik wdrożenia można sprawdzić, wykonując następujące polecenie:

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

    Zrzut ekranu przedstawiający stronę zapytania z ograniczeniami z wyświetlonymi skonfigurowanymi zasadami objaśnienia.

    Uwaga

    Istnieje zestaw domyślnych zasad ustawionych dla usługi Azure Data Explorer do komunikowania się z wewnętrzną warstwą magazynu. Nie narażają się na ryzyko eksfiltracji danych.