Compartilhar via


Criar um aplicativo .NET HDInsight de autenticação não interativa

Execute o aplicativo Microsoft .NET do Azure HDInsight na própria identidade do aplicativo (não interativo) ou na 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.

Em seu aplicativo .NET não interativo, você precisa:

Pré-requisitos

Um cluster HDInsight. Consulte o tutorial de introdução.

Atribuir uma função ao aplicativo do Microsoft Entra

Atribua uma função ao aplicativo do Microsoft Entra para conceder a ele permissões para executar ações. Você pode definir o escopo no nível da assinatura, do grupo de recursos ou do recurso. As permissão são herdadas para níveis inferiores do escopo. Por exemplo, adicionar um aplicativo à função Leitor de um grupo de recursos significa que o aplicativo pode ler o grupo de recursos e todos os recursos nele. Neste artigo, você definirá o escopo no nível do grupo de recursos. Para obter mais informações, veja Atribuir funções do Azure para gerenciar o acesso aos recursos de assinatura do Azure.

Para adicionar a função Proprietário ao aplicativo do Microsoft Entra

  1. Entre no portal do Azure.
  2. Navegue até o grupo de recursos que contém o cluster do HDInsight, no qual você executará a consulta Hive posteriormente neste artigo. Se você tiver um grande número de grupos de recursos, será possível usar o filtro para localizar o item desejado.
  3. No menu do grupo de recursos, selecione Controle de acesso (IAM).
  4. Selecione a guia Atribuições de função para ver as atribuições de função atuais.
  5. Na parte superior da página, selecione + Adicionar.
  6. Siga as instruções para adicionar a função Proprietário ao aplicativo do Microsoft Entra. Após adicionar a função com êxito, o aplicativo será listado na função Proprietário.

Desenvolver um aplicativo cliente HDInsight

  1. Crie um aplicativo de console C#.

  2. 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
  3. Execute o código a seguir:

    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óximas etapas