Enterprise Agreement (EA) を使用する Azure のお客様は、アカウントに課金されるサブスクリプションを作成するためのアクセス許可を別のユーザーまたはサービス プリンシパルに付与できます。 この記事では、 Azure ロールベースのアクセス制御 (Azure RBAC) を使用してサブスクリプションを作成する機能を共有する方法と、サブスクリプションの作成を監査する方法について説明します。 共有するアカウントに所有者ロールが必要です。
注
- この API は、サブスクリプション作成 用のレガシ API でのみ機能します。
- 従来の API を使用する必要がある場合を除き、最新の API バージョンに関する 最新の GA バージョン の情報を使用する必要があります。 「登録アカウントのロールの割り当て - Put」を参照して、最新の API で EA サブスクリプションを作成する権限を付与します。
- 新しい API を使用するように移行する場合は、 2019-10-01-preview を使用して所有者のアクセス許可をもう一度付与する必要があります。 以下の API を使用する以前の構成が、より新しい API で使用できるよう自動的に変換されることはありません。
注
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 開始するには、 Azure PowerShell のインストールに関するページを参照してください。 Az PowerShell モジュールに移行する方法については、「 Azure PowerShell を AzureRM から Az に移行する」を参照してください。
アクセス権の付与
登録アカウントでサブスクリプションを作成するには、ユーザーがそのアカウントに対する Azure RBAC 所有者ロールを持っている必要があります。 次の手順に従うことによって、ユーザーまたはユーザー グループに、登録アカウントに対する Azure RBAC 所有者ロールを付与できます。
アクセス権を付与する登録アカウントのオブジェクト 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/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "name": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "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 所有者のアクセス権を付与する場合、aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
をコピーします。 それは登録アカウントのオブジェクト ID です。 次のステップでこの値をenrollmentAccountObjectId
として使用できるよう、どこかに貼り付けておきます。principalName
プロパティを使用して、Azure RBAC 所有者のアクセス権を付与するアカウントを指定します。 そのアカウントのname
をコピーします。 たとえば、SignUpEngineering@contoso.com 登録アカウントに Azure RBAC 所有者のアクセス権を付与する場合、aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
をコピーします。 それは登録アカウントのオブジェクト ID です。 次のステップでこの値をenrollmentAccountObjectId
として使用できるよう、どこかに貼り付けておきます。Azure RBAC 所有者ロールを付与するユーザーまたはグループのオブジェクト ID を取得します
- Azure portal で、 Microsoft Entra ID を検索します。
- ユーザーにアクセス権を付与する場合は、左側のメニューで [ ユーザー ] を選択します。 グループへのアクセス権を付与するには、[グループ] を選択 します。
- Azure RBAC 所有者ロールを付与するユーザーまたはグループを選択します。
- ユーザーを選択した場合、オブジェクト ID は [プロファイル] ページにあります。 グループを選択した場合、オブジェクト ID は [概要] ページにあります。 テキスト ボックスの右側にあるアイコンを選択して 、ObjectID をコピーします。 次のステップで
userObjectId
として使用できるように、それをどこかに貼り付けておきます。
ユーザーまたはグループに、登録アカウントに対する Azure RBAC 所有者ロールを付与します
最初の 2 つの手順で収集した値を使用して、ユーザーまたはグループに、登録アカウントに対する Azure RBAC 所有者ロールを付与します。
<enrollmentAccountObjectId>
を最初の手順でコピーしたname
(aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
) で置き換えて、次のコマンドを実行します。<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/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "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 を使用して作成されたサブスクリプションを追跡するには、 テナント アクティビティ ログ API を使用します。 現時点では、PowerShell、CLI、または Azure Portal を使用してサブスクリプションの作成を追跡することはできません。
Microsoft Entra テナントのテナント管理者として、アクセス権を 昇格 し、スコープ
/providers/microsoft.insights/eventtypes/management
を介して監査ユーザーに閲覧者ロールを割り当てます。 このアクセスは、 閲覧者 ロール、 監視共同作成者 ロール、または カスタム ロールで使用できます。監査ユーザーとして、 テナント アクティビティ ログ 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 を試してください。
関連するコンテンツ
- ユーザーまたはサービス プリンシパルにサブスクリプションを作成するアクセス許可が付与されたので、その ID を使用して プログラムで Azure Enterprise サブスクリプションを作成できます。
- .NET を使用してサブスクリプションを作成する例については、 GitHub のサンプル コードを参照してください。
- Azure Resource Manager とその API の詳細については、 Azure Resource Manager の概要に関するページを参照してください。
- 管理グループを使用して多数のサブスクリプションを管理する方法の詳細については、「Azure 管理グループを使用してリソースを整理する」を参照してください。
- サブスクリプション ガバナンスに関する大規模な組織向けの包括的なベスト プラクティス ガイダンスについては、「Azure エンタープライズ スキャフォールディング - 規範的なサブスクリプション ガバナンス」を参照してください