Uma identidade gerenciada da ID do Microsoft Entra permite que o cluster acesse outros recursos protegidos do Microsoft Entra, como o Azure Key Vault. A plataforma do Azure gerencia a identidade e não exige que você provisione ou gire nenhum segredo.
Este artigo mostra como adicionar e remover identidades gerenciadas em seu cluster. Para obter mais informações sobre identidades gerenciadas, confira Visão geral de identidades gerenciadas.
Para 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 pelo sistema: vinculada ao cluster e excluída se você excluir o recurso. Um aplicativo só pode ter uma identidade atribuída pelo sistema.
Identidade atribuída pelo usuário: um recurso autônomo do Azure que você pode atribuir ao cluster. Um aplicativo pode ter várias identidades atribuídas pelo usuário.
Adicionar uma identidade atribuída pelo sistema
Atribua uma identidade gerenciada pelo sistema que está vinculada ao cluster e é excluída caso você exclua o cluster. Um aplicativo só pode ter uma identidade atribuída pelo sistema. Ao criar um cluster com uma identidade atribuída pelo sistema, você precisa definir uma propriedade adicional no cluster. Adicione a identidade atribuída pelo sistema usando o portal do Azure, O C#ou o modelo do Resource Manager, conforme detalhado nas seções a seguir.
Adicionar uma identidade atribuída pelo sistema usando o portal do Azure
Entre no portal do Azure.
Novo cluster do Azure Data Explorer
Criar um cluster do Azure Data Explorer
Na guia Segurança , em Identidade atribuída pelo sistema, selecione Ativar. Para remover a identidade atribuída pelo sistema, selecione Desligar.
Selecione Avançar: Marcas> ou Examinar + criar para criar o cluster.
Cluster existente do Azure Data Explorer
Abra o cluster existente do Azure Data Explorer.
Selecione Configurações>Identidade no painel esquerdo do portal.
No painel Identidade , na guia Sistema atribuído :
- Mova o controle deslizante Status para Ligar.
- Clique em Salvar.
- Na janela pop-up, selecione Sim.
Após alguns minutos, a tela mostra:
-
ID do objeto – Usada para chaves gerenciadas pelo cliente
-
Permissões – Selecione as atribuição de função relevantes
Adicionar uma identidade atribuída pelo sistema usando C#
Pré-requisitos
Para configurar uma identidade gerenciada usando o cliente C# do Azure Data Explorer:
Crie ou atualize 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 o cluster com êxito 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 terá 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 TenantId propriedade identifica o locatário do Microsoft Entra ao qual a identidade pertence.
PrincipalId é um identificador exclusivo para a nova identidade do cluster. No Microsoft Entra ID, a entidade de serviço tem o mesmo nome dado à sua instância do Serviço de Aplicativo ou do Azure Functions.
Adicionar uma identidade atribuída pelo 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 a implantação no Azure Data Explorer, consulte Criar um cluster Azure Data Explorer e um banco de dados usando um modelo Azure Resource Manager.
Ao adicionar o tipo atribuído pelo sistema, você diz ao Azure para criar e gerenciar a identidade do 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 pelo sistema e pelo usuário ao mesmo tempo. A propriedade type 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 locatário do Microsoft Entra ao qual a identidade pertence.
PrincipalId é um identificador exclusivo para a nova identidade do cluster. No Microsoft Entra ID, a entidade de serviço tem o mesmo nome dado à sua instância do Serviço de Aplicativo ou do Azure Functions.
Remover a 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 da ID do Microsoft Entra quando você exclui o recurso de cluster. Você pode remover uma identidade atribuída pelo sistema desabilitando o recurso. Use o portal do Azure, O C#ou o modelo do Resource Manager para remover a identidade atribuída pelo sistema conforme detalhado na seção a seguir.
Remover uma identidade atribuída pelo sistema usando o portal do Azure
Entre no portal do Azure.
Selecione Configurações> e Identidade no painel esquerdo do portal.
No painel Identidade , na guia Sistema atribuído :
- Mova o controle deslizante Status para Desligado.
- Clique em Salvar.
- Na janela pop-up, selecione Sim para desativar a identidade atribuída pelo sistema. O painel Identidade é revertido 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 pelo 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 pelo sistema usando um modelo do Azure Resource Manager
Execute o seguinte código para remover a identidade atribuída pelo sistema:
{
"identity": {
"type": "None"
}
}
Observação
Se o cluster tiver identidades atribuídas pelo sistema e atribuídas pelo usuário ao mesmo tempo, depois que você remover a identidade atribuída pelo sistema, a type propriedade será UserAssigned.
Adicionar uma identidade atribuída pelo usuário
Atribuir uma identidade gerenciada atribuída pelo usuário ao seu 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, O C#ou o modelo do Resource Manager, conforme detalhado nas seções a seguir.
Adicionar uma identidade atribuída pelo usuário usando o portal do Azure
Entre no portal do Azure.
Criar um recurso de identidade gerenciada atribuída pelo usuário.
Abra o cluster existente do Azure Data Explorer.
Selecione Configurações>Identidade no painel esquerdo do portal.
Na guia Usuário atribuído, selecione Adicionar.
Procure a identidade que você criou anteriormente e selecione-a. Selecione Adicionar.
Adicionar identidade atribuída pelo usuário usando C#
Pré-requisitos
Para configurar uma identidade gerenciada usando o cliente C# do Azure Data Explorer:
Crie ou atualize 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 o cluster com êxito 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 possui as seguintes propriedades:
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId.GetValueOrDefault();
var clientGuid = userIdentity.ClientId.GetValueOrDefault();
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 é usada para especificar qual identidade usar durante as chamadas do runtime.
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 a implantação no Azure Data Explorer, consulte Criar um cluster Azure Data Explorer e um banco de dados usando um modelo Azure Resource Manager.
Você pode criar qualquer recurso do tipo Microsoft.Kusto/clusters com uma identidade atribuída pelo usuário, incluindo a propriedade a seguir na definição de recurso. Substitua <RESOURCEID> pelo identificador 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 é usada para especificar qual identidade usar durante as chamadas do runtime.
Observação
Um cluster pode ter identidades atribuídas pelo sistema e pelo usuário ao mesmo tempo. Nesse caso, defina a type propriedade como SystemAssigned,UserAssigned.
Remover uma identidade gerenciada atribuída ao usuário de um cluster
Remova a identidade atribuída pelo usuário usando o portal do Azure, o C#ou o modelo do Resource Manager, conforme detalhado na seção a seguir.
Remover uma identidade gerenciada atribuída pelo usuário usando o portal do Azure
Entre no portal do Azure.
Selecione Configurações>Identidade no painel esquerdo do portal.
Selecionar a guia Atribuído pelo usuário.
Procure a identidade que você 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 é revertido 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 das identidades como nulos para removê-las. Essa ação não afeta outras identidades existentes.
- Defina a propriedade
type como None para remover todas as identidades atribuídas pelo usuário.
- Se o cluster tiver identidades atribuídas pelo sistema e atribuídas pelo usuário, defina a
type propriedade 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