Condividi tramite


Limitare l'accesso in uscita dal cluster di Azure Esplora dati

Limitare l'accesso in uscita del cluster è importante per ridurre i rischi, ad esempio l'esfiltrazione dei dati. Un attore malintenzionato potrebbe potenzialmente creare una tabella esterna in un account di archiviazione ed estrarre grandi quantità di dati. È possibile controllare l'accesso in uscita a livello di cluster definendo i criteri di callout. La gestione dei criteri di callout consente di consentire l'accesso in uscita a SQL, archiviazione o altri endpoint specificati.

In questo articolo si apprenderà come un'estensione per i criteri di callout che consente di limitare ulteriormente le chiamate dal cluster.

Tipi di criteri di callout

I criteri di callout possono essere divisi, come indicato di seguito:

  • Criteri di callout non modificabili: si tratta dei criteri standard di un cluster. Sono preconfigurati e non possono essere modificati.
  • Criteri di callout del cluster: si tratta di criteri che è possibile modificare usando i comandi dei criteri di callout.

Prerequisiti

Eseguire i comandi dei criteri di callout

  1. Accedere all'interfaccia utente Web di Azure Esplora dati.

  2. Nel menu a sinistra selezionare Query e quindi connettersi al cluster.

  3. Nella finestra di query eseguire la query seguente per esaminare l'elenco dei criteri di callout non modificabili nel cluster:

    .show cluster policy callout
    

    Screenshot della pagina query con restrizioni che mostra i criteri di callout non modificabili.

Di seguito è riportato un esempio di criteri di callout non modificabili. Si noti che nell'elenco sono presenti alcune regole predefinite che consentono di effettuare chiamate ad altri servizi, ad esempio dati esterni.

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

Svuotare l'elenco dei criteri di callout non modificabili

Per limitare l'accesso in uscita da un cluster, è necessario svuotare l'elenco dei criteri di callout non modificabili. A tale scopo, eseguire il comando seguente usando l'interfaccia della riga di comando di Azure o qualsiasi altro strumento chiamando le API di Azure Esplora dati.

  1. Attivare una distribuzione arm usando l'interfaccia della riga di comando di Azure con un modello di Resource Manager aggiornato:

    File di modello di Resource Manager di esempio denominato "template.json" con la proprietà restrictOutboundNetworkAccess impostata su Enabled:

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

    Chiamata di esempio con l'interfaccia della riga di comando di Azure che fa riferimento al modello precedente.

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

    L'aggiornamento della restrictOutboundNetworkAccess proprietà del cluster rimuove tutti i criteri non modificabili nel cluster. Ciò impedisce l'avvio di chiamate ad altri servizi, come illustrato nell'esempio seguente.

    Screenshot della pagina query con restrizioni che mostra un errore di criteri di callout non modificabili.

  2. Eseguire di nuovo il comando seguente e verificare che restituisca un elenco vuoto:

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

    Screenshot della pagina query con restrizioni, che non mostra criteri di callout non modificabili.

Aggiungere FQDN ai callout in condizioni limitate

Se si vuole consentire l'accesso in uscita a un FQDN specifico, è possibile aggiungerlo all'elenco per il allowedFqdnList cluster. A tale scopo, è possibile eseguire apportando modifiche al modello di Resource Manager del cluster di Azure Esplora dati.

  1. Attivare una distribuzione arm usando l'interfaccia della riga di comando di Azure con un modello di Resource Manager aggiornato:

    File di modello arm di esempio denominato "template.json" con la proprietà allowedFqdnList impostata su ["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", "..."]
                  ...
              }
          }
          ...
      ]
    }
    

    Chiamata di esempio con l'interfaccia della riga di comando di Azure che fa riferimento al modello precedente.

    # Replace the <...> placeholders with the correct values
    az deployment group create   --name ConfigureAllowedFqdnList   --resource-group <resource group>   --template-file ./template.json
    
  2. Aggiungendo il nome di dominio completo all'elenco consentito, sarà possibile effettuare chiamate al nome di dominio completo specificato. È possibile controllare il risultato della distribuzione eseguendo il comando seguente:

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

    Screenshot della pagina query con restrizioni che mostra un criterio di callout configurato.

    Nota

    È disponibile un set di criteri predefiniti impostati per Azure Esplora dati per comunicare con il livello di archiviazione interno. Non espongono alcun rischio per l'esfiltrazione dei dati.