Citrix Virtual Apps and Desktops

Verbindung zu AWS

Unter Verbindungen und Ressourcen erstellen und verwalten werden die Assistenten zum Erstellen einer Verbindung beschrieben. Die folgenden Informationen beziehen sich speziell auf AWS-Cloudumgebungen.

Hinweis:

Bevor Sie eine Verbindung zu AWS herstellen, müssen Sie zunächst Ihr AWS-Konto als Ressourcenstandort eingerichtet haben. Siehe AWS-Cloudumgebungen.

Verbindung erstellen

Beim Erstellen einer Verbindung von Web Studio aus gilt Folgendes:

  • Sie müssen den API-Schlüssel und die geheimen Schlüsselwerte angeben. Sie können die Schlüsseldatei mit diesen Werten aus AWS exportieren und anschließend importieren. Sie müssen auch die Werte für Region, Verfügbarkeitszone, VPC-Namen, Subnetzadressen, Domänenname, Namen der Sicherheitsgruppen und Anmeldeinformationen angeben.
  • Die für das AWS-Rootkonto von der AWS-Konsole abgerufene Anmeldeinformationsdatei hat nicht das gleiche Format wie die Anmeldeinformationsdateien, die für Standard-AWS-Benutzer heruntergeladen werden. Deshalb kann diese Datei nicht von Citrix Virtual Apps and Desktops zum Ausfüllen der Felder “API-Schlüssel” und “Geheimer Schlüssel” verwendet werden. Verwenden Sie AWS Identity Access Management (IAM)-Anmeldeinformationsdateien.

Hinweis:

Nachdem Sie eine Verbindung hergestellt haben, kann die Aktualisierung des API-Schlüssels und des geheimen Schlüssels fehlschlagen. Um das Problem zu beheben, überprüfen Sie Ihren Proxyserver oder die Firewall-Beschränkungen und stellen Sie sicher, dass die folgende Adresse erreichbar ist: https://*.amazonaws.com.

Standardwerte für Hostverbindungen

Wenn Sie Hostverbindungen in AWS-Cloudumgebungen erstellen, werden die folgenden Standardwerte angezeigt:

| Option | Absolut | Prozent | |— | — | —| | Gleichzeitige Aktionen (alle Typen) | 125 | 100 | | Höchstanzahl neue Aktionen pro Minute | 125 |

MCS unterstützt standardmäßig maximal 100 gleichzeitige Provisioningvorgänge.

Service-Endpunkt-URL

Standard-Service-Endpunkt-URL

Wenn Sie MCS verwenden, werden neue AWS-Verbindungen mit einem API-Schlüssel und einem API-Geheimnis hinzugefügt. Anhand dieser Informationen und des authentifizierten Kontos fragt MCS bei AWS mit dem AWS-API-Aufruf DescribeRegions EC2 die unterstützten Zonen ab. Die Abfrage erfolgt mit der generischen EC2-Service-Endpunkt-URL https://ec2.amazonaws.com/. Wählen Sie über MCS die Zone für die Verbindung aus der Liste der unterstützten Zonen aus. Die bevorzugte AWS-Service-Endpunkt-URL wird automatisch für die Zone ausgewählt. Nach dem Erstellen der Service-Endpunkt-URL können Sie diese nicht mehr ändern.

Nicht standardmäßige Service-Endpunkt-URL

In manchen Situationen wird keine automatisch gewählte AWS-Service-Endpunkt-URL für die Verbindung benötigt. In diesem Fall können Sie mit dem Citrix Cloud-SDK und PowerShell eine Verbindung mit einer nicht standardmäßigen Service-Endpunkt-URL herzustellen. Zum Erstellen einer Verbindung mit der Service-Endpunkt-URL https://ec2.cn-north-1.amazonaws.com.cn gehen Sie beispielsweise folgendermaßen vor:

  1. Richten Sie den von AWS gehosteten Cloud Connector ein und stellen Sie sicher, dass er verbunden ist.
  2. Führen Sie die folgenden PowerShell-Befehle aus, um die Liste der Cloud Connectors anzuzeigen.

     PS C:> asnp citrix.*
     PS C:> Get-XDAuthentication
     PS C:> Get-ConfigEdgeServer
    <!--NeedCopy-->
    
  3. Suchen Sie die ZoneUid des neu erstellten Cloud Connectors und geben Sie sie in den folgenden PowerShell-Befehlen ein. Ersetzen Sie die kursiv dargestellten Elemente durch die entsprechenden Werte.

    PS C:\> $hyp= New-Item -Path xdhyp:\Connections -ZoneUidZoneUid-Name“My New Connection”-ConnectionType "AWS" -HypervisorAddress @("https://ec2.cn-north-1.amazonaws.com.cn") -UserName“APIkey” -Password“API Secret” -Persist PS C:\> New-BrokerHypervisorConnection -HypHypervisorConnectionUid $hyp. HypervisorConnectionUid

  4. Aktualisieren Sie die Registerkarte Konfiguration > Hosting, um zu überprüfen, ob die EC2-Verbindung erstellt wurde.
  5. Fügen Sie unter Verwendung der neuen Verbindung einen Ressourcenstandort hinzu.

IAM-Berechtigungen definieren

Anhand der Informationen in diesem Abschnitt können Sie IAM-Berechtigungen für Citrix Virtual Apps and Desktops in AWS definieren. Der IAM-Dienst von Amazon gestattet Konten mit mehreren Benutzern, die in Gruppen organisiert werden können. Die Benutzer können verschiedene Berechtigungen für die Durchführung von Vorgängen haben, die mit dem Konto verknüpft sind. Weitere Informationen zu IAM-Berechtigungen finden Sie unter IAM-JSON-Richtlinienreferenz.

Gehen Sie zum Anwenden der IAM-Berechtigungsrichtlinie auf eine neue Benutzergruppe folgendermaßen vor:

  1. Melden Sie sich bei der AWS-Verwaltungskonsole an und wählen Sie IAM service aus der Dropdownliste aus.
  2. Wählen Sie Create a New Group of Users.
  3. Geben Sie einen Namen für die neue Benutzergruppe ein und wählen Sie Continue.
  4. Wählen Sie auf der Seite Permissions die Option Custom Policy. Wählen Sie Select.
  5. Geben Sie einen Namen für die Berechtigungsrichtlinieein.
  6. Geben Sie im Abschnitt Richtliniendokument die relevanten Berechtigungen ein.

Nach Eingabe der Richtlinieninformationen wählen Sie Continue, um die Benutzergruppe abzuschließen. Den Benutzern in der Gruppe werden nur die Berechtigungen erteilt, die sie zur Ausführung der für Citrix Virtual Apps and Desktops erforderlichen Aktionen benötigen.

Wichtig:

Verwenden Sie den Richtlinientext im obigen Beispiel, um die von Citrix Virtual Apps and Desktops in einem AWS-Konto durchgeführten Aktionen aufzulisten, ohne diese auf bestimmte Ressourcen zu beschränken. Citrix empfiehlt die Verwendung des Beispiels zu Testzwecken. Für Produktionsumgebungen können Sie weitere Beschränkungen für Ressourcen hinzufügen.

IAM-Berechtigungen festlegen

Legen Sie die Berechtigungen im Bereich IAM der AWS Management Console fest:

  1. Wählen Sie im Bereich Summary die Registerkarte Permissions.
  2. Wählen Sie Add Permissions.

Identity and Access Management (IAM)

Erteilen Sie im Fenster Add Permissions to folgende Berechtigungen:

Berechtigungen für IAM-Richtlinien erteilen

Verwenden Sie Folgendes als Beispiel für die Registerkarte JSON:

JSON-Beispiel

Tipp:

Das JSON-Beispiel enthält möglicherweise nicht alle Berechtigungen für Ihre Umgebung. Weitere Informationen finden Sie unter How to Define Identity Access Management Permissions Running Citrix Virtual Apps and Desktops on AWS.

Erforderliche AWS-Berechtigungen

Dieser Abschnitt enthält die vollständige Liste der AWS-Berechtigungen.

Hinweis:

Die Berechtigung iam:PassRole wird nur für role_based_auth benötigt.

Erstellen einer Hostverbindung

Eine neue Hostverbindung wird unter Verwendung der Informationen von AWS hinzugefügt.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeImages",
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

Energieverwaltung virtueller Maschinen

Maschineninstanzen werden ein- oder ausgeschaltet.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:AttachVolume",
                "ec2:CreateVolume",
                "ec2:DeleteVolume",
                "ec2:DescribeInstances",
                "ec2:DescribeVolumes",
                "ec2:DetachVolume",
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

Erstellen, Aktualisieren oder Löschen von VMs

Ein Maschinenkatalog wird mit VMs erstellt, aktualisiert oder gelöscht, die als AWS-Instanzen bereitgestellt werden.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:AttachVolume",
                "ec2:AssociateIamInstanceProfile",
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateImage",
                "ec2:CreateLaunchTemplate",
                "ec2:CreateSecurityGroup",
                "ec2:CreateTags",
                "ec2:CreateVolume",
                "ec2:DeleteVolume",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeIamInstanceProfileAssociations",
                "ec2:DescribeImages",
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeLaunchTemplates",
                "ec2:DescribeLaunchTemplateVersions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeRegions",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSnapshots",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "ec2:DescribeVolumes",
                "ec2:DescribeVpcs",
                "ec2:DetachVolume",
                "ec2:DisassociateIamInstanceProfile",
                "ec2:RunInstances",
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:TerminateInstances"
            ],
            "Effect": "Allow",
            "Resource": "\*"
        },
        {
            "Action": [
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateSecurityGroup",
                "ec2:DeleteSecurityGroup",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress"
            ],
            "Effect": "Allow",
            "Resource": "\*"
        },
        {
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:PutBucketAcl",
                "s3:PutBucketTagging",
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:PutObjectTagging"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::citrix*"
        },
        {
            "Action": [
                "ebs:StartSnapshot",
                "ebs:GetSnapshotBlock",
                "ebs:PutSnapshotBlock",
                "ebs:CompleteSnapshot",
                "ebs:ListSnapshotBlocks",
                "ebs:ListChangedBlocks",
                "ec2:CreateSnapshot"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

Hinweis:

Der Abschnitt zu EC2, der sich auf Sicherheitsgruppen bezieht, wird nur benötigt, wenn während der Katalogerstellung eine Isolationssicherheitsgruppe für die Vorbereitungs-VM erstellt werden muss. Sobald dies abgeschlossen ist, sind diese Berechtigungen nicht erforderlich.

Direkter Disk-Upload und -Download

Durch den direkten Disk-Upload entfällt die Volumeworker-Anforderung beim Provisioning von Maschinenkatalogen. Stattdessen werden von AWS bereitgestellte öffentliche APIs verwendet. Diese Funktion reduziert die mit zusätzlichen Speicherkonten verbundenen Kosten und die komplexe Verwaltung von Volumeworker-Prozessen.

Hinweis:

Die Volumeworker-Unterstützung ist veraltet.

Folgende Berechtigungen müssen zur Richtlinie hinzugefügt werden:

  • ebs:StartSnapshot
  • ebs:GetSnapshotBlock
  • ebs:PutSnapshotBlock
  • ebs:CompleteSnapshot
  • ebs:ListSnapshotBlocks
  • ebs:ListChangedBlocks
  • ec2:CreateSnapshot
  • ec2:DescribeLaunchTemplates

Wichtig:

  • Sie können eine VM zu vorhandenen Maschinenkatalogen ohne Volumeworker-Prozesse wie Volumeworker-AMI und Volumeworker-VM hinzufügen.
  • Wenn Sie einen vorhandenen Katalog löschen, in dem Volumeworker verwendet wurde, werden alle Artefakte inklusive zugehörigem Volumeworker gelöscht.

EBS-Verschlüsselung erstellter Volumes

EBS kann neu erstellte Volumes automatisch verschlüsseln, wenn das AMI verschlüsselt ist oder EBS zur Verschlüsselung aller neuen Volumes konfiguriert ist. Zum Implementieren der Funktionalität müssen jedoch die folgenden Berechtigungen in der IAM-Richtlinie enthalten sein.

{
     "Version": "2012-10-17",
     "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                 "kms:CreateGrant",
                 "kms:Decrypt",
                 "kms:DescribeKey",
                 "kms:GenerateDataKeyWithoutPlainText",
                 "kms:ReEncryptTo",
                 "kms:ReEncryptFrom"
            ],
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

Hinweis:

Die Berechtigungen können durch Hinzufügen eines Abschnitts “Resource” und “Condition” nach Ermessen des Benutzers auf bestimmte Schlüssel beschränkt werden. Beispiel: KMS-Berechtigungen mit Bedingung:

{
     "Version": "2012-10-17",
     "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                 "kms:CreateGrant",
                 "kms:Decrypt",
                 "kms:DescribeKey",
                 "kms:GenerateDataKeyWithoutPlainText",
                 "kms:ReEncryptTo",
                 "kms:ReEncryptFrom"
            ],
            "Resource": [
                "arn:aws:kms:us-east-2:123456789012:key/abcd1234-a123-456d-a12b-a123b4cd56ef"
            ],
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": true
                }
            }
        }
    ]
}
<!--NeedCopy-->

Die folgende Schlüsselrichtlinienanweisung ist die komplette Standardrichtlinie für KMS-Schlüssel, die erforderlich ist, damit das Konto unter Einsatz von IAM-Richtlinien Berechtigungen für alle Aktionen (kms: *) für den KMS-Schlüssel delegieren kann.

{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:",
"Resource": ""
}
<!--NeedCopy-->

Weitere Informationen finden Sie in der offiziellen AWS-Dokumentation unter AWS Key Management Service.

Rollenbasierte IAM-Authentifizierung

Die folgenden Berechtigungen werden zur Unterstützung der rollenbasierten Authentifizierung hinzugefügt.

{
     "Version": "2012-10-17",
     "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::\*:role/\*"
        }
    ]
}
<!--NeedCopy-->

Richtlinie für Mindest-IAM-Berechtigungen

Die folgende JSON kann für alle derzeit unterstützten Features verwendet werden. Unter Verwendung der Richtlinie können Sie Hostverbindungen erstellen, VMs erstellen, aktualisieren und löschen und die Energieverwaltung durchführen. Die Richtlinie kann auf die Benutzer angewendet werden (siehe IAM-Berechtigungen definieren) oder Sie können die rollenbasierte Authentifizierung über den Sicherheitsschlüssel role_based_auth und den geheimen Schlüssel verwenden.

Wichtig:

Um role_based_auth zu verwenden, konfigurieren Sie beim Einrichten des Cloud Connectors zunächst die gewünschte IAM-Rolle für die EC2-Instanz des Cloud Connectors. Fügen Sie unter Verwendung von Web Studio die Hostingverbindung hinzu und geben Sie role_based_auth für den Authentifizierungsschlüssel und das Geheimnis an. Eine Hostingverbindung mit diesen Einstellungen verwendet dann die rollenbasierte Authentifizierung.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:AttachVolume",
                "ec2:AssociateIamInstanceProfile",
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateImage",
                "ec2:CreateLaunchTemplate",
                "ec2:CreateNetworkInterface",
                "ec2:CreateTags",
                "ec2:CreateVolume",
                "ec2:DeleteLaunchTemplate",
                "ec2:DeleteNetworkInterface",
                "ec2:DeleteSecurityGroup",
                "ec2:DeleteSnapshot",
                "ec2:DeleteTags",
                "ec2:DeleteVolume",
                "ec2:DeregisterImage",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeIamInstanceProfileAssociations",
                "ec2:DescribeImages",
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeLaunchTemplates",
                "ec2:DescribeLaunchTemplateVersions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeRegions",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSnapshots",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "ec2:DescribeVolumes",
                "ec2:DescribeVpcs",
                "ec2:DetachVolume",
                "ec2:DisassociateIamInstanceProfile",
                "ec2:RebootInstances",
                "ec2:RunInstances",
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:TerminateInstances"
            ],
            "Effect": "Allow",
            "Resource": "\*"
        },
        {
            "Action": [
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateSecurityGroup",
                "ec2:DeleteSecurityGroup",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress"
            ],
            "Effect": "Allow",
            "Resource": "\*"
        },
        {
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutBucketAcl",
                "s3:PutObject",
                "s3:PutBucketTagging",
                "s3:PutObjectTagging"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::citrix*"
        },
        {
            "Action": [
                "ebs:StartSnapshot",
                "ebs:GetSnapshotBlock",
                "ebs:PutSnapshotBlock",
                "ebs:CompleteSnapshot",
                "ebs:ListSnapshotBlocks",
                "ebs:ListChangedBlocks",
                "ec2:CreateSnapshot"
            ],
            "Effect": "Allow",
            "Resource": "\*"
        },
        {
            "Effect": "Allow",
            "Action": [
                 "kms:CreateGrant",
                 "kms:Decrypt",
                 "kms:DescribeKey",
                 "kms:GenerateDataKeyWithoutPlainText",
                 "kms:GenerateDataKey",
                 "kms:ReEncryptTo",
                 "kms:ReEncryptFrom"
            ],
            "Resource": "\*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::\*:role/\*"
        }
    ]
}
<!--NeedCopy-->

Hinweis:

  • Der Abschnitt zu EC2, der sich auf SecurityGroups bezieht, wird nur benötigt, wenn während der Katalogerstellung eine Isolationssicherheitsgruppe für die Vorbereitungs-VM erstellt werden muss. Sobald dies abgeschlossen ist, sind diese Berechtigungen nicht erforderlich.
  • Der KMS-Abschnitt ist nur bei Verwendung der EBS-Volume-Verschlüsselung erforderlich.
  • Der Berechtigungsbereich iam:PassRole wird nur für role_based_auth benötigt.
  • Anstelle eines Vollzugriffs können spezifische Berechtigungen auf Ressourcenebene gemäß Ihren Anforderungen und Ihrer Umgebung hinzugefügt werden. Weitere Informationen finden Sie in den AWS-Dokumenten Demystifying EC2 Resource-Level Permissions und Access management for AWS resources.

So geht es weiter

Weitere Informationen

Verbindung zu AWS