Einschränken des ausgehenden Zugriffs von Ihrem Azure Data Explorer-Cluster
Das Einschränken des ausgehenden Zugriffs von ihrem Clusters ist wichtig, um Risiken wie Datenexfiltration zu verringern. Ein böswilliger Akteur könnte möglicherweise eine externe Tabelle zu einem Speicherkonto erstellen und große Datenmengen extrahieren. Sie können ausgehenden Zugriff auf Clusterebene steuern, indem Sie Calloutrichtlinien definieren. Die Verwaltung von Calloutrichtlinien ermöglicht Ihnen das Zulassen von ausgehendem Zugriff auf angegebene SQL-, Speicher- oder andere Endpunkte.
In diesem Artikel erfahren Sie, wie Sie eine Erweiterung für Calloutrichtlinien verwenden, mit der Sie ausgehende Aufrufe von Ihrem Cluster weiter einschränken können.
Typen von Calloutrichtlinien
Calloutrichtlinien können wie folgt unterteilt werden:
- Unveränderliche Calloutrichtlinien: Dies sind die Standardrichtlinien eines Clusters. Sie sind vorkonfiguriert und können nicht geändert werden.
- Clustercalloutrichtlinien: Dies sind Richtlinien, die Sie mithilfe von Calloutrichtlinienbefehlen ändern können.
Voraussetzungen
- Ein Azure-Abonnement. Erstellen Sie ein kostenloses Azure-Konto.
- Ein Azure Data Explorer-Cluster und eine Datenbank Erstellen eines Clusters und einer Datenbank
Ausführen von Befehlen für Calloutrichtlinien
Melden Sie sich bei der Azure Data Explorer-Webbenutzeroberfläche an.
Wählen Sie im linken Menü Abfrage aus, und stellen Sie dann eine Verbindung mit Ihrem Cluster her.
Führen Sie im Abfragefenster die folgende Abfrage aus, um die Liste der unveränderlichen Calloutrichtlinien in Ihrem Cluster zu überprüfen:
.show cluster policy callout
Das folgende Beispiel stellt unveränderliche Calloutrichtlinien dar. Beachten Sie, dass die Liste einige Standardregeln enthält, die ausgehende Aufrufe an andere Dienste zulassen, wie etwa externe Daten.
[
{
"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
}
]
Leeren der Liste der unveränderlichen Calloutrichtlinien
Zum Einschränken des ausgehenden Zugriffs von Ihrem Cluster müssen Sie die Liste der unveränderlichen Calloutrichtlinien leeren. Dazu können Sie den folgenden Befehl mithilfe der Azure CLI oder anderer Tools ausführen, indem Sie die Azure Data Explorer-APIs aufrufen.
Auslösen einer ARM-Bereitstellung mithilfe der Azure CLI mit einer aktualisierten ARM-Vorlage:
ARM-Beispielvorlagendatei mit dem Namen „template.json“ und der auf Enabled festgelegten Eigenschaft restrictOutboundNetworkAccess:
{ "$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", ... } } ... ] }
Beispielaufruf mithilfe der Azure CLI, die auf die oben genannte Vorlage verweist.
# Replace the <...> placeholders with the correct values az deployment group create --name RestrictOutboundAccess --resource-group <resource group> --template-file ./template.json
Durch das Aktualisieren der Clustereigenschaft
restrictOutboundNetworkAccess
werden alle unveränderlichen Richtlinien auf Ihrem Cluster entfernt. Dadurch wird verhindert, dass Aufrufe an andere Dienste eingeleitet werden, wie im folgenden Beispiel dargestellt.Führen Sie den folgenden Befehl noch einmal aus, und überprüfen Sie, ob eine leere Liste zurückgegeben wird:
.show cluster policy callout | where EntityType == "Cluster immutable policy"
Hinzufügen von FQDNs zu den ausgehenden Aufrufen unter eingeschränkten Bedingungen
Wenn Sie den ausgehenden Zugriff auf einen bestimmten FQDN zulassen möchten, können Sie ihn der allowedFqdnList
-Liste für Ihren Cluster hinzufügen. Dazu können Sie die ARM-Vorlage des Azure-Data Explorer-Clusters ändern.
Auslösen einer ARM-Bereitstellung mithilfe der Azure CLI mit einer aktualisierten ARM-Vorlage:
ARM-Beispielvorlagendatei mit dem Namen „template.json“ mit der auf ["some.sql.azuresynapse.net", "..."] festgelegten Eigenschaft allowedFqdnList:
{ "$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", "..."] ... } } ... ] }
Beispielaufruf mithilfe der Azure CLI, die auf die oben genannte Vorlage verweist.
# Replace the <...> placeholders with the correct values az deployment group create --name ConfigureAllowedFqdnList --resource-group <resource group> --template-file ./template.json
Durch Hinzufügen des FQDN zur Positivliste können Sie ausgehende Aufrufe an den angegebenen FQDN vornehmen. Sie können das Ergebnis der Bereitstellung durch Ausführen des folgenden Befehls überprüfen:
.show cluster policy callout | project Policy=parse_json(Policy) | mv-expand Policy | where Policy.CalloutType == "sql"
Hinweis
Es gibt einen Satz von Standardrichtlinien, die für Azure Data Explorer festgelegt sind, um mit seiner internen Speicherebene zu kommunizieren. Sie stellen kein Risiko für Datenexfiltration dar.