共同作成者ロールは通常、Horizon Cloud アプリケーション登録プロセスを有効にして Microsoft Azure サブスクリプションで API 呼び出しを行うために使用されます。共同作成者ロールの使用を回避する場合は、その目的のためにカスタム ロールを作成できます。カスタム ロールには必須の権限とオプションの権限があり、サービス プリンシパルを作成するときに認識しておく必要があるます。
カスタム ロールを作成するには、Azure PowerShell や Azure CLI などのツールを使用し、このトピックに記載されている必須の権限を含むカスタム ロール定義を作成します。Azure カスタム ロールの詳細については、「Azure リソース プロバイダの操作」を参照してください。
Azure カスタム ロールの必須の権限
Microsoft Azure に Horizon Edge をデプロイする場合、次の権限が必須です。サブスクリプション レベルで権限を割り当てるときに、カスタム ロールで次の Microsoft Azure リソース操作を許可する必要があります。
| 操作 |
|---|
| Microsoft.Authorization/*/read |
| Microsoft.Compute/*/read |
| Microsoft.Compute/availabilitySets/* |
| Microsoft.Compute/disks/* |
| Microsoft.Compute/galleries/read Microsoft.Compute/galleries/write Microsoft.Compute/galleries/delete Microsoft.Compute/galleries/images/ Microsoft.Compute/galleries/images/versions/ |
| Microsoft.Compute/images/* |
| Microsoft.Compute/locations/* |
| Microsoft.Compute/snapshots/* |
| Microsoft.Compute/virtualMachines/* |
| Microsoft.Compute/virtualMachineScaleSets/* |
| Microsoft.ContainerService/managedClusters/delete |
| Microsoft.ContainerService/managedClusters/read |
| Microsoft.ContainerService/managedClusters/write |
| Microsoft.ContainerService/managedClusters/commandResults/read |
| Microsoft.ContainerService/managedClusters/runcommand/action |
| Microsoft.ContainerService/managedClusters/upgradeProfiles/read |
| Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action |
| Microsoft.ManagedIdentity/userAssignedIdentities/*/read |
| Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write |
| Microsoft.Network/loadBalancers/* |
| Microsoft.Network/networkInterfaces/* |
| Microsoft.Network/networkSecurityGroups/* |
| Microsoft.Network/virtualNetworks/read |
| Microsoft.Network/virtualNetworks/checkIpAddressAvailability/read |
| Microsoft.Network/virtualNetworks/subnets/read Microsoft.Network/virtualNetworks/subnets/write Microsoft.Network/virtualNetworks/subnets/join/action Microsoft.Network/virtualNetworks/subnets/joinLoadBalancer/action Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action Microsoft.Network/virtualNetworks/subnets/effectiveRoutingRules/read Microsoft.Network/virtualNetworks/subnets/effectiveSecurityUserRules/read Microsoft.Network/virtualNetworks/subnets/resourceNavigationLinks/read Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/read Microsoft.Network/virtualNetworks/subnets/virtualMachines/read |
| Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read |
| Microsoft.ResourceGraph/* |
| Microsoft.Resources/deployments/* |
| Microsoft.Resources/subscriptions/read |
| Microsoft.Resources/subscriptions/resourceGroups/* |
| Microsoft.ResourceHealth/availabilityStatuses/read |
| Microsoft.Storage/*/read |
| Microsoft.Storage/storageAccounts/* |
App Volumes を使用する場合は、権限がサブスクリプション レベルで構成されていることを確認します。これらの権限の詳細については、「App Volumes アプリケーション ストレージ アカウントの Azure プライベート エンドポイント」を参照してください。
| 操作 |
|---|
| Microsoft.Network/locations/availablePrivateEndpointTypes/read |
| Microsoft.Network/privateEndpoints/read |
| Microsoft.Network/privateEndpoints/write |
| Microsoft.Network/privateEndpoints/delete |
| Microsoft.Network/virtualNetworks/read |
| Microsoft.Network/virtualNetworks/subnets/read |
| Microsoft.Network/virtualNetworks/subnets/write |
| Microsoft.Network/virtualNetworks/subnets/join/action |
| Microsoft.Resources/deployments/* |
| Microsoft.Resources/subscriptions/read |
| Microsoft.Resources/subscriptions/resourceGroups/read |
Azure カスタム ロールのオプションの権限
Microsoft Azure に Horizon Edge をデプロイする場合、次の権限は必須ではありません。ただし、これらのオプションの権限を含めない場合、それらに依存する Horizon Universal Console の機能は動作しません。サブスクリプション レベルで権限を割り当てるときに、カスタム ロールで次の Microsoft Azure リソースの操作を必要に応じて設定します。
| 操作 | |
|---|---|
| Microsoft.KeyVault//read Microsoft.KeyVault/vaults/ Microsoft.KeyVault/vaults/secrets/* | プール仮想マシンのディスク暗号化には、キー コンテナの権限が必要です。 |
| Microsoft.Network/natGateways/join/action | この権限は、Horizon Edge の作成時に [Azure Private Link] 接続タイプが選択され、管理サブネットに NAT ゲートウェイが関連付けられている場合に必要です。この権限は、プライベート エンドポイント リソースを作成するために必要です。 |
| Microsoft.Network/natGateways/read | この権限は、クラスタ送信タイプが Horizon Edge の NAT ゲートウェイとして選択されているときに、管理サブネットの NAT ゲートウェイが存在している場合に正しく構成されていることを検証するために必要です。 |
| Microsoft.Network/privateEndpoints/write Microsoft.Network/privateEndpoints/read | Azure Private Link を使用して Horizon Edge をデプロイするには、プライベート エンドポイント権限が必要です。 |
| Microsoft.Network/publicIPAddresses/* | パブリック IP アドレスを持つロード バランサの背後に Unified Access Gateway インスタンスを含む Horizon Edge インスタンスをデプロイするには、パブリック IP アドレスの権限が必要です。また、この権限は、デプロイしてパブリック IP アドレスをイメージに追加するために必要です。 |
| Microsoft.Network/routeTables/join/action | この権限は、Horizon Edge の作成時に [Azure Private Link] 接続タイプが選択され、管理サブネットにルート テーブルが接続されている場合に必要です。この権限は、プライベート エンドポイント リソースを作成するために必要です。 |
| Microsoft.Network/routeTables/read | この権限は、Horizon Edge のために選択されたクラスタ送信タイプがユーザー定義ルートの場合に必要です。デフォルト ルートが正しく構成されていることを確認するには、管理サブネットの関連付けられたルート テーブルを検証することが必要です。 |
| Microsoft.CostManagement//read Microsoft.Billing//read | これらの権限を使用すると、Horizon Cloud は Horizon で作成されたリソース グループの Azure コスト管理および請求データを読み取り、コスト インサイトのコストと節約のメトリックを計算できます。 |
注:Microsoft Entra ID に参加しているプールまたは仮想マシンを削除する場合、サービス プリンシパルには Microsoft Entra ID からデバイス エントリを削除する権限が必要です。
権限は次のとおりです。
範囲:https://graph.microsoft.com/
権限:Device.ReadWrite.All Read and write devices
管理者の同意:Yes
権限は、[サブスクリプション] > [Azure Active Directory] > [アプリケーションの登録] > 権限を付与する必要があるアプリケーションを選択 > [API 権限] > [Microsoft GRAPH] を選択 > [Device.ReadWriteAll] を選択という順に操作すると、割り当てることができます。
Microsoft Azure カスタム ロールの JSON の例
次の JSON コード ブロックは、Horizon Cloud Custom Role - Titan という名前のカスタム ロール定義に、前述の必須およびオプションの操作を含めるとどのような状態になるかを示す例です。ID は、カスタム ロールの一意の ID です。Azure PowerShell または Azure CLI を使用してカスタム ロールを作成すると、プロセスによってこの ID が自動的に生成されます。my_subscription_ID 変数の場合は、カスタム ロールが使用されるサブスクリプションの ID を置き換えます。
assignableScopes セクションでは、複数のサブスクリプション ID、「/subscriptions/my_subscription_ID」を使用して、複数のサブスクリプションにわたってカスタム ロールを使用できます。
サブスクリプション レベルで権限を割り当てるときに Horizon Cloud で必要になる操作を許可するロールの JSON のサンプルを以下に示します。
{
"id": "uuid",
"properties": {
"roleName": "Horizon Cloud Custom Role - Titan",
"description": "All permissions required for deployment and operation of a Horizon Edge in Azure",
"assignableScopes": [
"/subscriptions/my_subscription_ID"
],
"permissions": [
{
"actions": [
"Microsoft.Authorization/*/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/availabilitySets/*",
"Microsoft.Compute/disks/*",
"Microsoft.Compute/galleries/read",
"Microsoft.Compute/galleries/write",
"Microsoft.Compute/galleries/delete",
"Microsoft.Compute/galleries/images/*",
"Microsoft.Compute/galleries/images/versions/*",
"Microsoft.Compute/images/*",
"Microsoft.Compute/locations/*",
"Microsoft.Compute/snapshots/*",
"Microsoft.ContainerService/managedClusters/delete",
"Microsoft.ContainerService/managedClusters/read",
"Microsoft.ContainerService/managedClusters/write",
"Microsoft.ContainerService/managedClusters/commandResults/read",
"Microsoft.ContainerService/managedClusters/runcommand/action",
"Microsoft.ContainerService/managedClusters/upgradeProfiles/read",
"Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action",
"Microsoft.ManagedIdentity/userAssignedIdentities/*/read",
"Microsoft.Compute/virtualMachines/*",
"Microsoft.Compute/virtualMachineScaleSets/*",
"Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read",
"Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write",
"Microsoft.Network/loadBalancers/*",
"Microsoft.Network/networkInterfaces/*",
"Microsoft.Network/networkSecurityGroups/*",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/checkIpAddressAvailability/read",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/subnets/write",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/virtualNetworks/subnets/joinLoadBalancer/action",
"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action",
"Microsoft.Network/virtualNetworks/subnets/effectiveRoutingRules/read",
"Microsoft.Network/virtualNetworks/subnets/effectiveSecurityUserRules/read",
"Microsoft.Network/virtualNetworks/subnets/resourceNavigationLinks/read",
"Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/read",
"Microsoft.Network/virtualNetworks/subnets/virtualMachines/read",
"Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read",
"Microsoft.ResourceGraph/*",
"Microsoft.Resources/deployments/*",
"Microsoft.Resources/subscriptions/read",
"Microsoft.Resources/subscriptions/resourceGroups/*",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Storage/*/read",
"Microsoft.Storage/storageAccounts/*",
"Microsoft.KeyVault/*/read",
"Microsoft.KeyVault/vaults/*",
"Microsoft.KeyVault/vaults/secrets/*",
"Microsoft.Network/natGateways/join/action",
"Microsoft.Network/natGateways/read",
"Microsoft.Network/privateEndpoints/write",
"Microsoft.Network/privateEndpoints/read",
"Microsoft.Network/publicIPAddresses/*",
"Microsoft.Network/routeTables/join/action",
"Microsoft.Network/routeTables/read"
],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
]
}
} このページは役に立ちましたか?