限制來自 Azure Data Explorer 叢集的輸出存取
限制叢集的輸出存取對於降低數據外泄等風險很重要。 惡意動作專案可能會建立記憶體帳戶的外部數據表,並擷取大量數據。 您可以藉由定義 圖說文字原則來控制叢集層級的輸出存取。 管理圖說文字原則可讓您允許輸出存取指定的 SQL、記憶體或其他端點。
在本文中,您將了解圖說文字原則的延伸模組,可讓您進一步限制叢集的註標。
圖說文字原則的類型
圖說文字原則可以分割,如下所示:
- 不可變的圖說文字原則:這些是叢集的標準原則。 它們已預先設定且無法修改。
- 叢集圖說文字原則:這些是您可以使用圖說文字原則命令修改的原則。
必要條件
- Azure 訂用帳戶。 建立 Azure 免費帳戶。
- Azure 資料總管叢集和資料庫。 建立叢集和資料庫。
執行圖說文字原則命令
在左側功能表上,選取 [ 查詢],然後連線到您的叢集。
在查詢視窗中,執行下列查詢來檢查叢集上不可變的圖說文字原則清單:
.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。
使用 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 Data Explorer 叢集的 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 Data Explorer 與其內部儲存層通訊。 它們不會公開數據外泄的風險。
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應