Nem interaktív hitelesítési .NET HDInsight-alkalmazás létrehozása

Futtassa a Microsoft .NET Azure HDInsight-alkalmazást az alkalmazás saját identitása alatt (nem interaktív) vagy az alkalmazás bejelentkezett felhasználójának identitása alatt (interaktív). Ez a cikk bemutatja, hogyan hozhat létre nem interaktív hitelesítési .NET-alkalmazást az Azure-hoz való csatlakozáshoz és a HDInsight kezeléséhez. Egy interaktív alkalmazás mintájáért tekintse meg az Azure HDInsight Csatlakozás.

A nem interaktív .NET-alkalmazásból a következőkre van szüksége:

Előfeltételek

EGY HDInsight-fürt. Tekintse meg az első lépéseket ismertető oktatóanyagot.

Szerepkör hozzárendelése a Microsoft Entra alkalmazáshoz

Rendeljen hozzá egy szerepkört a Microsoft Entra-alkalmazáshoz, hogy engedélyeket adjon a műveletek végrehajtásához. A hatókört az előfizetés, az erőforráscsoport vagy az erőforrás szintjén állíthatja be. Az engedélyek a hatókör alacsonyabb szintjeire öröklődnek. Ha például hozzáad egy alkalmazást egy erőforráscsoport Olvasó szerepköréhez, az azt jelenti, hogy az alkalmazás elolvashatja az erőforráscsoportot és az abban lévő erőforrásokat. Ebben a cikkben a hatókört az erőforráscsoport szintjén állíthatja be. További információ: Azure-szerepkörök hozzárendelése az Azure-előfizetés erőforrásaihoz való hozzáférés kezeléséhez.

Tulajdonosi szerepkör hozzáadása a Microsoft Entra alkalmazáshoz

  1. Jelentkezzen be az Azure Portalra.
  2. Keresse meg azt az erőforráscsoportot, amelyen a jelen cikk későbbi részében futtatni fogja a Hive-lekérdezést a HDInsight-fürt. Ha nagy számú erőforráscsoportot használ, a szűrővel megkeresheti a kívánt erőforrást.
  3. Az erőforráscsoport menüjében válassza a Hozzáférés-vezérlés (IAM) lehetőséget.
  4. Válassza a Szerepkör-hozzárendelések lapot az aktuális szerepkör-hozzárendelések megtekintéséhez.
  5. A lap tetején válassza a + Hozzáadás lehetőséget.
  6. Az utasításokat követve adja hozzá a Tulajdonos szerepkört a Microsoft Entra-alkalmazáshoz. Miután sikeresen hozzáadta a szerepkört, az alkalmazás megjelenik a Tulajdonos szerepkör alatt.

HDInsight-ügyfélalkalmazás fejlesztése

  1. Hozzon létre egy C# konzolalkalmazást.

  2. Adja hozzá a következő NuGet-csomagokat :

    • Install-Package Microsoft.Azure.Common.Authentication -Pre
    • Install-Package Microsoft.Azure.Management.HDInsight -Pre
    • Install-Package Microsoft.Azure.Management.Resources -Pre
  3. Futtassa az alábbi kódot:

    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);
            }
        }
    }
    

Következő lépések