Uma identidade gerenciada do Microsoft Entra ID permite que seu cluster acesse outros recursos protegidos pelo Microsoft Entra, como o Azure Key Vault. A plataforma Azure gerencia a identidade e não exige que você provisione ou alterne nenhum segredo.
Este artigo mostra como adicionar e remover identidades gerenciadas em seu cluster. Para obter mais informações sobre identidades gerenciadas, consulte Visão geral de identidades gerenciadas.
Para obter exemplos de código baseados em versões anteriores do SDK, consulte o artigo arquivado.
Tipos de identidades gerenciadas
Você pode conceder ao cluster do Azure Data Explorer dois tipos de identidades:
Identidade atribuída ao sistema: vinculada ao cluster e excluída se você excluir o recurso. Um cluster só pode ter uma identidade atribuída ao sistema.
Identidade atribuída pelo usuário: um recurso autônomo do Azure que você pode atribuir ao seu cluster. Um cluster pode ter várias identidades atribuídas pelo usuário.
Adicionar uma identidade atribuída ao sistema
Atribua uma identidade atribuída pelo sistema que está ligada ao cluster e é eliminada se eliminar o cluster. Um cluster só pode ter uma identidade atribuída ao sistema. Ao criar um cluster com uma identidade atribuída ao sistema, você precisa definir uma propriedade adicional no cluster. Adicione a identidade atribuída ao sistema usando o portal do Azure, C# ou modelo do Gerenciador de Recursos, conforme detalhado nas seções a seguir.
Adicionar uma identidade atribuída ao sistema usando o portal do Azure
Inicie sessão no portal Azure.
Novo cluster do Azure Data Explorer
Criar um cluster do Azure Data Explorer
Na guia Segurança , em Identidade atribuída ao sistema, selecione Ativado. Para remover a identidade atribuída ao sistema, selecione Desativado.
Selecione Next : Tags > ou Review + create para criar o cluster.
Cluster existente do Azure Data Explorer
Abra um cluster existente do Azure Data Explorer.
Selecione Configurações>de identidade no painel esquerdo do portal.
No painel Identidade , na guia Sistema atribuído :
- Mova o controle deslizante Status para Ativado.
- Selecione Guardar.
- Na janela pop-up, selecione Sim.
Após alguns minutos, a tela mostra:
-
ID do objeto - Usado para chaves gerenciadas pelo cliente
-
Permissões - Selecione atribuições de função relevantes
Adicionar uma identidade atribuída ao sistema usando C#
Pré-requisitos
Para configurar uma identidade gerenciada usando o cliente C# do Azure Data Explorer:
Criar ou atualizar o cluster
Crie ou atualize seu cluster usando a Identity propriedade:
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);
Execute o seguinte comando para verificar se você criou ou atualizou com êxito seu cluster com uma identidade:
clusterData = (await clusters.GetAsync(clusterName)).Value.Data;
Se o resultado contiver ProvisioningState com o valor Succeeded, então o cluster foi criado ou atualizado e tem as seguintes propriedades:
var principalGuid = clusterData.Identity.PrincipalId.GetValueOrDefault();
var tenantGuid = clusterData.Identity.TenantId.GetValueOrDefault();
PrincipalId e TenantId são substituídos por GUIDs. A propriedade TenantId identifica o inquilino do Microsoft Entra ao qual a identidade pertence. O PrincipalId é um identificador exclusivo para a nova identidade do cluster. Na Microsoft Entra ID, o principal de serviço tem o mesmo nome que foi atribuído à sua instância do Serviço de Aplicativos ou do Azure Functions.
Adicionar uma identidade atribuída ao sistema usando um modelo do Azure Resource Manager
Você pode usar um modelo do Azure Resource Manager para automatizar a implantação de seus recursos do Azure. Para saber mais sobre como implantar no Azure Data Explorer, consulte Criar um cluster e banco de dados do Azure Data Explorer usando um modelo do Azure Resource Manager.
Ao adicionar o tipo atribuído pelo sistema, o utilizador instrui o Azure a criar e gerir a identidade para o seu cluster. Você pode criar qualquer recurso do tipo Microsoft.Kusto/clusters com uma identidade incluindo a seguinte propriedade na definição de recurso:
{
"identity": {
"type": "SystemAssigned"
}
}
Por exemplo:
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
Observação
Um cluster pode ter identidades atribuídas ao sistema e ao usuário ao mesmo tempo. A type propriedade seria SystemAssigned,UserAssigned
Quando você cria o cluster, ele tem as seguintes propriedades adicionais:
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
<TENANTID> e <PRINCIPALID> são substituídos por GUIDs. A TenantId propriedade identifica o inquilino do Microsoft Entra ao qual a identidade pertence. O PrincipalId é um identificador exclusivo para a nova identidade do cluster. No Microsoft Entra ID, a entidade de serviço tem o mesmo nome que você deu à sua instância do App Service ou do Azure Functions.
Remover uma identidade atribuída pelo sistema
Ao remover uma identidade atribuída pelo sistema, você também a exclui da ID do Microsoft Entra. As identidades atribuídas pelo sistema também são removidas automaticamente do Microsoft Entra ID quando você exclui o recurso de cluster. Você pode remover uma identidade atribuída ao sistema desativando o recurso. Use o modelo Portal do Azure, C# ou Gerenciador de Recursos para remover a identidade atribuída ao sistema, conforme detalhado na seção a seguir.
Remover uma identidade atribuída pelo sistema usando o portal do Azure
Inicie sessão no portal Azure.
Selecione Configurações>de identidade no painel esquerdo do portal.
No painel Identidade , na guia Sistema atribuído :
- Mova o controle deslizante Status para Desativado.
- Selecione Guardar.
- Na janela pop-up, selecione Sim para desativar a identidade atribuída pelo sistema. O painel Identidade reverte para a mesma condição que antes da adição da identidade atribuída pelo sistema.
Remover uma identidade atribuída pelo sistema usando C#
Execute o seguinte código para remover a identidade atribuída ao 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);
Remover uma identidade atribuída ao sistema usando um modelo do Azure Resource Manager
Execute o seguinte código para remover a identidade atribuída ao sistema:
{
"identity": {
"type": "None"
}
}
Observação
Se o cluster tiver identidades atribuídas pelo sistema e pelo usuário ao mesmo tempo, depois de remover a identidade atribuída pelo sistema, a type propriedade será UserAssigned.
Adicionar uma identidade atribuída pelo usuário
Atribua uma identidade gerenciada atribuída pelo usuário ao cluster. Um cluster pode ter mais de uma identidade atribuída pelo usuário. Para criar um cluster com uma identidade atribuída pelo usuário, você precisa definir uma propriedade adicional no cluster. Adicione a identidade atribuída pelo usuário usando o portal do Azure, C# ou modelo do Gerenciador de Recursos, conforme detalhado nas seções a seguir.
Adicionar uma identidade atribuída pelo usuário usando o portal do Azure
Inicie sessão no portal Azure.
Crie um recurso de identidade gerenciado atribuído pelo usuário.
Abra um cluster existente do Azure Data Explorer.
Selecione Configurações>de identidade no painel esquerdo do portal.
Na guia Usuário atribuído , selecione Adicionar.
Procure a identidade que criou anteriormente e selecione-a. Selecione Adicionar.
Adicionar uma identidade atribuída pelo usuário usando C#
Pré-requisitos
Para configurar uma identidade gerenciada usando o cliente C# do Azure Data Explorer:
Criar ou atualizar o cluster
Crie ou atualize seu cluster usando a Identity propriedade:
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);
Execute o seguinte comando para verificar se você criou ou atualizou com êxito seu cluster com uma identidade:
clusterData = (await clusters.GetAsync(clusterName)).Value.Data;
Se o resultado contiver ProvisioningState com o valor de Succeeded, o cluster foi criado ou atualizado e tem as seguintes propriedades:
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId.GetValueOrDefault();
var clientGuid = userIdentity.ClientId.GetValueOrDefault();
O PrincipalId é um identificador exclusivo para a identidade que a administração do Microsoft Entra usa. O ClientId é um identificador exclusivo para a nova identidade do aplicativo que é usado para especificar qual identidade usar durante chamadas de tempo de execução.
Adicionar uma identidade atribuída pelo usuário usando um modelo do Azure Resource Manager
Você pode usar um modelo do Azure Resource Manager para automatizar a implantação de seus recursos do Azure. Para saber mais sobre como implantar no Azure Data Explorer, consulte Criar um cluster e banco de dados do Azure Data Explorer usando um modelo do Azure Resource Manager.
Você pode criar qualquer recurso do tipo Microsoft.Kusto/clusters com uma identidade atribuída pelo usuário incluindo a seguinte propriedade na definição de recurso. Substitua <RESOURCEID> pelo ID de recurso da identidade desejada:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {}
}
}
}
Por exemplo:
{
"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'))]"
]
}
Quando você cria o cluster, ele tem as seguintes propriedades adicionais:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {
"principalId": "<PRINCIPALID>",
"clientId": "<CLIENTID>"
}
}
}
}
O PrincipalId é um identificador exclusivo para a identidade que a administração do Microsoft Entra usa. O ClientId é um identificador exclusivo para a nova identidade do aplicativo que é usado para especificar qual identidade usar durante chamadas de tempo de execução.
Observação
Um cluster pode ter identidades atribuídas ao sistema e ao usuário ao mesmo tempo. Nesse caso, defina a type propriedade como SystemAssigned,UserAssigned.
Remover uma identidade gerenciada atribuída pelo usuário de um cluster
Remova a identidade atribuída pelo usuário usando o portal do Azure, C# ou modelo do Gerenciador de Recursos, conforme detalhado na seção a seguir.
Remover uma identidade gerenciada atribuída pelo usuário usando o portal do Azure
Inicie sessão no portal Azure.
Selecione Configurações>de identidade no painel esquerdo do portal.
Selecione a guia Usuário atribuído .
Procure a identidade que criou anteriormente e selecione-a. Selecione Remover.
Na janela pop-up, selecione Sim para remover a identidade atribuída pelo usuário. O painel Identidade reverte para a mesma condição que antes da adição da identidade atribuída pelo usuário.
Remover uma identidade atribuída pelo usuário usando C#
Execute o seguinte código para remover a identidade atribuída pelo usuário:
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);
Remover uma identidade atribuída pelo usuário usando um modelo do Azure Resource Manager
Execute o seguinte código para remover a identidade atribuída pelo usuário:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": null
}
}
}
Observação
- Defina os valores de identidades como null para removê-los. Esta ação não afeta outras identidades existentes.
- Defina a
type propriedade como None para remover todas as identidades atribuídas pelo usuário.
- Se o cluster tiver identidades atribuídas pelo sistema e pelo usuário, defina a
type propriedade como SystemAssigned,UserAssigned com as identidades a serem removidas ou defina-a para SystemAssigned remover todas as identidades atribuídas pelo usuário.
Conteúdo relacionado