Share via


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

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

Note

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

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

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

サービス プリンシパルを使用して 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 を示すスクリーンショット。

Note

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

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

この記事の後半では、EA ロールを使用して動作するためのアクセス許可を AzureMicrosoft アプリに付与します。 サービス プリンシパルには、次のロールのみを割り当てることができます。また、示されているとおりのロール定義 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
  • サービス プリンシパルに EnrollmentReader ロールを割り当てることができるのは、登録ライター ロールが割り当てられているユーザーのみです。 サービス プリンシパルに割り当てられた EnrollmentReader ロールは、EA ポータルには表示されません。 これは、プログラムによって作成され、プログラムによる使用のみを目的としています。
  • サービス プリンシパルに DepartmentReader ロールを割り当てることができるのは、登録ライター ロールまたは部署ライター ロールが割り当てられているユーザーのみです。
  • サービス プリンシパルに SubscriptionCreator ロールを割り当てることができるのは、登録アカウントの所有者となっているユーザーのみです (EA 管理者)。 このロールは Azure portal に表示されません。 これは、プログラムによって作成され、プログラムによる使用のみを目的としています。
  • 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 の [コストの管理と請求] の [概要] ページで見つけることができます。

      課金アカウント 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

次のステップ

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