Citrix Virtual Apps and Desktops

Conexão com a AWS

Criar e gerenciar conexões e recursos descreve os assistentes que criam uma conexão. As informações a seguir abrangem detalhes específicos dos ambientes de nuvem da AWS.

Nota:

Antes de criar uma conexão com a AWS, você precisa primeiro concluir a configuração da sua conta da AWS como um local de recursos. Consulte Ambientes de nuvem da AWS.

Criar uma conexão

Quando você cria uma conexão a partir do Web Studio:

  • Você deve fornecer os valores da chave de API e da chave secreta. Você pode exportar o arquivo de chaves que contém esses valores da AWS e depois importá-los. Você também deve fornecer a região, a zona de disponibilidade, o nome da VPC, os endereços de sub-rede, o nome do domínio, o nome dos grupos de segurança e as credenciais.
  • O arquivo de credenciais para a conta raiz da AWS (recuperado do console da AWS) não está formatado da mesma forma que os arquivos de credenciais baixados para usuários padrão da AWS. Portanto, o gerenciamento do Citrix Virtual Apps and Desktops não pode usar o arquivo para preencher os campos de chave de API e chave secreta. Verifique se você está usando os arquivos de credenciais do AWS Identity Access Management (IAM).

Nota:

Depois de criar uma conexão, as tentativas de atualizar a chave de API e a chave secreta podem falhar. Para resolver o problema, verifique as restrições do seu servidor proxy ou do firewall e confirme que o seguinte endereço pode ser contatado: https://*.amazonaws.com.

Valores padrão de conexão do host

Quando você cria conexões de host em ambientes de nuvem da AWS, os seguintes valores padrão são exibidos:

| Opção | Absoluto | Porcentagem | |— | — | —| | Ações simultâneas (todos os tipos) | 125 | 100 | | Máximo de novas ações por minuto | 125 |

Por padrão, o MCS oferece suporte a 100 operações de provisionamento simultâneas.

URL do ponto de extremidade de serviço

URL do ponto de extremidade do serviço de zona padrão

Quando você usa MCS, uma nova conexão da AWS é adicionada com uma chave de API e um segredo de API. Com essas informações, juntamente com a conta autenticada, o MCS consulta a AWS sobre as zonas suportadas usando a chamada de API do EC2 da AWS: DescribeRegions. A consulta é feita usando uma URL genérica do ponto de extremidade de serviço do EC2: https://ec2.amazonaws.com/. Use o MCS para selecionar a zona para a conexão na lista de zonas suportadas. A URL do ponto de extremidade de serviço preferencial da AWS é selecionada automaticamente para a zona. No entanto, depois de criar a URL do ponto de extremidade de serviço, você não pode mais definir ou modificar a URL.

URL do ponto de extremidade de serviço não padrão

Pode haver situações em que não seja necessário ter a URL do ponto de extremidade de serviço da AWS escolhida automaticamente para a conexão. Nesses casos, você pode usar o Citrix Cloud SDK e o PowerShell para criar uma conexão com uma URL de ponto de extremidade de serviço não padrão. Por exemplo, para criar uma conexão usando a URL do ponto de extremidade de serviço https://ec2.cn-north-1.amazonaws.com.cn:

  1. Configure o Cloud Connector hospedado na AWS e confirme que ele tem conectividade.
  2. Execute os seguintes comandos do PowerShell para ver a lista de Cloud Connectors.

     PS C:> asnp citrix.*
     PS C:> Get-XDAuthentication
     PS C:> Get-ConfigEdgeServer
    <!--NeedCopy-->
    
  3. Encontre o ZoneUid do Cloud Connector recém-criado e insira-o nos seguintes comandos do PowerShell. Substitua os itens em itálico pelos respectivos valores.

    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. Atualize a guia Configuration > Hosting para verificar se a conexão do EC2 foi criada.
  5. Adicione um local de recursos usando a nova conexão.

Definir permissões do IAM

Use as informações nesta seção para definir as permissões do IAM para o Citrix Virtual Apps and Desktops na AWS. O serviço IAM da Amazon permite contas com vários usuários, que podem ser organizados em grupos. Os usuários podem ter permissões diferentes para controlar sua capacidade de realizar operações associadas à conta. Para obter mais informações sobre permissões do IAM, consulte Referência de política JSON do IAM.

Para aplicar a política de permissões do IAM a um novo grupo de usuários:

  1. Faça login no console de gerenciamento da AWS e selecione o serviço do IAM na lista suspensa.
  2. Selecione Create a New Group of Users.
  3. Digite um nome para o novo grupo de usuários e selecione Continue.
  4. Na página Permissions, selecione Custom Policy. Selecione Select.
  5. Digite um nome para a Permissions policy.
  6. Na seção Policy Document, insira as permissões relevantes.

Depois de inserir as informações da política, selecione Continue para concluir o grupo de usuários. Os usuários do grupo recebem permissões para executar somente as ações necessárias para o Citrix Virtual Apps and Desktops.

Importante:

Use o texto de política fornecido no exemplo anterior para listar as ações que o Citrix Virtual Apps and Desktops usa para executar ações em uma conta da AWS sem restringir essas ações a recursos específicos. A Citrix recomenda que você use o exemplo para fins de teste. Para ambientes de produção, você pode optar por adicionar mais restrições aos recursos.

Definir permissões do IAM

Defina as permissões na seção IAM do AWS Management Console:

  1. No painel Summary, selecione a guia Permissions.
  2. Selecione Add permissions.

Identity and Access Management (IAM)

Na tela Add Permissions to, conceda permissões:

Políticas de concessão de permissões para IAM

Use o seguinte como exemplo na guia JSON:

Exemplo de JSON

Dica:

O exemplo de JSON observado talvez não inclua todas as permissões para o seu ambiente. Consulte How to Define Identity Access Management Permissions Running Citrix Virtual Apps and Desktops on AWS para obter mais informações.

Permissões necessárias da AWS

Esta seção contém a lista completa de permissões da AWS.

Nota:

A permissão iam:PassRole é necessária somente para role_based_auth.

Criar uma conexão de host

Uma nova conexão de host é adicionada usando as informações da 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-->

Gerenciamento de energia de VMs

As instâncias de máquina estão ligadas ou desligadas.

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

Criar, atualizar ou excluir VMs

Um catálogo de máquinas é criado, atualizado ou excluído com VMs provisionadas como instâncias da 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-->

Nota:

A seção do EC2 relacionada aos grupos de segurança só é necessária se um grupo de segurança de isolamento precisar ser criado para a VM de preparação durante a criação do catálogo. Feito isso, essas permissões não serão necessárias.

Upload e download direto do disco

O upload direto do disco elimina o requisito do volume worker para o provisionamento do catálogo de máquinas e, em vez disso, usa APIs públicas fornecidas pela AWS. Essa funcionalidade reduz o custo associado a contas extras de armazenamento e a complexidade para manter as operações do volume worker.

As seguintes permissões devem ser adicionadas à política:

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

Importante:

  • Você pode adicionar uma VM aos catálogos de máquinas existentes sem nenhuma operação do volume worker, como volume worker AMI e volume worker VM.
  • Se você excluir um catálogo existente que usava o volume worker antes, todos os artefatos, incluindo os relacionados ao volume worker, serão excluídos.

Criptografia do EBS dos volumes criados

O EBS pode criptografar automaticamente volumes recém-criados se a AMI estiver criptografada ou se o EBS estiver configurado para criptografar todos os novos volumes. No entanto, para implementar a funcionalidade, as seguintes permissões devem ser incluídas na política do IAM.

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

Nota:

As permissões podem ser limitadas a chaves específicas, incluindo um bloco Resource e Condition a critério do usuário. Por exemplo, Permissões do KMS com condição:

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

A declaração de política de chaves a seguir é a política de chaves padrão completa para chaves do KMS que é necessária para permitir que a conta use políticas do IAM para delegar permissão para todas as ações (kms: *) na chave do KMS.

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

Para obter mais informações, consulte a documentação oficial do AWS Key Management Service.

Autenticação baseada na função do IAM

As seguintes permissões são adicionadas para oferecer suporte à autenticação baseada em função.

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

Política de permissões mínimas do IAM

O JSON a seguir pode ser usado para todos os recursos atualmente suportados. Você pode criar conexões de host, criar, atualizar ou excluir VMs, e fazer o gerenciamento de energia usando essa política. A política pode ser aplicada aos usuários conforme explicado nas seções Definição de permissões do IAM ou você também pode usar a autenticação baseada em função usando a chave de segurança role_based_auth e a chave secreta.

Importante:

Para usar role_based_auth, primeiro configure a função do IAM desejada na instância EC2 do Cloud Connector ao configurar o Cloud Connector. Usando o Web Studio, adicione a conexão de hospedagem e forneça o role_based_auth para a chave de autenticação e o segredo. Uma conexão de hospedagem com essas configurações usa a autenticação baseada em função.

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

Nota:

  • A seção do EC2 relacionada a SecurityGroups só será necessária se um grupo de segurança de isolamento precisar ser criado para a VM de preparação durante a criação do catálogo. Feito isso, essas permissões não serão necessárias.
  • A seção KMS só é necessária ao usar a criptografia de volume do EBS.
  • A seção de permissão iam:PassRole é necessária somente para role_based_auth.
  • Permissões específicas de nível de recurso podem ser adicionadas em vez de acesso total com base em seus requisitos e ambiente. Consulte os documentos da AWS Demystifying EC2 Resource-Level Permissions e Access management for AWS resources para obter mais detalhes.

O que fazer a seguir

Mais informações

Conexão com a AWS