この記事は、Microsoft Entra テナントをまたぐ Microsoft 顧客契約 (MCA) サブスクリプションをプログラムで作成する場合に役立ちます。 状況によっては、Microsoft Entra テナントをまたいで MCA サブスクリプションを作成し、それらを 1 つの課金アカウントに関連付けることが必要になる場合があります。 このような状況の例としては、ホストされている顧客サービスを内部 IT サービスから分離する SaaS プロバイダーや、ペイメント カード業界 (PCI) など、厳格な規制コンプライアンス要件がある内部環境などがあります。
テナント間で MCA サブスクリプションを作成するプロセスは、実質的に 2 段階のプロセスです。 契約元の Microsoft Entra テナントと関連付けるテナントでアクションを実行する必要があります。 この記事では、次の用語を使用しています。
- 契約元の Microsoft Entra ID (source.onmicrosoft.com)。 これは、MCA 課金アカウントが存在する移行元テナントを表します。
- 関連付けるクラウドの Microsoft Entra ID (destination.onmicrosoft.com)。 これは、新しい MCA サブスクリプションが作成される移行先テナントを表します。
プログラムでサポート プランを作成することはできません。 新しいサポート プランを購入するか、Azure portal でアップグレードすることができます。 [ヘルプとサポート] に移動します。 ページの上部にある [ 適切なサポート プランの選択] を選択します。
注
Microsoft Entra テナントをまたぐ Azure MCA サブスクリプションをプログラムで作成する方法は 2 つあります。 この記事で説明する方法には、移行先テナントで作成されたサブスクリプションに対するソース テナント ガバナンスを提供する 2 フェーズ プロセスが含まれます。 移行先テナントでのサブスクリプションの作成をより厳密に制御する必要がある場合は、この方法をお勧めします。 関連付けられたテナントを使用するもう 1 つの方法は、管理オーバーヘッドを最小限に抑え、MCA サブスクリプションを作成するアクセス許可を移行先テナントに完全に転送することで、サブスクリプション作成プロセスを効率化する簡略化されたバージョンです。
前提条件
次のテナントが既に作成されている必要があります。
- アクティブな Microsoft 顧客契約の課金アカウントがある、契約元の Microsoft Entra テナント。 アクティブな MCA を持っていない場合は、作成できます。 詳細については、「Azure - サインアップ」を参照してください。
- MCA が属するテナントとは別の関連付ける Microsoft Entra テナント。 新しい Microsoft Entra テナントを作成するには、 Microsoft Entra テナントのセットアップに関するページを参照してください。
アプリケーションのセットアップ
次のセクションの情報を使用して、移行元と移行先のテナントで必要なアプリケーションを設定および構成します。
移行元テナントにアプリケーションを登録する
プログラムによって MCA サブスクリプションを作成するには、Microsoft Entra アプリケーションを登録し、適切な Azure ロールベースのアクセス制御 (RBAC) アクセス許可を付与する必要があります。 このステップでは、Microsoft Entra アプリケーションを登録するためのアクセス許可を持つアカウントで、契約元のテナント (source.onmicrosoft.com) にサインインするようにします。
「クイック スタート: Microsoft ID プラットフォームにアプリケーションを登録する」の手順に従います。
このプロセスでは、「 アプリケーションの登録 」セクションと「 資格情報の追加 」セクションに従う必要があります。
次の情報を保存して、環境をテストして構成します。
- ディレクトリ (テナント) ID
- アプリケーション (クライアント) ID
- オブジェクト ID
- 生成されたアプリ シークレット値。 値は作成時にのみ表示されます。
移行元テナントでアプリケーションの課金ロールの割り当てを作成する
アプリケーションの適切なスコープと 課金ロール を決定するには、「 Azure での Microsoft 顧客契約の管理者ロールについて」の情報を確認します。
スコープとロールを決定したら、 Azure portal の課金ロールの管理に 関するページの情報を使用して、アプリケーションのロールの割り当てを作成します。 先のセクションでアプリケーションを登録したときに使用した名前を使用して、アプリケーションを検索します。
移行先テナントにアプリケーションを登録する
関連付けるテナント (destination.onmicrosoft.com) からの MCA サブスクリプションを承諾するには、Microsoft Entra アプリケーションを登録し、課金管理者 Microsoft Entra ロールに追加する必要があります。 このステップでは、Microsoft Entra アプリケーションを登録するためのアクセス許可を持つアカウントで、関連付けるテナント (destination.onmicrosoft.com) にサインインするようにします。 また、課金管理者ロールのアクセス許可も必要です。
前述と同じ手順に従って、移行元テナントにアプリケーションを登録します。 次の情報を保存して、環境をテストして構成します。
- ディレクトリ (テナント) ID
- アプリケーション (クライアント) ID
- オブジェクト ID
- 生成されたアプリ シークレット値。 値は作成時にのみ表示されます。
関連付けるアプリケーションを課金管理者 Microsoft Entra ロールに追加する
前のセクションで作成した移行先アプリケーションを、移行先テナントの課金管理者 Microsoft Entra ロールに追加するには、「 Microsoft Entra ID を持つユーザーに管理者ロールと非管理者ロールを割り当てる」の情報を使用します。
プログラムによる Azure サブスクリプションの作成
アプリケーションとアクセス許可が既に設定されている場合は、次の情報を使用して、プログラムによってサブスクリプションを作成します。
移行先アプリケーション サービス プリンシパルの ID を取得する
移行元テナントで MCA サブスクリプションを作成するときは、移行先テナントのアプリケーションのサービス プリンシパルまたは SPN を所有者として指定する必要があります。 次のいずれかの方法を使用して ID を取得します。 どちらの方法でも、空の GUID に使用する値は、先に作成した移行先テナント アプリケーションのアプリケーション (クライアント) ID です。
Azure CLI(Azure コマンドライン インターフェイス)
Azure CLI にサインインし、 az ad sp show コマンドを使用します。
az ad sp show --id aaaaaaaa-bbbb-cccc-1111-222222222222 --query 'id'
Azure PowerShell
Azure PowerShell にサインインし、 Get-AzADServicePrincipal コマンドレットを 使用します。
Get-AzADServicePrincipal -ApplicationId 00001111-aaaa-2222-bbbb-3333cccc4444 | Select-Object -Property Id
コマンドによって返された Id
値を保存します。
サブスクリプションを作成する
次の情報を使用して、移行元テナントにサブスクリプションを作成します。
移行元アプリケーションのアクセス トークンを取得する
この {{placeholders}}
を実際のテナント ID、アプリケーション (クライアント) ID、およびソース テナント アプリケーションを先に作成したときに保存したアプリ シークレットの値に置き換えます。
要求を呼び出し、応答の access_token
値を保存して、次の手順で使用します。
POST https://login.microsoftonline.com/{{tenant_id}}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&client_id={{client_id}}&client_secret={{app_secret}}&resource=https%3A%2F%2Fmanagement.azure.com%2F
課金アカウント、プロファイル、請求書セクションの ID を取得する
アクセス権を持つ課金アカウントの検索と課金プロファイルの検索と請求書セクションの情報を使用して、課金アカウント、プロファイル、請求書セクション ID を取得するためのサブスクリプション セクションを作成します。
注
先に取得したアクセス トークンと共に REST メソッドを使用して、[アプリケーション セットアップ] セクションでアプリケーション課金ロールの割り当てが正常に作成されたことを確認することをお勧めします。
サブスクリプションを作成する
課金アカウント、プロファイル、請求書セクションの ID を使用すると、サブスクリプションの作成に必要なすべての情報が得られます。
-
{{guid}}
: 有効な GUID を指定できます。 -
{{access_token}}
: 以前に取得したソース テナント アプリケーションのアクセス トークン。 -
{{billing_account}}
: 以前に取得した課金アカウントの ID。 -
{{billing_profile}}
: 以前に取得した課金プロファイルの ID。 -
{{invoice_section}}
: 以前に取得した請求書セクションの ID。 -
{{destination_tenant_id}}
: 以前に移行先テナント アプリケーションを作成したときに示された移行先テナントの ID。 -
{{destination_service_principal_id}}
: 先に「宛先アプリケーション・サービス・プリンシパルの ID を取得する」セクションから 取得した宛先テナント・サービス・プリンシパルの ID 。
要求を送信し、応答内の Location
ヘッダーの値をメモします。
PUT https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01
Authorization: Bearer {{access_token}}
Content-Type: application/json
{
"properties": {
"displayName": "{{subscription_name}}",
"workload": "Production",
"billingScope": "/billingAccounts/{{billing_account}}/billingProfiles/{{billing_profile}}/invoiceSections/{{invoice_section}}",
"subscriptionId": null,
"additionalProperties": {
"managementGroupId": null,
"subscriptionTenantId": "{{destination_tenant_id}}",
"subscriptionOwnerId": "{{destination_service_principal_id}}"
}
}
}
サブスクリプションの所有権を承諾する
プロセスを完了する最後のフェーズは、サブスクリプションの所有権を承諾することです。
移行先アプリケーションのアクセス トークンを取得する
この {{placeholders}}
を、実際のテナント ID、アプリケーション (クライアント) ID、および以前に移行先テナント アプリケーションを作成したときに保存したアプリ シークレットの値に置き換えます。
要求を呼び出し、次の手順のために応答の access_token
値を保存します。
POST https://login.microsoftonline.com/{{tenant_id}}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&client_id={{client_id}}&client_secret={{app_secret}}&resource=https%3A%2F%2Fmanagement.azure.com%2F
所有権を承諾する
次の情報を使用して、移行先テナントのサブスクリプションの所有権を承諾します。
-
{{subscription_id}}
: [サブスクリプションエイリアスの作成] セクションで 作成されたサブスクリプション の ID。 これは、メモした場所ヘッダーにあります。 -
{{access_token}}
: 前の手順で作成したアクセス トークン。 -
{{subscription_display_name}}
: Azure 環境内のサブスクリプションの表示名。
POST https://management.azure.com/providers/Microsoft.Subscription/subscriptions/{{subscription_id}}/acceptOwnership?api-version=2021-10-01
Authorization: Bearer {{access_token}}
Content-Type: application/json
{
"properties": {
"displayName": "{{subscription_display_name}}",
"managementGroupId": null
}
}
次のステップ
- サブスクリプションを作成し終えたら、他のユーザーおよびサービス プリンシパルでその機能を利用できるようになります。 詳細については、「 Azure Enterprise サブスクリプションを作成するためのアクセス権の付与 (プレビュー)」を参照してください。
- 管理グループを使用して多数のサブスクリプションを管理する方法の詳細については、「 Azure 管理グループを使用してリソースを整理する」を参照してください。
- サブスクリプションの管理グループを変更するには、「サブスクリプションの 移動」を参照してください。