次の方法で共有


サービス プリンシパルに Enterprise Agreement ロールを割り当てる

Azure portal では、Enterprise Agreement (EA) の登録を管理できます。 さまざまなロールを作成して、組織を管理したり、コストを表示したり、サブスクリプションを作成したりすることができます。 この記事は、Microsoft Entra ID サービス プリンシパルで Azure PowerShell と REST API を使用して、これらのタスクの一部を自動化するのに役立ちます。

組織内に複数の EA 課金アカウントがある場合は、EA ロールを各 EA 課金アカウントで Microsoft Entra ID サービス プリンシパルに個別に付与する必要があります。

始める前に、次の記事の内容を理解しておいてください。

REST API を呼び出す方法が必要です。 API にクエリを実行する一般的な方法を次に示します。

サービス プリンシパルを作成および認証する

サービス プリンシパルを使用して EA アクションを自動化するには、Microsoft Entra アプリ ID を作成する必要があります。これにより、自動化された方法で認証できます。

これらの記事の手順に従って、サービス プリンシパルを作成し、使用して認証します。

アプリケーション登録ページの例を次に示します。

アプリケーションを登録するようすを示したスクリーンショット。

サービス プリンシパルとテナント ID を検索する

サービス プリンシパルのオブジェクト ID とテナント ID が必要です。 この情報は、この記事で後述するアクセス許可の割り当て操作に必要になります。 すべてのアプリケーションは、テナント内の Microsoft Entra ID に登録されます。 アプリの登録が完了すると、2 種類のオブジェクトが作成されます。

  • アプリケーション オブジェクト - アプリケーション ID は [エンタープライズ アプリケーション] に表示されます。 EA ロールを付与するために ID を使用 "しないでください"。
  • サービス プリンシパル オブジェクト - サービス プリンシパル オブジェクトは、Microsoft Entra ID の [エンタープライズ登録] ウィンドウに表示されるものです。 オブジェクト ID は、EA ロールをサービス プリンシパルに付与するために使用されます。
  1. Microsoft Entra ID を開き、[エンタープライズ アプリケーション] を選択します。

  2. 一覧内で対象のアプリを見つけます。

    サンプルのエンタープライズ アプリケーションを示したスクリーンショット。

  3. アプリを選択して、アプリケーション ID とオブジェクト ID を見つけます。

    エンタープライズ アプリケーションのアプリケーション ID とオブジェクト ID を示したスクリーンショット。

  4. Microsoft Entra ID の [概要] ページに移動して、テナント ID を見つけます。

    テナント ID を示すスクリーンショット。

Microsoft Entra テナント ID の値は、aaaabbbb-0000-cccc-1111-dddd2222eeee 形式の GUID のようになります。

サービス プリンシパルに割り当てることができるアクセス許可

この記事の後半では、EA ロールを使用して動作するためのアクセス許可を Microsoft Entra アプリに付与します。 サービス プリンシパルには、次のロールのみを割り当てることができます。また、示されているとおりのロール定義 ID が必要になります。

ロール 許可されるアクション ロール定義 ID
EnrollmentReader 登録、部署、アカウントの範囲でデータをご覧になれます。 データには、テナント間を含め、スコープ内のすべてのサブスクリプションの料金が含まれます。 登録に関連付けられている Azure 前払い (旧称: 年額コミットメント) の残高を確認できます。 24f8edb6-1668-4659-b5e2-40bb5f3a7d7e
EA 購入者 予約注文を購入し、予約トランザクションを表示できます。 EnrollmentReader のすべてのアクセス許可を持ち、これには DepartmentReader のすべてのアクセス許可があります。 あらゆるアカウントとサブスクリプションの使用状況と料金を確認できます。 登録に関連付けられている Azure 前払い (旧称: 年額コミットメント) の残高を確認できます。 da6647fb-7651-49ee-be91-c43c4877f0c4
DepartmentReader 管理している部署について、使用状況の詳細をダウンロードできます。 自分の部署に関連付けられている使用状況と料金を確認できます。 db609904-a47f-4794-9be8-9bd86fbffd8a
SubscriptionCreator 一定範囲のアカウントで、新しいサブスクリプションを作成できます。 a0bcee42-bf30-4d1b-926a-48d21664ef71
パートナー管理者リーダー パートナー組織のすべての登録のデータを表示します。 このロールは、次の API でのみ使用できます。
- 残高
- V2 をエクスポートします (api-version 2025-03-01 のみ)
- コスト詳細レポートの生成
- マーケットプレイス
- 消費価格シート
- Cost Management Price シートのダウンロード
- 予約の詳細レポートの生成
- 予約の概要
- 予約に関する推奨事項
- 予約トランザクション
4f6144c0-a809-4c55-b3c8-7f9b7b15a1bf
  • 各サービス プリンシパル ロールを割り当てるには、次のユーザー ロールが必要です。
    • EnrollmentReader: ユーザー割り当てには "登録ライター" ロールが必要です。
    • DepartmentReader: ユーザー割り当てには、"登録ライター" または "部署ライター" ロールが必要です。
    • SubscriptionCreator: 割り当てを行うユーザーは登録アカウントの所有者 (EA 管理者) である必要があります。
    • EA 購入者: ユーザー割り当てには "登録ライター" ロールが必要です。
    • パートナー管理者リーダー: ユーザー割り当てには、"パートナー管理者" ロールが必要です。

これらのロールはすべて、プログラムによる方法で作成され、Azure portal には表示されず、プログラムでのみ使用されます。

EA ロールをサービス プリンシパルに付与するときは、必須のプロパティ billingRoleAssignmentName を使う必要があります。 このパラメーターは、ユーザーが指定する必要がある一意の GUID です。 GUID は、PowerShell コマンド New-Guid を使って生成できます。 Online GUID / UUID Generator Web サイトを使って一意の GUID を生成することもできます。

サービス プリンシパルは、1 つのロールのみを持つことができます。

サービス プリンシパルに登録アカウントのロールのアクセス許可を割り当てる

  1. REST API に関する記事「ロールの割り当て - Put」をお読みください。 記事を読んでいる間に、[使ってみる] を選択して、サービス プリンシパルの使用を開始します。

    Put に関する記事の中の [使ってみる] オプションを示したスクリーンショット。

  2. 自分のアカウント資格情報を使用して、割り当てる登録アクセス権があるテナントにサインインします。

  3. API 要求の一環として、次のパラメーターを指定します。

    • billingAccountName: このパラメーターは、課金アカウント ID です。 これは、Azure portal の [コストの管理と請求] の [概要] ページで見つけることができます。

      • パートナー管理者閲覧者ロールの場合は、課金アカウント名のpcn.{PCN}形式を使用します。ここで、{PCN}はパートナー組織のパートナー顧客番号です。
      • その他のすべてのロールについては、Azure portal に示されている標準の課金アカウント ID を使用します。

      課金アカウント ID を示したスクリーンショット。

    • billingRoleAssignmentName: このパラメーターは一意の GUID であり、指定が必要です。 GUID は、PowerShell コマンド New-Guid を使って生成できます。 Online GUID / UUID Generator Web サイトを使って一意の GUID を生成することもできます。

    • api-version: 2019-10-01-preview バージョンを使用します。 「ロールの割り当て - Put」の「例」のところにある要求本文のサンプルを使用します。

      要求の本文には、使用する必要のある 3 つのパラメーターを含む JSON コードが含まれています。

      パラメーター 参照先
      properties.principalId オブジェクト ID の値です。 「サービス プリンシパルとテナント ID を検索する」を参照してください。
      properties.principalTenantId サービス プリンシパルとテナント ID を検索する」を参照してください。
      properties.roleDefinitionId /providers/Microsoft.Billing/billingAccounts/{BillingAccountName}/billingRoleDefinitions/24f8edb6-1668-4659-b5e2-40bb5f3a7d7e

      課金アカウント名は、API のパラメーターで使用したパラメーターと同じです。 これは、Azure portal で確認できる登録 ID です。

      24f8edb6-1668-4659-b5e2-40bb5f3a7d7e は EnrollmentReader の請求先のロール定義 ID であることに注意してください。

  4. [実行] を選択してコマンドを起動します。

    「ロールの割り当て」の例のスクリーンショット。サンプルの情報を入力して [実行] の準備が整っている状態です。

    200 OK という応答は、サービス プリンシパルが正常に追加されたことを示します。

これで、サービス プリンシパルを使用して EA API シリーズに自動的にアクセスできます。 サービス プリンシパルには EnrollmentReader ロールがあります。

サービス プリンシパルに EA 購入者ロールのアクセス許可を割り当てる

EA 購入者ロールについては、登録リーダーのものと同じ手順を使用します。 次の例を使用して、roleDefinitionId を指定します。

"/providers/Microsoft.Billing/billingAccounts/1111111/billingRoleDefinitions/ da6647fb-7651-49ee-be91-c43c4877f0c4"

サービス プリンシパルに部署リーダー ロールを割り当てる

  1. REST API に関する記事「登録部署のロールの割り当て - Put」をお読みください。 記事を読んでいる間に、[使ってみる] を選択します。

    「登録部署のロールの割り当て - Put」の記事の [使ってみる] オプションを示したスクリーンショット。

  2. 自分のアカウント資格情報を使用して、割り当てる登録アクセス権があるテナントにサインインします。

  3. API 要求の一環として、次のパラメーターを指定します。

    • billingAccountName: このパラメーターは、課金アカウント ID です。 これは、Azure portal の [コストの管理と請求] の [概要] ページで見つけることができます。

      課金アカウント ID を示したスクリーンショット。

    • billingRoleAssignmentName: このパラメーターは一意の GUID であり、指定が必要です。 GUID は、PowerShell コマンド New-Guid を使って生成できます。 Online GUID / UUID Generator Web サイトを使って一意の GUID を生成することもできます。

    • departmentName: このパラメーターは部署 ID です。 部署 ID は、Azure portal の [コストの管理と請求]>[部門] ページで確認できます。

      この例では、ACE 部署を使用しました。 この例の ID は 84819 です。

      部署 ID の例を示したスクリーンショット。

    • api-version: 2019-10-01-preview バージョンを使用します。 「登録部署のロールの割り当て - Put」にあるサンプルを使用します。

      要求の本文には、使用する必要のある 3 つのパラメーターを含む JSON コードが含まれています。

      パラメーター 参照先
      properties.principalId オブジェクト ID の値です。 「サービス プリンシパルとテナント ID を検索する」を参照してください。
      properties.principalTenantId サービス プリンシパルとテナント ID を検索する」を参照してください。
      properties.roleDefinitionId /providers/Microsoft.Billing/billingAccounts/{BillingAccountName}/billingRoleDefinitions/db609904-a47f-4794-9be8-9bd86fbffd8a

      課金アカウント名は、API のパラメーターで使用したパラメーターと同じです。 これは、Azure portal で確認できる登録 ID です。

      請求先のロール定義 ID db609904-a47f-4794-9be8-9bd86fbffd8a は、部署リーダーのものです。

  4. [実行] を選択してコマンドを起動します。

    「登録部署のロールの割り当て - Put」で REST の例の [使ってみる] を選択し、サンプルの情報を入力して [実行] の準備が整っている状態を示したスクリーンショット。

    200 OK という応答は、サービス プリンシパルが正常に追加されたことを示します。

これで、サービス プリンシパルを使用して EA API シリーズに自動的にアクセスできます。 サービス プリンシパルには DepartmentReader ロールがあります。

サービス プリンシパルにサブスクリプション作成者ロールを割り当てる

  1. 記事「登録アカウントのロールの割り当て - Put」をお読みください。 読んでいる間に、[使ってみる] を選択して、サービス プリンシパルにサブスクリプション作成者ロールを割り当てます。

    「登録アカウントのロールの割り当て - Put」の記事の [使ってみる] オプションを示したスクリーンショット。

  2. 自分のアカウント資格情報を使用して、割り当てる登録アクセス権があるテナントにサインインします。

  3. API 要求の一環として、次のパラメーターを指定します。 記事「登録アカウントのロールの割り当て - Put」の「URI パラメーター」をお読みください。

    • billingAccountName: このパラメーターは、課金アカウント ID です。 これは、Azure portal の [コストの管理と請求] の [概要] ページで見つけることができます。

      課金アカウント ID を示すスクリーンショット。

    • billingRoleAssignmentName: このパラメーターは一意の GUID であり、指定が必要です。 GUID は、PowerShell コマンド New-Guid を使って生成できます。 Online GUID/UUID Generator Web サイトを使って一意の GUID を生成することもできます。

    • enrollmentAccountName: このパラメーターは、アカウント ID です。 Azure portal の [コストの管理と請求] ページで、対象のアカウント名のアカウント ID を見つけます。

      この例では、GTM Test Account を使用します。 ID は 196987 です。

      アカウント ID を示したスクリーンショット。

    • api-version: 2019-10-01-preview バージョンを使用します。 「登録部署のロールの割り当て - Put」の「例」のところにあるサンプルを使用します。

      要求の本文には、使用する必要のある 3 つのパラメーターを含む JSON コードが含まれています。

      パラメーター 参照先
      properties.principalId オブジェクト ID の値です。 「サービス プリンシパルとテナント ID を検索する」を参照してください。
      properties.principalTenantId サービス プリンシパルとテナント ID を検索する」を参照してください。
      properties.roleDefinitionId /providers/Microsoft.Billing/billingAccounts/{BillingAccountID}/enrollmentAccounts/{enrollmentAccountID}/billingRoleDefinitions/a0bcee42-bf30-4d1b-926a-48d21664ef71

      課金アカウント名は、API のパラメーターで使用したパラメーターと同じです。 これは、Azure portal で確認できる登録 ID です。

      請求先のロール定義 ID a0bcee42-bf30-4d1b-926a-48d21664ef71 は、サブスクリプション作成者ロールのものです。

  4. [実行] を選択してコマンドを起動します。

    「登録アカウントのロールの割り当て - Put」の記事の [使ってみる] オプションを示したスクリーンショット。

    200 OK という応答は、サービス プリンシパルが正常に追加されたことを示します。

これで、サービス プリンシパルを使用して EA API シリーズに自動的にアクセスできます。 サービス プリンシパルには SubscriptionCreator ロールが割り当てられています。

サービス プリンシパルのロールの割り当てを確認する

サービス プリンシパルのロールの割り当ては、Azure portal に表示されません。 サブスクリプション作成者ロールを含む登録アカウント ロールの割り当てを表示するには、Billing Role Assignments - List By Enrollment Account - REST API (Azure Billing) API を使用します。 この API を使用して、ロールの割り当てが成功したことを確認します。

トラブルシューティング

EA ロールを付与したエンタープライズ アプリケーションのオブジェクト ID を特定して使用する必要があります。 他のアプリケーションのオブジェクト ID を使用すると、API 呼び出しは失敗します。 正しいエンタープライズ アプリケーションのオブジェクト ID を使用していることを確認します。

API 呼び出し時に次のエラーが発生した場合は、[アプリの登録] にあるサービス プリンシパル オブジェクト ID の値が正しく使用されていない可能性があります。 このエラーを解決するには、アプリ登録ではなく、エンタープライズ アプリケーションのサービス プリンシパル オブジェクト ID を使用していることを確認します。

The provided principal Tenant Id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and principal Object Id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx are not valid

次のステップ

マイクロソフト エンタープライズ契約の課金アカウントの概要