Citrix Virtual Apps and Desktops

Connexion à AWS

La section Créer et gérer des connexions et des ressources décrit les assistants qui créent une connexion. Les informations suivantes couvrent les détails spécifiques aux environnements de cloud AWS.

Remarque :

Avant de créer une connexion à AWS, vous devez d’abord terminer la configuration de votre compte AWS en tant qu’emplacement de ressources. Voir Environnements de cloud AWS.

Créer une connexion

Lorsque vous créez une connexion à partir de Web Studio :

  • Vous devez fournir les valeurs de la clé API et de la clé secrète. Vous pouvez exporter le fichier de clé contenant ces valeurs à partir d’AWS, puis les importer. Vous devez également fournir la région, la zone de disponibilité, le nom du VPC, les adresses de sous-réseau, le nom du domaine, les noms de groupe de sécurité et les informations d’identification.
  • Le fichier d’informations d’identification pour le compte AWS de racine, (récupéré à partir de la console AWS) n’est pas au même format que les fichiers d’informations d’identification téléchargés pour les utilisateurs standard AWS. Par conséquent, la gestion de Citrix Virtual Apps and Desktops ne peut pas utiliser le fichier pour remplir les champs de clé API et de clé secrète. Vérifiez que vous utilisez les fichiers d’informations d’identification AWS (IAM).

Remarque :

Après avoir créé une connexion, les tentatives de mise à jour de la clé API et de la clé secrète peuvent échouer. Pour résoudre le problème, vérifiez les restrictions de votre serveur proxy ou de votre pare-feu et vérifiez que l’adresse suivante est contactable : https://*.amazonaws.com.

Valeurs par défaut des connexions hôtes

Lorsque vous créez des connexions hôtes dans des environnements cloud AWS, les valeurs par défaut suivantes sont affichées :

| Option | Absolu | Pourcentage | |— | — | —| | Actions simultanées (tous types) | 125 | 100 | | Nouvelles actions maximales par minute | 125 |

MCS prend en charge 100 opérations de provisioning simultanées maximum par défaut.

URL du point de terminaison de service

URL du point de terminaison de service de zone standard

Lorsque vous utilisez MCS, une nouvelle connexion AWS est ajoutée avec une clé API et un secret API. Avec ces informations, ainsi que le compte authentifié, MCS interroge AWS pour connaître les zones prises en charge à l’aide de l’appel d’API EC2 DescribeRegions AWS. La requête est effectuée à l’aide d’une URL de point de terminaison de service EC2 générique https://ec2.amazonaws.com/. Utilisez MCS pour sélectionner la zone de connexion dans la liste des zones prises en charge. L’URL de point de terminaison de service AWS préférée est automatiquement sélectionnée pour la zone. Toutefois, après avoir créé l’URL du point de terminaison de service, vous ne pouvez plus définir ou modifier l’URL.

URL de point de terminaison de service non standard

Il peut arriver que vous n’ayez pas besoin de l’URL de point de terminaison de service AWS automatiquement choisie pour la connexion. Dans de tels cas, vous pouvez utiliser le SDK Citrix Cloud et PowerShell pour créer une connexion avec une URL de point de terminaison de service non standard. Par exemple, pour créer une connexion à l’aide de l’URL de point de terminaison de service https://ec2.cn-north-1.amazonaws.com.cn :

  1. Configurez le Cloud Connector hébergé par AWS et assurez-vous qu’il dispose d’une connectivité.
  2. Exécutez les commandes PowerShell suivantes pour afficher la liste des Cloud Connector.

     PS C:> asnp citrix.*
     PS C:> Get-XDAuthentication
     PS C:> Get-ConfigEdgeServer
    <!--NeedCopy-->
    
  3. Recherchez le ZoneUid dans le Cloud Connector nouvellement créé et saisissez-le dans les commandes PowerShell suivantes. Remplacez les éléments en italique par les valeurs respectives.

    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. Actualisez l’onglet Configuration > Hébergement pour vérifier que la connexion EC2 a été créée.
  5. Ajoutez un emplacement de ressources à l’aide de la nouvelle connexion.

Définir les autorisations IAM

Utilisez les informations de cette section pour définir les autorisations IAM pour Citrix Virtual Apps and Desktops sur AWS. Le service IAM d’Amazon autorise les comptes ayant plusieurs utilisateurs, qui peuvent être organisés en groupes. Ces utilisateurs peuvent disposer d’autorisations différentes pour contrôler leur capacité à effectuer des opérations associées au compte. Pour plus d’informations sur les autorisations IAM, consultez Référence de stratégie JSON IAM.

Pour appliquer la stratégie d’autorisations IAM à un nouveau groupe d’utilisateurs :

  1. Connectez-vous à AWS Management Console et sélectionnez le service IAM dans la liste déroulante.
  2. Sélectionnez Créer un groupe d’utilisateurs.
  3. Tapez un nom pour le nouveau groupe d’utilisateurs et sélectionnez Continuer.
  4. Sur la page Autorisations, choisissez Stratégie personnalisée. Sélectionnez Sélectionner.
  5. Tapez un nom pour la stratégie Autorisations.
  6. Dans la section Document de stratégie, entrez les autorisations appropriées.

Après avoir saisi les informations de stratégie, sélectionnez Continuer pour compléter le groupe d’utilisateurs. Les utilisateurs du groupe sont autorisés à effectuer uniquement les actions requises pour Citrix Virtual Apps and Desktops.

Important :

Utilisez le texte de stratégie fourni dans l’exemple plus tôt pour répertorier les actions que Citrix Virtual Apps and Desktops utilise pour effectuer des actions au sein d’un compte AWS sans les restreindre à des ressources spécifiques. Citrix vous recommande d’utiliser cet exemple à des fins de test. Pour les environnements de production, vous pouvez choisir d’ajouter d’autres restrictions sur les ressources.

Définir les autorisations IAM

Définissez les autorisations dans la section IAM d’AWS Management Console :

  1. Dans le panneau Summary, sélectionnez l’onglet Permissions.
  2. Sélectionnez Add permissions.

Identity and Access Management (IAM)

Dans l’écran Add Permissions to, accordez des autorisations :

Accorder des autorisations pour les stratégies IAM

Utilisez l’exemple suivant dans l’onglet JSON :

Exemple JSON

Conseil :

L’exemple JSON mentionné peut ne pas inclure toutes les autorisations pour votre environnement. Consultez Comment faire pour définir les autorisations de gestion des identités et des accès en exécutant Citrix Virtual Apps and Desktops sur AWS pour plus d’informations.

Autorisations AWS requises

Cette section contient la liste complète des autorisations AWS.

Remarque :

L’autorisation iam:PassRole n’est requise que pour role_based_auth.

Création d’une connexion hôte

Une nouvelle connexion hôte est ajoutée à l’aide des informations d’AWS.

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

Gestion de l’alimentation des machines virtuelles

Les instances de machine sont sous tension ou hors tension.

{
    "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-->

Création, mise à jour ou suppression de machines virtuelles

Un catalogue de machines est créé, mis à jour ou supprimé avec des machines virtuelles provisionnées en tant qu’instances AWS.

{
    "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-->

Remarque :

La section EC2 relative aux groupes de sécurité n’est nécessaire que si un groupe de sécurité d’isolement doit être créé pour la machine virtuelle de préparation lors de la création du catalogue. Une fois cette action effectuée, ces autorisations ne sont pas requises.

Chargement et téléchargement directs sur disque

Le chargement direct sur disque élimine le besoin du travailleur de volume pour le provisioning de catalogue de machines et utilise à la place des API publiques fournies par AWS. Cette fonctionnalité réduit le coût associé aux comptes de stockage supplémentaires et la complexité de la gestion des opérations du travailleur de volume.

Remarque :

Le travailleur de volume n’est plus pris en charge.

Les autorisations suivantes doivent être ajoutées à la stratégie :

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

Important :

  • Vous pouvez ajouter une machine virtuelle à des catalogues de machines existants sans aucune opération du travailleur de volume, telle que l’AMI et la machine virtuelle du travailleur de volume.
  • Si vous supprimez un catalogue existant qui utilise un travailleur de volume, tous les artefacts, y compris ceux liés au travailleur de volume, sont supprimés.

Cryptage EBS des volumes créés

EBS peut crypter automatiquement les volumes nouvellement créés si l’AMI est cryptée, ou EBS est configuré pour crypter tous les nouveaux volumes. Toutefois, pour implémenter cette fonctionnalité, les autorisations suivantes doivent être incluses dans la stratégie IAM.

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

Remarque :

Les autorisations peuvent être limitées à des clés spécifiques en incluant un bloc Ressource et Condition à la discrétion de l’utilisateur. Par exemple, Autorisations KMS avec condition :

{
     "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-->

La déclaration de stratégie de clé suivante est la stratégie de clé par défaut complète pour les clés KMS qui est requise pour permettre au compte d’utiliser des stratégies IAM afin de déléguer l’autorisation pour toutes les actions (kms: *) sur la clé KMS.

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

Pour plus d’informations, consultez la documentation officielle d’AWS Key Management Service.

Authentification basée sur les rôles IAM

Les autorisations suivantes sont ajoutées pour prendre en charge l’authentification basée sur les rôles.

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

Stratégie d’autorisations IAM minimales

Le code JSON suivant peut être utilisé pour toutes les fonctionnalités actuellement prises en charge. Vous pouvez créer des connexions hôtes, créer, mettre à jour ou supprimer des machines virtuelles et gérer l’alimentation à l’aide de cette stratégie. La stratégie peut être appliquée aux utilisateurs comme expliqué dans les sections Définition des autorisations IAM. Vous pouvez également utiliser l’authentification basée sur les rôles à l’aide de la clé de sécurité et de la clé secrète role_based_auth.

Important :

pour utiliser role_based_auth, configurez d’abord le rôle IAM souhaité sur l’instance ec2 de Cloud Connector lors de la configuration du Cloud Connector. À l’aide de Web Studio, ajoutez la connexion d’hébergement et fournissez l’élément role_based_auth pour la clé d’authentification et le secret. Une connexion d’hébergement avec ces paramètres utilise ensuite l’authentification basée sur les rôles.

{
    "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-->

Remarque :

  • La section EC2 relative aux groupes de sécurité n’est nécessaire que si un groupe de sécurité d’isolement doit être créé pour la machine virtuelle de préparation lors de la création du catalogue. Une fois cette action effectuée, ces autorisations ne sont pas requises.
  • La section KMS n’est requise que lors de l’utilisation du cryptage de volume EBS.
  • La section d’autorisation iam:PassRole n’est requise que pour role_based_auth.
  • En fonction de vos besoins et de votre environnement, vous pouvez ajouter des autorisations spécifiques au niveau des ressources au lieu d’un accès complet. Consultez les documents AWS Demystifying EC2 Resource-Level Permissions et Gestion de l’accès pour les ressources AWS pour plus de détails.

Autres ressources

Informations supplémentaires

Connexion à AWS