Как получить список статистики конечных точек и опасных конечных точек с помощью Azure Mgmt SDK fluent - PullRequest
1 голос
/ 05 августа 2020

Я использую https://www.nuget.org/packages/Microsoft.Azure.Management.Fluent для получения ресурсов в Azure с помощью программного (C#. NET -Core Web-приложения) и пытался получить информацию о ресурсах, предоставляя принципалов службы (CS) как показано ниже ...

 string subscriptionId = "xxx";
            string clientId = "xxx";
            string tenantId = "xxx";
            string clientSecret = "xxx";

            AzureCredentials cred = new AzureCredentialsFactory()
                .FromServicePrincipal(
                clientId,
                clientSecret,
                tenantId,
                AzureEnvironment.AzureGlobalCloud
                );

            var azure = Azure.Configure()
                             .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                             .Authenticate(cred)
                             .WithSubscription(subscriptionId);

Любой пример кода (C#. NET -Core Web-приложение), чтобы узнать Статистика конечных точек (l oop через открытые порты в NSG и подробно перечислите их) и Dangerous Endpoints (l oop через открытые порты в NSG и идентифицируйте порты, такие как 3389/22).

Пожалуйста, совет по вышеизложенному.

Спасибо

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Если вы имеете в виду перечислить все порты в NSG -> Правила безопасности для входящего трафика, как на скриншоте ниже:

введите описание изображения здесь

Затем вы можете использовать следующий код:

        foreach (var nsg in azure.NetworkSecurityGroups.List())
        {
            
            var rules = nsg.SecurityRules;

            foreach (var r in rules)
            {
                Console.WriteLine($"*** the NSG: {r.Value.Name} ***");

                if (r.Value.DestinationPortRange != null)
                {
                    //after you get the port, you can apply your logic here.
                    Console.WriteLine(r.Value.DestinationPortRange);
                }

                if (r.Value.DestinationPortRanges != null)
                {
                    foreach (var port in r.Value.DestinationPortRanges)
                    {
                        //after you get the port, you can apply your logic here.
                        Console.WriteLine(port);
                    }
                }
                Console.WriteLine("**end**");
            }
          }
0 голосов
/ 08 августа 2020

Спасибо @ivan Yang за ответ и помощь ...

Ниже рабочий код, я изменил код urs согласно моему

 var ntwrrkDetails = new List<EndTcpPorts>();  

   EndTcpPorts objEndTcpPorts; // cls object

  foreach (var nsg in azure.NetworkSecurityGroups.List())
                {
                    objEndTcpPorts = new EndTcpPorts();
                    objEndTcpPorts.ResourceGroup = nsg.ResourceGroupName.ToString();

                    try
                    {
                        var rules = nsg.SecurityRules;
                        foreach (var r in rules)
                        {
                            try
                            {
                                objEndTcpPorts.NSGName = r.Value.Name.ToString();
                            }
                            catch (Exception)
                            {
                                objEndTcpPorts.NSGName = "";
                            }
                            if (r.Value.DestinationPortRanges != null)
                            {
                                try
                                {
                                    //get ports
                                    objEndTcpPorts.TcpPorts = r.Value.DestinationPortRange.ToString(); //((Microsoft.Azure.Management.ResourceManager.Fluent.Core.IndexableWrapper<Microsoft.Azure.Management.Network.Fluent.Models.SecurityRuleInner>)r.Value).Inner.Protocol.Value.ToString();
                                }
                                catch (Exception)
                                {

                                    objEndTcpPorts.TcpPorts = "";
                                }
                            }

                        }
                    }
                    catch (Exception)
                    {
                        continue;
                    }
                    
                    ntwrrkDetails.Add(objEndTcpPorts); // add to list
                }

Теперь мы можем проверить (Опасные конечные точки ) в tcp-портах как открытые порты в NSG и идентифицируйте порты, например, 3389/22 или * ..

Большое спасибо,

...