共用方式為


限制來自 Azure 資料總管叢集的輸出存取

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

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

圖說文字原則的類型

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

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

必要條件

執行註標原則命令

  1. 登入 Azure 數據總管 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 資料總管 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 數據總管叢集的 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 數據總管有一組默認原則可與其內部儲存層通訊。 它們不會暴露數據外泄的風險。