Управляемое удостоверение из идентификатора Microsoft Entra позволяет кластеру получать доступ к другим защищенным ресурсам Microsoft Entra, таким как Azure Key Vault. Платформа Azure управляет удостоверением и не требует подготовки или смены секретов.
В этой статье показано, как добавлять и удалять управляемые удостоверения в кластере. Подробнее управляемые удостоверения описаны в статье Общие сведения об управляемых удостоверениях.
Примечание.
Управляемые удостоверения для Azure Data Explorer могут работать не так, как ожидается, если вы переносите кластер Azure Data Explorer между подписками или тенантами. Приложение должно получить новое удостоверение, которое можно получить, удалив назначаемое системой удостоверение , а затем добавив удостоверение, назначаемое системой. Кроме того, необходимо обновить политики доступа нижестоящих ресурсов, чтобы использовать новое удостоверение.
Примеры кода на основе предыдущих версий пакета SDK см. в архивной статье.
Типы управляемых удостоверений
Вы можете назначить кластеру Azure Data Explorer два типа удостоверений:
Назначаемое системой удостоверение: привязано к кластеру и удалено при удалении ресурса. У кластера может быть только одно удостоверение, назначенное системой.
Назначаемое пользователем удостоверение: автономный ресурс Azure, который можно назначить кластеру. Кластер может иметь несколько идентификаторов, назначаемых пользователем.
Добавление назначаемого системой удостоверения
Назначьте удостоверение, создаваемое системой, которое связано с кластером и будет удалено при удалении кластера. У кластера может быть только одно удостоверение, назначенное системой. При создании кластера с удостоверением, назначаемого системой, необходимо задать дополнительное свойство в кластере. Добавьте назначаемое системой удостоверение с помощью портала Azure, C# или шаблона диспетчера ресурсов, как описано в следующих разделах.
Добавление системной идентификации с помощью портала 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 — это уникальный идентификатор нового идентификатора приложения, который используется для указания, какой идентификатор использовать во время вызовов времени выполнения.
Примечание.
Кластер может одновременно иметь как системные, так и пользовательские идентификаторы. В этом случае задайте значение свойства SystemAssigned,UserAssigned для type.
Удаление назначенного пользователем управляемого идентификатора из кластера
Удалите назначенное пользователем удостоверение с помощью портала Azure, C# или шаблона диспетчера ресурсов, как описано в следующем разделе.
Удаление назначенной пользователем управляемой идентичности с помощью портала 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, чтобы удалить все идентичности, назначенные пользователем.
Связанный контент