Azure Data Explorer шифрует все данные в неактивных учетных записях хранения. По умолчанию он использует ключи, управляемые Корпорацией Майкрософт, для шифрования. Если требуется больше контроля над ключами шифрования, вы можете предоставить управляемые клиентом ключи для шифрования данных.
Необходимо хранить ключи, управляемые клиентом, в Azure Key Vault. Можно либо создать собственные ключи и хранить их в хранилище ключей, либо использовать для их генерации API-интерфейсы Azure Key Vault. Кластер Azure Data Explorer и хранилище ключей должны находиться в одном регионе, но они могут находиться в разных подписках. Подробное описание ключей, управляемых клиентом, см. в разделе "Управляемые клиентом ключи" с помощью Azure Key Vault.
В этой статье показано, как настроить ключи, управляемые клиентом.
Примеры кода на основе предыдущих версий пакета SDK см. в архивной статье.
Чтобы настроить управляемые клиентом ключи с помощью Azure Data Explorer, необходимо задать два свойства в хранилище ключей: обратимое удаление и не очищать. Эти свойства по умолчанию не включены. Чтобы включить эти свойства, выполните включение обратимого удаления и включение защиты очистки в PowerShell или Azure CLI в новом или существующем хранилище ключей. Azure Data Explorer поддерживает RSA и RSA-HSM ключи размером 2048, 3072 и 4096. Чтобы использовать ключи RSA-HSM, используйте методы C#, Azure CLI, PowerShell или ШАБЛОНА ARM, описанные в этой статье. Дополнительные сведения о ключах см. в разделе "Ключи Key Vault".
Замечание
Сведения об ограничениях использования управляемых клиентом ключей в кластерах лидеров и последователей см. в разделе "Ограничения".
Назначьте управляемое удостоверение для кластера
Чтобы включить ключи, управляемые клиентом для вашего кластера, сначала назначьте кластеру управляемое удостоверение, либо назначаемое системой, либо назначаемое пользователем. Используйте эту управляемую идентификацию, чтобы предоставить кластеру разрешения на доступ к хранилищу ключей. Сведения о настройке управляемых удостоверений см. в статье об управляемых удостоверениях.
Включение шифрования с помощью ключей, управляемых клиентом
Ниже описано, как включить шифрование ключей, управляемых клиентом, с помощью портала Azure. По умолчанию шифрование Azure Data Explorer использует ключи, управляемые корпорацией Майкрософт. Настройте кластер Azure Data Explorer для использования ключей, управляемых клиентом, и укажите ключ, связанный с кластером.
На портале Azure перейдите к ресурсу кластера Azure Data Explorer .
Выберите "Параметры>шифрования " в левой области портала.
В области шифрования выберите "Вкл ." для параметра ключа, управляемого клиентом .
Выберите Выбрать ключ.
В окне выбора ключа из Azure Key Vault выберите существующее хранилище ключей из раскрывающегося списка. Если выбрать "Создать" , чтобы создать новое хранилище ключей, вы будете перенаправлены на экран создания Key Vault .
Выберите ключ.
Версия:
- Чтобы этот ключ всегда использовал последнюю версию ключа, установите флажок "Всегда использовать текущую версию ключа ".
- В противном случае выберите версию.
Выберите Выбрать.
В разделе Тип идентификации выберите Назначенный системой или Назначенный пользователем.
Если выбрано назначенное пользователем удостоверение, выберите его из раскрывающегося списка.
В области шифрования , которая теперь содержит ключ, нажмите кнопку "Сохранить". При успешном создании CMK в Уведомлениях отображается сообщение об успешном завершении.
Если вы выбираете системно назначенную идентичность при включении ключей, управляемых клиентом для вашего кластера Azure Data Explorer, создаётся системно назначенная идентичность для кластера, если она не существует. Кроме того, предоставьте необходимые разрешения get, wrapKey и unwrapKey вашему кластеру Azure Data Explorer на выбранном хранилище ключей Key Vault и получите свойства хранилища ключей Key Vault.
Замечание
Нажмите кнопку "Отключить ", чтобы удалить управляемый клиентом ключ после его существования.
В следующих разделах объясняется, как настроить шифрование ключей, управляемых клиентом, с помощью клиента C# Azure Data Explorer.
Установка пакетов
Authentication
Чтобы выполнить примеры кода в этой статье, создайте приложение Microsoft Entra и принципал службы, которые могут получить доступ к ресурсам. Вы можете добавить назначение ролей в области подписки и получить необходимые Microsoft Entra Directory (tenant) ID, Application ID, а также Application Secret.
В следующем фрагменте кода показано, как использовать библиотеку проверки подлинности Майкрософт (MSAL) для получения маркера приложения Microsoft Entra для доступа к кластеру. Для успешного выполнения потока приложение должно быть зарегистрировано в Microsoft Entra ID, и у вас должны быть учетные данные для проверки подлинности приложения, например ключ приложения, выданный Microsoft Entra ID, или сертификат Microsoft Entra, зарегистрированный X.509v2.
По умолчанию шифрование Azure Data Explorer использует ключи, управляемые корпорацией Майкрософт. Настройте кластер Azure Data Explorer для использования ключей, управляемых клиентом, и укажите ключ, связанный с кластером.
Обновите кластер с помощью следующего кода:
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";
var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, subscriptionId);
var resourceGroupName = "testrg";
var clusterName = "mykustocluster";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(resourceGroupName)).Value;
var clusters = resourceGroup.GetKustoClusters();
var cluster = (await clusters.GetAsync(clusterName)).Value;
var clusterPatch = new KustoClusterPatch(cluster.Data.Location)
{
KeyVaultProperties = new KustoKeyVaultProperties
{
KeyName = "<keyName>",
KeyVersion = "<keyVersion>", // Optional, leave as NULL for the latest version of the key.
KeyVaultUri = new Uri("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 cluster.UpdateAsync(WaitUntil.Completed, clusterPatch);
Выполните следующую команду, чтобы проверить, успешно ли обновлен кластер:
var clusterData = (await resourceGroup.GetKustoClusterAsync(clusterName)).Value.Data;
Если результат содержит ProvisioningState со значением Succeeded, вы успешно обновили кластер.
Ниже описано, как включить шифрование ключей, управляемых клиентом, с помощью Azure CLI. По умолчанию шифрование Azure Data Explorer использует ключи, управляемые корпорацией Майкрософт. Настройте кластер Azure Data Explorer для использования ключей, управляемых клиентом, и укажите ключ, связанный с кластером.
Выполните следующую команду, чтобы войти в Azure:
az login
Задайте подписку, в которой зарегистрирован кластер. Замените MyAzureSub именем подписки Azure, которую вы хотите использовать.
az account set --subscription MyAzureSub
Выполните следующую команду, чтобы задать новый ключ с системно назначенной идентичностью кластера.
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>"
Кроме того, задайте новый ключ с помощью удостоверения, назначенного пользователем.
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>"
Выполните следующую команду и проверьте keyVaultProperties свойство, чтобы убедиться, что кластер обновлен успешно.
az kusto cluster show --cluster-name "mytestcluster" --resource-group "mytestrg"
Ниже описано, как включить шифрование ключей, управляемых клиентом, с помощью PowerShell. По умолчанию шифрование Azure Data Explorer использует ключи, управляемые корпорацией Майкрософт. Настройте кластер Azure Data Explorer для использования ключей, управляемых клиентом, и укажите ключ, связанный с кластером.
Выполните следующую команду, чтобы войти в Azure:
Connect-AzAccount
Задайте подписку, в которой зарегистрирован кластер.
Set-AzContext -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Выполните следующую команду, чтобы задать новый ключ с помощью назначенного системой удостоверения.
Update-AzKustoCluster -ResourceGroupName "mytestrg" -Name "mytestcluster" -KeyVaultPropertyKeyName "<key-name>" -KeyVaultPropertyKeyVaultUri "<key-vault-uri>" -KeyVaultPropertyKeyVersion "<key-version>"
Кроме того, задайте новый ключ с помощью пользовательской назначенной идентичности.
Update-AzKustoCluster -ResourceGroupName "mytestrg" -Name "mytestcluster" -KeyVaultPropertyKeyName "<key-name>" -KeyVaultPropertyKeyVaultUri "<key-vault-uri>" -KeyVaultPropertyKeyVersion "<key-version>" -KeyVaultPropertyUserIdentity "user-assigned-identity-resource-id"
Выполните следующую команду и проверьте KeyVaultProperty... свойства, чтобы проверить успешное обновление кластера.
Get-AzKustoCluster -Name "mytestcluster" -ResourceGroupName "mytestrg" | Format-List
Ниже описано, как настроить ключи, управляемые клиентом, с помощью шаблонов Azure Resource Manager. По умолчанию шифрование Azure Data Explorer использует ключи, управляемые корпорацией Майкрософт. На этом шаге настройте кластер Azure Data Explorer для использования ключей, управляемых клиентом, и укажите ключ, связанный с кластером.
Если вы хотите использовать назначенное системой удостоверение для доступа к хранилищу ключей, оставьте userIdentity пустым. В противном случае задайте идентификатор ресурса удостоверения.
Вы можете развернуть шаблон Azure Resource Manager с помощью портала Azure или с помощью 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>"
}
}
}
]
}
Обновление версии ключа
При создании новой версии ключа необходимо обновить кластер, чтобы использовать новую версию. Сначала вызовите Get-AzKeyVaultKey, чтобы получить последнюю версию ключа. Затем обновите свойства хранилища ключей кластера, чтобы использовать новую версию ключа, как показано в разделе "Включение шифрования с помощью ключей, управляемых клиентом".
Связанный контент