Usługa Azure Data Explorer szyfruje wszystkie dane na koncie magazynowym w stanie spoczynku. Domyślnie dane są szyfrowane przy użyciu kluczy zarządzanych przez firmę Microsoft. Aby uzyskać dodatkową kontrolę nad kluczami szyfrowania, możesz podać klucze zarządzane przez klienta do użycia na potrzeby szyfrowania danych.
Klucze zarządzane przez klienta muszą być przechowywane w Azure Key Vault. Możesz utworzyć własne klucze i przechowywać je w magazynie kluczy lub użyć interfejsu API usługi Azure Key Vault do generowania kluczy. Klaster usługi Azure Data Explorer i magazyn kluczy muszą znajdować się w tym samym regionie, ale mogą znajdować się w różnych subskrypcjach. Aby uzyskać szczegółowe wyjaśnienie dotyczące kluczy zarządzanych przez klienta, zobacz klucze zarządzane przez klienta za pomocą usługi Azure Key Vault.
W tym artykule pokazano, jak skonfigurować klucze zarządzane przez klienta.
Aby skonfigurować klucze zarządzane przez klienta za pomocą usługi Azure Data Explorer, należy ustawić dwie właściwości w magazynie kluczy: miękkie usuwanie i Nie usuwaj trwale. Te właściwości nie są domyślnie włączone. Aby włączyć te właściwości, wykonaj włączanie usuwania miękkiego i włączanie ochrony przed usunięciem w PowerShell lub interfejsie wiersza polecenia platformy Azure w nowym lub istniejącym magazynie kluczy. Obsługiwane są tylko klucze RSA o rozmiarze 2048. Aby uzyskać więcej informacji na temat kluczy, zobacz key vault keys.
Uwaga
Szyfrowanie danych przy użyciu kluczy zarządzanych przez klienta nie jest obsługiwane w klastrach liderów i klastrach obserwowanych.
Przypisywanie tożsamości zarządzanej do klastra
Aby włączyć klucze zarządzane przez klienta dla klastra, najpierw przypisz tożsamość zarządzaną przypisaną przez system lub przypisaną przez użytkownika do klastra. Użyjesz tej tożsamości zarządzanej, aby udzielić klastrowi uprawnień dostępu do magazynu kluczy. Aby skonfigurować tożsamości zarządzane, zobacz tożsamości zarządzane.
Włączanie szyfrowania przy użyciu kluczy zarządzanych przez klienta
W poniższych krokach wyjaśniono, jak włączyć szyfrowanie kluczy zarządzanych przez klienta przy użyciu witryny Azure Portal. Domyślnie szyfrowanie usługi Azure Data Explorer używa kluczy zarządzanych przez firmę Microsoft. Skonfiguruj klaster usługi Azure Data Explorer, aby używał kluczy zarządzanych przez klienta i określ klucz do skojarzenia z klastrem.
W portalu Azureprzejdź do zasobu klastra Azure Data Explorer.
W lewym okienku portalu wybierz Ustawienia >Encryption.
W okienku Encryption wybierz pozycję Wł. dla ustawienia klucza zarządzanego przez klienta.
Kliknij Wybierz klucz.
W oknie Wybierz klucz w usłudze Azure Key Vault wybierz istniejący magazyn kluczy z listy rozwijanej. Jeśli wybierzesz pozycję Utwórz nową, aby utworzyć nową usługę Key Vault, zostaniesz przekierowany na ekran Tworzenia usługi Key Vault.
Wybierz przycisk .
Wersja:
- Aby upewnić się, że ten klucz zawsze używa najnowszej wersji klucza, zaznacz pole wyboru Zawsze używaj bieżącej wersji klucza.
- W przeciwnym razie wybierz wersję .
Kliknij opcję Wybierz.
W obszarze Typ tożsamościwybierz Przypisane przez system lub Przypisane przez użytkownika.
Jeśli wybierzesz User Assigned, wybierz przypisaną przez użytkownika tożsamość z listy rozwijanej.
W okienku szyfrowania, które zawiera teraz klucz, kliknij Zapisz. Po pomyślnym utworzeniu CMK otrzymasz komunikat o sukcesie w Powiadomienia.
Jeśli wybierzesz tożsamość przypisaną przez system podczas włączania kluczy zarządzanych przez klienta dla klastra usługi Azure Data Explorer, zostanie utworzona taka tożsamość dla klastra, jeśli jeszcze nie istnieje. Ponadto będziesz dostarczać wymagane uprawnienia get, wrapKey i unwrapKey do klastra usługi Azure Data Explorer w wybranej usłudze Key Vault i uzyskać właściwości usługi Key Vault.
Uwaga
Wybierz opcję Wyłącz, aby usunąć klucz zarządzany przez klienta po jego stworzeniu.
W poniższych sekcjach opisano sposób konfigurowania szyfrowania kluczy zarządzanych przez klienta przy użyciu klienta C# usługi Azure Data Explorer.
Instalowanie pakietów
- Zainstaluj pakiet NuGet Azure Data Explorer (Kusto) .
- Zainstaluj pakiet NuGet MSAL na potrzeby uwierzytelniania za pomocą usługi Azure Active Directory (Azure AD).
- Zainstaluj pakiet NuGet Microsoft.Rest.ClientRuntime na potrzeby uwierzytelniania za pomocą usługi Azure Active Directory (Azure AD).
Uwierzytelnianie
Aby uruchomić przykłady w tym artykule, utworzyć aplikację usługi Azure AD i jednostkę usługi, która może uzyskiwać dostęp do zasobów. Możesz dodać przypisanie roli na poziomie subskrypcji i uzyskać wymagane Azure AD Directory (tenant) ID, Application IDoraz Application Secret.
Poniższy fragment kodu przedstawia sposób użycia biblioteki Microsoft Authentication Library (MSAL) do zdobycia tokenu aplikacji Azure AD, aby uzyskać dostęp do klastra. Aby przepływ zakończył się pomyślnie, aplikacja musi zostać zarejestrowana w usłudze Azure AD i musisz mieć poświadczenia do uwierzytelniania aplikacji, takie jak klucz aplikacji wystawiony przez usługę Azure AD lub certyfikat X.509v2 zarejestrowany w usłudze Azure AD.
Domyślnie szyfrowanie usługi Azure Data Explorer używa kluczy zarządzanych przez firmę Microsoft. Skonfiguruj klaster usługi Azure Data Explorer, aby używał kluczy zarządzanych przez klienta i określ klucz do skojarzenia z klastrem.
Zaktualizuj klaster przy użyciu następującego kodu:
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; // Azure AD Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; // Application ID
var clientSecret = "PlaceholderClientSecret"; // Application secret
var subscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
// Create a confidential authentication client for Azure AD:
var authClient = ConfidentialClientApplicationBuilder.Create(clientId)
.WithAuthority($"https://login.microsoftonline.com/{tenantId}")
.WithClientSecret(clientSecret) // can be replaced by .WithCertificate to authenticate with an X.509 certificate
.Build();
// Acquire application token
var result = authClient.AcquireTokenForClient(
new[] { "https://management.core.windows.net/.default" } // Define scopes for accessing Azure management plane
).ExecuteAsync().Result;
var credentials = new TokenCredentials(result.AccessToken, result.TokenType);
var kustoManagementClient = new KustoManagementClient(credentials) { SubscriptionId = subscriptionId };
var resourceGroupName = "testrg";
var clusterName = "mykustocluster";
var clusterPatch = new ClusterUpdate(
keyVaultProperties: new KeyVaultProperties(
keyName: "<keyName>",
keyVersion: "<keyVersion>", // Optional, leave as NULL for the latest version of the key.
keyVaultUri: "https://<keyVaultName>.vault.azure.net/",
userIdentity: "/subscriptions/<identitySubscriptionId>/resourcegroups/<identityResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName>" // Use NULL if you want to use system assigned identity.
)
);
await kustoManagementClient.Clusters.UpdateAsync(resourceGroupName, clusterName, clusterPatch);
Uruchom następujące polecenie, aby sprawdzić, czy klaster został pomyślnie zaktualizowany:
var clusterData = await kustoManagementClient.Clusters.GetAsync(resourceGroupName, clusterName);
Jeśli wynik zawiera ProvisioningState z wartością Succeeded, klaster został pomyślnie zaktualizowany.
W poniższych krokach wyjaśniono, jak włączyć szyfrowanie kluczy zarządzanych przez klienta przy użyciu klienta interfejsu wiersza polecenia platformy Azure. Domyślnie szyfrowanie usługi Azure Data Explorer używa kluczy zarządzanych przez firmę Microsoft. Skonfiguruj klaster usługi Azure Data Explorer, aby używał kluczy zarządzanych przez klienta i określ klucz do skojarzenia z klastrem.
Uruchom następujące polecenia, aby zalogować się na platformie Azure:
az login
Ustaw subskrypcję, w której jest zarejestrowany klaster. Zastąp MyAzureSub nazwą subskrypcji platformy Azure, której chcesz użyć.
az account set --subscription MyAzureSub
Uruchom następujące polecenie, aby ustawić nowy klucz przy użyciu tożsamości przypisanej przez system klastra
az kusto cluster update --cluster-name "mytestcluster" --resource-group "mytestrg" --key-vault-properties key-name="<key-name>" key-version="<key-version>" key-vault-uri="<key-vault-uri>"
Alternatywnie ustaw nowy klucz używając tożsamości przypisanej przez użytkownika.
az kusto cluster update --cluster-name "mytestcluster" --resource-group "mytestrg" --key-vault-properties key-name="<key-name>" key-version="<key-version>" key-vault-uri="<key-vault-uri>" key-user-identity="<user-identity-resource-id>"
Uruchom następujące polecenie i sprawdź właściwość "keyVaultProperties", aby sprawdzić, czy klaster został pomyślnie zaktualizowany.
az kusto cluster show --cluster-name "mytestcluster" --resource-group "mytestrg"
W poniższych krokach wyjaśniono, jak włączyć szyfrowanie kluczy zarządzanych przez klienta przy użyciu programu PowerShell. Domyślnie szyfrowanie usługi Azure Data Explorer używa kluczy zarządzanych przez firmę Microsoft. Skonfiguruj klaster usługi Azure Data Explorer, aby używał kluczy zarządzanych przez klienta i określ klucz do skojarzenia z klastrem.
Uruchom następujące polecenia, aby zalogować się na platformie Azure:
Connect-AzAccount
Ustaw subskrypcję, w której jest zarejestrowany klaster.
Set-AzContext -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Uruchom następujące polecenie, aby ustawić nowy klucz przy użyciu tożsamości przypisanej przez system.
Update-AzKustoCluster -ResourceGroupName "mytestrg" -Name "mytestcluster" -KeyVaultPropertyKeyName "<key-name>" -KeyVaultPropertyKeyVaultUri "<key-vault-uri>" -KeyVaultPropertyKeyVersion "<key-version>"
Alternatywnie ustaw nowy klucz przy użyciu tożsamości przypisanej użytkownikowi.
Update-AzKustoCluster -ResourceGroupName "mytestrg" -Name "mytestcluster" -KeyVaultPropertyKeyName "<key-name>" -KeyVaultPropertyKeyVaultUri "<key-vault-uri>" -KeyVaultPropertyKeyVersion "<key-version>" -KeyVaultPropertyUserIdentity "user-assigned-identity-resource-id"
Uruchom następujące polecenie i sprawdź właściwości "KeyVaultProperty...", aby zweryfikować, czy klaster został pomyślnie zaktualizowany.
Get-AzKustoCluster -Name "mytestcluster" -ResourceGroupName "mytestrg" | Format-List
W poniższych krokach opisano sposób konfigurowania kluczy zarządzanych przez klienta przy użyciu szablonów usługi Azure Resource Manager. Domyślnie szyfrowanie usługi Azure Data Explorer używa kluczy zarządzanych przez firmę Microsoft. W tym kroku skonfiguruj klaster usługi Azure Data Explorer tak, aby używał kluczy zarządzanych przez klienta i określ klucz do skojarzenia z klastrem.
Jeśli chcesz użyć tożsamości przypisanej przez system w celu uzyskania dostępu do magazynu kluczy, pozostaw userIdentity puste. W przeciwnym razie ustaw identyfikator zasobu tożsamości.
Szablon usługi Azure Resource Manager można wdrożyć przy użyciu witryny Azure Portal lub programu PowerShell.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"clusterName": {
"type": "string",
"defaultValue": "[concat('kusto', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "Name of the cluster to create"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"variables": {},
"resources": [
{
"name": "[parameters('clusterName')]",
"type": "Microsoft.Kusto/clusters",
"sku": {
"name": "Standard_E8ads_v5",
"tier": "Standard",
"capacity": 2
},
"apiVersion": "2019-09-07",
"location": "[parameters('location')]",
"properties": {
"keyVaultProperties": {
"keyVaultUri": "<keyVaultUri>",
"keyName": "<keyName>",
"keyVersion": "<keyVersion>",
"userIdentity": "<userIdentity>"
}
}
}
]
}
Aktualizowanie wersji klucza
Podczas tworzenia nowej wersji klucza należy zaktualizować klaster, aby używał nowej wersji. Najpierw wywołaj Get-AzKeyVaultKey, aby uzyskać najnowszą wersję klucza. Następnie zaktualizuj właściwości magazynu kluczy klastra, aby użyć nowej wersji klucza, jak pokazano w Włączanie szyfrowania za pomocą kluczy zarządzanych przez klienta.
Następne kroki