Azure Data Explorer шифрует все данные в неактивных учетных записях хранения. По умолчанию данные шифруются с помощью ключей, управляемых Майкрософт. Для дополнительного управления ключами шифрования можно предоставить управляемые клиентом ключи для шифрования данных.
Ключи, управляемые клиентом, должны храниться в Azure Key Vault. Вы можете создать собственные ключи и сохранить их в хранилище ключей или использовать API Azure Key Vault для создания ключей. Кластер Azure Data Explorer и хранилище ключей должны находиться в одном регионе, но они могут находиться в разных подписках. Подробное описание ключей, управляемых клиентом, см. в разделе "Ключи, управляемые клиентом" с помощью Azure Key Vault.
В этой статье показано, как настроить ключи, управляемые клиентом.
Чтобы настроить ключи, управляемые клиентом, с помощью Azure Data Explorer, необходимо задать два свойства в хранилище ключей: Мягкое удаление и Не удалять. Эти свойства по умолчанию не включены. Чтобы включить эти свойства, выполните включение обратимого удаления и включение защиты очистки в PowerShell или Azure CLI в новом или существующем хранилище ключей. Поддерживаются только ключи RSA размера 2048. Дополнительные сведения о ключах см. в разделе "Ключи 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 в выбранном хранилище ключей и получите свойства хранилища ключей.
Замечание
Нажмите кнопку "Отключить ", чтобы удалить управляемый клиентом ключ после его создания.
В следующих разделах объясняется, как настроить шифрование ключей, управляемых клиентом, с помощью клиента C# Azure Data Explorer.
Установка пакетов
Аутентификация
Чтобы выполнить примеры в этой статье, создайте приложение Azure AD и субъект-службу, которые могут получить доступ к ресурсам. Вы можете добавить назначение ролей в области подписки и получить необходимые Azure AD Directory (tenant) ID, Application ID и Application Secret.
В следующем фрагменте кода показано, как использовать библиотеку проверки подлинности Майкрософт (MSAL) для получения маркера приложения Azure AD для доступа к кластеру. Для успешного выполнения потока приложение должно быть зарегистрировано в Azure AD, и у вас должны быть учетные данные для проверки подлинности приложения, например ключ приложения, выданный Azure AD, или сертификат X.509v2, зарегистрированный в Azure AD.
По умолчанию шифрование 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";
// 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);
Выполните следующую команду, чтобы проверить успешность обновления кластера:
var clusterData = await kustoManagementClient.Clusters.GetAsync(resourceGroupName, clusterName);
Если результат содержит значение Succeeded с помощью ProvisioningState, кластер успешно обновлён.
Ниже описано, как включить шифрование ключей, управляемых клиентом, с помощью клиента 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, чтобы получить последнюю версию ключа. Затем обновите свойства хранилища ключей кластера, чтобы использовать новую версию ключа, как показано в разделе "Включить шифрование с помощью ключей, управляемых клиентом".
Дальнейшие действия