

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon EC2를 사용한 테스트 설정
<a name="test-console-private-access-EC2"></a>

이 설정은 Amazon EC2 인스턴스에서 Amazon Simple Storage Service에 대한 AWS Management Console 프라이빗 액세스 연결을 보여줍니다. 이 예제에서는 CloudFormation 를 사용하여 네트워크 구성을 생성하고 원격 데스크톱 프로토콜(RDP)을 사용하여 Fleet Manager(의 기능 AWS Systems Manager)를 통해 Amazon EC2 Windows 인스턴스에 연결합니다.

아래의 다이어그램은 Amazon EC2를 사용하여 AWS Management Console 프라이빗 액세스 설정에 액세스하는 워크플로를 설명합니다. 여기에서는 사용자가 프라이빗 엔드포인트를 사용하여 Amazon S3에 연결하는 방법을 보여줍니다.

![Amazon EC2를 사용하여 AWS Management Console 프라이빗 액세스를 시도하기 위한 설정 구성입니다.](http://docs.aws.amazon.com/ko_kr/awsconsolehelpdocs/latest/gsg/images/vpce-ec2-how-to-1.png)


다음 CloudFormation 템플릿을 복사하여 *네트워크 설정* 절차의 3단계에서 사용할 파일에 저장합니다.

## AWS Management Console 프라이빗 액세스 환경 Amazon EC2 CloudFormation template
<a name="private-access-environment-ec2-cloudformation-template"></a>

```
Description: |
  AWS Management Console Private Access.
Parameters:
  VpcCIDR:
    Type: String
    Default: 172.16.0.0/16
    Description: CIDR range for VPC
  PrivateSubnet1CIDR:
    Type: String
    Default: 172.16.1.0/24
    Description: CIDR range for Private Subnet 1
  PrivateSubnet2CIDR:
    Type: String
    Default: 172.16.2.0/24
    Description: CIDR range for Private Subnet 2
  Ec2KeyPair:
    Type: AWS::EC2::KeyPair::KeyName
    Description: The EC2 KeyPair to use to connect to the Windows instance
  LatestWindowsAmiId:
    Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
    Default: /aws/service/ami-windows-latest/Windows_Server-2022-English-Full-Base
  InstanceTypeParameter:
    Type: String
    Default: m5.large
Resources:

  #########################
  # VPC AND SUBNETS
  #########################
  
  AppVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: !Ref VpcCIDR
      InstanceTenancy: default
      EnableDnsSupport: true
      EnableDnsHostnames: true

  PrivateSubnet1:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref AppVPC
      CidrBlock: !Ref PrivateSubnet1CIDR
      AvailabilityZone:
        Fn::Select:
          - 0
          - Fn::GetAZs: ""

  PrivateSubnet2:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref AppVPC
      CidrBlock: !Ref PrivateSubnet2CIDR
      AvailabilityZone:
        Fn::Select:
          - 1
          - Fn::GetAZs: ""

  #########################
  # Route Tables
  #########################

  PrivateRouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref AppVPC

  PrivateSubnet1RouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      RouteTableId: !Ref PrivateRouteTable
      SubnetId: !Ref PrivateSubnet1

  PrivateSubnet2RouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      RouteTableId: !Ref PrivateRouteTable
      SubnetId: !Ref PrivateSubnet2

  #########################
  # 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

  EC2SecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Default EC2 Instance SG
      VpcId: !Ref AppVPC
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 3389
          ToPort: 3389
          CidrIp: !Ref VpcCIDR

  #########################
  # VPC ENDPOINTS
  #########################

  VPCEndpointInterfaceSsm:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      VpcEndpointType: Interface
      PrivateDnsEnabled: true
      SubnetIds:
        - !Ref PrivateSubnet1
        - !Ref PrivateSubnet2
      SecurityGroupIds:
        - !Ref VPCEndpointSecurityGroup
      ServiceName: !Sub com.amazonaws.${AWS::Region}.ssm
      VpcId: !Ref AppVPC
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal: '*'
            Action: '*'
            Resource: '*'
            Condition:
              StringEquals:
                aws:PrincipalAccount: !Ref AWS::AccountId
                aws:ResourceAccount: !Ref AWS::AccountId
                aws:SourceVpc: !Ref AppVPC
          - Effect: Deny
            Principal: '*'
            Action: '*'
            Resource: '*'
            Condition:
              StringNotEquals:
                aws:PrincipalAccount: !Ref AWS::AccountId
                aws:ResourceAccount: !Ref AWS::AccountId
                aws:SourceVpc: !Ref AppVPC

  VPCEndpointInterfaceEc2Messages:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      VpcEndpointType: Interface
      PrivateDnsEnabled: true
      SubnetIds:
        - !Ref PrivateSubnet1
        - !Ref PrivateSubnet2
      SecurityGroupIds:
        - !Ref VPCEndpointSecurityGroup
      ServiceName: !Sub com.amazonaws.${AWS::Region}.ec2messages
      VpcId: !Ref AppVPC
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal: '*'
            Action: '*'
            Resource: '*'
            Condition:
              StringEquals:
                aws:PrincipalAccount: !Ref AWS::AccountId
                aws:ResourceAccount: !Ref AWS::AccountId
                aws:SourceVpc: !Ref AppVPC
          - Effect: Deny
            Principal: '*'
            Action: '*'
            Resource: '*'
            Condition:
              StringNotEquals:
                aws:PrincipalAccount: !Ref AWS::AccountId
                aws:ResourceAccount: !Ref AWS::AccountId
                aws:SourceVpc: !Ref AppVPC

  VPCEndpointInterfaceSsmMessages:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      VpcEndpointType: Interface
      PrivateDnsEnabled: true
      SubnetIds:
        - !Ref PrivateSubnet1
        - !Ref PrivateSubnet2
      SecurityGroupIds:
        - !Ref VPCEndpointSecurityGroup
      ServiceName: !Sub com.amazonaws.${AWS::Region}.ssmmessages
      VpcId: !Ref AppVPC
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal: '*'
            Action: '*'
            Resource: '*'
            Condition:
              StringEquals:
                aws:PrincipalAccount: !Ref AWS::AccountId
                aws:ResourceAccount: !Ref AWS::AccountId
                aws:SourceVpc: !Ref AppVPC
          - Effect: Deny
            Principal: '*'
            Action: '*'
            Resource: '*'
            Condition:
              StringNotEquals:
                aws:PrincipalAccount: !Ref AWS::AccountId
                aws:ResourceAccount: !Ref AWS::AccountId
                aws:SourceVpc: !Ref AppVPC

  VPCEndpointInterfaceSignin:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      VpcEndpointType: Interface
      PrivateDnsEnabled: true
      SubnetIds:
        - !Ref PrivateSubnet1
        - !Ref PrivateSubnet2
      SecurityGroupIds:
        - !Ref VPCEndpointSecurityGroup
      ServiceName: !Sub com.amazonaws.${AWS::Region}.signin
      VpcId: !Ref AppVPC
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal: '*'
            Action: signin:Authenticate
            Resource: '*'
            Condition:
              StringEquals:
                aws:ResourceAccount: !Ref AWS::AccountId
          - Effect: Allow
            Principal: '*'
            Action:
              - signin:AuthorizeOAuth2Access
              - signin:CreateOAuth2Token
            Resource: '*'
            Condition:
              StringEquals:
                aws:PrincipalAccount: !Ref AWS::AccountId

  VPCEndpointInterfaceConsole:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      VpcEndpointType: Interface
      PrivateDnsEnabled: true
      SubnetIds:
        - !Ref PrivateSubnet1
        - !Ref PrivateSubnet2
      SecurityGroupIds:
        - !Ref VPCEndpointSecurityGroup
      ServiceName: !Sub com.amazonaws.${AWS::Region}.console
      VpcId: !Ref AppVPC
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal: '*'
            Action: '*'
            Resource: '*'
            Condition:
              StringEquals:
                aws:PrincipalAccount: !Ref AWS::AccountId
                aws:ResourceAccount: !Ref AWS::AccountId
                aws:SourceVpc: !Ref AppVPC
          - Effect: Deny
            Principal: '*'
            Action: '*'
            Resource: '*'
            Condition:
              StringNotEquals:
                aws:PrincipalAccount: !Ref AWS::AccountId
                aws:ResourceAccount: !Ref AWS::AccountId
                aws:SourceVpc: !Ref AppVPC

  VPCEndpointInterfaceConsoleStatic:
  # console-static only supports the full access endpoint policy
    Type: AWS::EC2::VPCEndpoint
    Properties:
      VpcEndpointType: Interface
      PrivateDnsEnabled: true
      SubnetIds:
        - !Ref PrivateSubnet1
        - !Ref PrivateSubnet2
      SecurityGroupIds:
        - !Ref VPCEndpointSecurityGroup
      ServiceName: !Sub com.amazonaws.${AWS::Region}.console-static
      VpcId: !Ref AppVPC

  #########################
  # EC2 INSTANCE
  #########################

  Ec2InstanceRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - ec2.amazonaws.com
            Action:
              - sts:AssumeRole
      Path: /
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

  Ec2InstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Path: /
      Roles:
        - !Ref Ec2InstanceRole

  Ec2LaunchTemplate:
    Type: AWS::EC2::LaunchTemplate
    Properties:
      LaunchTemplateData:
        MetadataOptions:
          HttpTokens: required

  EC2WinInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !Ref LatestWindowsAmiId
      IamInstanceProfile: !Ref Ec2InstanceProfile
      KeyName: !Ref Ec2KeyPair
      InstanceType: !Ref InstanceTypeParameter
      SubnetId: !Ref PrivateSubnet1
      SecurityGroupIds:
        - !Ref EC2SecurityGroup
      BlockDeviceMappings:
        - DeviceName: /dev/sda1
          Ebs:
            VolumeSize: 50
      LaunchTemplate:
        LaunchTemplateId: !Ref Ec2LaunchTemplate
        Version: !GetAtt Ec2LaunchTemplate.LatestVersionNumber
      Tags:
        - Key: Name
          Value: Console VPCE test instance
```

**네트워크를 설정하려면**

1. 조직의 관리 계정으로 로그인하고 [CloudFormation 콘솔](https://console.aws.amazon.com/cloudformation)을 엽니다.

1. **스택 생성**을 선택합니다.

1. **새 리소스 사용(표준)(With new resources (standard))**을 선택합니다. 이전에 생성한 CloudFormation 템플릿 파일을 업로드하고 **다음을** 선택합니다.

1. **PrivateConsoleNetworkForS3** 같은 스택 이름을 입력한 후 **다음**을 선택합니다.

1. **VPC 및 서브넷**의 경우, 원하는 IP CIDR 범위를 입력하거나 제공된 기본값을 사용합니다. 기본값을 사용하는 경우 기본값이의 기존 VPC 리소스와 겹치지 않는지 확인합니다 AWS 계정.

1. **EC2KeyPair** 파라미터의 경우, 계정의 기존 Amazon EC2 키 페어 중에서 하나를 선택합니다. 기존 Amazon EC2 키 페어가 없다면 다음 단계로 진행하기 전에 이를 새로 생성해야 합니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [Amazon EC2를 사용하여 키 페어 생성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html#having-ec2-create-your-key-pair)을 참조하세요.

1. **스택 생성**을 선택합니다.

1. 스택이 생성된 후 **리소스** 탭을 선택하여 생성된 리소스를 확인합니다.

**Amazon EC2 인스턴스에 연결하려면**

1. 조직의 관리 계정으로 로그인하고 [Amazon EC2 콘솔](https://console.aws.amazon.com/ec2)을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. **인스턴스** 페이지에서 CloudFormation 템플릿으로 생성된 **콘솔 VPCE 테스트 인스턴스**를 선택합니다. 그런 다음 **연결**을 선택합니다.
**참고**  
이 예제에서는의 기능인 Fleet Manager를 사용하여 Windows Server AWS Systems Manager Explorer에 연결합니다. 연결이 시작되기까지 몇 분 정도 걸릴 수 있습니다.

1. **인스턴스에 연결** 페이지에서 **RDP 클라이언트**를 선택한 다음, **Fleet Manager를 사용하여 연결**을 선택합니다.

1. **Fleet Manager 원격 데스크톱**을 선택합니다.

1. Amazon EC2 인스턴스의 관리 암호를 가져오고 웹 인터페이스를 사용하여 Windows 데스크톱에 액세스하려면 CloudFormation 템플릿을 생성할 때 사용한 Amazon EC2 키 페어와 연결된 프라이빗 키를 사용합니다.

1. Amazon EC2 Windows 인스턴스에서 브라우저 AWS Management Console 에서를 엽니다.

1. 자격 AWS 증명으로 로그인한 후 [Amazon S3 콘솔](https://console.aws.amazon.com/s3)을 열고 프라이빗 액세스를 사용하여 AWS Management Console 연결되어 있는지 확인합니다.

**AWS Management Console 프라이빗 액세스 설정을 테스트하려면**

1. 조직의 관리 계정으로 로그인하고 [Amazon S3 콘솔](https://console.aws.amazon.com/s3)을 엽니다.

1. 탐색 메뉴에서 잠금-프라이빗 아이콘을 선택하면 사용 중인 VPC 엔드포인트를 볼 수 있습니다. 아래의 스크린샷은 잠금-프라이빗 아이콘의 위치와 VPC 정보를 보여줍니다.  
![잠금 아이콘과 AWS Management Console 프라이빗 액세스 정보가 표시된 Amazon S3 콘솔.](http://docs.aws.amazon.com/ko_kr/awsconsolehelpdocs/latest/gsg/images/console-private-access-verify-1.png)