クイック スタート: .NET Core を使用して管理グループを作成する
管理グループは、複数のサブスクリプションのアクセス、ポリシー、コンプライアンスを管理するのに役立つコンテナーです。 これらのコンテナーを作成して、Azure Policy と Azure ロール ベースのアクセス制御で使用できる効果的で効率的な階層を構築します。 管理グループについて詳しくは、「Azure 管理グループでリソースを整理する」をご覧ください。
ディレクトリに作成される最初の管理グループは、完了までに最大 15 分かかる場合があります。 Azure 内でディレクトリの管理グループ サービスを初めて設定する際に実行するプロセスがあります。 プロセスが完了すると、通知を受け取ります。 詳細については、「管理グループの初期セットアップ」を参照してください。
前提条件
Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
clientId と clientSecret を含む Azure サービス プリンシパル。 Azure Policy で使用するサービス プリンシパルがない場合、または新規作成したい場合は、.NET 認証のための Azure 管理ライブラリに関するページを参照してください。 次の手順で実行するので、.NET Core パッケージをインストールする手順はスキップします。
階層の保護が有効になっていない場合、テナント内のすべての Microsoft Entra ID ユーザーは、そのユーザーに割り当てられた管理グループの書き込みアクセス許可なしで管理グループを作成できます。 この新しい管理グループは、ルート管理グループまたは既定の管理グループの子になり、その作成者には所有者のロールが割り当てられます。 管理グループ サービスでは、この機能が許可されるため、ルート レベルでのロールの割り当ては必要ありません。 ルート管理グループが作成された時は、ユーザーはそれにアクセスできません。 管理グループの使用を開始するために、サービスはルート レベルで初期管理グループの作成を許可します。 詳細については、「各ディレクトリのルート管理グループ」を参照してください。
Azure Cloud Shell
Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。
Azure Cloud Shell を開始するには、以下のようにします。
オプション | 例とリンク |
---|---|
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 | |
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 | |
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 |
Azure Cloud Shell を使用するには、以下のようにします。
Cloud Shell を開始します。
コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。
Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。
Enter キーを選択して、コードまたはコマンドを実行します。
アプリケーションのセットアップ
.NET Core で管理グループを管理できるようにするには、新しいコンソール アプリケーションを作成し、必要なパッケージをインストールします。
最新の .NET Core がインストールされていることを確認します (3.1.8 以降)。 まだインストールされていない場合は、dotnet.microsoft.com からダウンロードします。
"mgCreate" という名前の新しい .NET Core コンソール アプリケーションを初期化します。
dotnet new console --name "mgCreate"
新しいプロジェクト フォルダーにディレクトリを変更し、次のように Azure Policy に必要なパッケージをインストールします。
# 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
既定の
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); } } } }
mgCreate
コンソール アプリケーションをビルドして発行します。dotnet build dotnet publish -o {run-folder}
管理グループの作成
このクイックスタートでは、ルート管理グループに新しい管理グループを作成します。
ディレクトリを、前の
dotnet publish
コマンドで定義した{run-folder}
に変更します。ターミナルに次のコマンドを入力します。
mgCreate.exe ` "{tenantId}" ` "{clientId}" ` "{clientSecret}" ` "{groupID}" ` "{displayName}"
上記のコマンドでは次の情報が使用されています。
{tenantId}
- 実際のテナント ID に置き換えます{clientId}
- ご自分のサービス プリンシパルのクライアント ID に置き換えます{clientSecret}
- ご自分のサービス プリンシパルのクライアント シークレットに置き換えます{groupID}
- 新しい管理グループの ID に置き換えます。{displayName}
- 新しい管理グループのフレンドリ名に置き換えます。
その結果、ルート管理グループ内に新しい管理グループが作成されます。
リソースをクリーンアップする
ポータルを使用して新しい管理グループを削除します。
.NET Core コンソール アプリケーションとインストールされているパッケージを削除する場合は、
mgCreate
プロジェクト フォルダーを削除します。
次のステップ
このクイックスタートでは、リソース階層を整理するための管理グループを作成しました。 管理グループには、サブスクリプションや他の管理グループを含めることができます。
管理グループについて、またリソース階層の管理方法について詳しくは、次の記事に進んでください。