Etkileşimli olmayan bir kimlik doğrulaması .NET HDInsight uygulaması oluşturma
Microsoft .NET Azure HDInsight uygulamanızı uygulamanın kendi kimliği (etkileşimli olmayan) veya uygulamanın oturum açmış kullanıcısının kimliği (etkileşimli) altında çalıştırın. Bu makalede, Azure'a bağlanmak ve HDInsight'ı yönetmek için etkileşimli olmayan bir kimlik doğrulaması .NET uygulamasının nasıl oluşturulacağı gösterilmektedir. Etkileşimli bir uygulama örneği için bkz. Azure HDInsight'a Bağlan.
Etkileşimli olmayan .NET uygulamanızdan şunları yapmanız gerekir:
- Azure aboneliği kiracı kimliğiniz (dizin kimliği olarak da adlandırılır). Bkz. Kiracı kimliğini alma.
- Microsoft Entra uygulaması istemci kimliği. Bkz . Microsoft Entra uygulaması oluşturma ve Uygulama kimliği alma.
- Microsoft Entra uygulama gizli anahtarı. Bkz. Uygulama kimlik doğrulama anahtarını alma.
Ön koşullar
HDInsight kümesi. Başlarken öğreticisine bakın.
Microsoft Entra uygulamasına rol atama
Microsoft Entra uygulamanıza eylem gerçekleştirme izinleri vermek için bir rol atayın. Kapsamı abonelik, kaynak grubu veya kaynak düzeyinde ayarlayabilirsiniz. İzinler daha düşük kapsam düzeylerine devralınır. Örneğin, bir kaynak grubunun Okuyucu rolüne uygulama eklemek, uygulamanın kaynak grubunu ve içindeki kaynakları okuyabileceği anlamına gelir. Bu makalede, kapsamı kaynak grubu düzeyinde ayarlarsınız. Daha fazla bilgi için bkz . Azure abonelik kaynaklarınıza erişimi yönetmek için Azure rolleri atama.
Microsoft Entra uygulamasına Sahip rolünü eklemek için
- Azure Portal oturum açın.
- Bu makalenin devamında Hive sorgunuzu çalıştırabileceğiniz HDInsight kümesinin bulunduğu kaynak grubuna gidin. Çok sayıda kaynak grubunuz varsa, filtreyi kullanarak istediğinizi bulabilirsiniz.
- Kaynak grubu menüsünde Erişim denetimi (IAM) öğesini seçin.
- Geçerli rol atamalarını görmek için Rol atamaları sekmesini seçin.
- Sayfanın üst kısmında + Ekle'yi seçin.
- Microsoft Entra uygulamanıza Sahip rolünü eklemek için yönergeleri izleyin. Rolü başarıyla ekledikten sonra uygulama Sahip rolü altında listelenir.
HDInsight istemci uygulaması geliştirme
Bir C# konsol uygulaması oluşturun.
Aşağıdaki NuGet paketlerini ekleyin:
Install-Package Microsoft.Azure.Common.Authentication -Pre
Install-Package Microsoft.Azure.Management.HDInsight -Pre
Install-Package Microsoft.Azure.Management.Resources -Pre
Aşağıdaki kodu çalıştırın:
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); } } }
Sonraki adımlar
- Azure portalında bir Microsoft Entra uygulaması ve hizmet sorumlusu oluşturun.
- Azure Resource Manager ile hizmet sorumlusu kimliğini doğrulamayı öğrenin.
- Azure rol tabanlı erişim denetimi (Azure RBAC) hakkında bilgi edinin.