Une identité managée à partir de l’ID Microsoft Entra permet à votre cluster d’accéder à d’autres ressources protégées par Microsoft Entra, telles qu’Azure Key Vault. La plateforme Azure gère l’identité et ne requiert pas de votre part de provisionner des secrets ou d’en effectuer la rotation.
Cet article explique comment ajouter et supprimer des identités managées sur votre cluster. Pour plus d’informations sur les identités managées, consultez Vue d’ensemble des identités managées.
Remarque
Les identités managées pour Azure Data Explorer ne se comportent pas comme prévu si vous migrez votre cluster Azure Data Explorer entre abonnements ou locataires. L’application doit obtenir une nouvelle identité, que vous pouvez obtenir en supprimant une identité affectée par le système, puis en ajoutant une identité affectée par le système. Vous devez également mettre à jour les stratégies d’accès des ressources en aval pour utiliser la nouvelle identité.
Pour obtenir des exemples de code fondés sur les versions précédentes du kit de développement logiciel (SDK), consultez l’article archivé.
Types d'identités managées
Vous pouvez accorder à votre cluster Azure Data Explorer deux types d’identités :
Identité affectée par le système : liée à votre cluster et supprimée si vous supprimez la ressource. Un cluster ne peut avoir qu’une seule identité attribuée par le système.
Identité affectée par l’utilisateur : ressource Azure autonome que vous pouvez affecter à votre cluster. Un cluster peut avoir plusieurs identités affectées par l’utilisateur.
Ajouter une identité affectée par le système
Attribuez une identité gérée par le système qui est liée à votre cluster et qui sera supprimée automatiquement si vous supprimez le cluster. Un cluster ne peut avoir qu’une seule identité attribuée par le système. Lorsque vous créez un cluster avec une identité affectée par le système, vous devez définir une propriété supplémentaire sur le cluster. Ajoutez l’identité affectée par le système à l’aide du portail Azure, C# ou du modèle Resource Manager, comme indiqué dans les sections suivantes.
Ajouter une identité affectée par le système à l’aide du portail Azure
Connectez-vous au portail Azure.
Nouveau cluster Azure Data Explorer
Créez un cluster Azure Data Explorer.
Sous l’onglet Sécurité , sous Identité affectée par le système, sélectionnez Activé. Pour supprimer l’identité affectée par le système, sélectionnez Désactivée.
Sélectionnez Suivant : Balises > ou Examiner + Créer pour créer le cluster.
Cluster Azure Data Explorer existant
Ouvrez un cluster Azure Data Explorer existant.
Sélectionnez Paramètres>Identité dans le volet gauche du portail.
Dans le volet Identité , sous l’onglet Affecté par le système :
- Déplacez le curseur État sur Activé.
- Cliquez sur Enregistrer.
- Dans la fenêtre contextuelle, sélectionnez Oui.
Après quelques minutes, l’écran indique :
-
ID d’objet : utilisé pour les clés gérées par le client.
-
Autorisations : sélectionnez les affectations de rôles appropriées
Ajouter une identité affectée par le système à l’aide du langage C#
Prérequis
Pour configurer une identité managée à l’aide du client C# Azure Data Explorer :
Créer ou mettre à jour votre cluster
Créez ou mettez à jour votre cluster à l’aide de la Identity propriété :
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);
Exécutez la commande suivante pour vérifier si vous avez correctement créé ou mis à jour votre cluster avec une identité :
clusterData = (await clusters.GetAsync(clusterName)).Value.Data;
Si le résultat contient ProvisioningState avec la valeur Succeeded, le cluster a été créé ou mis à jour et possède les propriétés suivantes :
var principalGuid = clusterData.Identity.PrincipalId.GetValueOrDefault();
var tenantGuid = clusterData.Identity.TenantId.GetValueOrDefault();
PrincipalId et TenantId sont remplacés par des GUID. La TenantId propriété identifie le locataire Microsoft Entra auquel appartient l’identité. Le PrincipalId est un identificateur unique pour la nouvelle identité du cluster. Dans Microsoft Entra ID, le principal de service a le même nom que celui que vous avez donné à votre instance App Service ou Azure Functions.
Ajouter une identité affectée par le système à l’aide d’un modèle Azure Resource Manager
Vous pouvez utiliser un modèle Azure Resource Manager pour automatiser le déploiement de vos ressources Azure. Pour en savoir plus sur le déploiement sur Azure Data Explorer, consultez Créer un cluster Azure Data Explorer et une base de données à l’aide d’un modèle Azure Resource Manager.
Lorsque vous ajoutez le type affecté par le système, vous indiquez à Azure de créer et de gérer l’identité de votre cluster. Vous pouvez créer n’importe quelle ressource de type Microsoft.Kusto/clusters avec une identité en incluant la propriété suivante dans la définition de ressource :
{
"identity": {
"type": "SystemAssigned"
}
}
Par exemple :
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
Remarque
Un cluster peut avoir en même temps une identité affectée par le système et une identité affectée par l’utilisateur. La propriété type a alors la valeur SystemAssigned,UserAssigned.
Lorsque vous créez le cluster, il possède les propriétés supplémentaires suivantes :
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
<TENANTID> et <PRINCIPALID> sont remplacés par des GUID. La TenantId propriété identifie le locataire Microsoft Entra auquel appartient l’identité. Le PrincipalId est un identificateur unique pour la nouvelle identité du cluster. Dans Microsoft Entra ID, le principal de service a le même nom que celui que vous avez donné à votre instance App Service ou Azure Functions.
Suppression d’une identité affectée par le système
Lorsque vous supprimez une identité affectée par le système, vous la supprimez également de l’ID Microsoft Entra. Les identités affectées par le système sont également automatiquement supprimées de l’ID Microsoft Entra lorsque vous supprimez la ressource de cluster. Vous pouvez supprimer une identité affectée par le système en désactivant la fonctionnalité. Utilisez le portail Azure, C# ou le modèle Resource Manager pour supprimer l’identité affectée par le système, comme indiqué dans la section suivante.
Supprimer une identité affectée par le système à l’aide du portail Azure
Connectez-vous au portail Azure.
Sélectionnez Paramètres>Identité dans le volet gauche du portail.
Dans le volet Identité , sous l’onglet Affecté par le système :
- Déplacez le curseur État sur Désactivé.
- Cliquez sur Enregistrer.
- Dans la fenêtre indépendante, sélectionnez Oui pour désactiver l’identité affectée par le système. Le volet Identité revient à la même condition qu’avant l’ajout de l’identité affectée par le système.
Supprimer une identité affectée par le système à l’aide de C#
Exécutez le code suivant pour supprimer l’identité affectée par le système :
var cluster = (await clusters.GetAsync(clusterName)).Value;
var clusterPatch = new KustoClusterPatch(clusterData.Location)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.None)
};
await cluster.UpdateAsync(WaitUntil.Completed, clusterPatch);
Supprimer une identité affectée par le système à l’aide d’un modèle Azure Resource Manager
Exécutez le code suivant pour supprimer l’identité affectée par le système :
{
"identity": {
"type": "None"
}
}
Remarque
Si le cluster a des identités affectées par le système et affectées par l’utilisateur en même temps, après avoir supprimé l’identité affectée par le système, la type propriété est UserAssigned.
Ajouter une identité attribuée par l’utilisateur
Affectez une identité managée affectée par l’utilisateur à votre cluster. Un cluster peut avoir plusieurs identités affectées par l’utilisateur. Pour créer un cluster avec une identité affectée par l’utilisateur, vous devez définir une propriété supplémentaire sur le cluster. Ajoutez l’identité affectée par l’utilisateur à l’aide du portail Azure, C# ou du modèle Resource Manager, comme indiqué dans les sections suivantes.
Ajouter une identité affectée par l’utilisateur à l’aide du portail Azure
Connectez-vous au portail Azure.
Créez une identité managée affectée par l’utilisateur dans Azure.
Ouvrez un cluster Azure Data Explorer existant.
Sélectionnez Paramètres>Identité dans le volet gauche du portail.
Sous l’onglet Affecté(e) par l’utilisateur, sélectionnez Ajouter.
Recherchez l’identité que vous avez créée précédemment et sélectionnez-la. Sélectionnez Ajouter.
Ajouter une identité affectée par l’utilisateur en utilisant C#
Prérequis
Pour configurer une identité managée à l’aide du client C# Azure Data Explorer :
Créer ou mettre à jour votre cluster
Créez ou mettez à jour votre cluster à l’aide de la Identity propriété :
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);
Exécutez la commande suivante pour vérifier si vous avez correctement créé ou mis à jour votre cluster avec une identité :
clusterData = (await clusters.GetAsync(clusterName)).Value.Data;
Si le résultat contient ProvisioningState avec la Succeeded valeur, alors le cluster a été créé ou mis à jour et possède les propriétés suivantes :
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId.GetValueOrDefault();
var clientGuid = userIdentity.ClientId.GetValueOrDefault();
PrincipalId est un identificateur unique pour l'identité utilisée par Microsoft Entra Administration.
ClientId est un identificateur unique pour la nouvelle identité de l’application qui est utilisé pour spécifier l’identité à utiliser lors des appels à l’exécution.
Ajouter une identité affectée par l’utilisateur à l’aide d’un modèle Azure Resource Manager
Vous pouvez utiliser un modèle Azure Resource Manager pour automatiser le déploiement de vos ressources Azure. Pour en savoir plus sur le déploiement sur Azure Data Explorer, consultez Créer un cluster Azure Data Explorer et une base de données à l’aide d’un modèle Azure Resource Manager.
Vous pouvez créer n’importe quelle ressource de type Microsoft.Kusto/clusters avec une identité affectée par l’utilisateur en incluant la propriété suivante dans la définition de ressource. Remplacez <RESOURCEID> par l’ID de ressource de l’identité souhaitée :
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {}
}
}
}
Par exemple :
{
"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'))]"
]
}
Lorsque vous créez le cluster, il possède les propriétés supplémentaires suivantes :
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {
"principalId": "<PRINCIPALID>",
"clientId": "<CLIENTID>"
}
}
}
}
PrincipalId est un identificateur unique pour l'identité qu'utilise l'administration Microsoft Entra.
ClientId est un identificateur unique pour la nouvelle identité de l’application qui est utilisé pour spécifier l’identité à utiliser lors des appels à l’exécution.
Remarque
Un cluster peut avoir en même temps une identité affectée par le système et une identité affectée par l’utilisateur. Dans ce cas, définissez la type propriété sur SystemAssigned,UserAssigned.
Supprimer d’un cluster une identité managée affectée par l’utilisateur
Supprimez l’identité affectée par l’utilisateur à l’aide du portail Azure, C# ou du modèle Resource Manager, comme indiqué dans la section suivante.
Supprimer une identité managée attribuée par l’utilisateur à l’aide du portail Azure
Connectez-vous au portail Azure.
Sélectionnez Paramètres>Identité dans le volet gauche du portail.
Sélectionnez l’onglet Affecté(e) par l’utilisateur.
Recherchez l’identité que vous avez créée précédemment et sélectionnez-la. Sélectionnez Supprimer.
Dans la fenêtre contextuelle, sélectionnez Oui pour supprimer l’identité affectée par l’utilisateur. Le volet Identité revient à la même condition qu’avant l’ajout de l’identité affectée par l’utilisateur.
Supprimer une identité affectée par l’utilisateur à l’aide de C#
Exécutez le code suivant pour supprimer l'identité assignée par l'utilisateur :
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);
Supprimer une identité affectée par l’utilisateur à l’aide d’un modèle Azure Resource Manager
Exécutez le code suivant pour supprimer l'identité assignée par l'utilisateur :
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": null
}
}
}
Remarque
- Définissez les valeurs des identités sur Null pour les supprimer. Cette action n’affecte pas d’autres identités existantes.
- Définissez la propriété
type sur None pour supprimer toutes les identités affectées par l'utilisateur.
- Si le cluster dispose à la fois d’identités affectées par le système et d’identités affectées par l’utilisateur, définissez la
type propriété SystemAssigned,UserAssigned avec les identités à supprimer ou définissez-la pour SystemAssigned supprimer toutes les identités affectées par l’utilisateur.
Contenu connexe