Краткое руководство. Создание группы управления с помощью .NET Core

Группы управления являются контейнерами для удобства управления доступом, политикой и соответствием в нескольких подписках. Создание таких контейнеров позволяет построить эффективную и экономную иерархию, которую можно использовать с политикой Azure и элементами управления доступом на основе ролей Azure. Дополнительные сведения о группах управления см. в статье Упорядочение ресурсов с помощью групп управления Azure.

Создание первой группы управления в каталоге может занять до 15 минут. Существуют процессы, выполняемые в первый раз при настройке службы групп управления в Azure для вашего каталога. По завершении процесса вы получите уведомление. См. сведения о начальной настройке групп управления.

Необходимые компоненты

  • Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

  • Субъект-служба Azure, включая clientId и clientSecret. Если у вас нет субъекта-службы, который можно использовать для Политики Azure, или вы хотите создать новый субъект-службу, см. статью о библиотеках управления Azure для аутентификации .NET. Пропустите этот шаг, чтобы установить пакеты .NET Core, так как мы выполним это действие на следующих шагах.

  • Любой пользователь Azure AD в арендаторе может создать группу управления без разрешения на запись для группы управления, назначенного этому пользователю, если защита иерархии не включена. Эта новая группа управления становится дочерней по отношению к корневой группе управления или группе управления по умолчанию, а ее создателю назначается роль "Владелец". Служба группы управления обеспечивает эту возможность, чтобы назначения ролей не требовались на корневом уровне. У пользователей нет доступа к корневой группе управления при ее создании. Чтобы избежать трудностей при поиске глобальных администраторов Azure AD для настройки работы с группами управления, мы разрешаем создавать исходные группы управления на корневом уровне.

Azure Cloud Shell

В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере. Для работы со службами Azure можно использовать Bash или PowerShell с Cloud Shell. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.

Начало работы с Azure Cloud Shell

Вариант Пример и ссылка
Нажмите кнопку Попробовать в правом верхнем углу блока кода или команд. При нажатии кнопки Попробовать код или команда не копируется в Cloud Shell автоматически. Screenshot that shows an example of Try It for Azure Cloud Shell.
Чтобы открыть Cloud Shell в браузере, перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell. Button to launch Azure Cloud Shell.
Нажмите кнопку Cloud Shell в строке меню в правом верхнем углу окна портала Azure. Screenshot that shows the Cloud Shell button in the Azure portal

Чтобы использовать Azure Cloud Shell, выполните следующие действия:

  1. Запустите Cloud Shell.

  2. Нажмите кнопку Копировать в блоке кода (или блоке команд), чтобы скопировать код или команду.

  3. Вставьте код или команду в окно сеанса Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS.

  4. Нажмите клавишу ВВОД, чтобы запустить код или команду.

Настройка приложения

Чтобы управлять группами управления из .NET Core, создайте новое консольное приложение и установите нужные пакеты.

  1. Убедитесь, что установлена последняя версия .NET Core (не ниже 3.1.8). Если она еще не установлена, скачайте ее на сайте dotnet.microsoft.com.

  2. Инициализируйте новое консольное приложение .NET Core с именем mgCreate:

    dotnet new console --name "mgCreate"
    
  3. Перейдите к папке нового проекта и установите нужные пакеты для Политики Azure:

    # Add the Azure Policy package for .NET Core
    dotnet add package Microsoft.Azure.Management.ManagementGroups --version 1.1.1-preview
    
    # Add the Azure app auth package for .NET Core
    dotnet add package Microsoft.Azure.Services.AppAuthentication --version 1.6.1
    
  4. Замените файл program.cs по умолчанию следующим кодом и сохраните обновленный файл:

    using System;
    using System.Collections.Generic;
    using System.Threading.Tasks;
    using Microsoft.IdentityModel.Clients.ActiveDirectory;
    using Microsoft.Rest;
    using Microsoft.Azure.Management.ManagementGroups;
    using Microsoft.Azure.Management.ManagementGroups.Models;
    
    namespace mgCreate
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                string strTenant = args[0];
                string strClientId = args[1];
                string strClientSecret = args[2];
                string strGroupId = args[3];
                string strDisplayName = args[4];
    
                var authContext = new AuthenticationContext($"https://login.microsoftonline.com/{strTenant}");
                var authResult = await authContext.AcquireTokenAsync(
                       "https://management.core.windows.net",
                       new ClientCredential(strClientId, strClientSecret));
    
                using (var client = new ManagementGroupsAPIClient(new TokenCredentials(authResult.AccessToken)))
                {
                    var mgRequest = new CreateManagementGroupRequest
                    {
                        DisplayName = strDisplayName
                    };
                    var response = await client.ManagementGroups.CreateOrUpdateAsync(strGroupId, mgRequest);
                }
            }
        }
    }
    
  5. Скомпилируйте и опубликуйте консольное приложение mgCreate:

    dotnet build
    dotnet publish -o {run-folder}
    

Создание группы управления

В рамках этого краткого руководства вы создадите новую группу управления в корневой группе управления.

  1. Измените каталоги на папку {run-folder}, определенную с помощью предыдущей команды dotnet publish.

  2. Введите следующую команду в окне терминала.

    mgCreate.exe `
       "{tenantId}" `
       "{clientId}" `
       "{clientSecret}" `
       "{groupID}" `
       "{displayName}"
    

В указанных выше командах используются следующие сведения:

  • {tenantId} — замените своим идентификатором клиента.
  • {clientId} — замените идентификатором клиента своего субъекта-службы.
  • {clientSecret} — замените секретом клиента своего субъекта-службы.
  • {groupID} — замените это значение идентификатором новой группы управления.
  • {displayName} — замените это значение понятным именем для новой группы управления.

В результате выполнения в корневой группе управления появится новая группа управления.

Очистка ресурсов

  • Удалите новую группу управления с помощью портала.

  • Если вы хотите удалить консольное приложение .NET Core и установленные пакеты, удалите папку проекта mgCreate.

Следующие шаги

В этом кратком руководстве показано, как создать группу управления для организации иерархии ресурсов. Группа управления может содержать подписки и другие группы управления.

Чтобы узнать больше о группах управления и управлении иерархией ресурсов, см. следующее руководство: