Skip to main content

Verwenden einer benutzerdefinierten Rolle für die Horizon Cloud App-Registrierung

Die Rolle Mitwirkender wird üblicherweise verwendet, um den Registrierungsvorgang der Horizon Cloud-App für API-Aufrufe im Microsoft Azure-Abonnement zu ermöglichen. Wenn Sie die Verwendung dieser Rolle vermeiden möchten, können Sie eine benutzerdefinierte Rolle für diesen Zweck erstellen. Die benutzerdefinierte Rolle verfügt über bestimmte erforderliche und optionale Berechtigungen, die Sie beim Erstellen eines Dienstprinzipals beachten müssen.

Um eine benutzerdefinierte Rolle zu erstellen, verwenden Sie ein Tool wie Azure PowerShell oder Azure CLI zum Erstellen einer benutzerdefinierte Rollendefinition, die die in diesem Thema aufgeführten obligatorischen Berechtigungen enthält. Weitere Informationen zu benutzerdefinierten Azure-Rollen finden Sie unter Azure-Ressourcenanbietervorgänge.

Obligatorische Berechtigungen für die benutzerdefinierte Azure-Rolle

Die folgenden Berechtigungen sind für die Bereitstellung von Horizon Edge in Microsoft Azure obligatorisch. Diese Microsoft Azure-Ressourcenvorgänge müssen in der benutzerdefinierten Rolle bei der Zuweisung von Berechtigungen auf Abonnementebene zulässig sein.

Vorgang
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/write
Microsoft.Network/virtualNetworks/checkIpAddressAvailability/read
Microsoft.Network/virtualNetworks/subnets/*
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/*

Wenn Sie App Volumes verwenden möchten, stellen Sie sicher, dass Sie die Berechtigungen auf Abonnementebene konfiguriert haben. Weitere Informationen zu diesen Berechtigungen finden Sie unter Private Azure-Endpoints für ein App Volumes-Anwendungsspeicherkonto.

Vorgang
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

Optionale Berechtigungen für die benutzerdefinierte Azure-Rolle

Die folgenden Berechtigungen sind für die Bereitstellung von Horizon Edge in Microsoft Azure nicht obligatorisch. Funktionen in der Horizon Universal Console, die sich auf diese optionalen Berechtigungen stützen, funktionieren jedoch nur, wenn Sie sie angeben. Die folgenden Microsoft Azure-Ressourcenvorgänge sind in der benutzerdefinierten Rolle beim Zuweisen von Berechtigungen auf Abonnementebene optional.

Vorgang 
Microsoft.KeyVault/*/read
Microsoft.KeyVault/vaults/*
Microsoft.KeyVault/vaults/secrets/*
Schlüsseltresor-Berechtigungen sind für die Festplattenverschlüsselung von Pool-VMs erforderlich.
Microsoft.Network/natGateways/join/action
Diese Berechtigung ist erforderlich, wenn zum Zeitpunkt der Erstellung von Horizon Edge der Konnektivitätstyp Privater Azure-Link ausgewählt wird und dem Verwaltungssubnetz ein NAT-Gateway zugeordnet ist. Die Berechtigung ist erforderlich, um die privaten Endpoint-Ressourcen zu erstellen.
Microsoft.Network/natGateways/read
Diese Berechtigung ist erforderlich, um zu überprüfen, ob das NAT-Gateway des Management-Subnetzes, falls vorhanden, richtig konfiguriert ist, wenn der ausgehende Clustertyp als NAT-Gateway für Horizon Edge ausgewählt ist.
Microsoft.Network/privateEndpoints/write
Microsoft.Network/privateEndpoints/read
Berechtigungen für private Endpoints sind für die Bereitstellung von Horizon Edge mit Azure Private Link erforderlich.
Microsoft.Network/publicIPAddresses/*Die Berechtigung „Öffentliche IP“ ist für die Bereitstellung einer Horizon Edge-Instanz mit Unified Access Gateway-Instanzen hinter einem Lastausgleichsdienst mit einer öffentlichen IP-Adresse erforderlich. Darüber hinaus ist diese Berechtigung erforderlich, um eine öffentliche IP-Adresse für ein Image bereitzustellen und hinzuzufügen.
Microsoft.Network/routeTables/join/action
Diese Berechtigung ist erforderlich, wenn der Konnektivitätstyp Privater Azure-Link zum Zeitpunkt der Erstellung von Horizon Edge ausgewählt wird und dem Verwaltungssubnetz eine Routentabelle angehängt ist. Die Berechtigung ist erforderlich, um die privaten Endpoint-Ressourcen zu erstellen.
Microsoft.Network/routeTables/read
Diese Berechtigung ist erforderlich, wenn der für Horizon Edge ausgewählte ausgehende Clustertyp „Benutzerdefinierte Routen“ ist. Sie ist erforderlich, um die zugehörige Routentabelle des Management-Subnetzes zu überprüfen, um sicherzustellen, dass die Standardroute korrekt konfiguriert ist.

Hinweis: Beim Löschen eines in Microsoft Entra ID eingebundenen Pools oder einer VM sollte der Dienstprinzipal über Berechtigungen zum Löschen des Geräteeintrags aus Microsoft Entra ID verfügen.

Die Berechtigungen lauten wie folgt:

Geltungsbereich: https://graph.microsoft.com/

Berechtigung: Device.ReadWrite.All Read and write devices

Administratorzustimmung: Yes

Sie können die Berechtigung erteilen, indem Sie zu Abonnement > Azure Active Directory > App-Registrierung > App auswählen, für die eine Berechtigung erteilt werden soll > API-Berechtigung > Microsoft GRAPH auswählen > Device.ReadWriteAll auswählen navigieren.

JSON-Beispiel für eine benutzerdefinierte Microsoft Azure-Rolle

Der folgende JSON-Codeblock veranschaulicht, wie eine benutzerdefinierte Rollendefinition mit dem Namen Horizon Cloud Custom Role - Titan aussehen könnte, wenn sie die oben genannten obligatorischen und optionalen Vorgänge enthält. Die ID ist die eindeutige ID der benutzerdefinierten Rolle. Wenn Sie Azure PowerShell oder Azure CLI zum Erstellen einer benutzerdefinierten Rolle verwenden, generiert der Prozess automatisch diese ID. Ersetzen Sie für die Variable my_subscription_ID die IDs der Abonnements, in denen die benutzerdefinierte Rolle verwendet wird.

Im Abschnitt assignableScopes können Sie mehrere Abonnement-IDs verwenden, „/subscriptions/my_subscription_ID“, damit die benutzerdefinierte Rolle für mehrere Abonnements verwendet werden kann.

Sehen Sie sich das folgende JSON-Beispiel für eine Rolle an, die die für Horizon Cloud erforderlichen Vorgänge bei der Zuweisung von Berechtigungen auf Abonnementebene zulässt.

{
    “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/write”,
                    “Microsoft.Network/virtualNetworks/checkIpAddressAvailability/read”,
                    “Microsoft.Network/virtualNetworks/subnets/*”,
                    “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”: []
            }
        ]
    }
}

War diese Seite hilfreich?

Feedback zu diesem Thema geben

War dieses Thema hilfreich?

Bitte geben Sie keine personenbezogenen oder vertraulichen Daten an.

Link wird erstellt…