Una identidad administrada de Microsoft Entra ID permite al clúster acceder a otros recursos protegidos de Microsoft Entra, como Azure Key Vault. La plataforma de Azure administra la identidad y no requiere que aprovisione ni gire ningún secreto.
En este artículo se muestra cómo agregar y quitar identidades administradas en el clúster. Para más información sobre las identidades administradas, consulte Introducción a las identidades administradas.
Para ver ejemplos de código basados en versiones anteriores del SDK, consulte el artículo archivado.
Tipos de identidades administradas
Puede conceder al clúster de Azure Data Explorer dos tipos de identidades:
Identidad asignada por el sistema: vinculada al clúster y eliminada si elimina el recurso. Un clúster solo puede tener una identidad asignada por el sistema.
Identidad asignada por el usuario: un recurso de Azure independiente que puede asignar al clúster. Un clúster puede tener varias identidades asignadas por el usuario.
Adición de una identidad asignada por el sistema
Asigne una identidad asignada por el sistema que esté vinculada al clúster y que se elimine si elimina el clúster. Un clúster solo puede tener una identidad asignada por el sistema. Al crear un clúster con una identidad asignada por el sistema, debe establecer una propiedad adicional en el clúster. Agregue la identidad asignada por el sistema mediante Azure Portal, C#o la plantilla de Resource Manager, tal y como se detalla en las secciones siguientes.
Adición de una identidad asignada por el sistema mediante Azure Portal
Inicie sesión en Azure Portal.
Nuevo clúster de Azure Data Explorer
Creación de un clúster de Azure Data Explorer
En la pestaña Seguridad , en Identidad asignada por el sistema, seleccione Activado. Para quitar la identidad asignada por el sistema, seleccione Desactivado.
Seleccione Siguiente: Etiquetas > o Revisar y crear para crear el clúster.
Clúster de Azure Data Explorer existente
Abra un clúster de Azure Data Explorer existente.
Seleccione Configuración>Identidad en el panel izquierdo del portal.
En el panel Identidad , en la pestaña Asignado por el sistema :
- Mueva el control deslizante Estado a Activado.
- Haga clic en Guardar.
- En la ventana emergente, seleccione Sí.
Después de unos minutos, la pantalla muestra:
-
Id. de objeto: se usa para las claves administradas por el cliente
-
Permisos: seleccionar las asignaciones de roles correspondientes
Adición de una identidad asignada por el sistema mediante C#
Requisitos previos
Para configurar una identidad administrada mediante el cliente de C# de Azure Data Explorer:
Creación o actualización del clúster
Cree o actualice el clúster mediante la Identity propiedad :
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);
Ejecute el siguiente comando para comprobar si ha creado o actualizado correctamente el clúster con una identidad:
clusterData = (await clusters.GetAsync(clusterName)).Value.Data;
Si el resultado contiene ProvisioningState con el Succeeded valor , el clúster se creó o actualizó y tiene las siguientes propiedades:
var principalGuid = clusterData.Identity.PrincipalId.GetValueOrDefault();
var tenantGuid = clusterData.Identity.TenantId.GetValueOrDefault();
PrincipalId y TenantId se reemplazan por GUID. La TenantId propiedad identifica el inquilino de Microsoft Entra al que pertenece la identidad.
PrincipalId es un identificador único para la nueva identidad del clúster. En Microsoft Entra ID, la entidad de servicio tiene el mismo nombre que asignó a la instancia de App Service o Azure Functions.
Adición de una identidad asignada por el sistema mediante una plantilla de Azure Resource Manager
Puede usar una plantilla de Azure Resource Manager para automatizar la implementación de los recursos de Azure. Para obtener información sobre la implementación en Azure Data Explorer, consulte Creación de un clúster y una base de datos de Azure Data Explorer mediante una plantilla de Azure Resource Manager.
Al agregar el tipo asignado por el sistema, se indica a Azure que cree y administre la identidad del clúster. Puede crear cualquier recurso de tipo Microsoft.Kusto/clusters con una identidad mediante la inclusión de la siguiente propiedad en la definición de recursos:
{
"identity": {
"type": "SystemAssigned"
}
}
Por ejemplo:
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
Nota:
Un clúster puede tener identidades asignadas por el sistema y asignadas por el usuario al mismo tiempo. La propiedad type tendría el valor SystemAssigned,UserAssigned.
Al crear el clúster, tiene las siguientes propiedades adicionales:
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
<TENANTID> y <PRINCIPALID> se reemplazan por GUID. La TenantId propiedad identifica el inquilino de Microsoft Entra al que pertenece la identidad.
PrincipalId es un identificador único para la nueva identidad del clúster. En Microsoft Entra ID, la entidad de servicio tiene el mismo nombre que asignó a la instancia de App Service o Azure Functions.
Eliminación de una identidad asignada por el sistema
Al quitar una identidad asignada por el sistema, también se elimina de Microsoft Entra ID. Las identidades asignadas por el sistema también se quitan automáticamente del identificador de Microsoft Entra al eliminar el recurso de clúster. Puede quitar una identidad asignada por el sistema deshabilitando la característica. Use la plantilla de Azure Portal, C#o Resource Manager para quitar la identidad asignada por el sistema, tal como se detalla en la sección siguiente.
Eliminación de una identidad asignada por el sistema mediante Azure Portal
Inicie sesión en Azure Portal.
Seleccione Configuración>Identidad en el panel izquierdo del portal.
En el panel Identidad , en la pestaña Asignado por el sistema :
- Mueva el control deslizante Estado a Desactivado.
- Haga clic en Guardar.
- En la ventana emergente, seleccione Sí para deshabilitar la identidad asignada por el sistema. El panel Identidad se revierte a la misma condición que antes de agregar la identidad asignada por el sistema.
Eliminación de una identidad asignada por el sistema mediante C#
Ejecute el código siguiente para quitar la identidad asignada por el sistema:
var cluster = (await clusters.GetAsync(clusterName)).Value;
var clusterPatch = new KustoClusterPatch(clusterData.Location)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.None)
};
await cluster.UpdateAsync(WaitUntil.Completed, clusterPatch);
Eliminación de una identidad asignada por el sistema mediante una plantilla de Azure Resource Manager
Ejecute el código siguiente para quitar la identidad asignada por el sistema:
{
"identity": {
"type": "None"
}
}
Nota:
Si el clúster tiene identidades asignadas por el sistema y asignadas por el usuario al mismo tiempo, después de quitar la identidad asignada por el sistema, la type propiedad es UserAssigned.
Adición de una identidad asignada por el usuario
Asigne una identidad administrada asignada por el usuario al clúster. Un clúster puede tener más de una identidad asignada por el usuario. Para crear un clúster con una identidad asignada por el usuario, debe establecer una propiedad adicional en el clúster. Agregue la identidad asignada por el usuario mediante Azure Portal, C#o la plantilla de Resource Manager, tal como se detalla en las secciones siguientes.
Adición de una identidad asignada por el usuario mediante Azure Portal
Inicie sesión en Azure Portal.
Cree un recurso de identidad administrada asignada por el usuario.
Abra un clúster de Azure Data Explorer existente.
Seleccione Configuración>Identidad en el panel izquierdo del portal.
En la pestaña Usuario asignado, seleccione Agregar.
Busque la identidad que creó anteriormente y selecciónela. Seleccione Agregar.
Adición de una identidad asignada por el usuario con C#
Requisitos previos
Para configurar una identidad administrada mediante el cliente de C# de Azure Data Explorer:
Creación o actualización del clúster
Cree o actualice el clúster mediante la Identity propiedad :
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);
Ejecute el siguiente comando para comprobar si ha creado o actualizado correctamente el clúster con una identidad:
clusterData = (await clusters.GetAsync(clusterName)).Value.Data;
Si el resultado contiene ProvisioningState con el Succeeded valor , el clúster se creó o actualizó y tiene las siguientes propiedades:
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId.GetValueOrDefault();
var clientGuid = userIdentity.ClientId.GetValueOrDefault();
PrincipalId es un identificador único para la identidad que usa la administración de Microsoft Entra.
ClientId es un identificador único de la nueva identidad de la aplicación que se usa para especificar qué identidad utilizar durante las llamadas en tiempo de ejecución.
Adición de una identidad asignada por el usuario mediante una plantilla de Azure Resource Manager
Puede usar una plantilla de Azure Resource Manager para automatizar la implementación de los recursos de Azure. Para obtener información sobre la implementación en Azure Data Explorer, consulte Creación de un clúster y una base de datos de Azure Data Explorer mediante una plantilla de Azure Resource Manager.
Puede crear cualquier recurso de tipo Microsoft.Kusto/clusters con una identidad asignada por el usuario mediante la inclusión de la siguiente propiedad en la definición de recursos. Reemplace <RESOURCEID> por el identificador de recurso de la identidad deseada:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {}
}
}
}
Por ejemplo:
{
"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'))]"
]
}
Al crear el clúster, tiene las siguientes propiedades adicionales:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {
"principalId": "<PRINCIPALID>",
"clientId": "<CLIENTID>"
}
}
}
}
PrincipalId es un identificador único para la identidad que usa la administración de Microsoft Entra.
ClientId es un identificador único de la nueva identidad de la aplicación que se usa para especificar qué identidad utilizar durante las llamadas en tiempo de ejecución.
Nota:
Un clúster puede tener identidades asignadas por el sistema y asignadas por el usuario al mismo tiempo. En este caso, establezca la propiedad type en SystemAssigned,UserAssigned.
Eliminación de una identidad administrada asignada por el usuario de un clúster
Quite la identidad asignada por el usuario mediante Azure Portal, C#o la plantilla de Resource Manager, tal como se detalla en la sección siguiente.
Eliminación de una identidad administrada asignada por el usuario mediante Azure Portal
Inicie sesión en Azure Portal.
Seleccione Configuración>Identidad en el panel izquierdo del portal.
Seleccione la pestaña Usuario asignado.
Busque la identidad que creó anteriormente y selecciónela. Seleccione Quitar.
En la ventana emergente, seleccione Sí para eliminar la identidad asignada por el usuario. El panel Identidad se revierte a la misma condición que antes de agregar la identidad asignada por el usuario.
Eliminación de una identidad asignada por el usuario mediante C#
Ejecute el código siguiente para quitar la identidad asignada por el usuario:
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);
Eliminación de una identidad asignada por el usuario mediante una plantilla de Azure Resource Manager
Ejecute el código siguiente para quitar la identidad asignada por el usuario:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": null
}
}
}
Nota:
- Establezca los valores de las identidades en NULL para quitarlos. Esta acción no afecta a otras identidades existentes.
- Establezca la
type propiedad en None para quitar todas las identidades asignadas por el usuario.
- Si el clúster tiene identidades asignadas por el sistema y asignadas por el usuario, establezca la
type propiedad SystemAssigned,UserAssigned en con las identidades que se van a quitar o establézcala en SystemAssigned para quitar todas las identidades asignadas por el usuario.
Contenido relacionado