Управляемое удостоверение из идентификатора Microsoft Entra позволяет кластеру получать доступ к другим защищенным ресурсам Microsoft Entra, таким как Azure Key Vault. Удостоверения управляются платформой Azure, и для них не нужно подготавливать или изменять секреты.
В этой статье показано, как добавлять и удалять управляемые удостоверения в кластере. Подробнее управляемые удостоверения описаны в статье Общие сведения об управляемых удостоверениях.
Примечание.
Управляемые удостоверения для Azure Data Explorer не будут вести себя должным образом, если кластер Azure Data Explorer переносится между подписками или клиентами. Приложению потребуется получить новое удостоверение, которое можно сделать , удалив назначаемое системой удостоверение , а затем добавив удостоверение, назначаемое системой. Для использования нового удостоверения также необходимо будет обновить политики доступа к ресурсам нижестоящего уровня.
Примеры кода на основе предыдущих версий пакета SDK см. в архивной статье.
Типы управляемых удостоверений
Кластеру Azure Data Explorer могут быть предоставлены два типа удостоверений.
Назначаемое системой удостоверение: привязан к вашему кластеру и удаляется при удалении вашего ресурса. У кластера может быть только одно удостоверение, назначенное системой.
Назначаемое пользователем удостоверение: автономный ресурс Azure, который можно назначить вашему кластеру. Кластер может иметь несколько идентификаторов, назначаемых пользователем.
Добавление назначаемого системой удостоверения
Назначьте назначенное системой удостоверение, которое привязано к вашему кластеру и удаляется при удалении вашего кластера. У кластера может быть только одно удостоверение, назначенное системой. Для создания кластера с идентификатором, назначенным системой, необходимо установить дополнительное свойство в кластере. Добавьте назначенное системой удостоверение с помощью портала Azure, C# или шаблона Resource Manager, как описано ниже.
Добавление назначенного системой удостоверения с помощью портала Azure
Войдите на портал Azure.
Новый кластер Azure Data Explorer
Создание кластера Azure Data Explorer
На вкладке Безопасность>Удостоверение, назначенное системой выберите элемент Вкл. Чтобы удалить назначенного системой удостоверение, выберите Выкл.
Выберите элемент Next : Tags (Далее: теги) > или Просмотр и создание, чтобы создать кластер.

Существующий кластер Azure Data Explorer
Откройте существующий кластер Azure Data Explorer.
На левой панели портала выберите Настройки > Идентификатор.
На панели Удостоверение откройте вкладку >Назначено системой:
- Переместите ползунок Состояния в положение Вкл.
- Выберите Сохранить
- Во всплывающем окне выберите Да

Через несколько минут на экране появится следующее.
- Идентификатор объекта — используется для ключей, управляемых клиентом.
- Разрешения — выберите соответствующие назначения ролей.

Добавление назначенного системой удостоверение с помощью C#
Необходимые компоненты
Чтобы настроить управляемое удостоверение с помощью клиента C# Azure Data Explorer, выполните следующие действия.
Создайте или обновите свой кластер
Создайте или обновите свой кластер, используя свойство Identity
:
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
var clientSecret = "PlaceholderClientSecret"; //Client 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 subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(resourceGroupName)).Value;
var clusters = resourceGroup.GetKustoClusters();
var clusterName = "mykustocluster";
var clusterData = new KustoClusterData(
location: AzureLocation.CentralUS,
sku: new KustoSku(KustoSkuName.StandardE8adsV5, KustoSkuTier.Standard) { Capacity = 5 }
) { Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.SystemAssigned) };
await clusters.CreateOrUpdateAsync(WaitUntil.Completed, clusterName, clusterData);
Выполните следующую команду, чтобы проверить, был ли ваш кластер успешно создан или обновлен с идентификатором:
clusterData = (await clusters.GetAsync(clusterName)).Value.Data;
Если результат содержит ProvisioningState
со значением Succeeded
, то кластер был создан или обновлен и должен иметь следующие свойства.
var principalGuid = clusterData.Identity.PrincipalId.GetValueOrDefault();
var tenantGuid = clusterData.Identity.TenantId.GetValueOrDefault();
PrincipalId
и TenantId
заменяются идентификаторами GUID. Свойство TenantId
определяет клиент Microsoft Entra, которому принадлежит удостоверение. PrincipalId
— это уникальный идентификатор новой идентичности кластера. В идентификаторе Microsoft Entra субъект-служба имеет то же имя, которое вы предоставили Служба приложений или Функции Azure экземпляру.
Добавление назначенного системой удостоверения с помощью шаблона Azure Resource Manager
Шаблон Azure Resource Manager можно использовать для автоматизации развертывания ресурсов Azure. Дополнительные сведения о развертывании в обозревателе данных Azure см. в разделе Создание кластера и базы данных Azure Data Explorer с помощью шаблона Azure Resource Manager.
Добавление назначенного системой типа указывает Azure создать удостоверение для вашего кластера и управлять им. Любой ресурс типа Microsoft.Kusto/clusters
можно создать с помощью удостоверения, добавив следующее свойство в определение ресурса:
{
"identity": {
"type": "SystemAssigned"
}
}
Рассмотрим пример.
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
Примечание.
Кластер может одновременно иметь как системные, так и пользовательские идентификаторы. Свойство type
будет SystemAssigned,UserAssigned
Когда кластер создан, он имеет следующие дополнительные свойства.
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
<TENANTID>
и <PRINCIPALID>
заменяются идентификаторами GUID. Свойство TenantId
определяет клиент Microsoft Entra, которому принадлежит удостоверение. PrincipalId
— это уникальный идентификатор новой идентичности кластера. В идентификаторе Microsoft Entra субъект-служба имеет то же имя, которое вы предоставили Служба приложений или Функции Azure экземпляру.
Удаление удостоверения, назначаемого системой
Удаление назначаемого системой удостоверения также удаляет его из идентификатора Microsoft Entra. Удостоверения, назначенные системой, также автоматически удаляются из идентификатора Microsoft Entra при удалении ресурса кластера. Назначенное системой удостоверение можно удалить, отключив эту функцию. Удалите назначенного системой удостоверение с помощью портала Azure, C# или шаблона Resource Manager, как описано ниже.
Удаление назначенного системой удостоверения с помощью портала Azure
Войдите на портал Azure.
На левой панели портала выберите Настройки > Идентификатор.
На панели Удостоверение откройте вкладку >Назначено системой:
- Переместите ползунок Состояния в положение Вкл.
- Выберите Сохранить
- Во всплывающем окне выберите Да, чтобы отключить идентификатор, назначенный системой. Панель Идентификатор вернется в то же состояние, что и до добавления идентификатора, назначенного системой.

Удаление назначенного системой идентификатора с помощью C#
Выполните следующее, чтобы удалить идентификатор, назначенный системой.
var cluster = (await clusters.GetAsync(clusterName)).Value;
var clusterPatch = new KustoClusterPatch(clusterData.Location)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.None)
};
await cluster.UpdateAsync(WaitUntil.Completed, clusterPatch);
Удаление назначенного системой удостоверения с помощью шаблона Azure Resource Manager
Выполните следующее, чтобы удалить идентификатор, назначенный системой.
{
"identity": {
"type": "None"
}
}
Примечание.
Если в кластере одновременно были назначены как системой, так и пользователем удостоверения, после удаления назначенного системой идентификатора свойство type
будет UserAssigned
.
Добавление назначаемого пользователем удостоверения
Назначьте кластеру управляемое удостоверение, назначенное пользователем. Кластер может иметь несколько идентификаторов, назначаемых пользователем. Для создания кластера с идентификатором, назначенным пользователем, необходимо установить дополнительное свойство в кластере. Добавьте назначенное пользователем удостоверение с помощью портала Azure, C# или шаблона Resource Manager, как описано ниже.
Добавление назначенного пользователем удостоверения с помощью портала Azure
Войдите на портал Azure.
Создайте назначаемый пользователем ресурс управляемой идентификации.
Откройте существующий кластер Azure Data Explorer.
На левой панели портала выберите Настройки > Идентификатор.
На вкладке Назначено пользователем выберите Добавить.
Найдите созданное ранее удостоверение и выберите его. Выберите Добавить.

Добавить назначенное пользователем удостоверение с помощью C#
Необходимые компоненты
Чтобы настроить управляемое удостоверение с помощью клиента C# Azure Data Explorer, выполните следующие действия.
Создайте или обновите свой кластер
Создайте или обновите свой кластер, используя свойство Identity
:
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
var clientSecret = "PlaceholderClientSecret"; //Client 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 subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(resourceGroupName)).Value;
var clusters = resourceGroup.GetKustoClusters();
var clusterName = "mykustocluster";
var userIdentityResourceId = new ResourceIdentifier($"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName>");
var clusterData = new KustoClusterData(
location: AzureLocation.CentralUS,
sku: new KustoSku(KustoSkuName.StandardE8adsV5, KustoSkuTier.Standard) { Capacity = 5 }
)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.UserAssigned)
{
UserAssignedIdentities = { { userIdentityResourceId, new UserAssignedIdentity() } }
}
};
await clusters.CreateOrUpdateAsync(WaitUntil.Completed, clusterName, clusterData);
Выполните следующую команду, чтобы проверить, был ли ваш кластер успешно создан или обновлен с идентификатором:
clusterData = (await clusters.GetAsync(clusterName)).Value.Data;
Если результат содержит ProvisioningState
со значением Succeeded
, то кластер был создан или обновлен и должен иметь следующие свойства.
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId.GetValueOrDefault();
var clientGuid = userIdentity.ClientId.GetValueOrDefault();
Это PrincipalId
уникальный идентификатор удостоверения, используемого для администрирования Microsoft Entra. ClientId
— это уникальный идентификатор нового идентификатора приложения, который используется для указания, какой идентификатор использовать во время вызовов времени выполнения.
Добавление назначенного пользователем удостоверения с помощью шаблона Azure Resource Manager
Шаблон Azure Resource Manager можно использовать для автоматизации развертывания ресурсов Azure. Дополнительные сведения о развертывании в обозревателе данных Azure см. в разделе Создание кластера и базы данных Azure Data Explorer с помощью шаблона Azure Resource Manager.
Любой ресурс типа Microsoft.Kusto/clusters
может быть создан с идентификатором, назначенным пользователем, включив следующее свойство в определение ресурса, заменив <RESOURCEID>
идентификатором ресурса желаемого идентификатора:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {}
}
}
}
Например:
{
"apiVersion": "2019-09-07",
"type": "Microsoft.Kusto/clusters",
"name": "[variables('clusterName')]",
"location": "[resourceGroup().location]",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]": {}
}
},
"dependsOn": [
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]"
]
}
Когда кластер создан, он имеет следующие дополнительные свойства.
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {
"principalId": "<PRINCIPALID>",
"clientId": "<CLIENTID>"
}
}
}
}
Это PrincipalId
уникальный идентификатор удостоверения, используемого для администрирования Microsoft Entra. ClientId
— это уникальный идентификатор нового идентификатора приложения, который используется для указания, какой идентификатор использовать во время вызовов времени выполнения.
Примечание.
Кластер может одновременно иметь как системные, так и пользовательские идентификаторы. В этом случае свойство type
будет иметь значение SystemAssigned,UserAssigned
.
Удаление назначенного пользователем управляемого идентификатора из кластера
Удалите назначенное пользователем идентификатора с помощью портала Azure, C# или шаблона Resource Manager, как описано ниже.
Удаление назначенного пользователем управляемого идентификатора с помощью портала Azure
Войдите на портал Azure.
На левой панели портала выберите Настройки > Идентификатор.
Выберите вкладку Назначено пользователем.
Найдите созданное ранее удостоверение и выберите его. Выберите Удалить.

Во всплывающем окне выберите Да, чтобы удалить идентификатор, назначенный пользователем. Панель Идентификатор вернется в то же состояние, что и до добавления идентификатора, назначенного пользователем.
Удаление назначенного пользователем идентификатора с помощью C#
Выполните следующее, чтобы удалить идентификатор, назначенный пользователем.
var cluster = (await clusters.GetAsync(clusterName)).Value;
var clusterUpdate = new KustoClusterPatch(clusterData.Location)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.UserAssigned)
{
UserAssignedIdentities = { { userIdentityResourceId, null } }
}
};
await cluster.UpdateAsync(WaitUntil.Completed, clusterUpdate);
Удаление назначенного пользователем идентификатора с помощью шаблона Azure Resource Manager
Выполните следующее, чтобы удалить идентификатор, назначенный пользователем.
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": null
}
}
}
Примечание.
- Чтобы удалить удостоверения, установите для них значение null. Все остальные существующие идентификаторы не будут затронуты.
- Чтобы удалить все присвоенные пользователем идентификаторы, свойство
type
будет None
,
- Если бы в кластере были одновременно назначены как системой, так и пользователем идентификаторы, свойство
type
будет SystemAssigned,UserAssigned
с идентификаторами, которые необходимо удалить, или SystemAssigned
для удаления всех идентификаторов, назначенных пользователем.
Связанный контент