Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Запустите приложение Microsoft .NET Azure HDInsight под собственным удостоверением приложения (неинтерактивным) или под удостоверением пользователя, выполнившего вход в приложение (интерактивный). В этой статье показано, как создать неинтерактивное приложение для проверки подлинности .NET для подключения к Azure и управления HDInsight. Пример интерактивного приложения см. в статье "Подключение к Azure HDInsight".
Из неинтерактивного приложения .NET вам потребуется:
- Идентификатор клиента подписки Azure (также называемый идентификатором каталога). См. Получить идентификатор арендатора.
- Идентификатор клиента приложения Microsoft Entra. См. статью "Создание приложения Microsoft Entra " и получение идентификатора приложения.
- Секретный ключ приложения Microsoft Entra. См. раздел "Получение ключа проверки подлинности приложения".
Предпосылки
Кластер HDInsight. Ознакомьтесь с руководством по началу работы.
Назначение роли приложению Microsoft Entra
Назначьте приложению Microsoft Entra роль, чтобы предоставить ему разрешения на выполнение действий. Вы можете задать область действия на уровне подписки, группы ресурсов или ресурса. Разрешения наследуются на более низких уровнях области. Например, добавление приложения в роль читателя для группы ресурсов означает, что приложение может читать группу ресурсов и все ресурсы в ней. В этой статье вы задаете область на уровне группы ресурсов. Дополнительные сведения см. в статье "Назначение ролей Azure для управления доступом к ресурсам подписки Azure".
Добавление роли владельца в приложение Microsoft Entra
- Войдите на портал Azure.
- Перейдите в группу ресурсов с кластером HDInsight, в котором будет выполняться запрос Hive далее в этой статье. Если у вас есть большое количество групп ресурсов, можно использовать фильтр, чтобы найти нужный.
- В меню группы ресурсов щелкните Управление доступом (IAM).
- Перейдите на вкладку "Назначения ролей" , чтобы просмотреть текущие назначения ролей.
- В верхней части страницы нажмите кнопку +Добавить.
- Следуйте инструкциям, чтобы добавить роль владельца в приложение Microsoft Entra. После успешного добавления роли приложение отображается в роли владельца.
Разработка клиентского приложения HDInsight
Создайте консольное приложение C#.
Добавьте следующие пакеты NuGet :
Install-Package Microsoft.Azure.Common.Authentication -PreInstall-Package Microsoft.Azure.Management.HDInsight -PreInstall-Package Microsoft.Azure.Management.Resources -Pre
Выполните следующий код:
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); } } }