Uji pengaturan dengan Amazon WorkSpaces - AWS Management Console

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Uji pengaturan dengan Amazon WorkSpaces

Amazon WorkSpaces memungkinkan Anda menyediakan desktop Windows, Amazon Linux, atau Ubuntu Linux virtual berbasis cloud untuk pengguna Anda, yang dikenal sebagai. WorkSpaces Anda dapat dengan cepat menambahkan atau menghapus pengguna saat kebutuhan Anda berubah. Pengguna dapat mengakses desktop virtual mereka dari beberapa perangkat atau peramban web. Untuk mempelajari selengkapnya WorkSpaces, lihat Panduan WorkSpaces Administrasi Amazon.

Contoh di bagian ini menjelaskan lingkungan pengujian di mana lingkungan pengguna menggunakan browser web yang berjalan pada WorkSpace untuk masuk ke Akses AWS Management Console Pribadi. Kemudian, pengguna mengunjungi konsol Amazon Simple Storage Service. Ini WorkSpace dimaksudkan untuk mensimulasikan pengalaman pengguna korporat dengan laptop di jaringan VPC yang terhubung, mengakses AWS Management Console dari browser mereka.

Tutorial ini digunakan AWS CloudFormation untuk membuat dan mengkonfigurasi pengaturan jaringan dan Simple Active Directory untuk digunakan WorkSpaces bersama dengan petunjuk langkah demi langkah untuk setup WorkSpace menggunakan AWS Management Console.

Diagram berikut menjelaskan alur kerja untuk menggunakan WorkSpace untuk menguji penyiapan Akses AWS Management Console Pribadi. Ini menunjukkan hubungan antara klien WorkSpace, Amazon yang dikelola VPC dan pelanggan yang dikelolaVPC.

Konfigurasi penyiapan untuk menguji Akses AWS Management Console Pribadi menggunakan Amazon WorkSpaces.

Salin AWS CloudFormation template berikut dan simpan ke file yang akan Anda gunakan pada langkah 3 prosedur untuk mengatur jaringan.

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
catatan

Pengaturan pengujian ini dirancang untuk berjalan di Wilayah AS Timur (Virginia N.) (us-east-1).

Untuk mengatur jaringan
  1. Masuk ke akun manajemen untuk organisasi Anda dan buka AWS CloudFormation konsol.

  2. Pilih Buat tumpukan.

  3. Pilih Dengan sumber daya baru (standar). Unggah file AWS CloudFormation template yang sebelumnya Anda buat, dan pilih Berikutnya.

  4. Masukkan nama untuk tumpukan, sepertiPrivateConsoleNetworkForS3, lalu pilih Berikutnya.

  5. Untuk VPCdan subnet, masukkan CIDR rentang IP pilihan Anda, atau gunakan nilai default yang disediakan. Jika Anda menggunakan nilai default, verifikasi bahwa nilai tersebut tidak tumpang tindih dengan VPC sumber daya yang ada di Anda Akun AWS.

  6. Pilih Buat tumpukan.

  7. Setelah tumpukan dibuat, pilih tab Resources untuk melihat sumber daya yang telah dibuat.

  8. Pilih tab Output, untuk melihat nilai untuk subnet pribadi dan Workspace Simple Directory. Catat nilai-nilai ini, karena Anda akan menggunakannya pada langkah keempat dari prosedur berikutnya untuk membuat dan mengonfigurasi file. WorkSpace

Tangkapan layar berikut menunjukkan tampilan tab Output yang menampilkan nilai untuk subnet pribadi dan Direktori Sederhana Ruang Kerja.

Subnet pribadi dan Workspace Simple Directory dan nilai yang sesuai.

Sekarang setelah Anda membuat jaringan, gunakan prosedur berikut untuk membuat dan mengakses file WorkSpace.

Untuk membuat WorkSpace
  1. Buka WorkSpaces konsol.

  2. Di panel navigasi, pilih Direktori.

  3. Pada halaman Direktori, verifikasi bahwa status direktori adalah Aktif. Tangkapan layar berikut menunjukkan halaman Direktori dengan direktori aktif.

    Halaman Direktori dengan entri untuk direktori dengan status aktif.
  4. Untuk menggunakan direktori di WorkSpaces, Anda harus mendaftarkannya. Di panel navigasi, pilih WorkSpaces, lalu pilih Buat WorkSpaces.

  5. Untuk Pilih direktori, pilih direktori yang dibuat oleh AWS CloudFormation dalam prosedur sebelumnya. Pada menu Tindakan, pilih Daftar.

  6. Untuk pemilihan subnet, pilih dua subnet pribadi yang dicatat pada langkah sembilan dari prosedur sebelumnya.

  7. Pilih Aktifkan izin layanan mandiri, lalu pilih Daftar.

  8. Setelah direktori terdaftar, lanjutkan membuat file WorkSpace. Pilih direktori yang terdaftar, lalu pilih Berikutnya.

  9. Pada halaman Buat pengguna, pilih Buat pengguna tambahan. Masukkan nama dan email Anda untuk memungkinkan Anda menggunakan file WorkSpace. Verifikasi bahwa alamat email valid karena informasi WorkSpace login dikirim ke alamat email ini.

  10. Pilih Berikutnya.

  11. Pada halaman Identifikasi Pengguna, pilih pengguna yang Anda buat di langkah sembilan, lalu pilih Berikutnya.

  12. Pada halaman Pilih Bundel, pilih Standar dengan Amazon Linux 2, lalu pilih Berikutnya.

  13. Gunakan pengaturan default untuk mode berjalan dan kustomisasi pengguna, lalu pilih Buat Ruang Kerja. WorkSpace Dimulai dalam Pending status dan transisi ke Available dalam waktu sekitar 20 menit.

  14. Ketika WorkSpace tersedia, Anda akan menerima email dengan instruksi untuk mengaksesnya di alamat email yang Anda berikan pada langkah sembilan.

Setelah Anda masuk WorkSpace, Anda dapat menguji apakah Anda mengaksesnya menggunakan Akses AWS Management Console Pribadi Anda.

Untuk mengakses WorkSpace
  1. Buka email yang Anda terima di langkah 14 dari prosedur sebelumnya.

  2. Di email, pilih tautan unik yang disediakan untuk mengatur profil Anda dan mengunduh WorkSpaces klien.

  3. Atur kata sandi Anda.

  4. Unduh klien pilihan Anda.

  5. Instal dan luncurkan klien. Masukkan kode registrasi yang disediakan di email Anda, lalu pilih Daftar.

  6. Masuk ke Amazon WorkSpaces menggunakan kredensyal yang Anda buat di langkah ketiga.

Untuk menguji pengaturan Akses AWS Management Console Pribadi
  1. Dari Anda WorkSpace, buka browser Anda. Kemudian, navigasikan ke AWS Management Consoledan masuk menggunakan kredensyal Anda.

    catatan

    Jika Anda menggunakan Firefox sebagai browser Anda, verifikasi bahwa HTTPS opsi Aktifkan DNS atas dimatikan di pengaturan browser Anda.

  2. Buka konsol Amazon S3 tempat Anda dapat memverifikasi bahwa Anda terhubung menggunakan Akses AWS Management Console Pribadi.

  3. Pilih ikon kunci-pribadi pada bilah navigasi untuk melihat VPC dan VPC titik akhir yang digunakan. Tangkapan layar berikut menunjukkan lokasi ikon kunci-pribadi dan informasinya. VPC

    Konsol Amazon S3 menampilkan lokasi ikon kunci-pribadi dan AWS Management Console informasi Akses Pribadi.