Konfigurace spravovaných identit pro cluster Azure Data Exploreru
Článek
Spravovaná identita z Microsoft Entra ID umožňuje vašemu clusteru přistupovat k dalším prostředkům chráněným Microsoft Entra, 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:
Spravované identity pro Azure Data Explorer se nebudou chovat podle očekávání, pokud se cluster Azure Data Exploreru migruje mezi předplatnými nebo tenanty. Aplikace bude muset získat novou identitu, kterou je možné 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. Zásady přístupu podřízených prostředků budou také potřeba aktualizovat, aby používaly novou identitu.
Ukázky kódu založené na předchozích verzích sady SDK najdete v archivovaného článku.
Typy spravovaných identit
Cluster Azure Data Exploreru můžete udělit dva typy identit:
Identita přiřazená systémem: Svázaná s clusterem a odstraněná, pokud je prostředek odstraněn. Cluster může mít pouze jednu identitu přiřazenou systémem.
Identita přiřazená uživatelem: Samostatný prostředek Azure, který je možné přiřadit k vašemu 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 je cluster odstraněný, odstraní se. Cluster může mít pouze jednu identitu přiřazenou systémem. Vytvoření clusteru s identitou přiřazenou systémem vyžaduje nastavení další vlastnosti v clusteru. Přidejte identitu přiřazenou systémem pomocí webu Azure Portal, C# nebo šablony Resource Manageru, jak je podrobně popsáno níže.
Vytvořte aplikaci Microsoft Entra a instanční objekt, který má přístup k prostředkům. Přidáte přiřazení role v oboru předplatného a získáte požadované Directory (tenant) IDApplication ID, a 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 váš cluster úspěšně vytvořil nebo aktualizoval identitou:
Pokud výsledek obsahuje ProvisioningState hodnotu Succeeded , cluster byl vytvořen nebo aktualizován 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 tenanta Microsoft Entra, ke kterému 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, který jste zadali vaší instanci služby App Service nebo Azure Functions.
Přidání identity přiřazené systémem pomocí šablony Azure Resource Manageru
Přidání typu přiřazeného systémem říká Azure, aby vytvořila a spravuje identitu vašeho clusteru. Libovolný prostředek typu Microsoft.Kusto/clusters lze vytvořit s identitou zahrnutím následující vlastnosti do definice prostředku:
<TENANTID> a <PRINCIPALID> jsou nahrazeny identifikátory GUID. Vlastnost TenantId identifikuje tenanta Microsoft Entra, ke kterému 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, který jste zadali vaší instanci služby App Service nebo Azure Functions.
Odebrání identity přiřazené systémem
Odebráním identity přiřazené systémem se odstraní také z ID Microsoft Entra. Identity přiřazené systémem se také automaticky odeberou z ID Microsoft Entra při odstranění prostředku clusteru. Identitu přiřazenou systémem je možné odebrat zakázáním funkce. Odeberte identitu přiřazenou systémem pomocí webu Azure Portal, C# nebo šablony Resource Manageru, jak je podrobně popsáno níže.
V levém podokně portálu vyberte Identitu nastavení>.
Na kartě Systém přiřazený systémem v podokně> Identita:
Přesuňte posuvník Stav do polohy Vypnuto.
Zvolte Uložit.
V automaticky otevíraných otevíraných oknech výběrem možnosti Ano zakažte identitu přiřazenou systémem. Podokno Identita se vrátí ke stejné podmínce 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 Manageru
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 identity přiřazené systémem i uživatelem přiřazené současně, bude tato vlastnost po odebrání type identity přiřazená systémem. 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í webu Azure Portal, C# nebo šablony Resource Manageru, jak je podrobně popsáno níže.
Vytvořte aplikaci Microsoft Entra a instanční objekt, který má přístup k prostředkům. Přidáte přiřazení role v oboru předplatného a získáte požadované Directory (tenant) IDApplication ID, a 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 váš cluster úspěšně vytvořil nebo aktualizoval identitou:
Pokud výsledek obsahuje ProvisioningState hodnotu Succeeded , cluster byl vytvořen nebo aktualizován 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();
Jedná se PrincipalId o jedinečný identifikátor identity, který se používá pro správu Microsoft Entra. Jedná se ClientId o jedinečný identifikátor nové identity aplikace, která se používá k určení identity, která se má použít během volání modulu runtime.
Přidání identity přiřazené uživatelem pomocí šablony Azure Resource Manageru
Libovolný prostředek typu Microsoft.Kusto/clusters lze 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:
Jedná se PrincipalId o jedinečný identifikátor identity, který se používá pro správu Microsoft Entra. Jedná se ClientId o jedinečný identifikátor nové identity aplikace, která se používá k určení identity, která se má použít během volání modulu runtime.
Poznámka:
Cluster může mít současně přiřazené systémové i uživatelem přiřazené identity. 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í webu Azure Portal, C# nebo šablony Resource Manageru, jak je podrobně popsáno níže.
V levém podokně portálu vyberte Identitu nastavení>.
Vyberte kartu Přiřazené uživatelem.
Vyhledejte identitu, kterou jste vytvořili dříve, a vyberte ji. Vyberte Odstranit.
V automaticky otevíraných otevíraných oknech výběrem možnosti Ano odeberete identitu přiřazenou uživatelem. Podokno Identita se vrátí ke stejné podmínce 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 Manageru
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 hodnotu null. Všechny ostatní existující identity nebudou ovlivněny.
Odebrání všech identit přiřazených uživatelem type by vlastnost byla None:
Pokud by cluster měl současně přiřazené systémové i uživatelem přiřazené identity, type vlastnost by byla SystemAssigned,UserAssigned s identitami, které se mají odebrat, nebo SystemAssigned odebrat všechny identity přiřazené uživatelem.