Configuration des tests avec Amazon WorkSpaces - AWS Management Console

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration des tests avec Amazon WorkSpaces

Amazon vous WorkSpaces permet de fournir des ordinateurs de bureau Windows, Amazon Linux ou Ubuntu Linux virtuels basés sur le cloud pour vos utilisateurs, connus sous WorkSpaces le nom de. Vous pouvez rapidement ajouter ou supprimer des utilisateurs à mesure que vos besoins évoluent. Les utilisateurs peuvent accéder à leurs bureaux virtuels à partir de plusieurs appareils ou navigateurs web. Pour en savoir plus WorkSpaces, consultez le guide d' WorkSpaces administration Amazon.

L'exemple de cette section décrit un environnement de test dans lequel un environnement utilisateur utilise un navigateur Web exécuté sur un WorkSpace pour se connecter à AWS Management Console Private Access. L'utilisateur accède ensuite à la console Amazon Simple Storage Service. Cela WorkSpace vise à simuler l'expérience d'un utilisateur professionnel utilisant un ordinateur portable sur un réseau VPC connecté, y accédant AWS Management Console depuis son navigateur.

Ce didacticiel permet AWS CloudFormation de créer et de configurer la configuration du réseau et un répertoire Active Directory simple à utiliser, WorkSpaces ainsi que des instructions étape par étape pour configurer un à WorkSpace l'aide du AWS Management Console.

Le schéma suivant décrit le flux de travail permettant d'utiliser un WorkSpace pour tester une configuration d'accès AWS Management Console privé. Il montre la relation entre un client WorkSpace, un service géré par Amazon VPC et un client géré par un clientVPC.

La configuration de configuration pour tester un accès AWS Management Console privé à l'aide d'un Amazon WorkSpaces.

Copiez le AWS CloudFormation modèle suivant et enregistrez-le dans un fichier que vous utiliserez à l'étape 3 de la procédure de configuration d'un réseau.

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
Note

Cette configuration test est conçue pour être exécutée dans la région USA Est (Virginie du Nord) (us-east-1).

Pour configurer un réseau
  1. Connectez-vous au compte de gestion de votre organisation et ouvrez la console AWS CloudFormation.

  2. Sélectionnez Créer la pile.

  3. Choisissez Avec de nouvelles ressources (standard). Téléchargez le fichier AWS CloudFormation modèle que vous avez créé précédemment, puis choisissez Next.

  4. Entrez un nom pour la pile, tel que PrivateConsoleNetworkForS3, puis choisissez Suivant.

  5. Pour les sous-réseaux VPC et, entrez vos CIDR plages d'adresses IP préférées ou utilisez les valeurs par défaut fournies. Si vous utilisez les valeurs par défaut, vérifiez qu'elles ne se chevauchent pas avec les VPC ressources existantes de votre Compte AWS.

  6. Sélectionnez Créer la pile.

  7. Une fois la pile créée, choisissez l'onglet Ressources pour afficher les ressources qui ont été créées.

  8. Choisissez l'onglet Sorties pour afficher les valeurs des sous-réseaux privés et de l'annuaire Workspace Simple Directory. Prenez note de ces valeurs, car vous les utiliserez à la quatrième étape de la prochaine procédure de création et de configuration d'un WorkSpace.

La capture d'écran suivante montre l'onglet Sorties qui affiche les valeurs des sous-réseaux privés et de l'annuaire Workspace Simple Directory.

Sous-réseaux privés et annuaire Workspace Simple Directory, et leurs valeurs correspondantes

Maintenant que vous avez créé votre réseau, suivez les procédures suivantes pour créer et accéder à un WorkSpace.

Pour créer un WorkSpace
  1. Ouvrez la WorkSpaces console.

  2. Dans le volet de navigation, choisissez Directories (Annuaires).

  3. Sur la page Annuaires, vérifiez que le statut de l'annuaire est Actif. La capture d'écran suivante montre une page Annuaires avec un annuaire actif.

    Page Annuaires avec une entrée pour un annuaire dont le statut est actif
  4. Pour utiliser un répertoire dans WorkSpaces, vous devez l'enregistrer. Dans le volet de navigation, choisissez WorkSpaces, puis choisissez Create WorkSpaces.

  5. Pour Sélectionner un annuaire, choisissez l'annuaire créé par AWS CloudFormation dans la procédure précédente. Dans le menu Actions, choisissez Enregistrer.

  6. Pour la sélection des sous-réseaux, sélectionnez les deux sous-réseaux privés indiqués à l'étape 9 de la procédure précédente.

  7. Sélectionnez Activer les autorisations en libre-service, puis choisissez Enregistrer.

  8. Une fois le répertoire enregistré, continuez à créer le WorkSpace. Sélectionnez l'annuaire enregistré, puis choisissez Suivant.

  9. Sur la page Créer des utilisateurs, choisissez Créer un utilisateur supplémentaire. Entrez votre nom et votre adresse e-mail pour vous permettre d'utiliser le WorkSpace. Vérifiez que l'adresse e-mail est valide car les informations de WorkSpace connexion sont envoyées à cette adresse e-mail.

  10. Choisissez Suivant.

  11. Sur la page Identifier les utilisateurs, sélectionnez l'utilisateur que vous avez créé à l'étape 9, puis choisissez Suivant.

  12. Sur la page Sélectionner un bundle, choisissez Standard avec Amazon Linux 2, puis choisissez Suivant.

  13. Utilisez les paramètres par défaut pour le mode d'exécution et la personnalisation utilisateur, puis sélectionnez Créer des instances WorkSpaces. Le Pending statut WorkSpace commence et passe à Available environ 20 minutes.

  14. Lorsque le sera WorkSpace disponible, vous recevrez un e-mail contenant les instructions pour y accéder à l'adresse e-mail que vous avez fournie à l'étape 9.

Une fois connecté à votre WorkSpace, vous pouvez vérifier que vous y accédez à l'aide de votre accès AWS Management Console privé.

Pour accéder à un WorkSpace
  1. Ouvrez l'e-mail que vous avez reçu à l'étape 14 de la procédure précédente.

  2. Dans l'e-mail, choisissez le lien unique fourni pour configurer votre profil et télécharger le WorkSpaces client.

  3. Définissez votre mot de passe.

  4. Téléchargez le client de votre choix.

  5. Installez et lancez le client. Entrez le code d'enregistrement fourni dans votre e-mail, puis choisissez Enregistrer.

  6. Connectez-vous à Amazon à WorkSpaces l'aide des informations d'identification que vous avez créées à l'étape 3.

Pour tester la configuration de l'accès AWS Management Console privé
  1. À partir de votre WorkSpace, ouvrez votre navigateur. Accédez ensuite à la AWS Management Console et connectez-vous à l'aide de vos informations d'identification.

    Note

    Si vous utilisez Firefox comme navigateur, vérifiez que l'HTTPSoption Enable DNS over est désactivée dans les paramètres de votre navigateur.

  2. Ouvrez la console Amazon S3 où vous pouvez vérifier que vous êtes connecté à l'aide de l'accès AWS Management Console privé.

  3. Cliquez sur l'icône Lock-Private dans la barre de navigation pour afficher le point de VPC terminaison en VPC cours d'utilisation. La capture d'écran suivante montre l'emplacement de l'icône Lock-Private et les VPC informations.

    La console Amazon S3 affiche l'emplacement de l'icône Lock-Private et les informations AWS Management Console d'accès privé.