Konfigurace spravovaných identit pro cluster Azure Data Explorer
Článek
Spravovaná identita z ID Microsoft Entra umožňuje clusteru přístup k dalším Microsoft Entra chráněným prostředkům, jako je Azure Key Vault. Identitu spravuje platforma Azure a nevyžaduje, abyste zřizovali nebo rotovali tajné kódy.
V tomto článku se dozvíte, jak přidat a odebrat spravované identity v clusteru. Další informace o spravovaných identitách najdete v tématu Přehled spravovaných identit.
Poznámka
Pokud se váš cluster Azure Data Explorer migruje mezi předplatnými nebo tenanty, spravované identity pro Azure Data Explorer se nebudou chovat podle očekávání. Aplikace bude muset získat novou identitu, což lze provést odebráním identity přiřazené systémem a následným přidáním identity přiřazené systémem. Aby se nová identita používala, bude také potřeba aktualizovat zásady přístupu k podřízeným prostředkům.
Ukázky kódu založené na předchozích verzích sady SDK najdete v archivovaného článku.
Typy spravovaných identit
Clusteru Azure Data Explorer můžete udělit dva typy identit:
Identita přiřazená systémem: Je svázaná s vaším clusterem a odstraněná, pokud se prostředek odstraní. Cluster může mít jenom jednu identitu přiřazenou systémem.
Identita přiřazená uživatelem: Samostatný prostředek Azure, který je možné přiřadit ke clusteru. Cluster může mít více identit přiřazených uživatelem.
Přidání identity přiřazené systémem
Přiřaďte identitu přiřazenou systémem, která je svázaná s vaším clusterem a pokud se cluster odstraní, odstraní se. Cluster může mít jenom jednu identitu přiřazenou systémem. Vytvoření clusteru s identitou přiřazenou systémem vyžaduje, aby v clusteru byla nastavena další vlastnost. Přidejte identitu přiřazenou systémem pomocí šablony Azure Portal, C# nebo Resource Manager, jak je podrobně popsáno níže.
Vytvořte Microsoft Entra aplikaci a instanční objekt, který má přístup k prostředkům. Přiřazení role přidáte v oboru předplatného a získáte požadované Directory (tenant) ID, Application IDa Client Secret.
Vytvoření nebo aktualizace clusteru
Vytvořte nebo aktualizujte cluster pomocí Identity vlastnosti:
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);
Spuštěním následujícího příkazu zkontrolujte, jestli se cluster úspěšně vytvořil nebo aktualizoval pomocí identity:
Pokud výsledek obsahuje ProvisioningState s Succeeded hodnotou, cluster se vytvořil nebo aktualizoval a měl by mít následující vlastnosti:
var principalGuid = clusterData.Identity.PrincipalId.GetValueOrDefault();
var tenantGuid = clusterData.Identity.TenantId.GetValueOrDefault();
PrincipalId a TenantId jsou nahrazeny identifikátory GUID. Vlastnost TenantId identifikuje Microsoft Entra tenanta, do kterého identita patří. Jedná se PrincipalId o jedinečný identifikátor nové identity clusteru. V rámci ID Microsoft Entra má instanční objekt stejný název, jaký jste zadali vaší instanci App Service nebo Azure Functions.
Přidání identity přiřazené systémem pomocí šablony Azure Resource Manager
Přidání typu přiřazeného systémem říká Azure, že má vytvořit a spravovat identitu pro váš cluster. Jakýkoli prostředek typu Microsoft.Kusto/clusters je možné vytvořit s identitou tak, že do definice prostředku zahrnete následující vlastnost:
<TENANTID> a <PRINCIPALID> jsou nahrazeny identifikátory GUID. Vlastnost TenantId identifikuje Microsoft Entra tenanta, do kterého identita patří. Jedná se PrincipalId o jedinečný identifikátor nové identity clusteru. V rámci ID Microsoft Entra má instanční objekt stejný název, jaký jste zadali vaší instanci App Service nebo Azure Functions.
Odebrání identity přiřazené systémem
Odebráním identity přiřazené systémem se také odstraní z id Microsoft Entra. Při odstranění prostředku clusteru se z ID Microsoft Entra automaticky odeberou také identity přiřazené systémem. Identitu přiřazenou systémem je možné odebrat zakázáním funkce. Odeberte identitu přiřazenou systémem pomocí šablony Azure Portal, C# nebo Resource Manager, jak je podrobně popsáno níže.
V levém podokně portálu vyberte Identita nastavení>.
V podokně >Identita na kartě Přiřazený systém:
Posuňte posuvník Stav do polohy Vypnuto.
Vyberte Uložit.
V automaticky otevíraných otevíraných Podokno Identita se vrátí do stejné podmínky jako před přidáním identity přiřazené systémem.
Odebrání identity přiřazené systémem pomocí jazyka C#
Spuštěním následujícího příkazu odeberte identitu přiřazenou systémem:
var cluster = (await clusters.GetAsync(clusterName)).Value;
var clusterPatch = new KustoClusterPatch(clusterData.Location)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.None)
};
await cluster.UpdateAsync(WaitUntil.Completed, clusterPatch);
Odebrání identity přiřazené systémem pomocí šablony Azure Resource Manager
Spuštěním následujícího příkazu odeberte identitu přiřazenou systémem:
{
"identity": {
"type": "None"
}
}
Poznámka
Pokud měl cluster současně identity přiřazené systémem i uživatelem, po odebrání type identity přiřazené systémem bude vlastnost UserAssigned
Přidání identity přiřazené uživatelem
Přiřaďte ke clusteru spravovanou identitu přiřazenou uživatelem. Cluster může mít více než jednu identitu přiřazenou uživatelem. Vytvoření clusteru s identitou přiřazenou uživatelem vyžaduje nastavení další vlastnosti v clusteru. Přidejte identitu přiřazenou uživatelem pomocí šablony Azure Portal, C# nebo Resource Manager, jak je podrobně popsáno níže.
Vytvořte Microsoft Entra aplikaci a instanční objekt, který má přístup k prostředkům. Přiřazení role přidáte v oboru předplatného a získáte požadované Directory (tenant) ID, Application IDa Client Secret.
Vytvoření nebo aktualizace clusteru
Vytvořte nebo aktualizujte cluster pomocí Identity vlastnosti :
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);
Spuštěním následujícího příkazu zkontrolujte, jestli se cluster úspěšně vytvořil nebo aktualizoval pomocí identity:
Pokud výsledek obsahuje ProvisioningState s Succeeded hodnotou , cluster se vytvořil nebo aktualizoval a měl by mít následující vlastnosti:
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId.GetValueOrDefault();
var clientGuid = userIdentity.ClientId.GetValueOrDefault();
Je PrincipalId jedinečný identifikátor identity, který se používá pro správu Microsoft Entra. Je ClientId jedinečný identifikátor nové identity aplikace, který se používá k určení identity, která se má použít během volání za běhu.
Přidání identity přiřazené uživatelem pomocí šablony Azure Resource Manager
Libovolný prostředek typu Microsoft.Kusto/clusters je možné vytvořit s identitou přiřazenou uživatelem tak, že do definice prostředku zahrnete následující vlastnost a nahradíte <RESOURCEID> ID prostředku požadované identity:
Je PrincipalId jedinečný identifikátor identity, který se používá pro správu Microsoft Entra. Je ClientId jedinečný identifikátor nové identity aplikace, který se používá k určení identity, která se má použít během volání za běhu.
Poznámka
Cluster může mít současně identity přiřazené systémem i uživatelem. V tomto případě type by vlastnost byla SystemAssigned,UserAssigned.
Odebrání spravované identity přiřazené uživatelem z clusteru
Odeberte identitu přiřazenou uživatelem pomocí šablony Azure Portal, C# nebo Resource Manager, jak je podrobně popsáno níže.
V levém podokně portálu vyberte Identita nastavení>.
Vyberte kartu Přiřazené uživatelem .
Vyhledejte identitu, kterou jste vytvořili dříve, a vyberte ji. Vyberte Odebrat.
V automaticky otevíraných otevíraných oknech vyberte Ano a odeberte identitu přiřazenou uživatelem. Podokno Identita se vrátí do stejné podmínky jako před přidáním identity přiřazené uživatelem.
Odebrání identity přiřazené uživatelem pomocí jazyka C#
Spuštěním následujícího příkazu odeberte identitu přiřazenou uživatelem:
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);
Odebrání identity přiřazené uživatelem pomocí šablony Azure Resource Manager
Spuštěním následujícího příkazu odeberte identitu přiřazenou uživatelem:
Pokud chcete odebrat identity, nastavte jejich hodnoty na null. Na všechny ostatní existující identity to nebude mít vliv.
Pokud chcete odebrat všechny identity přiřazené uživatelem, type vlastnost by byla None,
Pokud by měl cluster současně identity přiřazené systémem i uživatelem, type vlastnost by byla SystemAssigned,UserAssigned s identitami, které se mají odebrat, nebo SystemAssigned odebrat všechny identity přiřazené uživatelem.