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.
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 :
- Connectez-vous à AWS Management Console et sélectionnez le service IAM dans la liste déroulante.
- Sélectionnez Créer un groupe d’utilisateurs.
- Tapez un nom pour le nouveau groupe d’utilisateurs et sélectionnez Continuer.
- Sur la page Autorisations, choisissez Stratégie personnalisée. Sélectionnez Sélectionner.
- Tapez un nom pour la stratégie Autorisations.
- 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 :
- Dans le panneau Summary, sélectionnez l’onglet Permissions.
- Sélectionnez Add permissions.
Dans l’écran Add Permissions to, accordez des autorisations :
Utilisez l’exemple suivant dans l’onglet 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:DeleteSnapshot
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 tous les Delivery Controller de notre site. À 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.
Valider les autorisations sur une connexion hôte
Vous pouvez valider les autorisations sur une connexion hôte pour effectuer des tâches liées à la création et à la gestion de catalogues de machines MCS. Cette mise en œuvre permet d’identifier les autorisations manquantes requises pour différents scénarios tels que la création, la suppression et la mise à jour de machines virtuelles, la gestion de l’alimentation des machines virtuelles et le cryptage EBS à l’avance, afin d’éviter d’être bloqué à des moments critiques.
Vous pouvez valider les autorisations sur une connexion hôte à l’aide de la commande PowerShell Test-HypHypervisorConnection
. Le résultat de la commande est capturé sous forme de liste où chaque élément de la liste est divisé en trois sections.
- Catégorie : action ou tâche qu’un utilisateur peut effectuer pour créer et gérer un catalogue de machines MCS.
- Action corrective : étape qu’un administrateur doit suivre pour corriger les différences d’autorisations manquantes d’un utilisateur.
- Autorisation manquante : liste des autorisations manquantes pour une catégorie.
Pour valider les autorisations, procédez comme suit :
- Créez une connexion hôte à AWS.
- Ouvrez une fenêtre PowerShell depuis l’hôte Delivery Controller.
- Exécutez
asnp citrix*
pour charger des modules PowerShell propres à Citrix. -
Exécutez la commande suivante pour vérifier si vous disposez des autorisations requises pour consulter vos autorisations.
Test-HypHypervisorConnection -LiteralPath "XDHyp:\Connections\AWSCon" <!--NeedCopy-->
-
Après avoir ajouté les autorisations manquantes requises pour consulter vos autorisations, exécutez la commande suivante pour vérifier si vous disposez d’autorisations dans les catégories suivantes :
- Création, mise à jour, suppression
- Gestion de l’alimentation
- Cryptage EBS
Test-HypHypervisorConnection -LiteralPath "XDHyp:\Connections\AWSCon" [-SecurePassword -Password] "password" -UserName "" -CustomProperties "" <!--NeedCopy-->
Pour plus d’informations sur l’ajout d’autorisations, consultez la section Définir les autorisations IAM.
Autres ressources
- Si vous êtes dans le processus de déploiement initial, consultez la section Créer des catalogues de machines.
- Pour obtenir des informations spécifiques à AWS, consultez la section Créer un catalogue AWS.