クイックスタート: Go を使用して管理グループを作成する

管理グループは、複数のサブスクリプションのアクセス、ポリシー、コンプライアンスを管理するのに役立つコンテナーです。 これらのコンテナーを作成して、Azure PolicyAzure ロール ベースのアクセス制御で使用できる効果的で効率的な階層を構築します。 管理グループについて詳しくは、「Azure 管理グループでリソースを整理する」をご覧ください。

ディレクトリに作成される最初の管理グループは、完了までに最大 15 分かかる場合があります。 Azure 内でディレクトリの管理グループ サービスを初めて設定する際に実行するプロセスがあります。 プロセスが完了すると、通知を受け取ります。 詳細については、「管理グループの初期セットアップ」を参照してください。

前提条件

  • Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

  • clientIdclientSecret を含む Azure サービス プリンシパル。 Azure Policy で使用するサービス プリンシパルがない場合、または新規作成したい場合は、.NET 認証のための Azure 管理ライブラリに関するページを参照してください。 次の手順で実行するので、.NET Core パッケージをインストールする手順はスキップします。

  • 階層の保護が有効になっていない場合、テナント内のすべての Azure AD ユーザーは、そのユーザーに割り当てられた管理グループの書き込みアクセス許可なしで管理グループを作成できます。 この新しい管理グループは、ルート管理グループ (既定の管理グループ) の子になり、作成者には "所有者" ロールの割り当てが付与されます。 管理グループ サービスでは、この機能が許可されるため、ルート レベルでのロールの割り当ては必要ありません。 ルート管理グループは、作成されると、どのユーザーもアクセスできません。 管理グループの使用を開始する場合に Azure AD の全体管理者を見つけるという困難を回避するために、ルート レベルで最初の管理グループを作成できるようになっています。

Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには、以下のようにします。

オプション 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Button to launch Azure Cloud Shell.
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell を使用するには、以下のようにします。

  1. Cloud Shell を開始します。

  2. コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。

  4. Enter キーを選択して、コードまたはコマンドを実行します。

管理グループ パッケージを追加する

Go で管理グループを管理できるようにするには、パッケージを追加する必要があります。 このパッケージは、Windows 10 の bash やローカルにインストールされている場合も含め、Go を使用できる場所ならどこでも動作します。

  1. 最新の Go がインストールされていることを確認します (1.15 以降)。 まだインストールされていない場合は、Golang.org からダウンロードします。

  2. 最新の Azure CLI がインストールされていることを確認します (2.5.1 以降)。 まだインストールされていない場合は、Azure CLI のインストールに関するページを参照してください。

    Note

    Azure CLI は、次の例の auth.NewAuthorizerFromCLI() メソッドを Go で使用できるようにするために必要です。 その他のオプションについては、「Azure SDK for Go - その他の認証の詳細」を参照してください。

  3. Azure CLI から認証します。

    az login
    
  4. 選択した Go 環境で、管理グループに必要なパッケージをインストールします。

    # Add the management group package for Go
    go install github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-05-01/managementgroups@latest
    
    # Add the Azure auth package for Go
    go install github.com/Azure/go-autorest/autorest/azure/auth@latest
    

アプリケーションのセットアップ

選択した環境に Go パッケージを追加したら、管理グループを作成できるように Go アプリケーションをセットアップします。

  1. Go アプリケーションを作成し、次のソースを mgCreate.go として保存します。

    package main
    
    import (
     "context"
     "fmt"
     "os"
    
     mg "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-05-01/managementgroups"
     "github.com/Azure/go-autorest/autorest/azure/auth"
    )
    
    func main() {
     // Get variables from command line arguments
     var mgName = os.Args[1]
    
     // Create and authorize a client
     mgClient := mg.NewClient()
     authorizer, err := auth.NewAuthorizerFromCLI()
     if err == nil {
     	mgClient.Authorizer = authorizer
     } else {
     	fmt.Printf(err.Error())
     }
    
     // Create the request
     Request := mg.CreateManagementGroupRequest{
     	Name: &mgName,
     }
    
     // Run the query and get the results
     var results, queryErr = mgClient.CreateOrUpdate(context.Background(), mgName, Request, "no-cache")
     if queryErr == nil {
     	fmt.Printf("Results: " + fmt.Sprint(results) + "\n")
     } else {
     	fmt.Printf(queryErr.Error())
     }
    }
    
  2. Go アプリケーションをビルドします。

    go build mgCreate.go
    
  3. コンパイルされた Go アプリケーションを使用して管理グループを作成します。 <Name> を新しい管理グループの名前に置き換えます。

    mgCreate "<Name>"
    

その結果、ルート管理グループ内に新しい管理グループが作成されます。

リソースをクリーンアップする

インストールしたパッケージを、お使いの Go 環境から削除する場合は、次のコマンドを使用します。

# Remove the installed packages from the Go environment
go clean -i github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-05-01/managementgroups
go clean -i github.com/Azure/go-autorest/autorest/azure/auth

次のステップ

このクイックスタートでは、リソース階層を整理するための管理グループを作成しました。 管理グループには、サブスクリプションや他の管理グループを含めることができます。

管理グループについて、またリソース階層の管理方法について詳しくは、次の記事に進んでください。