Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Führen Sie Ihre Microsoft .NET Azure HDInsight-Anwendung entweder unter der eigenen Identität (nicht interaktiv) oder unter der Identität des angemeldeten Benutzers der Anwendung (interaktiv) aus. In diesem Artikel erfahren Sie, wie Sie eine nicht interaktive .NET-Authentifizierungsanwendung erstellen, um eine Verbindung mit Azure herzustellen und HDInsight zu verwalten. Ein Beispiel für eine interaktive Anwendung finden Sie unter Herstellen einer Verbindung mit Azure HDInsight.
Von Ihrer nicht interaktiven .NET-Anwendung benötigen Sie Folgendes:
- Ihre Azure-Abonnementmandanten-ID (auch als Verzeichnis-ID bezeichnet). Siehe "Mandanten-ID abrufen".
- Die Client-ID der Microsoft Entra-Anwendung. Siehe Erstellen einer Microsoft Entra-Anwendung und Abrufen einer Anwendungs-ID.
- Der geheime Schlüssel der Microsoft Entra-Anwendung. Siehe Abrufen des Anwendungsauthentifizierungsschlüssels.
Voraussetzungen
Einen HDInsight-Cluster Sehen Sie sich das Lernprogramm "Erste Schritte" an.
Zuweisen einer Rolle zur Microsoft Entra-Anwendung
Weisen Sie Ihrer Microsoft Entra-Anwendung eine Rolle zu, um ihr Berechtigungen zum Ausführen von Aktionen zu erteilen. Sie können den Umfang auf Abonnement-, Ressourcengruppen- oder Ressourcenebene festlegen. Die Berechtigungen werden auf die unteren Ebenen des Gültigkeitsbereichs vererbt. Beispielsweise bedeutet das Hinzufügen einer Anwendung zur Rolle "Leser" für eine Ressourcengruppe, dass die Anwendung die Ressourcengruppe und alle darin enthaltenen Ressourcen lesen kann. In diesem Artikel legen Sie den Bereich auf Ressourcengruppenebene fest. Weitere Informationen finden Sie unter Zuweisen von Azure-Rollen zum Verwalten des Zugriffs auf Ihre Azure-Abonnementressourcen.
So fügen Sie der Microsoft Entra-Anwendung die Rolle "Besitzer" hinzu
- Melden Sie sich beim Azure-Portal an.
- Navigieren Sie zu der Ressourcengruppe mit dem HDInsight-Cluster, auf dem Sie Ihre Hive-Abfrage weiter unten in diesem Artikel ausführen. Wenn Sie über eine große Anzahl von Ressourcengruppen verfügen, können Sie den Filter verwenden, um das gewünschte zu finden.
- Wählen Sie im Ressourcengruppenmenü Zugriffssteuerung (IAM) aus.
- Wählen Sie die Registerkarte "Rollenzuweisungen " aus, um die aktuellen Rollenzuweisungen anzuzeigen.
- Wählen Sie oben auf der Seite +Hinzufügen aus.
- Folgen Sie den Anweisungen zum Hinzufügen der Rolle "Besitzer" zu Ihrer Microsoft Entra-Anwendung. Nachdem Sie die Rolle erfolgreich hinzugefügt haben, wird die Anwendung unter der Rolle "Besitzer" aufgeführt.
Entwickeln einer HDInsight-Clientanwendung
Erstellen Sie eine C#-Konsolenanwendung.
Fügen Sie die folgenden NuGet-Pakete hinzu:
Install-Package Microsoft.Azure.Common.Authentication -PreInstall-Package Microsoft.Azure.Management.HDInsight -PreInstall-Package Microsoft.Azure.Management.Resources -Pre
Führen Sie den folgenden Code aus:
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); } } }
Nächste Schritte
- Erstellen Sie eine Microsoft Entra-Anwendung und einen Dienstprinzipal im Azure-Portal.
- Erfahren Sie, wie Sie einen Dienstprinzipal mit Azure Resource Manager authentifizieren.
- Erfahren Sie mehr über die rollenbasierte Azure-Zugriffssteuerung (Azure RBAC).