Partage via


Restreindre l’accès sortant à partir de votre cluster Azure Data Explorer

La restriction de l’accès sortant de votre cluster est importante pour atténuer les risques comme l’exfiltration des données. Un acteur malveillant pourrait créer une table externe dans un compte de stockage et extraire de grandes quantités de données. Vous pouvez contrôler l’accès sortant au niveau du cluster en définissant des stratégies de légende. La gestion des stratégies de légende vous permet d’autoriser l’accès sortant aux points de terminaison SQL, de stockage ou à d’autres points de terminaison spécifiés.

Dans cet article, vous allez découvrir comment étendre les stratégies de légende pour restreindre davantage les appels de votre cluster.

Types de stratégies de légende

Les stratégies de légende peuvent être divisées, comme suit :

  • Stratégies de légende immuables : il s’agit des stratégies standard d’un cluster. Elles sont préconfigurées et ne peuvent pas être modifiées.
  • Stratégies de légende de cluster : il s’agit de stratégies que vous pouvez modifier à l’aide de commandes de stratégie de légende.

Prérequis

Exécutez les commandes de stratégie de légende

  1. Se connecter à l’interface utilisateur web d’Azure Data Explorer.

  2. Dans le menu de gauche, sélectionnez Requête, puis connectez-vous à votre cluster.

  3. Dans la fenêtre de requête, exécutez la requête suivante pour inspecter la liste des stratégies de légende immuables sur votre cluster :

    .show cluster policy callout
    

    Capture d’écran de la page de requête restreinte montrant les stratégies de légende immuables.

Voici un exemple de stratégies de légende immuables. Notez que dans la liste, il existe quelques règles par défaut qui permettent d’effectuer des appels à d’autres services, comme des données externes.

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

Vider la liste des stratégies de légende immuables

Pour restreindre l’accès sortant à partir de votre cluster, vous devez vider la liste des stratégies de légende immuables. Pour ce faire, exécutez la commande suivante à l’aide de l’interface Azure CLI ou d’autres outils en appelant les API Azure Data Explorer.

  1. Déclenchez un déploiement ARM à l’aide de l’interface Azure CLI avec un modèle ARM mis à jour :

    Exemple de fichier de modèle ARM nommé « template.json » avec la propriété restrictOutboundNetworkAccess définie sur Activé :

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

    Exemple d’appel utilisant l’interface Azure CLI faisant référence au modèle ci-dessus.

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

    La mise à jour de la propriété restrictOutboundNetworkAccess du cluster supprime toutes les stratégies immuables de votre cluster. Cette opération empêche le lancement des appels à d’autres services, comme indiqué dans l’exemple suivant.

    Capture d’écran de la page de requête restreinte montrant une erreur de stratégies de légende immuables.

  2. Réexécutez la commande suivante et vérifiez qu’elle retourne une liste vide :

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

    Capture d’écran de la page de requête restreinte ne montrant aucune stratégie de légende immuable.

Ajouter des noms de domaine complets aux légendes dans des conditions restreintes

Si vous souhaitez autoriser l’accès sortant à un nom de domaine complet spécifique, vous pouvez l’ajouter à la liste allowedFqdnList de votre cluster. Pour cela, vous pouvez l’exécuter en apportant des modifications au modèle ARM du cluster Azure Data Explorer.

  1. Déclenchez un déploiement ARM à l’aide de l’interface Azure CLI avec un modèle ARM mis à jour :

    Exemple de fichier de modèle ARM nommé « template.json » avec la propriété allowedFqdnList définie sur ["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", "..."]
                  ...
              }
          }
          ...
      ]
    }
    

    Exemple d’appel utilisant l’interface Azure CLI faisant référence au modèle ci-dessus.

    # Replace the <...> placeholders with the correct values
    az deployment group create   --name ConfigureAllowedFqdnList   --resource-group <resource group>   --template-file ./template.json
    
  2. En ajoutant le nom de domaine complet à la liste autorisée, vous pourrez effectuer des appels au nom de domaine complet spécifié. Vous pouvez vérifier le résultat du déploiement en exécutant la commande suivante :

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

    Capture d'écran de la page de requête restreinte, montrant une stratégie de légende configurée.

    Notes

    Il existe un ensemble de stratégies par défaut définies pour Azure Data Explorer afin de communiquer avec sa couche de stockage interne. Ces stratégies n’exposent aucun risque d’exfiltration de données.