第 1 世代 Horizon Cloud のアプリケーション登録でポッドのサブスクリプション(またはオプションの外部ゲートウェイのサブスクリプション)で API 呼び出しを行い、その VDI 関連の操作を実行できるようにするには、アプリケーション登録にロールを割り当てる必要があります。通常、この目的にはContributor
ロールが使用されます。Contributor
ロールの使用を回避することを希望する組織の場合は、カスタム ロールを作成し、カスタム ロールに Horizon Cloud アプリケーション登録に必要な API 呼び出しを実行する機能を付与するという目的を果たすことができます。
ポッドのサブスクリプションでの Horizon Cloud アプリケーション登録のカスタム ロールに加えて、組織がポッドの外部 Unified Access Gateway 構成用に個別のサブスクリプションを使用するアプローチを採用し、その目的のために組織が設定した特定のリソース グループにゲートウェイ リソースをデプロイすることを選択する場合は、そのゲートウェイのサブスクリプションのカスタム ロールは、ポッドのサブスクリプションのカスタム ロールよりもきめ細かく、狭い範囲の権限を持つことができます。
カスタム ロールの概要
包括的な概念として、Horizon Cloud は、ポッドおよびそのゲートウェイ構成を持つために必要なリソースを正常に作成および維持するために、ポッドのサブスクリプションおよびそのリソース グループで特定の操作を実行する必要があります。
単純な例として、ポッドとゲートウェイ アーキテクチャでは NIC を備えた仮想マシンが必要であるため、Horizon Cloud にはサブスクリプション内で仮想マシンと NIC を作成し、それらの NIC をサブスクリプションの VNet のサブネットに接続する機能が必要となります。
Microsoft Azure では、ロールは、アプリケーション登録のサービス プリンシパルによって実行できる一連の管理操作を提供します。管理操作は、リソースとそのリソースに対して実行されるアクションの組み合わせです。
次のルールに従って、ポッドのサブスクリプションおよび(オプションの)ゲートウェイのサブスクリプションの Horizon Cloud アプリケーション登録の機能を、必要な最小限の操作に制限できます。
使用可能な使用事例の概要
サブスクリプションとリソース グループにおいて Horizon Cloud で必要とされる操作については、ここに記載された使用事例で説明できます。
使用事例 | 説明 |
---|---|
ポッドとその外部 Unified Access Gateway 構成の Horizon Cloud によって使用される単一サブスクリプション。 | この場合、ポッドのサブスクリプション レベルでサービス プリンシパルにアクセス権を付与する必要があります。そのレベルでサービス プリンシパルに割り当てられたロールは、サブスクリプション内で Horizon Cloud が実行する必要があるアクションによって、そのサブスクリプション内で必要なリソースが正常に作成され、時間の経過とともにそれらのリソースを操作できるようにする必要があります。たとえば、この場合、このロールはデフォルトのリソース グループ、ネットワーク セキュリティ グループ、仮想マシンなどを作成可能である必要があります。 |
2 つのサブスクリプションを使用していて、外部ゲートウェイの指定されたサブスクリプションで、ゲートウェイに必要なリソース グループとリソースを、ポッドのサブスクリプションの場合と同様に Horizon Cloud が自動作成することを望んでいる場合。
|
このオプションを使用する場合、各サブスクリプションのサービス プリンシパルに、サブスクリプション レベルでのアクセス権を、上記で説明した単一サブスクリプションの使用事例と同じアクションを許可する権限とともに付与する必要があります。 |
上記と同様に 2 つのサブスクリプションを使用しているが、外部ゲートウェイの必要なリソース グループおよびリソースを Horizon Cloud が自動作成するのではなく、その外部ゲートウェイの指定されたサブスクリプションで事前にリソース グループを作成し、Horizon Cloud が外部ゲートウェイのリソースを既存のリソース グループにデプロイすることを望んでいる場合。 | 外部ゲートウェイのデプロイに使用されるサービス プリンシパルへのアクセス権を付与するためのオプションは次の 2 つです。
|
VNet にカスタム ルートがある場合。Microsoft Azure Cloud には、カスタム ルートと呼ばれる機能があります。 | VNet にカスタム ルートがある場合は、上記の使用事例のすべてに加えて次の権限が必要です:Microsoft.Network/routeTables/join/action 。 |
ポッドとそのゲートウェイ構成に対して単一のサブスクリプションを使用する場合、またはサブスクリプション レベルで設定された権限がある外部 Unified Access Gateway 構成に対して別個のサブスクリプションを使用する場合
これらの使用事例では、サブスクリプション レベルでの権限が割り当てられます。カスタム ロールは、次の表の操作を許可する必要があります。*
(ワイルドカード文字)は、リストされている操作内の文字列と一致するすべての操作へのアクセスを許可します。
次の JSON コード ブロックは、Horizon Cloud Pod という名前のカスタム ロール定義に、一連の事前の操作がある場合にどのような状態になるかを示す例です。ID は、カスタム ロールの一意の ID です。Azure PowerShell または Azure CLI を使用してカスタム ロールを作成すると、この ID が自動的に生成されます。mysubscriptionId1 変数の場合は、カスタム ロールが使用されるサブスクリプション(ポッドのサブスクリプションまたはオプションのゲートウェイ サブスクリプション)の ID を置き換えます。
{ "Name": "Horizon Cloud Pod", "Id": "uuid", "IsCustom": true, "Description": "Minimum set of Horizon Cloud pod required operations", "Actions": [ "Microsoft.Authorization/*/read" "Microsoft.Compute/*/read" "Microsoft.Compute/availabilitySets/*" "Microsoft.Compute/disks/*" "Microsoft.Compute/images/*" "Microsoft.Compute/locations/*" "Microsoft.Compute/virtualMachines/*" "Microsoft.Compute/virtualMachineScaleSets/*" "Microsoft.Compute/snapshots/*" "Microsoft.DBforPostgreSQL/*" "Microsoft.KeyVault/*/read" "Microsoft.KeyVault/vaults/*" "Microsoft.KeyVault/vaults/secrets/*" "Microsoft.Network/loadBalancers/*" "Microsoft.Network/networkInterfaces/*" "Microsoft.Network/networkSecurityGroups/*" "Microsoft.Network/publicIPAddresses/*" "Microsoft.Network/virtualNetworks/read" "Microsoft.Network/virtualNetworks/write" "Microsoft.Network/virtualNetworks/checkIpAddressAvailability/read" "Microsoft.Network/virtualNetworks/subnets/*" "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read" "Microsoft.Resources/subscriptions/resourceGroups/*" "Microsoft.ResourceHealth/availabilityStatuses/read" "Microsoft.Resources/deployments/*" "Microsoft.Storage/*/read" "Microsoft.Storage/storageAccounts/*" "Microsoft.Compute/galleries/read" "Microsoft.Compute/galleries/write" "Microsoft.Compute/galleries/delete" "Microsoft.Compute/galleries/images/*" "Microsoft.Compute/galleries/images/versions/*" "Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read" "Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/mysubscriptionId1" ] } |
カスタム ルートが VNet とそのサブネットにある場合
Microsoft Azure Cloud には、カスタム ルートと呼ばれる機能があります。
このようなルートが VNet とそのサブネットに追加されている場合は、この追加の権限が必要です。
操作 | Microsoft Azure ドキュメントの説明 |
---|---|
Microsoft.Network/routeTables/join/action |
https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftnetwork |
外部 Unified Access Gateway 構成に対して別個のサブスクリプションを使用し、カスタム リソース グループにデプロイし、サブスクリプション レベルでのリーダー ロールと、きめ細かいレベルでの追加の必要な権限が割り当てられている場合
この使用事例では、外部ゲートウェイのサブスクリプションのサブスクリプション レベルで、組織は組み込みの Reader
ロールを使用して Horizon Cloud アプリケーション登録を使用できます。また、名前付きリソース グループのレベルでカスタム ロールを使用することもできます。
組織は、次の表の権限を指定するカスタム ロールを作成します。そのカスタム ロールは、Horizon Cloud アプリケーション登録に割り当てられ、外部ゲートウェイのサブスクリプション内の特別に指定されたリソース グループと連携します。ユーザーまたはユーザーの組織は、外部ゲートウェイをデプロイするサブスクリプションでその名前付きリソース グループを事前に作成します。
計画したデプロイ オプションによっては、サブネットおよび VNet での特定の権限も必要になります。
- この外部ゲートウェイのデプロイにおいて、事前に作成したサブネットが使用される場合、Horizon Cloud はそれらのサブネットに NIC およびネットワーク セキュリティ グループ (NSG) を作成する機能を必要とします。サブネットが属する VNet で必要な権限は
Microsoft.Network/virtualNetworks/subnets/*
とMicrosoft.Network/networkSecurityGroups/*
です。 - この外部ゲートウェイのデプロイによって Horizon Cloud がサブネットを生成する場合、Horizon Cloud は上記の
Microsoft.Network/virtualNetworks/subnets/*
およびMicrosoft.Network/networkSecurityGroups/*
の権限に加えて、サブネットを作成する機能を必要とします。サブスクリプションの VNet で必要な権限はMicrosoft.Network/virtualNetworks/write
です - デプロイで、外部ゲートウェイの構成にパブリック IP アドレスを使用するように指定されている場合、Horizon Cloud は名前付きリソース グループにパブリック IP アドレスを作成する機能を必要とします。名前付きリソース グループに必要な権限は
Microsoft.Network/publicIPAddresses
です
名前付きリソース グループでは、次の許可された操作が必要となります。*
(ワイルドカード文字)は、リストされているリソース プロバイダ操作内の文字列と一致するすべての操作へのアクセスを許可します。