これは何?
下記ドキュメントを進めるのに苦労したのでその備忘録です。
レガシ API を使用してプログラムで Azure サブスクリプションを作成する
概要
本手順は下記の流れで行う必要があります。
- サービスプリンシパルの作成
- 各種 ID の取得
- API 実行
1.サービスプリンシパルの作成
"アプリ用の認証情報" とでも呼ぶべき、サービスプリンシパルを作成します。
Azure Portal 上の [Microsoft Entra 管理センター] にて、 [追加] - [アプリ登録] を押下します。
[アプリケーションの登録] 画面に遷移するので、以下を設定後 [登録] を押下します。
名前 : 任意の名称
サポートされているアカウントの種類 : この組織ディレクトリのみに含まれるアカウント ({アカウント名} のみ - シングル テナント)
リダイレクト URI : 任意
作成完了後、サービスプリンシパルの情報画面に遷移します。
この "アプリケーション (クライアント) ID" が "servicePrincipalObjectId" として用いる GUID となります。
2.サービスプリンシパルの登録
Azure Cli をベースに説明します。
実行するコマンドは az account create コマンドで、引数は下記のようになります。
az account create --offer-type "{offer type}" --display-name "disp name" --enrollment-account-object-id "{enrollmentAccountObjectId}" --owner-object-id "{userObjectId}","{servicePrincipalObjectId}"
必須
・ offer-type : サブスクリプションのオファー。下記のどちらか。
a) MS-AZR-0017P (運用環境用)
b) MS-AZR-0148P (開発/テスト用)
・ enrollment-account-object-id : EA 契約番号。コマンド az billing enrollment-account list から取得可能な GUID。
任意
・ display-name : サブスクリプション名
・ owner-object-id : サブスクリプションの Azure RBAC 所有者として追加するユーザーのオブジェクト ID
出典
Microsoft Entra アプリを登録し、サービス プリンシパルを作成する
サービス プリンシパルに Enterprise Agreement ロールを割り当てる
レガシ API を使用してプログラムで Azure サブスクリプションを作成する - 特定の登録アカウントの中にサブスクリプションを作成する