Begränsa utgående åtkomst från ditt Azure Data Explorer-kluster
Det är viktigt att begränsa utgående åtkomst till klustret för att minimera risker som dataexfiltrering. En obehörig aktör kan potentiellt skapa en extern tabell till ett lagringskonto och extrahera stora mängder data. Du kan styra utgående åtkomst på klusternivå genom att definiera principer för pratbubblan. Genom att hantera pratbubblans principer kan du tillåta utgående åtkomst till angiven SQL, lagring eller andra slutpunkter.
I den här artikeln får du lära dig mer om ett tillägg till pratbubblans principer som gör att du kan begränsa anrop från klustret ytterligare.
Typer av pratbubblansprinciper
Pratbubblans principer kan delas upp på följande sätt:
- Oföränderliga pratbubblans principer: Det här är standardprinciperna för ett kluster. De är förkonfigurerade och kan inte ändras.
- Principer för pratbubblan för kluster: Det här är principer som du kan ändra med hjälp av pratbubblans principkommandon.
Förutsättningar
- En Azure-prenumeration. Skapa ett kostnadsfritt Azure-konto.
- Ett Azure Data Explorer-kluster och en databas. Skapa ett kluster och en databas.
Köra pratbubblans principkommandon
Logga in på webbgränssnittet för Azure Data Explorer.
På den vänstra menyn väljer du Fråga och ansluter sedan till klustret.
I frågefönstret kör du följande fråga för att granska listan över oföränderliga pratbubblans principer i klustret:
.show cluster policy callout
Nedan visas ett exempel på oföränderliga pratbubblans principer. Observera att det finns några standardregler i listan som gör det möjligt att göra anrop till andra tjänster, till exempel externa data.
[
{
"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
}
]
Töm listan över oföränderliga pratbubblans principer
Om du vill begränsa utgående åtkomst till från klustret måste du tömma listan över oföränderliga pratbubblans principer. Du kan göra detta genom att köra följande kommando med hjälp av Azure CLI eller andra verktyg genom att anropa Api:erna för Azure Data Explorer.
Utlös en ARM-distribution med hjälp av Azure CLI med en uppdaterad ARM-mall:
Exempel på ARM-mallfil med namnet "template.json" med egenskapen restrictOutboundNetworkAccess inställd på Aktiverad:
{ "$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", ... } } ... ] }
Exempelanrop med hjälp av Azure CLI som refererar till mallen ovan.
# Replace the <...> placeholders with the correct values az deployment group create --name RestrictOutboundAccess --resource-group <resource group> --template-file ./template.json
När du uppdaterar klusteregenskapen
restrictOutboundNetworkAccess
tar du bort alla oföränderliga principer i klustret. Detta förhindrar att anrop till andra tjänster initieras, som du ser i följande exempel.Kör följande kommando igen och kontrollera att det returnerar en tom lista:
.show cluster policy callout | where EntityType == "Cluster immutable policy"
Lägga till FQDN i pratbubblan under begränsade förhållanden
Om du vill tillåta utgående åtkomst till ett specifikt fullständigt domännamn kan du lägga till det i allowedFqdnList
listan för klustret. Du kan göra detta genom att köra genom att göra ändringar i ARM-mallen för Azure Data Explorer-klustret.
Utlös en ARM-distribution med hjälp av Azure CLI med en uppdaterad ARM-mall:
Exempel på ARM-mallfil med namnet "template.json" med egenskapen allowedFqdnList inställd på ["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", "..."] ... } } ... ] }
Exempelanrop med hjälp av Azure CLI som refererar till mallen ovan.
# Replace the <...> placeholders with the correct values az deployment group create --name ConfigureAllowedFqdnList --resource-group <resource group> --template-file ./template.json
Genom att lägga till FQDN i listan över tillåtna kan du göra anrop till det angivna fullständiga domännamnet. Du kan kontrollera resultatet av distributionen genom att köra följande kommando:
.show cluster policy callout | project Policy=parse_json(Policy) | mv-expand Policy | where Policy.CalloutType == "sql"
Anteckning
Det finns en uppsättning standardprinciper för Azure Data Explorer för att kommunicera med det interna lagringsskiktet. De exponerar ingen risk för dataexfiltrering.