Share via


Restringir o acesso de saída do cluster do Azure Data Explorer

Restringir o acesso de saída do cluster é importante para mitigar riscos como a exfiltração dos dados. Um ator mal-intencionado poderia potencialmente criar uma tabela externa para uma conta de armazenamento e extrair grandes quantidades de dados. Você pode controlar o acesso de saída no nível do cluster definindo políticas de texto explicativo. Com o gerenciamento de políticas de texto explicativo, você pode permitir o acesso de saída a um SQL, armazenamento ou outros pontos de extremidade especificados.

Neste artigo, você aprenderá sobre uma extensão às políticas de texto explicativo que permite restringir ainda mais as saídas de chamadas do cluster.

Tipos de políticas de texto explicativo

As políticas de texto explicativo podem ser divididas da seguinte maneira:

  • Políticas de texto explicativo imutáveis: são as políticas padrão de um cluster. Elas são pré-configuradas e não podem ser modificadas.
  • Políticas de texto explicativo de cluster: são as políticas que você pode modificar usando os comandos de política de texto explicativo.

Pré-requisitos

Executar comandos de política de texto explicativo

  1. Entre na interface do usuário da Web do Azure Data Explorer.

  2. No menu à esquerda, selecione Consulta e conecte-se ao cluster.

  3. Na janela de consulta, execute a seguinte consulta para inspecionar a lista de políticas de texto explicativo imutáveis no cluster:

    .show cluster policy callout
    

    Captura de tela da página de consulta restrita, mostrando as políticas de texto explicativo imutáveis.

O exemplo a seguir mostra um exemplo de políticas de texto explicativo imutáveis. Observe que na lista há algumas regras padrão que permitem fazer chamadas para outros serviços, como dados externos.

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

Esvaziar a lista de políticas de texto explicativo imutáveis

Para restringir o acesso de saída do cluster, você precisa esvaziar a lista de políticas de texto explicativo imutáveis. Você pode fazer isso executando o comando a seguir usando a CLI do Azure ou qualquer outra ferramenta chamando as APIs do Azure Data Explorer.

  1. Dispare uma implantação do ARM usando a CLI do Azure com um modelo do ARM atualizado:

    Arquivo de exemplo do modelo do ARM chamado "template.json" com a propriedade restrictOutboundNetworkAccess definida como Habilitada:

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

    Chamada de exemplo usando a CLI do Azure que se refere ao modelo acima.

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

    A atualização da propriedade de cluster restrictOutboundNetworkAccess remove todas as políticas imutáveis no cluster. Isso impede o início de chamadas para outros serviços, conforme mostrado no exemplo a seguir.

    Captura de tela da página de consulta restrita, mostrando um erro de políticas de texto explicativo imutáveis.

  2. Execute o seguinte comando novamente e verifique se ele retorna uma lista vazia:

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

    Captura de tela da página de consulta restrita, não mostrando nenhuma política de texto explicativo imutável.

Adicionar FQDNs aos textos explicativos sob condições restritas

Se você quiser permitir o acesso de saída a um FQDN específico, poderá adicioná-lo à lista allowedFqdnList para seu cluster. Você pode fazer isso fazendo alterações no modelo do ARM do cluster do Azure Data Explorer.

  1. Dispare uma implantação do ARM usando a CLI do Azure com um modelo do ARM atualizado:

    Arquivo de exemplo do modelo do ARM chamado "template.json" com a propriedade allowedFqdnList definida como ["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", "..."]
                  ...
              }
          }
          ...
      ]
    }
    

    Chamada de exemplo usando a CLI do Azure que se refere ao modelo acima.

    # Replace the <...> placeholders with the correct values
    az deployment group create   --name ConfigureAllowedFqdnList   --resource-group <resource group>   --template-file ./template.json
    
  2. Ao adicionar o FQDN à lista de permissões, você poderá fazer chamadas ao FQDN especificado. Você pode conferir o resultado da implantação executando o seguinte comando:

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

    Captura de tela da página de consulta restrita, mostrando uma política de texto explicativo configurada.

    Observação

    Há um conjunto de políticas padrão definidas para que o Azure Data Explorer se comunique com a camada de armazenamento interna dele. Elas não expõem nenhum risco de exfiltração dos dados.