Konfigurera hanterade identiteter för ditt Azure Data Explorer-kluster
Artikel
Med en hanterad identitet från Microsoft Entra-ID kan klustret komma åt andra Microsoft Entra skyddade resurser, till exempel Azure Key Vault. Identiteten hanteras av Azure-plattformen och du behöver inte etablera eller rotera några hemligheter.
Den här artikeln visar hur du lägger till och tar bort hanterade identiteter i klustret. Mer information om hanterade identiteter finns i Översikt över hanterade identiteter.
Anteckning
Hanterade identiteter för Azure Data Explorer fungerar inte som förväntat om ditt Azure Data Explorer-kluster migreras mellan prenumerationer eller klientorganisationer. Appen måste skaffa en ny identitet, vilket kan göras genom att ta bort en systemtilldelad identitet och sedan lägga till en systemtilldelad identitet. Åtkomstprinciper för underordnade resurser måste också uppdateras för att använda den nya identiteten.
Kodexempel baserade på tidigare SDK-versioner finns i den arkiverade artikeln.
Typer av hanterade identiteter
Ditt Azure Data Explorer-kluster kan beviljas två typer av identiteter:
Systemtilldelad identitet: Knuten till klustret och borttagen om resursen tas bort. Ett kluster kan bara ha en systemtilldelad identitet.
Användartilldelad identitet: En fristående Azure-resurs som kan tilldelas till klustret. Ett kluster kan ha flera användartilldelade identiteter.
Lägga till en systemtilldelad identitet
Tilldela en systemtilldelad identitet som är kopplad till klustret och tas bort om klustret tas bort. Ett kluster kan bara ha en systemtilldelad identitet. Att skapa ett kluster med en systemtilldelad identitet kräver att ytterligare en egenskap anges i klustret. Lägg till den systemtilldelade identiteten med hjälp av mallen Azure Portal, C# eller Resource Manager enligt beskrivningen nedan.
Skapa ett Microsoft Entra program och tjänstens huvudnamn som kan komma åt resurser. Du lägger till rolltilldelning i prenumerationsomfånget och får nödvändiga Directory (tenant) ID, Application IDoch Client Secret.
Skapa eller uppdatera klustret
Skapa eller uppdatera klustret med hjälp av Identity egenskapen :
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);
Kör följande kommando för att kontrollera om klustret har skapats eller uppdaterats med en identitet:
Om resultatet innehåller ProvisioningState med Succeeded värdet skapades eller uppdaterades klustret och bör ha följande egenskaper:
var principalGuid = clusterData.Identity.PrincipalId.GetValueOrDefault();
var tenantGuid = clusterData.Identity.TenantId.GetValueOrDefault();
PrincipalId och TenantId ersätts med GUID. Egenskapen TenantId identifierar den Microsoft Entra klientorganisation som identiteten tillhör.
PrincipalId är en unik identifierare för klustrets nya identitet. I Microsoft Entra-ID har tjänstens huvudnamn samma namn som du gav till din App Service- eller Azure Functions-instans.
Lägga till en systemtilldelad identitet med hjälp av en Azure Resource Manager-mall
Om du lägger till den systemtilldelade typen uppmanas Azure att skapa och hantera identiteten för klustret. Alla resurser av typen Microsoft.Kusto/clusters kan skapas med en identitet genom att inkludera följande egenskap i resursdefinitionen:
<TENANTID> och <PRINCIPALID> ersätts med GUID. Egenskapen TenantId identifierar den Microsoft Entra klientorganisation som identiteten tillhör.
PrincipalId är en unik identifierare för klustrets nya identitet. I Microsoft Entra-ID har tjänstens huvudnamn samma namn som du gav till din App Service- eller Azure Functions-instans.
Ta bort en systemtilldelad identitet
Om du tar bort en systemtilldelad identitet tas den också bort från Microsoft Entra-ID. Systemtilldelade identiteter tas också bort automatiskt från Microsoft Entra-ID när klusterresursen tas bort. Du kan ta bort en systemtilldelad identitet genom att inaktivera funktionen. Ta bort den systemtilldelade identiteten med hjälp av mallen Azure Portal, C# eller Resource Manager enligt beskrivningen nedan.
Välj Inställningar>Identitet i den vänstra rutan i portalen.
I identitetsfönstret>Systemtilldelad flik:
Flytta skjutreglaget Status till Av.
Välj Spara
I popup-fönstret väljer du Ja för att inaktivera den systemtilldelade identiteten.
Identitetsfönstret återgår till samma villkor som innan den systemtilldelade identiteten läggs till.
Ta bort en systemtilldelad identitet med C#
Kör följande för att ta bort den systemtilldelade identiteten:
var cluster = (await clusters.GetAsync(clusterName)).Value;
var clusterPatch = new KustoClusterPatch(clusterData.Location)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.None)
};
await cluster.UpdateAsync(WaitUntil.Completed, clusterPatch);
Ta bort en systemtilldelad identitet med hjälp av en Azure Resource Manager-mall
Kör följande för att ta bort den systemtilldelade identiteten:
{
"identity": {
"type": "None"
}
}
Anteckning
Om klustret hade både systemtilldelade och användartilldelade identiteter samtidigt, efter borttagning av type systemtilldelade identiteter, kommer egenskapen att vara UserAssigned
Lägga till en användartilldelad identitet
Tilldela en användartilldelad hanterad identitet till klustret. Ett kluster kan ha mer än en användartilldelad identitet. Att skapa ett kluster med en användartilldelad identitet kräver att ytterligare en egenskap anges i klustret. Lägg till den användartilldelade identiteten med hjälp av mallen Azure Portal, C#eller Resource Manager enligt beskrivningen nedan.
Skapa ett Microsoft Entra program och tjänstens huvudnamn som kan komma åt resurser. Du lägger till rolltilldelning i prenumerationsomfånget och får nödvändiga Directory (tenant) ID, Application IDoch Client Secret.
Skapa eller uppdatera klustret
Skapa eller uppdatera klustret med hjälp av Identity egenskapen :
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);
Kör följande kommando för att kontrollera om klustret har skapats eller uppdaterats med en identitet:
Om resultatet innehåller med Succeeded värdet skapades eller uppdaterades ProvisioningState klustret och bör ha följande egenskaper:
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId.GetValueOrDefault();
var clientGuid = userIdentity.ClientId.GetValueOrDefault();
PrincipalId är en unik identifierare för den identitet som används för Microsoft Entra administration.
ClientId är en unik identifierare för programmets nya identitet som används för att ange vilken identitet som ska användas under körningsanrop.
Lägga till en användartilldelad identitet med hjälp av en Azure Resource Manager-mall
Alla resurser av typen Microsoft.Kusto/clusters kan skapas med en användartilldelad identitet genom att inkludera följande egenskap i resursdefinitionen och ersätta <RESOURCEID> med resurs-ID:t för den önskade identiteten:
PrincipalId är en unik identifierare för den identitet som används för Microsoft Entra administration.
ClientId är en unik identifierare för programmets nya identitet som används för att ange vilken identitet som ska användas under körningsanrop.
Anteckning
Ett kluster kan ha både systemtilldelade och användartilldelade identiteter samtidigt. I det här fallet skulle egenskapen type vara SystemAssigned,UserAssigned.
Ta bort en användartilldelad hanterad identitet från ett kluster
Ta bort den användartilldelade identiteten med hjälp av mallen Azure Portal, C#eller Resource Manager enligt beskrivningen nedan.
Välj Inställningar>Identitet i det vänstra fönstret i portalen.
Välj fliken Användartilldelade .
Sök efter den identitet som du skapade tidigare och välj den. Välj Ta bort.
I popup-fönstret väljer du Ja för att ta bort den användartilldelade identiteten.
Identitetsfönstret återgår till samma villkor som innan den användartilldelade identiteten läggs till.
Ta bort en användartilldelad identitet med C#
Kör följande för att ta bort den användartilldelade identiteten:
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);
Ta bort en användartilldelad identitet med hjälp av en Azure Resource Manager-mall
Kör följande för att ta bort den användartilldelade identiteten:
Om du vill ta bort identiteter anger du deras värden till null. Alla andra befintliga identiteter påverkas inte.
Om du vill ta bort alla användartilldelade identiteter type skulle egenskapen vara None,
Om klustret hade både systemtilldelade och användartilldelade identiteter samtidigt skulle type egenskapen vara SystemAssigned,UserAssigned med identiteterna att ta bort eller SystemAssigned ta bort alla användartilldelade identiteter.