Citrix Virtual Apps and Desktops

Verbindung mit Microsoft Azure

Verbindungen und Ressourcen erstellen und verwalten beschreibt die Assistenten, die eine Verbindung erstellen. Die folgenden Informationen behandeln Details, die spezifisch für Azure Resource Manager-Cloudumgebungen sind.

Hinweis:

Bevor Sie eine Verbindung mit Microsoft Azure erstellen, müssen Sie Ihr Azure-Konto als Ressourcenstandort eingerichtet haben. Siehe Microsoft Azure Resource Manager-Cloudumgebungen.

Dienstprinzipale und Verbindungen erstellen

Bevor Sie Verbindungen erstellen, müssen Sie Dienstprinzipale einrichten, die von den Verbindungen für den Zugriff auf Azure-Ressourcen verwendet werden. Sie können eine Verbindung auf zwei Arten erstellen:

  • Erstellen Sie einen Dienstprinzipal und eine Verbindung zusammen mit Web Studio.
  • Erstellen Sie eine Verbindung mit einem zuvor erstellten Dienstprinzipal.

Dieser Abschnitt zeigt Ihnen, wie Sie die folgenden Aufgaben ausführen:

Überlegungen

  • Citrix® empfiehlt die Verwendung eines Dienstprinzipals mit der Rolle “Mitwirkender”. Eine Liste der Mindestberechtigungen finden Sie jedoch im Abschnitt Mindestberechtigungen.
  • Beim Erstellen der ersten Verbindung fordert Azure Sie auf, die erforderlichen Berechtigungen zu erteilen. Für zukünftige Verbindungen müssen Sie sich weiterhin authentifizieren, aber Azure merkt sich Ihre vorherige Zustimmung und zeigt die Aufforderung nicht erneut an.
  • Konten, die zur Authentifizierung verwendet werden, müssen über Berechtigungen verfügen, um Rollen im Abonnement mithilfe von Azure RBAC zuzuweisen. Beispiele: Besitzer, Administrator für rollenbasierte Zugriffssteuerung oder Benutzerzugriffsadministrator des Abonnements.
  • Das zur Authentifizierung verwendete Konto muss Mitglied des Verzeichnisses des Abonnements sein. Es gibt zwei Arten von Konten, die zu beachten sind: “Geschäfts-, Schul- oder Unikonto” und “persönliches Microsoft-Konto”. Details finden Sie unter CTX219211.
  • Obwohl Sie ein vorhandenes Microsoft-Konto verwenden können, indem Sie es als Mitglied des Verzeichnisses des Abonnements hinzufügen, kann es zu Komplikationen kommen, wenn dem Benutzer zuvor Gastzugriff auf eine der Ressourcen des Verzeichnisses gewährt wurde. In diesem Fall haben sie möglicherweise einen Platzhaltereintrag im Verzeichnis, der ihnen nicht die erforderlichen Berechtigungen gewährt, und es wird ein Fehler zurückgegeben.

    Beheben Sie dies, indem Sie die Ressourcen aus dem Verzeichnis entfernen und sie explizit wieder hinzufügen. Gehen Sie jedoch vorsichtig mit dieser Option um, da sie unbeabsichtigte Auswirkungen auf andere Ressourcen haben kann, auf die das Konto zugreifen kann.

  • Es gibt ein bekanntes Problem, bei dem bestimmte Konten als Verzeichnisgäste erkannt werden, obwohl sie tatsächlich Mitglieder sind. Solche Konfigurationen treten typischerweise bei älteren, etablierten Verzeichniskonten auf. Workaround: Fügen Sie ein Konto zum Verzeichnis hinzu, das den korrekten Mitgliedschaftswert annimmt.
  • Ressourcengruppen sind lediglich Container für Ressourcen und können Ressourcen aus anderen Regionen als ihrer eigenen Region enthalten. Dies kann potenziell verwirrend sein, wenn Sie erwarten, dass Ressourcen, die in der Region einer Ressourcengruppe angezeigt werden, verfügbar sind.
  • Stellen Sie sicher, dass Ihr Netzwerk und Subnetz groß genug sind, um die benötigte Anzahl von Maschinen aufzunehmen. Dies erfordert etwas Voraussicht, aber Microsoft hilft Ihnen, die richtigen Werte anzugeben, mit Anleitungen zur Kapazität des Adressraums.

Dienstprinzipal und Verbindung mit Web Studio erstellen

Wichtig:

Diese Funktion ist für Azure China-Abonnements noch nicht verfügbar.

Mit Web Studio können Sie sowohl einen Dienstprinzipal als auch eine Verbindung in einem einzigen Workflow erstellen. Dienstprinzipale ermöglichen Verbindungen den Zugriff auf Azure-Ressourcen. Wenn Sie sich bei Azure authentifizieren, um einen Dienstprinzipal zu erstellen, wird eine Anwendung in Azure registriert. Für die registrierte Anwendung wird ein geheimer Schlüssel (als Clientgeheimnis oder Anwendungsgeheimnis bezeichnet) erstellt. Die registrierte Anwendung (in diesem Fall eine Verbindung) verwendet das Clientgeheimnis zur Authentifizierung bei Microsoft Entra ID.

Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben:

  • Sie haben ein Benutzerkonto im Microsoft Entra-Mandanten Ihres Abonnements.
  • Konten, die zur Authentifizierung verwendet werden, müssen über Berechtigungen verfügen, um Rollen im Abonnement mithilfe von Azure RBAC zuzuweisen. Beispiele: Besitzer, Administrator für rollenbasierte Zugriffssteuerung oder Benutzerzugriffsadministrator des Abonnements.
  • Sie verfügen über globale Administrator-, Anwendungsadministrator- oder Anwendungsentwicklerberechtigungen für die Authentifizierung. Diese Berechtigungen können nach dem Erstellen der Hostverbindung widerrufen werden. Weitere Informationen zu Rollen finden Sie unter Integrierte Microsoft Entra-Rollen.

Verwenden Sie den Assistenten Verbindung und Ressourcen hinzufügen, um einen Dienstprinzipal und eine Verbindung zusammen zu erstellen:

  1. Wählen Sie auf der Seite Verbindung die Option Neue Verbindung erstellen, den Verbindungstyp Microsoft Azure und Ihre Azure-Umgebung aus.
  2. Wählen Sie die Tools aus, die zum Erstellen der virtuellen Maschinen verwendet werden sollen, und wählen Sie dann Weiter.
  3. Geben Sie auf der Seite Verbindungsdetails Ihre Azure-Abonnement-ID und einen Namen für die Verbindung ein. Nachdem Sie die Abonnement-ID eingegeben haben, wird die Schaltfläche Neu erstellen aktiviert.

    Hinweis:

    Der Verbindungsname darf 1–64 Zeichen enthalten und darf nicht nur Leerzeichen oder die Zeichen \/;:#.*?=<>|[]{}"'() enthalten.

  4. Wählen Sie Neu erstellen und geben Sie dann den Benutzernamen und das Kennwort des Microsoft Entra-Kontos ein.
  5. Wählen Sie Anmelden.
  6. Wählen Sie Akzeptieren, um Citrix Virtual Apps and Desktops™ die aufgeführten Berechtigungen zu erteilen. Citrix Virtual Apps and Desktops erstellt einen Dienstprinzipal, der es ihm ermöglicht, Azure-Ressourcen im Namen des angegebenen Benutzers zu verwalten.
  7. Nachdem Sie Akzeptieren ausgewählt haben, kehren Sie zur Seite Verbindung im Assistenten zurück.

    Hinweis:

    Nachdem Sie sich erfolgreich bei Azure authentifiziert haben, verschwinden die Schaltflächen Neu erstellen und Vorhandene verwenden. Der Text Verbindung erfolgreich wird mit einem grünen Häkchen angezeigt, was die erfolgreiche Verbindung zu Ihrem Azure-Abonnement anzeigt.

  8. Wählen Sie auf der Seite Verbindungsdetails die Option Weiter.

    Hinweis:

    Sie können erst zur nächsten Seite wechseln, wenn Sie sich erfolgreich bei Azure authentifiziert und der Erteilung der erforderlichen Berechtigungen zugestimmt haben.

  9. Konfigurieren Sie Ressourcen für die Verbindung. Ressourcen umfassen die Region und das Netzwerk.

    • Wählen Sie auf der Seite Region eine Region aus.
    • Führen Sie auf der Seite Netzwerk Folgendes aus:
      • Geben Sie einen 1–64 Zeichen langen Ressourcennamen ein, um die Kombination aus Region und Netzwerk zu identifizieren. Ein Ressourcenname darf nicht nur Leerzeichen oder die Zeichen \/;:#.*?=<>|[]{}"'() enthalten.
      • Wählen Sie ein Paar aus virtuellem Netzwerk/Ressourcengruppe aus. (Wenn Sie mehr als ein virtuelles Netzwerk mit demselben Namen haben, bietet die Paarung des Netzwerknamens mit der Ressourcengruppe eindeutige Kombinationen.) Wenn die auf der vorherigen Seite ausgewählte Region keine virtuellen Netzwerke hat, kehren Sie zu dieser Seite zurück und wählen Sie eine Region aus, die virtuelle Netzwerke hat.
  10. Auf der Seite Zusammenfassung sehen Sie eine Zusammenfassung der Einstellungen und wählen Fertig stellen, um Ihr Setup abzuschließen.

Anwendungs-ID anzeigen

Nachdem Sie eine Verbindung erstellt haben, können Sie die Anwendungs-ID anzeigen, die die Verbindung für den Zugriff auf Azure-Ressourcen verwendet.

Wählen Sie in der Liste Verbindung und Ressourcen hinzufügen die Verbindung aus, um die Details anzuzeigen. Die Registerkarte Details zeigt die Anwendungs-ID.

Dienstprinzipal mit PowerShell erstellen

Um einen Dienstprinzipal mit PowerShell zu erstellen, stellen Sie eine Verbindung mit Ihrem Azure Resource Manager-Abonnement her und verwenden Sie die in den folgenden Abschnitten bereitgestellten PowerShell-Cmdlets.

Stellen Sie sicher, dass Sie die folgenden Elemente bereithalten:

  • SubscriptionId: Azure Resource Manager SubscriptionID für das Abonnement, in dem Sie VDAs bereitstellen möchten.
  • ActiveDirectoryID: Mandanten-ID der Anwendung, die Sie bei Microsoft Entra ID registriert haben.
  • ApplicationName: Name für die in Microsoft Entra ID zu erstellende Anwendung.

Die detaillierten Schritte sind wie folgt:

  1. Stellen Sie eine Verbindung mit Ihrem Azure Resource Manager-Abonnement her.

    Connect-AzAccount

  2. Wählen Sie das Azure Resource Manager-Abonnement aus, in dem Sie den Dienstprinzipal erstellen möchten.

    Get-AzSubscription -SubscriptionId $subscriptionId | Select-AzSubscription

  3. Erstellen Sie die Anwendung in Ihrem AD-Mandanten.

    $AzureADApplication = New-AzADApplication -DisplayName $ApplicationName

  4. Erstellen Sie einen Dienstprinzipal.

    New-AzADServicePrincipal -ApplicationId $AzureADApplication.AppId

  5. Weisen Sie dem Dienstprinzipal eine Rolle zu.

    New-AzRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $AzureADApplication.AppId –scope /subscriptions/$SubscriptionId

  6. Notieren Sie im Ausgabefenster der PowerShell-Konsole die ApplicationId. Diese ID geben Sie beim Erstellen der Hostverbindung an.

Abrufen des Anwendungsgeheimnisses in Azure

Um eine Verbindung mit einem vorhandenen Dienstprinzipal herzustellen, müssen Sie zunächst die Anwendungs-ID und das Geheimnis des Dienstprinzipals im Azure-Portal abrufen.

Die detaillierten Schritte sind wie folgt:

  1. Rufen Sie die Anwendungs-ID aus dem Web Studio oder mithilfe von PowerShell ab.
  2. Melden Sie sich beim Azure-Portal an.
  3. Wählen Sie in Azure Microsoft Entra ID aus.
  4. Wählen Sie unter App-Registrierungen in Microsoft Entra ID Ihre Anwendung aus.
  5. Gehen Sie zu Zertifikate und Geheimnisse.
  6. Klicken Sie auf Clientgeheimnisse.

Erstellen einer Verbindung mit einem vorhandenen Dienstprinzipal

Wenn Sie bereits einen Dienstprinzipal haben, können Sie diesen verwenden, um eine Verbindung über Web Studio zu erstellen.

Stellen Sie sicher, dass Sie die folgenden Elemente bereithalten:

  • SubscriptionId
  • ActiveDirectoryID (Mandanten-ID)
  • Anwendungs-ID
  • Anwendungsgeheimnis

    Weitere Informationen finden Sie unter Abrufen des Anwendungsgeheimnisses.

  • Ablaufdatum des Geheimnisses

Die detaillierten Schritte sind wie folgt:

Im Assistenten Verbindung und Ressourcen hinzufügen:

  1. Wählen Sie auf der Seite Verbindung die Option Neue Verbindung erstellen, den Verbindungstyp Microsoft Azure und Ihre Azure-Umgebung aus.

  2. Wählen Sie die Tools aus, die zum Erstellen der virtuellen Maschinen verwendet werden sollen, und wählen Sie dann Weiter.

  3. Geben Sie auf der Seite Verbindungsdetails Ihre Azure-Abonnement-ID und einen Namen für die Verbindung ein.

    Hinweis:

    Der Verbindungsname darf 1 bis 64 Zeichen enthalten und keine reinen Leerzeichen oder die Zeichen \/;:#.*?=<>|[]{}"'()'.

  4. Wählen Sie Vorhandenen verwenden. Geben Sie im Fenster Details des vorhandenen Dienstprinzipals die folgenden Einstellungen für den vorhandenen Dienstprinzipal ein. Nachdem Sie die Details eingegeben haben, wird die Schaltfläche Speichern aktiviert. Wählen Sie Speichern. Sie können diese Seite erst verlassen, wenn Sie gültige Details angegeben haben.

    • Abonnement-ID. Geben Sie Ihre Azure-Abonnement-ID ein. Um Ihre Abonnement-ID zu erhalten, melden Sie sich beim Azure-Portal an und navigieren Sie zu Abonnements > Übersicht.
    • Active Directory-ID (Mandanten-ID). Geben Sie die Verzeichnis- (Mandanten-) ID der Anwendung ein, die Sie bei Azure AD registriert haben.
    • Anwendungs-ID. Geben Sie die Anwendungs- (Client-) ID der Anwendung ein, die Sie bei Azure AD registriert haben.
    • Anwendungsgeheimnis. Erstellen Sie einen geheimen Schlüssel (Clientgeheimnis). Die registrierte Anwendung verwendet den Schlüssel zur Authentifizierung bei Azure AD. Wir empfehlen, Schlüssel aus Sicherheitsgründen regelmäßig zu ändern. Speichern Sie den Schlüssel unbedingt, da Sie ihn später nicht mehr abrufen können.
    • Ablaufdatum des Geheimnisses. Geben Sie das Datum ein, nach dem das Anwendungsgeheimnis abläuft. Sie sehen ein Warnsymbol bei der spezifischen Hostverbindung im Knoten Hosting, beginnend 14 Tage vor Ablauf des geheimen Schlüssels. Wenn der geheime Schlüssel jedoch abläuft, erhalten Sie Fehler.

      Hinweis:

      Aus Sicherheitsgründen darf die Ablaufzeit nicht länger als zwei Jahre ab dem aktuellen Datum sein.

    • Authentifizierungs-URL. Dieses Feld wird automatisch ausgefüllt und ist nicht bearbeitbar.
    • Verwaltungs-URL. Dieses Feld wird automatisch ausgefüllt und ist nicht bearbeitbar.
    • Speichersuffix. Dieses Feld wird automatisch ausgefüllt und ist nicht bearbeitbar.
    • Azure Blob Storage-Endpunkt zum Hoch- oder Herunterladen von Datenträgern oder Snapshots. Dieses Feld wird automatisch ausgefüllt und ist nicht bearbeitbar.
    • Key Vault-Dienst. Dieses Feld wird automatisch ausgefüllt und ist nicht bearbeitbar.
    • Service Bus-Suffix. Dieses Feld wird automatisch ausgefüllt und ist nicht bearbeitbar.

      Der Zugriff auf die folgenden Endpunkte ist für die Erstellung eines MCS-Katalogs in Azure erforderlich. Der Zugriff auf diese Endpunkte optimiert die Konnektivität zwischen Ihrem Netzwerk und dem Azure-Portal sowie dessen Diensten.

      • Authentifizierungs-URL: https://login.microsoftonline.com
      • Verwaltungs-URL: https://management.azure.com. Dies ist eine Anforderungs-URL für Azure Resource Manager-Anbieter-APIs. Der Endpunkt für die Verwaltung hängt von der Umgebung ab. Zum Beispiel ist er für Azure Global https://management.azure.com und für Azure US Government https://management.usgovcloudapi.net.
      • Speichersuffix: https://*.core.windows.net. Das (*) ist ein Platzhalterzeichen für das Speichersuffix. Zum Beispiel https://demo.table.core.windows.net.
      • Azure Blob Storage-Endpunkt zum Hoch- oder Herunterladen von Datenträgern oder Snapshots: https://*.storage.azure.net. Das (*) ist ein Platzhalterzeichen für Blob Storage-Import- und Exportvorgänge. Zum Beispiel https://md-impexp-xxxxx.z[00-50].blob.storage.azure.net.
      • Key Vault-Dienst: https://*.vault.azure.net. Das (*) ist ein Platzhalterzeichen für den Key Vault-Namen. Zum Beispiel https://<your-key-vault-name>.vault.azure.net.
      • Service Bus-Suffix: https://*.servicebus.windows.net. Das (*) ist ein Platzhalterzeichen für Namespaces, die in der globalen Azure-Cloud erstellt wurden. Zum Beispiel https://{serviceNamespace}.servicebus.windows.net/{path}.
  5. Nachdem Sie Speichern ausgewählt haben, kehren Sie zur Seite Verbindungsdetails zurück. Wählen Sie Weiter, um zur nächsten Seite zu gelangen.
  6. Konfigurieren Sie Ressourcen für die Verbindung. Ressourcen umfassen die Region und das Netzwerk.

    • Wählen Sie auf der Seite Region eine Region aus.
    • Führen Sie auf der Seite Netzwerk die folgenden Schritte aus:
      • Geben Sie einen Ressourcennamen mit 1 bis 64 Zeichen ein, um die Kombination aus Region und Netzwerk zu identifizieren. Ein Ressourcenname darf keine reinen Leerzeichen oder die Zeichen \/;:#.*?=<>|[]{}"'()'. enthalten.
      • Wählen Sie ein Paar aus virtuellem Netzwerk/Ressourcengruppe aus. (Wenn Sie mehrere virtuelle Netzwerke mit demselben Namen haben, bietet die Kombination des Netzwerknamens mit der Ressourcengruppe eindeutige Kombinationen.) Wenn die auf der vorherigen Seite ausgewählte Region keine virtuellen Netzwerke enthält, kehren Sie zu dieser Seite zurück und wählen Sie eine Region aus, die virtuelle Netzwerke enthält.
  7. Zeigen Sie auf der Seite Zusammenfassung eine Zusammenfassung der Einstellungen an und wählen Sie Fertig stellen, um die Einrichtung abzuschließen.

Dienstprinzipale und Verbindungen verwalten

Dieser Abschnitt beschreibt, wie Sie Dienstprinzipale und Verbindungen verwalten können:

Azure-Drosselungseinstellungen konfigurieren

Azure Resource Manager drosselt Anforderungen für Abonnements und Mandanten und leitet den Datenverkehr basierend auf definierten Limits weiter, die auf die spezifischen Bedürfnisse des Anbieters zugeschnitten sind. Weitere Informationen finden Sie unter Drosselung von Resource Manager-Anforderungen auf der Microsoft-Website. Es gibt Limits für Abonnements und Mandanten, bei denen die Verwaltung vieler Maschinen problematisch werden kann. Zum Beispiel kann ein Abonnement, das viele Maschinen enthält, Leistungsprobleme im Zusammenhang mit Energieoperationen aufweisen.

Tipp:

Weitere Informationen finden Sie unter Verbessern der Azure-Leistung mit Machine Creation Services.

Um diese Probleme zu mindern, können Sie die interne MCS-Drosselung entfernen, um mehr des verfügbaren Anforderungskontingents von Azure zu nutzen.

Wir empfehlen die folgenden optimalen Einstellungen beim Ein- oder Ausschalten von VMs in großen Abonnements, zum Beispiel solchen mit 1.000 VMs:

  • Absolute gleichzeitige Operationen: 500
  • Maximale neue Operationen pro Minute: 2000
  • Maximale Parallelität von Operationen: 500

Verwenden Sie Web Studio, um Azure-Operationen für eine bestimmte Azure-Verbindung zu konfigurieren:

  1. Wählen Sie in Web Studio im linken Bereich Hosting aus.
  2. Wählen Sie die Verbindung aus.
  3. Wählen Sie im Assistenten Verbindung bearbeiten die Option Erweitert aus.
  4. Verwenden Sie auf der Seite Erweitert die Konfigurationsoptionen, um die Anzahl der gleichzeitigen Aktionen und die maximale Anzahl neuer Aktionen pro Minute sowie alle zusätzlichen Verbindungsoptionen anzugeben.

Azure-Drosselung

MCS unterstützt standardmäßig maximal 500 gleichzeitige Vorgänge. Alternativ können Sie das Remote PowerShell SDK verwenden, um die maximale Anzahl gleichzeitiger Vorgänge festzulegen.

Verwenden Sie die PowerShell-Eigenschaft MaximumConcurrentProvisioningOperations, um die maximale Anzahl gleichzeitiger Azure-Bereitstellungsvorgänge anzugeben. Beachten Sie bei der Verwendung dieser Eigenschaft Folgendes:

  • Der Standardwert von MaximumConcurrentProvisioningOperations ist 500.
  • Konfigurieren Sie den Parameter MaximumConcurrentProvisioningOperations mit dem PowerShell-Befehl Set-item.

Bildfreigabe in Azure aktivieren

Beim Erstellen oder Aktualisieren von Maschinenkatalogen können Sie freigegebene Images aus verschiedenen Azure-Mandanten und -Abonnements auswählen (die über die Azure Compute Gallery freigegeben werden). Um die Bildfreigabe innerhalb oder über Mandanten hinweg zu aktivieren, müssen Sie die erforderlichen Einstellungen in Azure vornehmen:

Images innerhalb eines Mandanten freigeben (abonnementübergreifend)

Um ein Image in der Azure Compute Gallery auszuwählen, das zu einem anderen Abonnement gehört, muss das Image für den Dienstprinzipal (SPN) dieses Abonnements freigegeben werden.

Wenn beispielsweise ein Dienstprinzipal (SPN 1) vorhanden ist, der in Studio wie folgt konfiguriert ist:

Dienstprinzipal: SPN 1

Abonnement: Abonnement 1

Mandant: Mandant 1

Das Image befindet sich in einem anderen Abonnement, das in Studio wie folgt konfiguriert ist:

Abonnement: Abonnement 2

Mandant: Mandant 1

Wenn Sie das Image in Abonnement 2 mit Abonnement 1 (SPN 1) teilen möchten, wechseln Sie zu Abonnement 2 und geben Sie die Ressourcengruppe für SPN1 frei.

Das Image muss mit einem anderen SPN über die rollenbasierte Zugriffssteuerung (RBAC) von Azure freigegeben werden. Azure RBAC ist das Autorisierungssystem, das zur Verwaltung des Zugriffs auf Azure-Ressourcen verwendet wird. Weitere Informationen zu Azure RBAC finden Sie im Microsoft-Dokument Was ist die rollenbasierte Zugriffssteuerung von Azure (Azure RBAC). Um Zugriff zu gewähren, weisen Sie Dienstprinzipalen Rollen im Bereich der Ressourcengruppe mit der Rolle “Mitwirkender” zu. Um Azure-Rollen zuzuweisen, müssen Sie über die Berechtigung Microsoft.Authorization/roleAssignments/write verfügen, z. B. als Benutzerzugriffsadministrator oder Besitzer. Weitere Informationen zum Freigeben von Images für einen anderen SPN finden Sie im Microsoft-Dokument Zuweisen von Azure-Rollen über das Azure-Portal.

Informationen zum Auswählen eines Images aus einem anderen Abonnement mithilfe von PowerShell-Befehlen finden Sie unter Auswählen eines Images aus einem anderen Abonnement.

Images mandantenübergreifend freigeben

Um Images mandantenübergreifend mit der Azure Compute Gallery freizugeben, erstellen Sie eine Anwendungsregistrierung.

Wenn es beispielsweise zwei Mandanten (Mandant 1 und Mandant 2) gibt und Sie Ihre Image-Galerie mit Mandant 1 teilen möchten, dann:

  1. Erstellen Sie eine Anwendungsregistrierung für Mandant 1. Weitere Informationen finden Sie unter Erstellen der App-Registrierung.

  2. Gewähren Sie Mandant 2 Zugriff auf die Anwendung, indem Sie eine Anmeldung über einen Browser anfordern. Ersetzen Sie Tenant2 ID durch die Mandanten-ID von Mandant 1. Ersetzen Sie Application (client) ID durch die Anwendungs-ID der von Ihnen erstellten Anwendungsregistrierung. Wenn Sie die Ersetzungen vorgenommen haben, fügen Sie die URL in einen Browser ein und folgen Sie den Anmeldeaufforderungen, um sich bei Mandant 2 anzumelden. Beispiel:

    https://login.microsoftonline.com/<Tenant 2 ID>/oauth2/authorize?client_id=<Application (client) ID>&response_type=code&redirect_uri=https%3A%2F%2Fwww.microsoft.com%2F
    <!--NeedCopy-->
    

    Weitere Informationen finden Sie unter Mandant 2 Zugriff gewähren.

  3. Gewähren Sie der Anwendung Zugriff auf die Ressourcengruppe von Mandant 2. Melden Sie sich als Mandant 2 an und gewähren Sie der Anwendungsregistrierung Zugriff auf die Ressourcengruppe, die das Galerie-Image enthält. Weitere Informationen finden Sie unter Anforderungen mandantenübergreifend authentifizieren.

So erstellen Sie einen Katalog mit einem Image von einem anderen Mandanten mithilfe von PowerShell-Befehlen:

  1. Benutzerdefinierte Eigenschaften der Hosting-Verbindung mit freigegebenen Mandanten-IDs aktualisieren.
  2. Ein Image von einem anderen Mandanten auswählen.

Freigegebene Mandanten zu einer Verbindung über Web Studio hinzufügen

Beim Erstellen oder Aktualisieren von Maschinenkatalogen in Web Studio können Sie freigegebene Images aus verschiedenen Azure-Mandanten und -Abonnements auswählen (die über die Azure Compute Gallery freigegeben werden). Die Funktion erfordert, dass Sie Informationen zu freigegebenen Mandanten und Abonnements für zugehörige Hostverbindungen bereitstellen.

Hinweis:

Stellen Sie sicher, dass Sie die erforderlichen Einstellungen in Azure konfiguriert haben, um die mandantenübergreifende Bildfreigabe zu ermöglichen. Weitere Informationen finden Sie unter Images mandantenübergreifend freigeben.

Führen Sie die folgenden Schritte für eine Verbindung aus:

  1. Wählen Sie in Web Studio im linken Bereich Hosting aus.
  2. Wählen Sie die Verbindung und dann in der Aktionsleiste Verbindung bearbeiten aus.

    Freigegebene Mandanten

  3. Führen Sie unter Freigegebene Mandanten Folgendes aus:

    • Geben Sie die Anwendungs-ID und das Anwendungsgeheimnis an, die dem Abonnement der Verbindung zugeordnet sind. Citrix Virtual Apps™ and Desktops verwendet diese Informationen zur Authentifizierung bei Microsoft Entra ID.
    • Fügen Sie Mandanten und Abonnements hinzu, die die Azure Compute Gallery mit dem Abonnement der Verbindung teilen. Sie können bis zu 8 freigegebene Mandanten und 8 Abonnements pro Mandant hinzufügen.
  4. Wenn Sie fertig sind, wählen Sie Anwenden, um die vorgenommenen Änderungen zu übernehmen und das Fenster geöffnet zu lassen, oder wählen Sie OK, um die Änderungen zu übernehmen und das Fenster zu schließen.

Bildfreigabe mit PowerShell implementieren

Dieser Abschnitt führt Sie durch die Prozesse der Bildfreigabe mithilfe von PowerShell:

Bild aus einem anderen Abonnement auswählen

Sie können ein Image in der Azure Compute Gallery auswählen, das zu einem anderen freigegebenen Abonnement im selben Azure-Mandanten gehört, um MCS-Kataloge mithilfe von PowerShell-Befehlen zu erstellen und zu aktualisieren.

  1. Im Stammordner der Hosting-Einheit erstellt Citrix einen neuen Ordner für freigegebene Abonnements namens sharedsubscription.
  2. Alle freigegebenen Abonnements in einem Mandanten auflisten.

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\sharedsubscription.folder"
    <!--NeedCopy-->
    
  3. Ein freigegebenes Abonnement auswählen und dann alle freigegebenen Ressourcengruppen dieses freigegebenen Abonnements auflisten.

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription"
    <!--NeedCopy-->
    
  4. Eine Ressourcengruppe auswählen und dann alle Galerien dieser Ressourcengruppe auflisten.

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\ xyz.resourcegroup"
    <!--NeedCopy-->
    
  5. Eine Galerie auswählen und dann alle Image-Definitionen dieser Galerie auflisten.

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\testgallery.gallery"
    <!--NeedCopy-->
    
  6. Eine Image-Definition auswählen und dann alle Image-Versionen dieser Image-Definition auflisten.

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\sigtestdef.imagedefinition"
    <!--NeedCopy-->
    
  7. Einen MCS-Katalog mit den folgenden Elementen erstellen und aktualisieren:

    • Ressourcengruppe
    • Galerie
    • Galerie-Image-Definition
    • Galerie-Image-Version

    Informationen zum Erstellen eines Katalogs mit dem Remote PowerShell SDK finden Sie unter https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/.

Benutzerdefinierte Eigenschaften der Hosting-Verbindung mit freigegebenen Mandanten-IDs aktualisieren

Verwenden Sie Set-Item, um die benutzerdefinierten Eigenschaften der Hosting-Verbindung mit freigegebenen Mandanten-IDs und Abonnement-IDs zu aktualisieren. Fügen Sie eine Eigenschaft SharedTenants in CustomProperties hinzu. Das Format von Shared Tenants ist:

[{"Tenant":"94367291-119e-457c-bc10-25337231f7bd","Subscriptions":["7bb42f40-8d7f-4230-a920-be2781f6d5d9"]},{"Tenant":"50e83564-c4e5-4209-b43d-815c45659564","Subscriptions":["06ab8944-6a88-47ee-a975-43dd491a37d0"]}]
<!--NeedCopy-->

Beispiel:

Set-Item -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`">
<Property xsi:type=`"StringProperty`" Name=`"SubscriptionId`" Value=`"123`" />
<Property xsi:type=`"StringProperty`" Name=`"ManagementEndpoint`" Value=`"https://management.azure.com/`" />
<Property xsi:type=`"StringProperty`" Name=`"AuthenticationAuthority`" Value=`"https://login.microsoftonline.com/`" />
<Property xsi:type=`"StringProperty`" Name=`"StorageSuffix`" Value=`"core.windows.net`" />
<Property xsi:type=`"StringProperty`" Name=`"TenantId`" Value=`"123abc`" />
<Property xsi:type=`"StringProperty`" Name=`"SharedTenants`" Value=`"`[ { 'Tenant':'123abc', 'Subscriptions':['345', '567'] } ]`"` />
</CustomProperties>"
-LiteralPath @("XDHyp:\Connections\aazure") -PassThru -UserName "advc345" -SecurePassword
$psd
<!--NeedCopy-->

Hinweis:

Sie können mehr als einen Mandanten hinzufügen. Jeder Mandant kann mehr als ein Abonnement haben.

Bild aus einem anderen Mandanten auswählen

Sie können ein Image in der Azure Compute Gallery auswählen, das zu einem anderen Azure-Mandanten gehört, um MCS-Kataloge mithilfe von PowerShell-Befehlen zu erstellen und zu aktualisieren.

  1. Im Stammordner der Hosting-Einheit erstellt Citrix einen neuen Ordner für freigegebene Abonnements namens sharedsubscription.
  2. Alle freigegebenen Abonnements auflisten.

    Get-ChildItem XDHyp:\HostingUnits\azres\sharedsubscription.folder
    <!--NeedCopy-->
    
  3. Ein freigegebenes Abonnement auswählen und dann alle freigegebenen Ressourcengruppen dieses freigegebenen Abonnements auflisten.

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription
    <!--NeedCopy-->
    
  4. Eine Ressourcengruppe auswählen und dann alle Galerien dieser Ressourcengruppe auflisten.

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\ xyz.resourcegroup
    <!--NeedCopy-->
    
  5. Eine Galerie auswählen und dann alle Image-Definitionen dieser Galerie auflisten.

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\efg.gallery
    <!--NeedCopy-->
    
  6. Eine Image-Definition auswählen und dann alle Image-Versionen dieser Image-Definition auflisten.

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\efg.gallery\hij.imagedefinition
    <!--NeedCopy-->
    
  7. Einen MCS-Katalog mit den folgenden Elementen erstellen und aktualisieren:

    • Ressourcengruppe
    • Galerie
    • Galerie-Image-Definition
    • Galerie-Image-Version

    Informationen zum Erstellen eines Katalogs mit dem Remote PowerShell SDK finden Sie unter https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/.

Anwendungsgeheimnis und Ablaufdatum des Geheimnisses verwalten

Stellen Sie sicher, dass Sie das Anwendungsgeheimnis für eine Verbindung ändern, bevor das Geheimnis abläuft. Sie sehen ein Warnsymbol bei der spezifischen Hostverbindung im Knoten Hosting ab 14 Tage vor Ablauf des Geheimschlüssels. Wenn der Geheimschlüssel jedoch abläuft, erhalten Sie Fehlermeldungen.

Ein Anwendungsgeheimnis in Azure erstellen

Sie können ein Anwendungsgeheimnis für eine Verbindung über das Azure-Portal erstellen.

  1. Wählen Sie Microsoft Entra ID aus.
  2. Wählen Sie unter App-Registrierungen in Microsoft Entra ID Ihre Anwendung aus.
  3. Gehen Sie zu Zertifikate & Geheimnisse.
  4. Klicken Sie auf Clientgeheimnisse > Neues Clientgeheimnis.
  5. Geben Sie eine Beschreibung für das Geheimnis ein und legen Sie eine Dauer fest. Wenn Sie fertig sind, wählen Sie Hinzufügen.

    Hinweis:

    Stellen Sie sicher, dass Sie das Clientgeheimnis speichern, da Sie es später nicht mehr abrufen können.

  6. Kopieren Sie den Wert des Clientgeheimnisses und das Ablaufdatum.
  7. Bearbeiten Sie im Web Studio die entsprechende Verbindung und ersetzen Sie den Inhalt in den Feldern Anwendungsgeheimnis und Ablaufdatum des Geheimnisses durch die kopierten Werte.

Ablaufdatum des Geheimnisses ändern

Sie können das Web Studio verwenden, um das Ablaufdatum für das verwendete Anwendungsgeheimnis hinzuzufügen oder zu ändern.

Hinweis:

Sie sehen ein Warnsymbol bei der spezifischen Hostverbindung im Knoten Hosting, beginnend 14 Tage vor Ablauf des geheimen Schlüssels.

  1. Klicken Sie im Assistenten Verbindung und Ressourcen hinzufügen mit der rechten Maustaste auf eine Verbindung und dann auf Verbindung bearbeiten.
  2. Klicken Sie auf der Seite Verbindungseigenschaften auf Ablaufdatum des Geheimnisses, um das Ablaufdatum für das verwendete Anwendungsgeheimnis hinzuzufügen oder zu ändern.

Eine vorab erstellte Netzwerksicherheitsgruppe verwenden

Erstellen Sie eine Deny-All-Netzwerksicherheitsgruppe für die Image-Vorbereitung, anstatt Citrix aufzufordern, NSG zu erstellen und zu ändern. Bearbeiten Sie die benutzerdefinierten Eigenschaften der Hosting-Einheit mithilfe eines PowerShell-Befehls Set-Item, um den Parameter NsgForPreparation einzuschließen und die Deny-All-Netzwerksicherheitsgruppe bereitzustellen.

Voraussetzungen

Konfigurieren Sie die folgenden Berechtigungen, die für einen Dienstprinzipal erforderlich sind:

  • Microsoft.Network/networkSecurityGroups/join/action: Eine Netzwerksicherheitsgruppe einem Subnetz oder einer Netzwerkschnittstelle zuordnen
  • Microsoft.Network/networkSecurityGroups/read: Ruft die Netzwerksicherheitsgruppe ab
  • Microsoft.Network/networkSecurityGroups/securityRules/read: Ruft die Regel ab

Die vorab erstellte Deny-All-Netzwerksicherheitsgruppe hinzufügen

Um die vorab erstellte Deny-All-Netzwerksicherheitsgruppe hinzuzufügen, legen Sie die benutzerdefinierten Eigenschaften auf der Hosting-Einheit wie folgt fest:

  1. Öffnen Sie ein PowerShell-Fenster mit dem Remote PowerShell SDK.
  2. Führen Sie die folgenden Befehle aus:

    Add-PSSnapin citrix*.
    cd XDHyp:\HostingUnits\
    Dir
    <!--NeedCopy-->
    
  3. Wählen Sie eine Hosting-Einheit aus, um die Details abzurufen:

    Get-Item "XDHyp:\HostingUnits\<hostingunitname>"
    <!--NeedCopy-->
    
  4. Kopieren Sie die CustomProperties in einen Editor und fügen Sie die Eigenschaftseinstellung <Property xsi:type="StringProperty” Name="NsgForPreparation” Value="{ResourceGroupName}/{NetworkSecurityGroupName}"/> an. Zum Beispiel:

    <CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"><Property xsi:type=`"StringProperty`" Name=`"NsgForPreparation`" Value=`{ResourceGroupName}/{NetworkSecurityGroupName}`"/></CustomProperties>
    <!--NeedCopy-->
    
  5. Weisen Sie im PowerShell-Fenster den geänderten benutzerdefinierten Eigenschaften eine Variable zu. Zum Beispiel:

    $customProperty = "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"><Property xsi:type=`"StringProperty`" Name=`"NsgForPreparation`" Value=`"{ResourceGroupName}/{NetworkSecurityGroupName}`"/></CustomProperties>"
    <!--NeedCopy-->
    
  6. Führen Sie $cred = Get-Credential aus. Geben Sie bei Aufforderung die Verbindungsanmeldeinformationen an. Die Anmeldeinformationen sind die Azure-Anwendungs-ID und das Geheimnis.
  7. Führen Sie den folgenden Befehl aus.

    Set-Item -PSPath XDHyp:\HostingUnits\<hostingunitname> -CustomProperties $customProperty -username $cred.username -Securepassword $cred.password
    <!--NeedCopy-->
    

    Wichtig:

    Wenn Sie eine Meldung erhalten, dass SubscriptionId fehlt, ersetzen Sie alle doppelten Anführungszeichen (“) durch ein Backtick gefolgt von doppelten Anführungszeichen (`”) in der benutzerdefinierten Eigenschaft.

  8. Führen Sie dir aus, um die aktualisierten CustomProperties-Einstellungen zu überprüfen.

Hinweis:

Es dauert länger als eine Minute, bis die Aktualisierungen übernommen werden.

Details der Netzwerksicherheitsgruppe abrufen

Um die Details der Netzwerksicherheitsgruppe abzurufen, rufen Sie zuerst die Ressourcengruppen ab, die die Netzwerksicherheitsgruppe enthalten, und rufen Sie dann die Netzwerksicherheitsgruppe basierend auf dem Namen der Ressourcengruppe ab.

  1. Rufen Sie die Ressourcengruppen ab, die die Netzwerksicherheitsgruppe enthalten. Zum Beispiel:

    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["networksecuritygroup"]}'
    <!--NeedCopy-->
    
  2. Rufen Sie die Netzwerksicherheitsgruppe basierend auf dem Namen der Ressourcengruppe ab. Zum Beispiel:

    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType securitygroup -MaxRecords 5 -AdditionalDataFilter '{"location": ["eastus", "westus"], "resourcegroup":["resourcegroupname"]}'
    <!--NeedCopy-->
    

Leere Ressourcengruppen filtern

Verwenden Sie den PowerShell-Befehl Get-HypInventoryItem, um leere Ressourcengruppen beim Auswählen eines Master-Images, Maschinenprofils oder vorbereiteten Images während der Erstellung des Maschinenkatalogs zu filtern.

Beispiele:

  • Die maximale Anzahl von Datensätzen auf einer Seite abrufen:

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5
     <!--NeedCopy-->
    
  • Die maximale Anzahl von Datensätzen auf einer Seite abrufen und filtern, um Ressourcencontainer mit spezifischen Ressourcen zu finden.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}'
     <!--NeedCopy-->
    
  • Abrufen mit Skip, um die Seite direkt anzugeben, und Filtern, um Ressourcencontainer mit spezifischen Ressourcen zu finden.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -skip 20 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}'
     <!--NeedCopy-->
    
  • Verwenden Sie ein Token, um die nächste Seite abzurufen, und filtern Sie, um Ressourcencontainer mit spezifischen Ressourcen zu finden.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}' -ContinuationToken 'ew0KICAiJGlkIjogIjEiLA0KICAiTWF4Um93cyI6IDUsDQogICJSb3dzVG9Ta2lwIjogMjUsDQogICJLdXN0b0NsdXN0ZXJVcmwiOiAiaHR0cHM6Ly9hcmctbmV1LTEzLXNmLmFyZy5jb3JlLndpbmRvd3MubmV0Ig0KfQ=='
     <!--NeedCopy-->
    
  • Rufen Sie alle Ressourcengruppen mit dem Tag Citrix internal tag ab und begrenzen Sie die maximale Anzahl von Datensätzen mit MaxRecords.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5
     <!--NeedCopy-->
    
  • Filtern Sie nach Maschinenprofil (Master-Image) mit dem Tag Citrix internal tag und begrenzen Sie die maximale Anzahl von Datensätzen mit MaxRecords.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "templatespecversion"]}'
     <!--NeedCopy-->
    
  • Filtern Sie nach vorbereitetem Image mit dem Tag Citrix internal tag und begrenzen Sie die maximale Anzahl von Datensätzen mit MaxRecords.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion"]}'
     <!--NeedCopy-->
    
  • Filtern Sie nach Maschinenprofil (vorbereitetes Image) mit dem Tag Citrix internal tag und begrenzen Sie die maximale Anzahl von Datensätzen mit MaxRecords.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "templatespecversion"]}'
     <!--NeedCopy-->
    
  • Filtern Sie nach Image mit dem Tag Citrix internal tag und begrenzen Sie die maximale Anzahl von Datensätzen mit MaxRecords und Standort.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion", "storageaccount"], "location": ["eastus", "westus"]}'
     <!--NeedCopy-->
    
  • Rufen Sie alle Ressourcengruppen ohne Berücksichtigung der Tags CitrixResource ab.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 50 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion", "storageaccount"]}' -Force $true
     <!--NeedCopy-->
    

Verbindung zur Azure Sovereign Airgap Cloud-Umgebung herstellen

Die Azure Sovereign Airgap Cloud-Umgebung eignet sich für streng geheime Workloads, die sich in getrennten Netzwerkdomänen befinden müssen. Sie können eine Verbindung zur Azure Sovereign Airgap Cloud-Umgebung herstellen, indem Sie beim Erstellen einer Hostverbindung eine benutzerdefinierte Eigenschaft DisableInstanceDiscovery verwenden.

<Property xsi:type="StringProperty" Name="DisableInstanceDiscovery" Value="true" />
<!--NeedCopy-->

Weitere Informationen zum Erstellen einer Azure-Hostverbindung finden Sie unter Create-HostingConnection.ps1.

Erforderliche Azure-Berechtigungen

Dieser Abschnitt enthält die minimalen und allgemeinen Berechtigungen, die für Azure erforderlich sind.

Mindestberechtigungen

Mindestberechtigungen bieten eine bessere Sicherheitskontrolle. Neue Funktionen, die zusätzliche Berechtigungen erfordern, schlagen jedoch fehl, da nur Mindestberechtigungen verwendet werden.

Erstellen einer Hostverbindung

Fügen Sie eine neue Hostverbindung unter Verwendung der aus Azure erhaltenen Informationen hinzu.

"Microsoft.Network/virtualNetworks/read",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/disks/read",
"Microsoft.Resources/providers/read",
"Microsoft.Resources/subscriptions/locations/read",
"Microsoft.Resources/tenants/read",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/securityRules/read"
<!--NeedCopy-->

Energieverwaltung von VMs

Schalten Sie die Maschineninstanzen ein oder aus.

"Microsoft.Compute/virtualMachines/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Insights/diagnosticsettings/delete",
"Microsoft.Insights/diagnosticsettings/read",
"Microsoft.Insights/diagnosticsettings/write",
<!--NeedCopy-->

Erstellen, Aktualisieren oder Löschen von VMs

Erstellen Sie einen Maschinenkatalog, fügen Sie Maschinen hinzu, löschen oder aktualisieren Sie sie und löschen Sie den Maschinenkatalog.

Im Folgenden finden Sie eine Liste der Mindestberechtigungen, die erforderlich sind, wenn das Master-Image eine verwaltete Festplatte ist oder Snapshots in derselben Region wie die Hostverbindung gespeichert sind.

"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Compute/locations/publishers/artifacttypes/types/versions/read",
"Microsoft.Compute/skus/read",
"Microsoft.Compute/virtualMachines/extensions/read",
"Microsoft.Compute/virtualMachines/extensions/write",
"Microsoft.Features/providers/features/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/locations/usages/read",
"Microsoft.Compute/capacityReservationGroups/capacityReservations/read"

<!--NeedCopy-->

Sie benötigen die folgenden zusätzlichen Berechtigungen, basierend auf den Mindestberechtigungen, für die folgenden Funktionen:

  • Wenn das Master-Image eine VHD in einem Speicherkonto ist, das sich in derselben Region wie die Hostverbindung befindet:

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     <!--NeedCopy-->
    
  • Wenn das Master-Image eine ImageVersion aus der Shared Image Gallery ist:

     "Microsoft.Compute/galleries/read",
     "Microsoft.Compute/galleries/images/read",
     "Microsoft.Compute/galleries/images/versions/read",
     <!--NeedCopy-->
    
  • Wenn das Master-Image eine verwaltete Festplatte ist und die Snapshots oder VHD sich in einer anderen Region als die Region der Hostverbindung befinden:

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     "Microsoft.Storage/storageAccounts/write",
     "Microsoft.Storage/storageAccounts/delete",
     "Microsoft.Storage/checknameavailability/read",
     "Microsoft.Storage/locations/usages/read",
     "Microsoft.Storage/skus/read",
     <!--NeedCopy-->
    
  • Wenn Sie eine von Citrix verwaltete Ressourcengruppe verwenden:

     "Microsoft.Resources/subscriptions/resourceGroups/write",
     "Microsoft.Resources/subscriptions/resourceGroups/delete",
     <!--NeedCopy-->
    
  • Wenn Sie das Master-Image in der Azure Compute Gallery (ehemals Shared Image Gallery) in einem freigegebenen Tenant oder Abonnement ablegen:

     "Microsoft.Compute/galleries/write",
     "Microsoft.Compute/galleries/images/write",
     "Microsoft.Compute/galleries/images/versions/write",
     "Microsoft.Compute/galleries/read",
     "Microsoft.Compute/galleries/images/read",
     "Microsoft.Compute/galleries/images/versions/read",
     "Microsoft.Compute/galleries/delete",
     "Microsoft.Compute/galleries/images/delete",
     "Microsoft.Compute/galleries/images/versions/delete",
     "Microsoft.Resources/subscriptions/read",
     <!--NeedCopy-->
    
  • Wenn Sie die Unterstützung für dedizierte Azure-Hosts verwenden:

     "Microsoft.Compute/hostGroups/read",
     "Microsoft.Compute/hostGroups/write",
     "Microsoft.Compute/hostGroups/hosts/read",
     <!--NeedCopy-->
    
  • Wenn Sie die serverseitige Verschlüsselung (SSE) mit kundenseitig verwalteten Schlüsseln (CMK) verwenden:

     "Microsoft.Compute/diskEncryptionSets/read",
     <!--NeedCopy-->
    
  • Wenn Sie VMs mithilfe von ARM-Vorlagen (Maschinenprofil) bereitstellen:

     "Microsoft.Resources/deployments/write",
     "Microsoft.Resources/deployments/operationstatuses/read",
     "Microsoft.Resources/deployments/read",
     "Microsoft.Resources/deployments/delete",
     "Microsoft.Insights/DataCollectionRuleAssociations/Read",
     "Microsoft.Insights/dataCollectionRules/read",
     <!--NeedCopy-->
    
  • Wenn Sie die Azure-Vorlagenspezifikation als Maschinenprofil verwenden:

     "Microsoft.Resources/templateSpecs/read",
     "Microsoft.Resources/templateSpecs/versions/read",
     <!--NeedCopy-->
    

Erstellen, Aktualisieren und Löschen von Maschinen mit nicht verwalteter Festplatte

Im Folgenden finden Sie die Liste der Mindestberechtigungen, die erforderlich sind, wenn das Master-Image eine VHD ist und die Ressourcengruppe vom Administrator bereitgestellt wird:

"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Storage/checknameavailability/read",
"Microsoft.Storage/locations/usages/read",
"Microsoft.Storage/skus/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/locations/usages/read",
<!--NeedCopy-->

Kostenmanagement

Im Folgenden finden Sie die Mindestberechtigung, die zum Abrufen der VM-Preise erforderlich ist:

"Microsoft.Consumption/pricesheets/read"
<!--NeedCopy-->

Im Folgenden finden Sie die Mindestberechtigung, die zum Abrufen der VM-Kosten erforderlich ist:

"Microsoft.CostManagement/query/read"
<!--NeedCopy-->

Hinweis:

Um die Registerkarte Kostenübersicht für einen Azure-Maschinenkatalog anzuzeigen, müssen Sie über die Berechtigung Kostenmanagement > Verwalten > Kosten lesen verfügen (Standard für Cloud-Administratoren). Weitere Informationen zur Registerkarte Kostenübersicht finden Sie unter Katalogdetails anzeigen.

Allgemeine Berechtigung

Die Rolle „Mitwirkender“ hat vollen Zugriff auf die Verwaltung aller Ressourcen. Dieser Satz von Berechtigungen hindert Sie nicht daran, neue Funktionen zu erhalten.

Der folgende Satz von Berechtigungen bietet die beste Kompatibilität für die Zukunft, obwohl er mehr Berechtigungen enthält, als für den aktuellen Funktionsumfang erforderlich sind:

"Microsoft.Compute/diskEncryptionSets/read",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/galleries/delete",
"Microsoft.Compute/galleries/images/delete",
"Microsoft.Compute/galleries/images/read",
"Microsoft.Compute/galleries/images/versions/delete",
"Microsoft.Compute/galleries/images/versions/read",
"Microsoft.Compute/galleries/images/versions/write",
"Microsoft.Compute/galleries/images/write",
"Microsoft.Compute/galleries/read",
"Microsoft.Compute/galleries/write",
"Microsoft.Compute/hostGroups/hosts/read",
"Microsoft.Compute/hostGroups/read",
"Microsoft.Compute/hostGroups/write",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Compute/locations/publishers/artifacttypes/types/versions/read",
"Microsoft.Compute/skus/read",
"Microsoft.Compute/virtualMachines/extensions/read",
"Microsoft.Compute/virtualMachines/extensions/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/locations/usages/read",
"Microsoft.Resources/deployments/operationstatuses/read",
"Microsoft.Resources/deployments/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Resources/deployments/write",
"Microsoft.Resources/deployments/delete",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
"Microsoft.Resources/providers/read",
"Microsoft.Resources/subscriptions/locations/read",
"Microsoft.Resources/subscriptions/read",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Resources/tenants/read",
"Microsoft.Resources/templateSpecs/read",
"Microsoft.Resources/templateSpecs/versions/read",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Storage/checknameavailability/read",
"Microsoft.Storage/locations/usages/read",
"Microsoft.Storage/skus/read",
"Microsoft.Features/providers/features/read",
"Microsoft.Insights/DataCollectionRuleAssociations/Read",
"Microsoft.Insights/dataCollectionRules/read",
"Microsoft.Insights/diagnosticsettings/delete",
"Microsoft.Insights/diagnosticsettings/read",
"Microsoft.Insights/diagnosticsettings/write",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/securityRules/read",
"Microsoft.Compute/capacityReservationGroups/capacityReservations/read"
<!--NeedCopy-->

Hostverbindung in einer nicht geheimen Azure-Umgebung validieren

Sie können Berechtigungen für eine Hostverbindung validieren, um Aufgaben im Zusammenhang mit dem Erstellen und Verwalten von MCS-Maschinenkatalogen auszuführen. Diese Implementierung hilft Ihnen, die fehlenden Berechtigungen für verschiedene Szenarien wie das Erstellen, Löschen und Aktualisieren von VMs sowie das Energiemanagement von VMs frühzeitig zu ermitteln, damit Sie zu kritischen Zeiten nicht blockiert werden.

Sie können die Berechtigungen für eine Hostverbindung mithilfe des PowerShell-Befehls Test-HypHypervisorConnection validieren. Das Ergebnis des Befehls wird als Liste erfasst, wobei jedes Element der Liste in drei Abschnitte unterteilt ist.

  • Kategorie: Die Aktion oder Aufgabe, die ein Benutzer zum Erstellen und Verwalten eines MCS-Maschinenkatalogs ausführen kann.
  • Korrekturmaßnahme: Der Schritt, den ein Administrator ausführen muss, um eine Diskrepanz bei fehlenden Benutzerberechtigungen zu beheben.
  • Fehlende Berechtigung: Die Liste der fehlenden Berechtigungen für eine Kategorie.

Gehen Sie wie folgt vor, um die Berechtigungen zu validieren:

  1. Erstellen Sie eine Hostverbindung zu Azure.
  2. Öffnen Sie ein PowerShell-Fenster vom Delivery Controller™-Host.
  3. Führen Sie asnp citrix* aus, um die Citrix-spezifischen PowerShell-Module zu laden.
  4. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Sie über die erforderlichen Berechtigungen zum Testen einer Verbindung verfügen.

    Test-HypHypervisorConnection -LiteralPath "XDHyp:\Connections\AzureCon"
    <!--NeedCopy-->
    

    Für den SPN erforderliche Berechtigung auf Rollenebene:

    • Microsoft.Authorization/roleDefinitions/read (auf Abonnementebene oder auf Ressourcengruppenebene, falls eine Ressourcengruppe angegeben ist)
    • Microsoft.Authorization/roleAssignments/read (auf Abonnementebene oder auf Ressourcengruppenebene, falls eine Ressourcengruppe angegeben ist)

    Für den SPN erforderliche Berechtigungen auf API-Ebene:

    Microsoft.Graph:

    • Application.Read.All
    • Directory.Read.All
    • ServicePrincipalEndpoint.Read.All
  5. Nachdem Sie die fehlenden Berechtigungen hinzugefügt haben, die zum Nachschlagen Ihrer Berechtigungen erforderlich sind, führen Sie den folgenden Befehl aus, um zu überprüfen, ob Sie Berechtigungen in den verschiedenen Kategorien haben.

    Beispiel:

    So testen Sie eine Verbindung auf Abonnementebene mit erforderlicher höherer Autorisierungsstufe:

    Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\ AzureCon -SecurePassword $password -UserName 922e65d5-38ae-4cf5-xxxx-xxxxxxxxx
    <!--NeedCopy-->
    

    Beispiel:

    So testen Sie eine Verbindung auf Ressourcengruppenebene ohne hohe Autorisierungsstufe:

    Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\testles -CustomProperties $customProperties | Format-List
    <!--NeedCopy-->
    

    Hinweis:

    Der Parameter CustomProperties wird verwendet, um die Ressourcengruppenebene anzugeben, da die Ressourcengruppe eine verbindungsspezifische Information ist.

    Beispiel:

    So testen Sie eine Verbindung mit höherer Autorisierungsstufe auf Ressourcengruppenebene:

    Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\testles -SecurePassword $password -UserName 922e65d5-38ae-4cf5-832b-54122196b7dd -CustomProperties $customProperties
    <!--NeedCopy-->
    

Informationen zu Berechtigungen finden Sie unter Erforderliche Azure-Berechtigungen.

Hostverbindung in einer Azure Secret-Umgebung validieren

Sie können mithilfe des PowerShell-Befehls Test-HypHypervisorConnection überprüfen, ob eine Hostverbindung die erforderlichen Berechtigungen in einer Azure Secret-Umgebung besitzt.

Um das Validierungsergebnis erfolgreich abzurufen, müssen Sie jedoch eine vorhandene Hostverbindung erstellen oder aktualisieren, sodass sie über die benutzerdefinierte Eigenschaft AuthenticationObjectId verfügt. Diese Eigenschaft speichert die Objekt-ID des Dienstprinzipals, der mit der Hosting-Verbindung verknüpft ist.

Hinweis:

Rufen Sie die Objekt-ID des Dienstprinzipals aus dem Azure-Portal ab. Verwenden Sie nicht die ID der Anwendung.

Eine Hostverbindung erstellen oder aktualisieren, um AuthenticationObjectId einzuschließen

Verwenden Sie New-Item, um eine Hostverbindung zu erstellen und AuthenticationObjectId als benutzerdefinierte Eigenschaft hinzuzufügen. Beispiel:

New-Item -ConnectionType 'Azure' -HypervisorAddress @('http://hypervisorhost1.example.com','http://hypervisorhost2.example.com')`
    -LoggingId $loggingId -Path @('XDHyp:\\Connections\\Example') -Persist -Scope @() `
    -Password 'Password' -UserName 'root' -CustomProperties <Property xsi:type="StringProperty" Name="AuthenticationObjectId" Value="Object ID of the service principal"/>
<!--NeedCopy-->

Verwenden Sie Set-Item, um eine vorhandene Hostverbindung zu aktualisieren und AuthenticationObjectId als benutzerdefinierte Eigenschaft hinzuzufügen. Gehen Sie dazu wie folgt vor:

  1. Öffnen Sie ein PowerShell-Fenster mithilfe des Remote PowerShell SDK.
  2. Führen Sie die folgenden Befehle aus:

    Add-PSSnapin citrix*.
    cd XDHyp:\Connections\
    dir
    <!--NeedCopy-->
    
  3. Kopieren Sie die CustomProperties der Verbindung in einen Editor und fügen Sie die Eigenschaftseinstellung <Property xsi:type="StringProperty" Name="AuthenticationObjectId" Value="Object ID of the service principal"/> an die CustomProperties an.
  4. Weisen Sie im PowerShell-Fenster den geänderten benutzerdefinierten Eigenschaften eine Variable zu.
  5. Führen Sie $cred = Get-Credential aus. Geben Sie bei Aufforderung die Verbindungsanmeldeinformationen an. Die Anmeldeinformationen sind die Azure-Anwendungs-ID und das Geheimnis.
  6. Führen Sie Set-Item -PSPath XDHyp:\Connections\<Connection_Name> -CustomProperties $customProperty -username $cred.username -Securepassword $cred.password aus.
  7. Führen Sie dir aus, um die aktualisierten CustomProperties-Einstellungen zu überprüfen.

    Set-Item -PSPath XDHyp:\Connections\$connName -CustomProperties <Property xsi:type="StringProperty" Name="AuthenticationObjectId" Value="Object ID of the service principal"/> -username $cred.username -Securepassword $cred.password
    <!--NeedCopy-->
    

Hostverbindung auf Berechtigungen überprüfen

Um die Hostverbindungen auf die erforderlichen Rollen und Berechtigungen zu überprüfen, führen Sie die folgenden Befehle aus:

  • Wenn Sie Rollen und Berechtigungen auf Abonnementebene zugewiesen haben:

     Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\<Your-HostingConnection>
     <!--NeedCopy-->
    
  • Wenn Sie Rollen und Berechtigungen auf Ressourcengruppenebene zugewiesen haben:

     Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\<Your-HostingConnection>  -CustomProperties $CustomProperties
        
     $CustomProperties = '<CustomProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.citrix.com/2014/xd/machinecreation">'`
     +  '<Property xsi:type="StringProperty" Name="ResourceGroups" Value="ExampleResourceGroup" />'`
     +  '</CustomProperties>'
     <!--NeedCopy-->
    

Nächste Schritte

Weitere Informationen