Azure Enterprise サブスクリプションを作成する権限を付与する (レガシ)

Enterprise Agreement (EA) を締結している Azure の顧客は、自分のアカウントに課金されるサブスクリプションを作成する権限を別のユーザーまたはサービス プリンシパルに付与できます。 この記事では、Azure ロール ベースのアクセス制御 (Azure RBAC) を使用して、サブスクリプションの作成機能を共有する方法と、サブスクリプションの作成を監査する方法について説明します。 共有するアカウントに所有者ロールが必要です。

Note

  • この API は、サブスクリプション作成用のレガシ API との組み合わせでのみ正しく動作します。
  • レガシAPIを使用する特別なニーズがない限り、最新のAPIバージョンについては最新のGAバージョンの情報を使用する必要があります。 Enrollment Account Role Assignments - Put を参照して、最新の API で EA サブスクリプションを作成する権限を付与します。
  • より新しい API を使用するために移行する場合は、2019-10-01-preview を使用して、所有者のアクセス許可を再度付与する必要があります。 以下の API を使用する以前の構成が、より新しい API で使用できるよう自動的に変換されることはありません。

注意

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、「Azure PowerShell のインストール」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

アクセス権の付与

登録アカウントでサブスクリプションを作成するには、ユーザーがそのアカウントに対して Azure RBAC 所有者ロールを持っている必要があります。 次の手順に従うことによって、ユーザーまたはユーザー グループに、登録アカウントに対する Azure RBAC 所有者ロールを付与できます。

  1. アクセス権を付与する登録アカウントのオブジェクト ID を取得します

    登録アカウントに対する Azure RBAC 所有者ロールを他のユーザーに付与するには、アカウント オーナーまたはそのアカウントの Azure RBAC 所有者である必要があります。

    自分がアクセスできるすべての登録アカウントを一覧表示するための要求:

    GET https://management.azure.com/providers/Microsoft.Billing/enrollmentAccounts?api-version=2018-03-01-preview
    

    自分がアクセスできるすべての登録アカウントの一覧が Azure から返されます。

    {
      "value": [
        {
          "id": "/providers/Microsoft.Billing/enrollmentAccounts/747ddfe5-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "name": "747ddfe5-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "type": "Microsoft.Billing/enrollmentAccounts",
          "properties": {
            "principalName": "SignUpEngineering@contoso.com"
          }
        },
        {
          "id": "/providers/Microsoft.Billing/enrollmentAccounts/4cd2fcf6-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "name": "4cd2fcf6-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "type": "Microsoft.Billing/enrollmentAccounts",
          "properties": {
            "principalName": "BillingPlatformTeam@contoso.com"
          }
        }
      ]
    }
    

    principalName プロパティを使用して、Azure RBAC 所有者のアクセス権を付与するアカウントを指定します。 そのアカウントの name をコピーします。 たとえば、SignUpEngineering@contoso.com 登録アカウントに Azure RBAC 所有者のアクセス権を付与する場合、747ddfe5-xxxx-xxxx-xxxx-xxxxxxxxxxxx をコピーします。 それは登録アカウントのオブジェクト ID です。 次のステップでこの値を enrollmentAccountObjectId として使用できるよう、どこかに貼り付けておきます。

    principalName プロパティを使用して、Azure RBAC 所有者のアクセス権を付与するアカウントを指定します。 そのアカウントの name をコピーします。 たとえば、SignUpEngineering@contoso.com 登録アカウントに Azure RBAC 所有者のアクセス権を付与する場合、747ddfe5-xxxx-xxxx-xxxx-xxxxxxxxxxxx をコピーします。 それは登録アカウントのオブジェクト ID です。 次のステップでこの値を enrollmentAccountObjectId として使用できるよう、どこかに貼り付けておきます。

  2. Azure RBAC 所有者ロールを付与するユーザーまたはグループのオブジェクト ID を取得します

    1. Azure portal で、Microsoft Entra ID を検索します。
    2. ユーザーにアクセス権を付与する場合は、左側のメニューで [ユーザー] を選択します。 グループにアクセス権を付与するには、 [グループ] を選択します。
    3. Azure RBAC 所有者ロールを付与するユーザーまたはグループを選択します。
    4. ユーザーを選択した場合、オブジェクト ID は [プロファイル] ページにあります。 グループを選択した場合、オブジェクト ID は [概要] ページにあります。 テキスト ボックスの右側にあるアイコンを選択して、ObjectID をコピーします。 次のステップで userObjectId として使用できるように、それをどこかに貼り付けておきます。
  3. ユーザーまたはグループに、登録アカウントに対する Azure RBAC 所有者ロールを付与します

    最初の 2 つの手順で収集した値を使用して、ユーザーまたはグループに、登録アカウントに対する Azure RBAC 所有者ロールを付与します。

    <enrollmentAccountObjectId> を最初の手順でコピーした name (747ddfe5-xxxx-xxxx-xxxx-xxxxxxxxxxxx) で置き換えて、次のコマンドを実行します。 <userObjectId> は、2 番目の手順でコピーしたオブジェクト ID で置き換えます。

    PUT  https://management.azure.com/providers/Microsoft.Billing/enrollmentAccounts/<enrollmentAccountObjectId>/providers/Microsoft.Authorization/roleAssignments/<roleAssignmentGuid>?api-version=2015-07-01
    
    {
      "properties": {
        "roleDefinitionId": "/providers/Microsoft.Billing/enrollmentAccounts/<enrollmentAccountObjectId>/providers/Microsoft.Authorization/roleDefinitions/<ownerRoleDefinitionId>",
        "principalId": "<userObjectId>"
      }
    }
    

    登録アカウントのスコープで所有者ロールが付与されると、ロール割り当ての情報が Azure から返されます。

    {
      "properties": {
        "roleDefinitionId": "/providers/Microsoft.Billing/enrollmentAccounts/providers/Microsoft.Authorization/roleDefinitions/<ownerRoleDefinitionId>",
        "principalId": "<userObjectId>",
        "scope": "/providers/Microsoft.Billing/enrollmentAccounts/747ddfe5-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "createdOn": "2018-03-05T08:36:26.4014813Z",
        "updatedOn": "2018-03-05T08:36:26.4014813Z",
        "createdBy": "<assignerObjectId>",
        "updatedBy": "<assignerObjectId>"
      },
      "id": "/providers/Microsoft.Billing/enrollmentAccounts/providers/Microsoft.Authorization/roleDefinitions/<ownerRoleDefinitionId>",
      "type": "Microsoft.Authorization/roleAssignments",
      "name": "<roleAssignmentGuid>"
    }
    

アクティビティ ログを使用してサブスクリプションを作成した監査

この API を使用して作成されたサブスクリプションを追跡するには、Tenant Activity Log API を使用します。 現時点では、PowerShell、CLI、または Azure Portal を使用してサブスクリプションの作成を追跡することはできません。

  1. Microsoft Entra テナントのテナント管理者は、アクセス権限を昇格してから、スコープ内の監査ユーザーに閲覧者ロールを割り当てます/providers/microsoft.insights/eventtypes/management。 このアクセス権限は、閲覧者ロール、共同作成者の監視ロール、またはカスタム ロールで利用できます。

  2. 監査ユーザーは、Tenant Activity Log API を呼び出して、サブスクリプションの作成活動を確認します。 例:

    GET "/providers/Microsoft.Insights/eventtypes/management/values?api-version=2015-04-01&$filter=eventTimestamp ge '{greaterThanTimeStamp}' and eventTimestamp le '{lessThanTimestamp}' and eventChannels eq 'Operation' and resourceProvider eq 'Microsoft.Subscription'"
    

コマンドラインからこの API を簡単に呼び出すには、ARMClient を使用します。