Dela via


Begränsa utgående åtkomst från ditt Azure Data Explorer-kluster

Det är viktigt att begränsa utgående åtkomst till klustret för att minimera risker som dataexfiltrering. En obehörig aktör kan potentiellt skapa en extern tabell till ett lagringskonto och extrahera stora mängder data. Du kan styra utgående åtkomst på klusternivå genom att definiera principer för pratbubblan. Genom att hantera pratbubblans principer kan du tillåta utgående åtkomst till angiven SQL, lagring eller andra slutpunkter.

I den här artikeln får du lära dig mer om ett tillägg till pratbubblans principer som gör att du kan begränsa anrop från klustret ytterligare.

Typer av pratbubblansprinciper

Pratbubblans principer kan delas upp på följande sätt:

  • Oföränderliga pratbubblans principer: Det här är standardprinciperna för ett kluster. De är förkonfigurerade och kan inte ändras.
  • Principer för pratbubblan för kluster: Det här är principer som du kan ändra med hjälp av pratbubblans principkommandon.

Förutsättningar

Köra pratbubblans principkommandon

  1. Logga in på webbgränssnittet för Azure Data Explorer.

  2. På den vänstra menyn väljer du Fråga och ansluter sedan till klustret.

  3. I frågefönstret kör du följande fråga för att granska listan över oföränderliga pratbubblans principer i klustret:

    .show cluster policy callout
    

    Skärmbild av sidan med begränsad fråga som visar de oföränderliga pratbubblans principer.

Nedan visas ett exempel på oföränderliga pratbubblans principer. Observera att det finns några standardregler i listan som gör det möjligt att göra anrop till andra tjänster, till exempel externa data.

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

Töm listan över oföränderliga pratbubblans principer

Om du vill begränsa utgående åtkomst till från klustret måste du tömma listan över oföränderliga pratbubblans principer. Du kan göra detta genom att köra följande kommando med hjälp av Azure CLI eller andra verktyg genom att anropa Api:erna för Azure Data Explorer.

  1. Utlös en ARM-distribution med hjälp av Azure CLI med en uppdaterad ARM-mall:

    Exempel på ARM-mallfil med namnet "template.json" med egenskapen restrictOutboundNetworkAccess inställd på Aktiverad:

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

    Exempelanrop med hjälp av Azure CLI som refererar till mallen ovan.

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

    När du uppdaterar klusteregenskapen restrictOutboundNetworkAccess tar du bort alla oföränderliga principer i klustret. Detta förhindrar att anrop till andra tjänster initieras, som du ser i följande exempel.

    Skärmbild av sidan med begränsad fråga som visar ett fel med oföränderliga pratbubblan.

  2. Kör följande kommando igen och kontrollera att det returnerar en tom lista:

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

    Skärmbild av den begränsade frågesidan som inte visar några oföränderliga pratbubblans principer.

Lägga till FQDN i pratbubblan under begränsade förhållanden

Om du vill tillåta utgående åtkomst till ett specifikt fullständigt domännamn kan du lägga till det i allowedFqdnList listan för klustret. Du kan göra detta genom att köra genom att göra ändringar i ARM-mallen för Azure Data Explorer-klustret.

  1. Utlös en ARM-distribution med hjälp av Azure CLI med en uppdaterad ARM-mall:

    Exempel på ARM-mallfil med namnet "template.json" med egenskapen allowedFqdnList inställd på ["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", "..."]
                  ...
              }
          }
          ...
      ]
    }
    

    Exempelanrop med hjälp av Azure CLI som refererar till mallen ovan.

    # Replace the <...> placeholders with the correct values
    az deployment group create   --name ConfigureAllowedFqdnList   --resource-group <resource group>   --template-file ./template.json
    
  2. Genom att lägga till FQDN i listan över tillåtna kan du göra anrop till det angivna fullständiga domännamnet. Du kan kontrollera resultatet av distributionen genom att köra följande kommando:

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

    Skärmbild av sidan med begränsad fråga som visar en konfigurerad pratbubblans princip.

    Anteckning

    Det finns en uppsättning standardprinciper för Azure Data Explorer för att kommunicera med det interna lagringsskiktet. De exponerar ingen risk för dataexfiltrering.