限制來自 Azure 資料總管叢集的輸出存取
限制叢集的輸出存取對於降低數據外流等風險很重要。 惡意執行者可能會建立記憶體帳戶的外部數據表,並擷取大量數據。 您可以藉由定義 註標原則來控制叢集層級的輸出存取。 管理註標原則可讓您允許輸出存取指定的 SQL、記憶體或其他端點。
在本文中,您將了解圖說文字原則的延伸模組,可讓您進一步限制叢集的呼叫。
圖說文字原則的類型
圖說文字原則可以分割,如下所示:
- 不可變的圖說文字原則:這些是叢集的標準原則。 它們已預先設定,且無法修改。
- 叢集註標原則:這些是您可以使用註標原則命令修改的原則。
必要條件
- Azure 訂用帳戶。 建立免費的 Azure 帳戶。
- Azure 資料總管叢集和資料庫。 建立叢集和資料庫。
執行註標原則命令
登入 Azure 數據總管 Web UI。
在左側功能表上,選取 [ 查詢],然後連線到您的叢集。
在查詢視窗中,執行下列查詢來檢查叢集上不可變圖說文字原則的清單:
.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 來執行這項操作。
使用 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
叢集屬性會移除叢集上所有不可變的原則。 這可防止起始對其他服務的呼叫,如下列範例所示。再次執行下列命令,並確認它傳回空的清單:
.show cluster policy callout | where EntityType == "Cluster immutable policy"
將 FQDN 新增至受限制條件下的圖說文字
如果您想要允許特定 FQDN 的 allowedFqdnList
輸出存取,您可以將它新增至叢集的清單。 您可以藉由對 Azure 數據總管叢集的 ARM 範本進行變更來執行此動作。
使用 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
藉由將 FQDN 新增至允許的清單,您就可以對指定的 FQDN 發出呼叫。 您可以執行下列命令來檢查部署的結果:
.show cluster policy callout | project Policy=parse_json(Policy) | mv-expand Policy | where Policy.CalloutType == "sql"
注意
Azure 數據總管有一組默認原則可與其內部儲存層通訊。 它們不會暴露數據外泄的風險。