Azure Data Explorer шифрует все данные в неактивных учетных записях хранения. По умолчанию данные шифруются с помощью ключей, управляемых корпорацией Майкрософт. Для дополнительного управления ключами шифрования можно предоставить ключи, управляемые клиентом, чтобы шифровать данные.
Ключи, управляемые клиентом, должны быть сохранены в Azure Key Vault. Можно либо создать собственные ключи и хранить их в хранилище ключей, либо использовать для их генерации API-интерфейсы Azure Key Vault. Кластер и хранилище ключей Azure Data Explorer должны быть расположены в одном регионе, но могут находиться в разных подписках. Подробное описание ключей, управляемых клиентом, см. в статье Управляемые клиентом ключи с использованием Azure Key Vault.
В этой статье показано, как настроить ключи, управляемые клиентом.
Настройка Azure Key Vault
Для настройки управляемых клиентом ключей с Azure Data Explorer необходимо задать для хранилища ключей два свойства: Обратимое удаление и Не очищать. По умолчанию эти свойства отключены. Чтобы включить эти свойства, включите обратимое удаление и защиту от очистки в PowerShell или Azure CLI в новом или существующем хранилище ключей. Поддерживаются только ключи RSA размером 2048. Дополнительные сведения о ключах см. в статье Ключи Key Vault.
Чтобы включить для кластера управляемые клиентом ключи, сначала назначьте кластеру назначаемое системой или назначаемое пользователем управляемое удостоверение. Вы будете использовать это управляемое удостоверение, чтобы предоставлять кластеру разрешения на доступ к хранилищу ключей. Сведения о настройке управляемых удостоверений см. в статье Управляемые удостоверения.
Включение шифрования с использованием управляемых клиентом ключами
Ниже описано, как включить шифрование ключей, управляемых клиентом, с помощью портал Azure. По умолчанию для шифрования Azure Data Explorer используются ключи, управляемые корпорацией Майкрософт. Настройте свой кластер Azure Data Explorer на использование ключей, управляемых клиентом, и укажите ключ, который нужно связать с кластером.
На левой панели портала выберите Параметры >Шифрование.
В области Шифрование выберите значение Вкл. для параметра Ключ, управляемый клиентом.
Нажмите Выбрать ключ.
В окне Выбор ключа из Azure Key Vault выберите существующее хранилище ключей из раскрывающегося списка. Если выбрать Создать для создания нового хранилища ключей, откроется экран Создание хранилища ключей.
Выберите Ключ.
Версия:
Чтобы этот ключ всегда использовал последнюю версию ключа, установите флажок Всегда использовать текущую версию ключа.
В противном случае выберите версию.
Нажмите кнопку Выбрать.
В разделе Тип удостоверения выберите Назначенное системой или Назначенное пользователем.
Если выбрано значение Назначенное пользователем, выберите в раскрывающемся списке удостоверение, назначенное пользователем.
В области Шифрование, которая теперь содержит ваш ключ, нажмите кнопку Сохранить. После успешного создания ключа, управляемого клиентом, в уведомлениях появится сообщение об успехе.
Если при включении ключей, управляемых клиентом, для кластера Azure Data Explorer вы выбрали удостоверение, назначаемое системой, вы создадите для кластера удостоверение, назначаемое системой, если его не существует. Кроме того, вы будете предоставлять необходимые разрешения Get, wrapKey и unwrapKey для кластера Azure Data Explorer на выбранном Key Vault и получать свойства Key Vault.
Примечание
Выберите Выкл. , чтобы удалить ключ, управляемый клиентом, после его создания.
В следующих разделах объясняется, как настроить шифрование ключей, управляемых клиентом, с помощью клиента Azure Data Explorer C#.
Чтобы выполнить примеры из этой статьи, создайте приложение 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);
Если результат содержит ProvisioningState со значением Succeeded, значит, ваш кластер успешно обновлен.
Ниже описано, как включить шифрование ключей, управляемых клиентом, с помощью клиента Azure CLI. По умолчанию для шифрования Azure Data Explorer используются ключи, управляемые корпорацией Майкрософт. Настройте свой кластер Azure Data Explorer на использование ключей, управляемых клиентом, и укажите ключ, который нужно связать с кластером.
Выполните следующую команду, чтобы войти в Azure:
az login
Укажите подписку, в которой зарегистрирован кластер. Замените MyAzureSub именем подписки Azure, которую вы хотите использовать.
az account set --subscription MyAzureSub
Выполните следующую команду, чтобы задать новый ключ с назначаемым системой удостоверением кластера.
Выполните следующую команду и проверьте свойство keyVaultProperties, чтобы убедиться в успешном обновлении кластера.
az kusto cluster show --cluster-name "mytestcluster" --resource-group "mytestrg"
Ниже описано, как включить шифрование ключей, управляемых клиентом, с помощью PowerShell. По умолчанию для шифрования Azure Data Explorer используются ключи, управляемые корпорацией Майкрософт. Настройте свой кластер Azure Data Explorer на использование ключей, управляемых клиентом, и укажите ключ, который нужно связать с кластером.
Выполните следующую команду, чтобы войти в Azure:
Connect-AzAccount
Укажите подписку, в которой зарегистрирован кластер.
Ниже описано, как настроить ключи, управляемые клиентом, с помощью шаблонов Azure Resource Manager. По умолчанию для шифрования Azure Data Explorer используются ключи, управляемые корпорацией Майкрософт. На этом шаге настройте свой кластер Azure Data Explorer на использование ключей, управляемых клиентом, и укажите ключ, который нужно связать с кластером.
Если вы хотите использовать для доступа к хранилищу ключей удостоверение, назначаемое системой, оставьте поле userIdentity пустым. В противном случае задайте идентификатор ресурса удостоверения.
Вы можете развернуть шаблон Azure Resource Manager с помощью портала или PowerShell.
Когда вы создаете новую версию ключа, вам необходимо обновить кластер, чтобы использовать новую версию. Сначала позвоните Get-AzKeyVaultKey, чтобы получить последнюю версию ключа. Затем обновите свойства хранилища ключей кластера, чтобы использовать новую версию ключа, как показано в разделе Включение шифрования с помощью ключей, управляемых клиентом.