Citrix DaaS

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. Consultez la page Environnements de virtualisation AWS.

Créer une connexion

Lorsque vous créez une connexion à partir de l’interface Configuration complète :

  • 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. Citrix DaaS ne peut donc pas utiliser le fichier pour remplir les champs Clé API et 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.

Limitation

Si vous modifiez le nom d’un VPC (cloud privé virtuel) AWS dans la console AWS, l’unité d’hébergement existante dans Citrix Cloud est démontée. Lorsque l’unité d’hébergement est démontée, vous ne pouvez pas créer de catalogues ou ajouter des machines à des catalogues existants. Pour résoudre le problème, renommez le VPC AWS par son nom d’origine.

Valeurs par défaut des connexions hôtes

Lorsque vous créez des connexions hôtes dans l’interface Configuration complète de l’environnement 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 150 S/O
Opérations de provisioning simultanées maximales 100 S/O

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

Vous pouvez configurer ces valeurs en accédant à la section Avancé de Citrix Studio sur l’écran Modifier la connexion :

Identity and Access Management (IAM)

Vous pouvez également utiliser le SDK Remote PowerShell pour définir le nombre maximal d’opérations simultanées pour des paramètres optimaux pour votre environnement.

Utilisez la propriété personnalisée PowerShell, MaximumConcurrentProvisioningOperations, pour spécifier le nombre maximal d’opérations de provisioning AWS simultanées.

Avant la configuration :

  • Assurez-vous d’avoir installé le SDK PowerShell pour le cloud.
  • La valeur par défaut de MaximumConcurrentProvisioningOperations est 100.

Procédez comme suit pour personnaliser la valeur MaximumConcurrentProvisioningOperations :

  1. Ouvrez une fenêtre PowerShell.
  2. Exécutez asnp citrix* pour charger des modules PowerShell propres à Citrix.
  3. Entrez cd xdhyp:\Connections\.
  4. Entrez dir pour afficher la liste des connexions.
  5. Modifiez ou initialisez la chaîne Custom Properties :

    • Si la chaîne Custom Properties contient une valeur, copiez-la dans le Bloc-notes. Ensuite, remplacez la propriété MaximumConcurrentProvisioningOperations par la valeur de votre choix. Vous pouvez saisir une valeur comprise entre 1 et 1 000. Par exemple, <Property xsi:type="IntProperty" Name="MaximumConcurrentProvisioningOperations" Value="xyz"/>.

    • Si la chaîne Custom Properties est vide/nulle, vous devez initialiser la chaîne en saisissant la syntaxe appropriée pour le schéma et la propriété MaximumConcurrentProvisioningOperations.

  6. Dans la fenêtre PowerShell, collez les propriétés Custom Properties modifiées à partir du Bloc-notes et affectez une variable aux propriétés Custom Properties modifiées. Si vous avez initialisé les propriétés Custom Properties, ajoutez les lignes suivantes après la syntaxe :

    $customProperties = '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Property xsi:type="IntProperty" Name="MaximumConcurrentProvisioningOperations" Value="100"/></CustomProperties>'.

    Cette chaîne définit la propriété MaximumConcurrentProvisioningOperations sur 100. Dans la chaîne Custom Properties, vous devez définir la propriété MaximumConcurrentProvisioningOperations sur une valeur qui correspond à vos besoins.

  7. Entrez Get-XDAuthentication, ce qui vous invite à saisir vos informations d’identification.
  8. Exécutez $cred = Get-Credential, ce qui peut vous demander uniquement un mot de passe (ou un nom et un mot de passe). Vous pouvez également être invité à saisir l’ID de l’application et le secret associé. Pour les connexions utilisant l’authentification basée sur les rôles, role_based_auth est à la fois le nom et le mot de passe. Sinon, entrez l’ID et le code secret de l’API AWS.
  9. Exécutez set-item -PSPath 'XDHyp:\Connections<connection-name>' -CustomProperties $customProperties -username $cred.username -Securepassword $cred.password. Vous devez définir <connection-name> sur le nom de la connexion.
  10. Entrez dir pour vérifier la chaîne CustomProperties mise à jour.

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 complète > 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 DaaS 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 la page 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 puis Sélectionner.
  5. Tapez un nom pour la stratégie Autorisations.
  6. Dans la section Document de stratégie, entrez les autorisations appropriées.

Une fois les informations de stratégie saisies, sélectionnez Continuer pour terminer l’application de la stratégie d’autorisations IAM au groupe d’utilisateurs. Les utilisateurs du groupe sont autorisés à effectuer uniquement les actions requises pour Citrix DaaS.

Important :

Utilisez le texte de stratégie fourni dans l’exemple ci-dessus pour répertorier les actions qu’un service Citrix DaaS effectuent 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.

Ajouter des autorisations IAM

Ajoutez 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. Pour plus d’informations, consultez la page À propos des autorisations AWS.

Autorisations AWS requises

Cette section contient la liste complète des autorisations AWS. Utilisez l’ensemble complet d’autorisations indiqué dans la section pour que la fonctionnalité fonctionne correctement.

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 obtenues auprès 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:DescribeSpotInstanceRequests",
                "ec2:DescribeInstanceCreditSpecifications",
                "ec2:DescribeInstanceAttribute",

                "ec2:GetLaunchTemplateData",
                "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 nouvelle VM à des catalogues de machines existants sans aucun travailleur de volume, tel que l’AMI, ou aucune VM de travailleur de volume.
  • Si vous supprimez un catalogue existant qui utilise un travailleur de volume, tous les artefacts sont supprimés, y compris ceux liés au travailleur de volume.

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:GenerateDataKey",
                 "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:GenerateDataKey",
                 "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 ou 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 Citrix Studio, ajoutez la connexion d’hébergement et fournissez le 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:DescribeSpotInstanceRequests",
                "ec2:DescribeInstanceCreditSpecifications",
                "ec2:DescribeInstanceAttribute",
                "ec2:GetLaunchTemplateData",
                "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.
  • Utilisez les autorisations ec2:CreateNetworkInterface et ec2:DeleteNetworkInterface uniquement si vous employez la méthode du travailleur de volume.

Autres ressources

Informations supplémentaires

Connexion à AWS