Criar um aplicativo .NET HDInsight de autenticação não interativa
Execute seu aplicativo Microsoft .NET Azure HDInsight sob a própria identidade do aplicativo (não interativo) ou sob a identidade do usuário conectado do aplicativo (interativo). Este artigo mostra como criar um aplicativo .NET de autenticação não interativa para se conectar ao Azure e gerenciar o HDInsight. Para obter um exemplo de um aplicativo interativo, consulte Conectar-se ao Azure HDInsight.
A partir do seu aplicativo .NET não interativo, você precisa:
- Sua ID de locatário de assinatura do Azure (também chamada de ID de diretório). Consulte Obter ID do inquilino.
- A ID do cliente do aplicativo Microsoft Entra. Consulte Criar um aplicativo Microsoft Entra e Obter uma ID de aplicativo.
- A chave secreta do aplicativo Microsoft Entra. Consulte Obter chave de autenticação de aplicativo.
Pré-requisitos
Um cluster HDInsight. Consulte o tutorial de introdução.
Atribuir uma função ao aplicativo Microsoft Entra
Atribua uma função ao seu aplicativo Microsoft Entra para conceder-lhe permissões para executar ações. Você pode definir o escopo no nível da assinatura, grupo de recursos ou recurso. As permissões são herdadas para níveis mais baixos de escopo. Por exemplo, adicionar um aplicativo à função Leitor para um grupo de recursos significa que o aplicativo pode ler o grupo de recursos e quaisquer recursos nele. Neste artigo, você define o escopo no nível do grupo de recursos. Para obter mais informações, consulte Atribuir funções do Azure para gerenciar o acesso aos recursos de assinatura do Azure.
Para adicionar a função Proprietário ao aplicativo Microsoft Entra
- Inicie sessão no portal do Azure.
- Navegue até o grupo de recursos que tem o cluster HDInsight no qual você executará sua consulta do Hive mais adiante neste artigo. Se você tiver um grande número de grupos de recursos, poderá usar o filtro para encontrar o que deseja.
- No menu do grupo de recursos, selecione Controle de acesso (IAM).
- Selecione a guia Atribuições de função para ver as atribuições de função atuais.
- Na parte superior da página, selecione + Adicionar.
- Siga as instruções para adicionar a função Proprietário ao seu aplicativo Microsoft Entra. Depois de adicionar a função com êxito, o aplicativo é listado na função Proprietário.
Desenvolver um aplicativo cliente HDInsight
Crie uma aplicação de consola C#.
Adicione os seguintes pacotes NuGet :
Install-Package Microsoft.Azure.Common.Authentication -Pre
Install-Package Microsoft.Azure.Management.HDInsight -Pre
Install-Package Microsoft.Azure.Management.Resources -Pre
Execute o seguinte código:
using System; using System.Security; using Microsoft.Azure; using Microsoft.Azure.Common.Authentication; using Microsoft.Azure.Common.Authentication.Factories; using Microsoft.Azure.Common.Authentication.Models; using Microsoft.Azure.Management.Resources; using Microsoft.Azure.Management.HDInsight; namespace CreateHDICluster { internal class Program { private static HDInsightManagementClient _hdiManagementClient; private static Guid SubscriptionId = new Guid("<Enter your Azure subscription ID>"); private static string tenantID = "<Enter your tenant ID (also called directory ID)>"; private static string applicationID = "<Enter your application ID>"; private static string secretKey = "<Enter the application secret key>"; private static void Main(string[] args) { var key = new SecureString(); foreach (char c in secretKey) { key.AppendChar(c); } var tokenCreds = GetTokenCloudCredentials(tenantID, applicationID, key); var subCloudCredentials = GetSubscriptionCloudCredentials(tokenCreds, SubscriptionId); var resourceManagementClient = new ResourceManagementClient(subCloudCredentials); resourceManagementClient.Providers.Register("Microsoft.HDInsight"); _hdiManagementClient = new HDInsightManagementClient(subCloudCredentials); var results = _hdiManagementClient.Clusters.List(); foreach (var name in results.Clusters) { Console.WriteLine("Cluster Name: " + name.Name); Console.WriteLine("\t Cluster type: " + name.Properties.ClusterDefinition.ClusterType); Console.WriteLine("\t Cluster location: " + name.Location); Console.WriteLine("\t Cluster version: " + name.Properties.ClusterVersion); } Console.WriteLine("Press Enter to continue"); Console.ReadLine(); } /// Get the access token for a service principal and provided key. public static TokenCloudCredentials GetTokenCloudCredentials(string tenantId, string clientId, SecureString secretKey) { var authFactory = new AuthenticationFactory(); var account = new AzureAccount { Type = AzureAccount.AccountType.ServicePrincipal, Id = clientId }; var env = AzureEnvironment.PublicEnvironments[EnvironmentName.AzureCloud]; var accessToken = authFactory.Authenticate(account, env, tenantId, secretKey, ShowDialog.Never).AccessToken; return new TokenCloudCredentials(accessToken); } public static SubscriptionCloudCredentials GetSubscriptionCloudCredentials(SubscriptionCloudCredentials creds, Guid subId) { return new TokenCloudCredentials(subId.ToString(), ((TokenCloudCredentials)creds).Token); } } }
Próximos passos
- Crie uma entidade de serviço e aplicativo Microsoft Entra no portal do Azure.
- Saiba como autenticar uma entidade de serviço com o Azure Resource Manager.
- Saiba mais sobre o controle de acesso baseado em função do Azure (Azure RBAC).