Configuração de teste com a Amazon WorkSpaces - AWS Management Console

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configuração de teste com a Amazon WorkSpaces

A Amazon WorkSpaces permite que você provisione desktops virtuais baseados em nuvem Windows, Amazon Linux ou Ubuntu Linux para seus usuários, conhecidos como. WorkSpaces Você pode rapidamente adicionar ou remover usuários à medida que suas necessidades mudarem. Os usuários podem acessar suas áreas de trabalho virtuais de vários dispositivos ou navegadores da web. Para saber mais sobre isso WorkSpaces, consulte o Guia de WorkSpaces administração da Amazon.

O exemplo nesta seção descreve um ambiente de teste no qual um ambiente de usuário usa um navegador da Web em execução em um WorkSpace para entrar no AWS Management Console Private Access. Depois, o usuário acessa o console do Amazon Simple Storage Service. WorkSpace O objetivo é simular a experiência de um usuário corporativo com um laptop em uma rede VPC conectada, acessando o pelo AWS Management Console navegador.

Este tutorial é usado AWS CloudFormation para criar e configurar a configuração de rede e um Active Directory simples a ser usado, WorkSpaces juntamente com instruções passo a passo para configurar um WorkSpace usando AWS Management Console o.

O diagrama a seguir descreve o fluxo de trabalho para usar um WorkSpace para testar uma configuração de acesso AWS Management Console privado. Mostra o relacionamento entre um cliente WorkSpace, um gerenciado pela Amazon VPC e um cliente gerenciadoVPC.

A configuração para testar um acesso AWS Management Console privado usando uma Amazon WorkSpaces.

Copie o AWS CloudFormation modelo a seguir e salve-o em um arquivo que você usará na etapa 3 do procedimento para configurar uma rede.

Description: | AWS Management Console Private Access. Parameters: ​ VpcCIDR: Type: String Default: 172.16.0.0/16 Description: CIDR range for VPC ​ PublicSubnet1CIDR: Type: String Default: 172.16.1.0/24 Description: CIDR range for Public Subnet A ​ PublicSubnet2CIDR: Type: String Default: 172.16.0.0/24 Description: CIDR range for Public Subnet B ​ PrivateSubnet1CIDR: Type: String Default: 172.16.4.0/24 Description: CIDR range for Private Subnet A ​ PrivateSubnet2CIDR: Type: String Default: 172.16.5.0/24 Description: CIDR range for Private Subnet B ​ # Amazon WorkSpaces is available in a subset of the Availability Zones for each supported Region. # https://docs.aws.amazon.com/workspaces/latest/adminguide/azs-workspaces.html Mappings: RegionMap: us-east-1: az1: use1-az2 az2: use1-az4 az3: use1-az6 us-west-2: az1: usw2-az1 az2: usw2-az2 az3: usw2-az3 ap-south-1: az1: aps1-az1 az2: aps1-az2 az3: aps1-az3 ap-northeast-2: az1: apne2-az1 az2: apne2-az3 ap-southeast-1: az1: apse1-az1 az2: apse1-az2 ap-southeast-2: az1: apse2-az1 az2: apse2-az3 ap-northeast-1: az1: apne1-az1 az2: apne1-az4 ca-central-1: az1: cac1-az1 az2: cac1-az2 eu-central-1: az1: euc1-az2 az2: euc1-az3 eu-west-1: az1: euw1-az1 az2: euw1-az2 eu-west-2: az1: euw2-az2 az2: euw2-az3 sa-east-1: az1: sae1-az1 az2: sae1-az3 ​ Resources: ​ iamLambdaExecutionRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - lambda.amazonaws.com Action: - 'sts:AssumeRole' ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole Policies: - PolicyName: describe-ec2-az PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: - 'ec2:DescribeAvailabilityZones' Resource: '*' MaxSessionDuration: 3600 Path: /service-role/ ​ fnZoneIdtoZoneName: Type: AWS::Lambda::Function Properties: Runtime: python3.8 Handler: index.lambda_handler Code: ZipFile: | import boto3 import cfnresponse ​ def zoneId_to_zoneName(event, context): responseData = {} ec2 = boto3.client('ec2') describe_az = ec2.describe_availability_zones() for az in describe_az['AvailabilityZones']: if event['ResourceProperties']['ZoneId'] == az['ZoneId']: responseData['ZoneName'] = az['ZoneName'] cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData, str(az['ZoneId'])) def no_op(event, context): print(event) responseData = {} cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData, str(event['RequestId'])) ​ def lambda_handler(event, context): if event['RequestType'] == ('Create' or 'Update'): zoneId_to_zoneName(event, context) else: no_op(event,context) Role: !GetAtt iamLambdaExecutionRole.Arn ​ getAZ1: Type: "Custom::zone-id-zone-name" Properties: ServiceToken: !GetAtt fnZoneIdtoZoneName.Arn ZoneId: !FindInMap [ RegionMap, !Ref 'AWS::Region', az1 ] getAZ2: Type: "Custom::zone-id-zone-name" Properties: ServiceToken: !GetAtt fnZoneIdtoZoneName.Arn ZoneId: !FindInMap [ RegionMap, !Ref 'AWS::Region', az2 ] ​ ######################### # VPC AND SUBNETS ######################### ​ AppVPC: Type: 'AWS::EC2::VPC' Properties: CidrBlock: !Ref VpcCIDR InstanceTenancy: default EnableDnsSupport: true EnableDnsHostnames: true ​ PublicSubnetA: Type: 'AWS::EC2::Subnet' Properties: VpcId: !Ref AppVPC CidrBlock: !Ref PublicSubnet1CIDR MapPublicIpOnLaunch: true AvailabilityZone: !GetAtt getAZ1.ZoneName PublicSubnetB: Type: 'AWS::EC2::Subnet' Properties: VpcId: !Ref AppVPC CidrBlock: !Ref PublicSubnet2CIDR MapPublicIpOnLaunch: true AvailabilityZone: !GetAtt getAZ2.ZoneName ​ PrivateSubnetA: Type: 'AWS::EC2::Subnet' Properties: VpcId: !Ref AppVPC CidrBlock: !Ref PrivateSubnet1CIDR AvailabilityZone: !GetAtt getAZ1.ZoneName ​ PrivateSubnetB: Type: 'AWS::EC2::Subnet' Properties: VpcId: !Ref AppVPC CidrBlock: !Ref PrivateSubnet2CIDR AvailabilityZone: !GetAtt getAZ2.ZoneName ​ InternetGateway: Type: AWS::EC2::InternetGateway ​ InternetGatewayAttachment: Type: AWS::EC2::VPCGatewayAttachment Properties: InternetGatewayId: !Ref InternetGateway VpcId: !Ref AppVPC ​ NatGatewayEIP: Type: AWS::EC2::EIP DependsOn: InternetGatewayAttachment ​ NatGateway: Type: AWS::EC2::NatGateway Properties: AllocationId: !GetAtt NatGatewayEIP.AllocationId SubnetId: !Ref PublicSubnetA ​ ######################### # Route Tables ######################### ​ PrivateRouteTable: Type: 'AWS::EC2::RouteTable' Properties: VpcId: !Ref AppVPC ​ DefaultPrivateRoute: Type: AWS::EC2::Route Properties: RouteTableId: !Ref PrivateRouteTable DestinationCidrBlock: 0.0.0.0/0 NatGatewayId: !Ref NatGateway ​ PrivateSubnetRouteTableAssociation1: Type: 'AWS::EC2::SubnetRouteTableAssociation' Properties: RouteTableId: !Ref PrivateRouteTable SubnetId: !Ref PrivateSubnetA ​ PrivateSubnetRouteTableAssociation2: Type: 'AWS::EC2::SubnetRouteTableAssociation' Properties: RouteTableId: !Ref PrivateRouteTable SubnetId: !Ref PrivateSubnetB ​ PublicRouteTable: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref AppVPC ​ DefaultPublicRoute: Type: AWS::EC2::Route DependsOn: InternetGatewayAttachment Properties: RouteTableId: !Ref PublicRouteTable DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref InternetGateway ​ PublicSubnetARouteTableAssociation1: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref PublicRouteTable SubnetId: !Ref PublicSubnetA ​ PublicSubnetBRouteTableAssociation2: Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref PublicRouteTable SubnetId: !Ref PublicSubnetB ​ ​ ######################### # SECURITY GROUPS ######################### ​ VPCEndpointSecurityGroup: Type: 'AWS::EC2::SecurityGroup' Properties: GroupDescription: Allow TLS for VPC Endpoint VpcId: !Ref AppVPC SecurityGroupIngress: - IpProtocol: tcp FromPort: 443 ToPort: 443 CidrIp: !GetAtt AppVPC.CidrBlock ######################### # VPC ENDPOINTS ######################### ​ VPCEndpointGatewayS3: Type: 'AWS::EC2::VPCEndpoint' Properties: ServiceName: !Sub 'com.amazonaws.${AWS::Region}.s3' VpcEndpointType: Gateway VpcId: !Ref AppVPC RouteTableIds: - !Ref PrivateRouteTable VPCEndpointInterfaceSignin: Type: 'AWS::EC2::VPCEndpoint' Properties: VpcEndpointType: Interface PrivateDnsEnabled: false SubnetIds: - !Ref PrivateSubnetA - !Ref PrivateSubnetB SecurityGroupIds: - !Ref VPCEndpointSecurityGroup ServiceName: !Sub 'com.amazonaws.${AWS::Region}.signin' VpcId: !Ref AppVPC VPCEndpointInterfaceConsole: Type: 'AWS::EC2::VPCEndpoint' Properties: VpcEndpointType: Interface PrivateDnsEnabled: false SubnetIds: - !Ref PrivateSubnetA - !Ref PrivateSubnetB SecurityGroupIds: - !Ref VPCEndpointSecurityGroup ServiceName: !Sub 'com.amazonaws.${AWS::Region}.console' VpcId: !Ref AppVPC ​ ######################### # ROUTE53 RESOURCES ######################### ​ ConsoleHostedZone: Type: "AWS::Route53::HostedZone" Properties: HostedZoneConfig: Comment: 'Console VPC Endpoint Hosted Zone' Name: 'console.aws.amazon.com' VPCs: - VPCId: !Ref AppVPC VPCRegion: !Ref "AWS::Region" ConsoleRecordGlobal: Type: AWS::Route53::RecordSet Properties: HostedZoneId: !Ref 'ConsoleHostedZone' Name: 'console.aws.amazon.com' AliasTarget: DNSName: !Select ['1', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceConsole.DnsEntries]]] HostedZoneId: !Select ['0', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceConsole.DnsEntries]]] Type: A ​ GlobalConsoleRecord: Type: AWS::Route53::RecordSet Properties: HostedZoneId: !Ref 'ConsoleHostedZone' Name: 'global.console.aws.amazon.com' AliasTarget: DNSName: !Select ['1', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceConsole.DnsEntries]]] HostedZoneId: !Select ['0', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceConsole.DnsEntries]]] Type: A ConsoleS3ProxyRecordGlobal: Type: AWS::Route53::RecordSet Properties: HostedZoneId: !Ref 'ConsoleHostedZone' Name: 's3.console.aws.amazon.com' AliasTarget: DNSName: !Select ['1', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceConsole.DnsEntries]]] HostedZoneId: !Select ['0', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceConsole.DnsEntries]]] Type: A ConsoleSupportProxyRecordGlobal: Type: AWS::Route53::RecordSet Properties: HostedZoneId: !Ref 'ConsoleHostedZone' Name: "support.console.aws.amazon.com" AliasTarget: DNSName: !Select ['1', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceConsole.DnsEntries]]] HostedZoneId: !Select ['0', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceConsole.DnsEntries]]] Type: A ExplorerProxyRecordGlobal: Type: AWS::Route53::RecordSet Properties: HostedZoneId: !Ref 'ConsoleHostedZone' Name: "resource-explorer.console.aws.amazon.com" AliasTarget: DNSName: !Select ['1', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceConsole.DnsEntries]]] HostedZoneId: !Select ['0', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceConsole.DnsEntries]]] Type: A ConsoleRecordRegional: Type: AWS::Route53::RecordSet Properties: HostedZoneId: !Ref 'ConsoleHostedZone' Name: !Sub "${AWS::Region}.console.aws.amazon.com" AliasTarget: DNSName: !Select ['1', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceConsole.DnsEntries]]] HostedZoneId: !Select ['0', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceConsole.DnsEntries]]] Type: A ​ SigninHostedZone: Type: "AWS::Route53::HostedZone" Properties: HostedZoneConfig: Comment: 'Signin VPC Endpoint Hosted Zone' Name: 'signin.aws.amazon.com' VPCs: - VPCId: !Ref AppVPC VPCRegion: !Ref "AWS::Region" SigninRecordGlobal: Type: AWS::Route53::RecordSet Properties: HostedZoneId: !Ref 'SigninHostedZone' Name: 'signin.aws.amazon.com' AliasTarget: DNSName: !Select ['1', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceSignin.DnsEntries]]] HostedZoneId: !Select ['0', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceSignin.DnsEntries]]] Type: A SigninRecordRegional: Type: AWS::Route53::RecordSet Properties: HostedZoneId: !Ref 'SigninHostedZone' Name: !Sub "${AWS::Region}.signin.aws.amazon.com" AliasTarget: DNSName: !Select ['1', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceSignin.DnsEntries]]] HostedZoneId: !Select ['0', !Split [':', !Select ['0', !GetAtt VPCEndpointInterfaceSignin.DnsEntries]]] Type: A ​ ######################### # WORKSPACE RESOURCES ######################### ADAdminSecret: Type: AWS::SecretsManager::Secret Properties: Name: "ADAdminSecret" Description: "Password for directory services admin" GenerateSecretString: SecretStringTemplate: '{"username": "Admin"}' GenerateStringKey: password PasswordLength: 30 ExcludeCharacters: '"@/\' ​ WorkspaceSimpleDirectory: Type: AWS::DirectoryService::SimpleAD DependsOn: AppVPC DependsOn: PrivateSubnetA DependsOn: PrivateSubnetB Properties: Name: "corp.awsconsole.com" Password: '{{resolve:secretsmanager:ADAdminSecret:SecretString:password}}' Size: "Small" VpcSettings: SubnetIds: - Ref: PrivateSubnetA - Ref: PrivateSubnetB ​ VpcId: Ref: AppVPC ​ ​ Outputs: PrivateSubnetA: Description: Private Subnet A Value: !Ref PrivateSubnetA ​ PrivateSubnetB: Description: Private Subnet B Value: !Ref PrivateSubnetB ​ WorkspaceSimpleDirectory: Description: Directory to be used for Workspaces Value: !Ref WorkspaceSimpleDirectory ​ WorkspacesAdminPassword: Description : "The ARN of the Workspaces admin's password. Navigate to the Secrets Manager in the AWS Console to view the value." Value: !Ref ADAdminSecret
nota

Essa configuração de teste foi projetada para ser executada na região Leste dos EUA (Norte da Virgínia) (us-east-1).

Para configurar uma rede
  1. Faça login na conta de gerenciamento da organização e abra o console do AWS CloudFormation.

  2. Selecione Criar pilha.

  3. Escolha With new resources (standard) (Com novos recursos [padrão]). Faça upload do arquivo de AWS CloudFormation modelo que você criou anteriormente e escolha Avançar.

  4. Insira um nome para a pilha, por exemplo PrivateConsoleNetworkForS3, e escolha Próximo.

  5. Para VPCe sub-redes, insira seus CIDR intervalos de IP preferidos ou use os valores padrão fornecidos. Se você usar os valores padrão, verifique se eles não se sobrepõem aos VPC recursos existentes no seu Conta da AWS.

  6. Selecione Criar pilha.

  7. Depois que a pilha for criada, escolha a guia Recursos para ver os recursos que foram criados.

  8. Escolha a guia Saídas para visualizar os valores das sub-redes privadas e do Workspace Simple Directory. Anote esses valores, pois você os usará na etapa quatro do próximo procedimento para criar e configurar um WorkSpace.

A captura de tela a seguir mostra a visualização da guia Saídas exibindo os valores das sub-redes privadas e do Workspace Simple Directory.

As sub-redes privadas e o Workspace Simple Directory e seus valores correspondentes.

Agora que você criou sua rede, use os procedimentos a seguir para criar e acessar um WorkSpace.

Para criar um WorkSpace
  1. Abra o WorkSpaces console.

  2. No painel de navegação, selecionar Diretórios.

  3. Na página Diretórios, verifique se o status do diretório é Ativo. A captura de tela a seguir mostra uma página de Diretórios com um diretório ativo.

    A página Diretórios com uma entrada para um diretório com status ativo.
  4. Para usar um diretório em WorkSpaces, você deve registrá-lo. No painel de navegação, escolha e, em seguida WorkSpaces, escolha Criar WorkSpaces.

  5. Em Selecionar um diretório, escolha o diretório criado pelo AWS CloudFormation no procedimento anterior. No menu Ações, selecione Registrar.

  6. Para a seleção da sub-rede, selecione as duas sub-redes privadas anotadas na etapa nove do procedimento anterior.

  7. Selecione Habilitar permissões de autoatendimento e escolha Registrar.

  8. Depois que o diretório for registrado, continue criando WorkSpace o. Selecione o diretório registrado e escolha Próximo.

  9. Na página Criar usuários, escolha Criar usuário adicional. Digite seu nome e e-mail para permitir que você use WorkSpace o. Verifique se o endereço de e-mail é válido, pois as informações de WorkSpace login são enviadas para esse endereço de e-mail.

  10. Escolha Próximo.

  11. Na página Identificar usuários, selecione o usuário que você criou na etapa nove e escolha Próximo.

  12. Na página Selecionar pacote, escolha Padrão com Amazon Linux 2 e selecione Próximo.

  13. Use as configurações padrão para o modo de execução e a personalização do usuário e, depois, escolha Criar espaço de trabalho. O Pending status WorkSpace começa e muda para cerca Available de 20 minutos.

  14. Quando o WorkSpace estiver disponível, você receberá um e-mail com instruções para acessá-lo no endereço de e-mail fornecido na etapa nove.

Depois de entrar no seu WorkSpace, você pode testar se está acessando usando seu Acesso AWS Management Console Privado.

Para acessar um WorkSpace
  1. Abra o e-mail que você recebeu na etapa 14 do procedimento anterior.

  2. No e-mail, escolha o link exclusivo fornecido para configurar seu perfil e baixar o WorkSpaces cliente.

  3. Defina a senha.

  4. Baixe o cliente de sua escolha.

  5. Instale e inicie o cliente. Insira o código de registro fornecido no e-mail e escolha Registrar.

  6. Faça login na Amazon WorkSpaces usando as credenciais que você criou na etapa três.

Para testar a configuração do Acesso AWS Management Console Privado
  1. Do seu WorkSpace, abra seu navegador. Depois, navegue até o AWS Management Console e faça login usando suas credenciais.

    nota

    Se você estiver usando o Firefox como navegador, verifique se a HTTPS opção DNSAtivar está desativada nas configurações do seu navegador.

  2. Abra o console do Amazon S3, onde você pode verificar se está conectado usando o acesso AWS Management Console privado.

  3. Escolha o ícone de bloqueio privado na barra de navegação para visualizar o VPC VPC endpoint em uso. A captura de tela a seguir mostra a localização do ícone de bloqueio privado e as informações. VPC

    O console do Amazon S3 mostrando a localização do ícone de bloqueio privado e AWS Management Console as informações de acesso privado.