共用方式為


限制來自 Azure Data Explorer 叢集的輸出存取

限制叢集的輸出存取對於降低數據外泄等風險很重要。 惡意動作專案可能會建立記憶體帳戶的外部數據表,並擷取大量數據。 您可以藉由定義 圖說文字原則來控制叢集層級的輸出存取。 管理圖說文字原則可讓您允許輸出存取指定的 SQL、記憶體或其他端點。

在本文中,您將了解圖說文字原則的延伸模組,可讓您進一步限制叢集的註標。

圖說文字原則的類型

圖說文字原則可以分割,如下所示:

  • 不可變的圖說文字原則:這些是叢集的標準原則。 它們已預先設定且無法修改。
  • 叢集圖說文字原則:這些是您可以使用圖說文字原則命令修改的原則。

必要條件

執行圖說文字原則命令

  1. 登入 Azure Data Explorer Web UI

  2. 在左側功能表上,選取 [ 查詢],然後連線到您的叢集。

  3. 在查詢視窗中,執行下列查詢來檢查叢集上不可變的圖說文字原則清單:

    .show cluster policy callout
    

    受限制查詢頁面的螢幕快照,其中顯示不可變的圖說文字原則。

以下顯示不可變圖說文字原則的範例。 請注意,清單中有一些默認規則允許呼叫其他服務,例如外部數據。

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

空白不可變的圖說文字原則清單

若要限制從叢集的輸出存取,您必須清空不可變的圖說文字原則清單。 您可以藉由使用 Azure CLI 或其他任何工具執行下列命令,方法是呼叫 Azure Data Explorer API。

  1. 使用 Azure CLI 搭配更新的 ARM 範本來觸發 ARM 部署:

    名稱為 “template.json” 的 ARM 範例檔案範例,其屬性 restrictOutboundNetworkAccess 設定為 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",
                  ...
              }
          }
          ...
      ]
    }
    

    使用參考上述範本的 Azure CLI 呼叫範例。

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

    restrictOutboundNetworkAccess更新叢集屬性會移除叢集上所有不可變的原則。 這可防止起始對其他服務的呼叫,如下列範例所示。

    受限制查詢頁面的螢幕快照,其中顯示不可變的圖說文字原則錯誤。

  2. 再次執行下列命令,並確認它傳回空的清單:

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

    受限制查詢頁面的螢幕快照,其中顯示沒有不可變的圖說文字原則。

在受限制的情況下,將 FQDN 新增至圖說文字

如果您想要允許特定 FQDN 的輸出存取,您可以將它新增至 allowedFqdnList 叢集的清單。 您可以藉由對 Azure Data Explorer 叢集的 ARM 範本進行變更來執行此動作。

  1. 使用 Azure CLI 搭配更新的 ARM 範本來觸發 ARM 部署:

    名為 “template.json” 的範例 ARM 範本檔案,其屬性 allowedFqdnList 設定為 [“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", "..."]
                  ...
              }
          }
          ...
      ]
    }
    

    使用參考上述範本的 Azure CLI 呼叫範例。

    # Replace the <...> placeholders with the correct values
    az deployment group create   --name ConfigureAllowedFqdnList   --resource-group <resource group>   --template-file ./template.json
    
  2. 藉由將 FQDN 新增至允許的清單,您將能夠呼叫指定的 FQDN。 您可以執行下列命令來檢查部署的結果:

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

    限制查詢頁面的螢幕快照,其中顯示已設定的圖說文字原則。

    注意

    有一組默認原則可讓 Azure Data Explorer 與其內部儲存層通訊。 它們不會公開數據外泄的風險。