Citrix DaaS

Conexión con AWS

Crear y administrar conexiones y recursos describe los asistentes que crean una conexión. La siguiente información incluye detalles específicos de los entornos de nube de AWS.

Nota:

Antes de crear una conexión con AWS, debe terminar de configurar su instancia de AWS como ubicación de recursos. Consulte Entornos de virtualización de AWS.

Crear una conexión

Al crear una conexión desde la interfaz de Configuración completa:

  • Debe proporcionar la clave de API y los valores de clave secreta. Puede exportar el archivo de claves que contiene esos valores de AWS y, a continuación, importarlos. También debe proporcionar la región, la zona de disponibilidad, el nombre de la nube VPC, las direcciones de subred, el nombre de dominio, los nombres de los grupos de seguridad y las credenciales.
  • El archivo de credenciales para la cuenta raíz de AWS, (que se puede obtener de la consola de AWS), no está en el mismo formato que los archivos de credenciales descargados para los usuarios estándar de AWS. Por lo tanto, Citrix DaaS no puede usar el archivo para rellenar los campos de la clave de API y la clave secreta. Debe utilizar archivos de credenciales de Identity Access Management (IAM) de AWS.

Nota:

Después de crear una conexión, los intentos de actualizar la clave de API y la clave secreta podrían fallar. Para resolver el problema, compruebe las restricciones del servidor proxy o del firewall y asegúrese de que se puede contactar con la siguiente dirección: https://*.amazonaws.com.

Limitación

Si cambia el nombre de una nube privada virtual (VPC) de AWS en la consola de AWS, se desconfigura la unidad de alojamiento existente en Citrix Cloud. Si la unidad de alojamiento se rompe, no se pueden crear catálogos nuevos ni agregar máquinas a catálogos existentes. Para resolver este problema, cambie el nombre de la VPC de AWS al nombre original.

Valores predeterminados de conexión de host

Cuando crea conexiones de host en la interfaz de Configuración completa del entorno de nube de AWS, se muestran estos valores predeterminados:

Opción Absoluta Porcentaje
Acciones simultáneas (de cualquier tipo) 125 100
Máximo de acciones nuevas por minuto 150 n/d
Máximo de operaciones de aprovisionamiento simultáneas 100 n/d

MCS admite un máximo de 100 operaciones simultáneas de aprovisionamiento de forma predeterminada.

Para configurar estos valores, vaya a la sección Avanzado de Citrix Studio, en la pantalla Modificar conexión:

Identity and Access Management (IAM)

También puede usar el SDK de PowerShell remoto y, así, definir el máximo de operaciones simultáneas para establecer una configuración óptima según su entorno.

Utilice la propiedad personalizada de PowerShell, MaximumConcurrentProvisioningOperations, para especificar el máximo de operaciones simultáneas de aprovisionamiento de AWS.

Antes de la configuración:

  • Asegúrese de haber instalado el SDK de PowerShell para Cloud.
  • Debe comprender que el valor predeterminado de MaximumConcurrentProvisioningOperations es 100.

Siga estos pasos para personalizar el valor de MaximumConcurrentProvisioningOperations:

  1. Abra una ventana de PowerShell.
  2. Ejecute asnp citrix* para cargar los módulos de PowerShell específicos de Citrix.
  3. Escriba cd xdhyp:\Connections\.
  4. Escriba dir para enumerar las conexiones.
  5. Cambie o inicialice la cadena CustomProperties:

    • Si la cadena CustomProperties tiene un valor, copie las CustomProperties en el Bloc de notas. A continuación, cambie la propiedad MaximumConcurrentProvisioningOperations por el valor que prefiera. Puede introducir un valor comprendido entre 1 y 1000. Por ejemplo: <Property xsi:type="IntProperty" Name="MaximumConcurrentProvisioningOperations" Value="xyz"/>.

    • Si la cadena CustomProperties está vacía o es nula, debe inicializar la cadena. Para ello, introduzca la sintaxis apropiada tanto para el esquema como para la propiedad MaximumConcurrentProvisioningOperations.

  6. En la ventana de PowerShell, pegue las CustomProperties modificadas del Bloc de notas y asigne una variable a las CustomProperties modificadas. Si inicializó las Custom Properties, agregue estas líneas después de la sintaxis:

    $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>'.

    Esta cadena establece la propiedad MaximumConcurrentProvisioningOperations en 100. En la cadena CustomProperties, debe establecer la propiedad MaximumConcurrentProvisioningOperations en un valor que se ajuste a sus necesidades.

  7. Introduzca Get-XDAuthentication, lo que le solicitará sus credenciales.
  8. Ejecute $cred = Get-Credential, lo que es posible que le solicite únicamente una contraseña (o un nombre y una contraseña). También es posible que se le pida el ID de la aplicación y el secreto asociado. Para las conexiones que utilizan la autenticación basada en roles, role_based_auth es el nombre y la contraseña a la vez. De lo contrario, introduzca el secreto y el ID de la API de AWS.
  9. Ejecute set-item -PSPath 'XDHyp:\Connections<connection-name>' -CustomProperties $customProperties -username $cred.username -Securepassword $cred.password. Debe definir <connection-name> como el nombre de la conexión.
  10. Introduzca dir para verificar la cadena CustomProperties actualizada.

URL de “punto de enlace” de servicio

URL de “punto de enlace” de servicio de zona estándar

Cuando utiliza MCS, se agrega una nueva conexión de AWS con una clave de API y un secreto de API. Con esta información, junto con la cuenta autenticada, MCS consulta a AWS las zonas admitidas mediante la llamada a la API de EC2 con la acción de AWS DescribeRegions. Para la consulta, se utiliza una URL de dispositivo de punto final de servicio (punto de enlace de servicio, como se conoce en AWS) de EC2 genérica https://ec2.amazonaws.com/. Use MCS para seleccionar la zona de la conexión en la lista de zonas admitidas. La URL de punto de enlace del servicio de AWS preferida se selecciona automáticamente para la zona. Sin embargo, después de crear la URL de punto de enlace de servicio, ya no podrá establecerla ni modificarla.

URL de “punto de enlace” de servicio no estándar

Puede haber situaciones en las que no necesite la URL de punto de enlace de servicio de AWS elegida automáticamente para la conexión. En estos casos, puede usar el SDK de Citrix Cloud y PowerShell para crear una conexión con una URL de punto de enlace de servicio no estándar. Por ejemplo: para crear una conexión mediante la URL de punto de enlace de servicio https://ec2.cn-north-1.amazonaws.com.cn:

  1. Configure el Cloud Connector alojado en AWS y compruebe que tiene conectividad.
  2. Ejecute los siguientes comandos de PowerShell para ver la lista de Cloud Connectors.

     PS C:> asnp citrix.*
     PS C:> Get-XDAuthentication
     PS C:> Get-ConfigEdgeServer
    <!--NeedCopy-->
    
  3. Busque el UID de zona del Cloud Connector recién creado e introdúzcalo en los siguientes comandos de PowerShell. Sustituya los elementos en cursiva por los valores respectivos.

    PS C:\> $hyp= New-Item -Path xdhyp:\Connections -ZoneUidUID_de_Zona-Name“Mi_Nueva_Conexión”-ConnectionType "AWS" -HypervisorAddress @("https://ec2.cn-north-1.amazonaws.com.cn") -UserName“Clave_API” -Password“Secreto de API” -Persist PS C:\> New-BrokerHypervisorConnection -HypHypervisorConnectionUid $hyp. HypervisorConnectionUid

  4. Actualice la ficha Configuración completa > Alojamiento para comprobar que se ha creado la conexión de EC2.
  5. Agregue una ubicación de recursos mediante la nueva conexión.

Definir permisos de IAM

Utilice la información de esta sección para definir los permisos de IAM para Citrix DaaS en AWS. El servicio IAM de Amazon permite cuentas con varios usuarios que se pueden organizar en grupos. Estos usuarios pueden tener diferentes permisos para controlar su capacidad de realizar operaciones asociadas con la cuenta. Para obtener más información acerca de los permisos de IAM, consulte Referencia de directivas JSON de IAM.

Para aplicar la directiva de permisos de IAM a un nuevo grupo de usuarios:

  1. Inicie sesión en la consola de administración de AWS y seleccione el servicio IAM en la lista desplegable.
  2. Seleccione Create a New Group of Users.
  3. Escriba un nombre para el nuevo grupo de usuarios y seleccione Continue.
  4. En la página Permissions, elija Custom Policy y, luego, Select.
  5. Escriba un nombre para la directiva de permisos (Permissions policy).
  6. En la sección Policy Document, introduzca los permisos correspondientes.

Después de indicar información sobre la directiva, seleccione Continue para completar la aplicación de la directiva de permisos de IAM al grupo de usuarios. A los usuarios del grupo se les conceden permisos para realizar solo aquellas acciones que son necesarias para Citrix DaaS.

Importante:

Utilice el texto de directiva proporcionado en el ejemplo siguiente para indicar las acciones que Citrix DaaS utiliza para realizar operaciones en una cuenta de AWS sin restringir esas operaciones a recursos específicos. Citrix recomienda utilizar el ejemplo como prueba. Para entornos de producción, puede optar por agregar más restricciones a los recursos.

Agregar permisos de IAM

Agregue los permisos en la sección IAM de la consola de administración de AWS (AWS Management Console):

  1. En el panel Summary, seleccione la ficha Permissions.
  2. Seleccione Add permissions.

Identity and Access Management (IAM)

En la pantalla Add Permissions to, conceda los permisos:

Conceder permisos para directivas de IAM

Utilice lo siguiente como ejemplo en la ficha JSON:

Ejemplo de JSON

Consejo:

Es posible que el ejemplo sobre JSON indicado no incluya todos los permisos necesarios para su entorno. Para obtener más información, consulte Acerca de los permisos de AWS.

Permisos de AWS requeridos

Esta sección contiene la lista completa de permisos de AWS. Utilice el conjunto completo de permisos que se indica en la sección para que la funcionalidad opere correctamente.

Nota:

El permiso iam:PassRole solo es necesario para role_based_auth.

Crear una conexión de host

Se agrega una nueva conexión de host con la información obtenida de 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-->

Administración de energía de las máquinas virtuales

Las instancias de máquina están encendidas o apagadas.

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

Creación, actualización o eliminación de máquinas virtuales

Se crea, actualiza o elimina un catálogo de máquinas con las máquinas virtuales aprovisionadas como instancias de 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-->

Nota:

  • La sección EC2 relacionada con SecurityGroups solo es necesaria si se debe crear un grupo de seguridad de aislamiento para la máquina virtual de preparación durante la creación del catálogo. Una vez hecho esto, no se requieren estos permisos.

Carga y descarga directa en disco

La carga directa en disco elimina el requisito de trabajador de volumen para el aprovisionamiento de catálogos de máquinas y, en su lugar, utiliza las API públicas que proporciona AWS. Esta funcionalidad reduce el coste asociado a las cuentas de almacenamiento adicionales y la complejidad para mantener las operaciones de trabajador de volumen.

Nota:

Se ha retirado la función de trabajador de volumen.

Se deben agregar los siguientes permisos a la directiva:

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

Importante:

  • Puede agregar una nueva máquina virtual a los catálogos de máquinas existentes sin ningún recurso de trabajador de volumen, como AMI de trabajador de volumen y VM de trabajador de volumen.
  • Si elimina un catálogo que utilizaba cualquier trabajador de volumen anteriormente, se eliminan todos los artefactos relacionados con el trabajador de volumen.

Cifrado de EBS de volúmenes creados

EBS puede cifrar automáticamente los volúmenes recién creados si la imagen AMI está cifrada o si EBS está configurado para cifrar todos los volúmenes nuevos. Sin embargo, para implementar la funcionalidad, se deben incluir los siguientes permisos en la directiva de 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-->

Nota:

Los permisos se pueden limitar a claves específicas si se incluye un recurso y bloque de condición, a discreción del usuario. Por ejemplo: Permisos de KMS con condición:

{
     "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 siguiente instrucción de directiva de claves es la predeterminada para las claves KMS, que es necesaria para permitir que la cuenta utilice las directivas de IAM para delegar el permiso para todas las acciones (kms:*) en la clave KMS.

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

Para obtener más información, consulte la documentación oficial de AWS Key Management Service.

Autenticación basada en roles de IAM

Estos permisos se agregan para admitir la autenticación basada en roles.

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

Directiva de permisos mínimos de IAM

El siguiente código JSON puede utilizarse para todas las funciones compatibles actualmente. Mediante esta directiva, puede crear conexiones de host, crear, actualizar o eliminar máquinas virtuales y administrar la energía. La directiva se puede aplicar a los usuarios como se explica en las secciones Definir permisos de IAM o también puede usar la autenticación basada en roles mediante la clave de seguridad y la clave secreta de role_based_auth .

Importante:

Para usar role_based_auth, configure en primer lugar la funcionalidad de IAM deseada en la instancia ec2 del Cloud Connector al configurar este último. Con Citrix Studio, agregue la conexión de host y suministre “role_based_auth” para la clave de autenticación y el secreto. Una conexión de host con estos parámetros utiliza la autenticación basada en roles.

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

Nota:

  • La sección EC2 relacionada con SecurityGroups solo es necesaria si se debe crear un grupo de seguridad de aislamiento para la máquina virtual de preparación durante la creación del catálogo. Una vez hecho esto, no se requieren estos permisos.
  • La sección KMS solo es necesaria cuando se utiliza el cifrado de volúmenes de EBS.
  • La sección de permisos iam:PassRole solo es necesaria para role_based_auth.
  • Se pueden agregar permisos específicos a nivel de recursos, en lugar de pleno acceso, en función de los requisitos y el entorno. Para obtener más información, consulte los documentos de AWS Demystifying EC2 Resource-Level Permissions y Access management for AWS resources.
  • Utilice los permisos ec2:CreateNetworkInterface y ec2:DeleteNetworkInterface solo si utiliza el método de trabajador de volumen.

Qué hacer a continuación

Más información

Conexión con AWS