

# RDP를 사용하여 RDS Custom DB 인스턴스에 연결
<a name="custom-creating-sqlserver.rdp"></a>

RDS Custom DB 인스턴스를 생성한 후 RDP 클라이언트를 사용하여 이 인스턴스에 연결할 수 있습니다. 이 절차는 Amazon EC2 인스턴스에 연결하는 절차와 동일합니다. 자세한 내용은 [Windows 인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html)을 참조하세요.

DB 인스턴스에 연결하려면 인스턴스와 연결된 키 페어가 필요합니다. 키 페어는 RDS Custom에서 생성합니다. 페어 이름은 접두사 `do-not-delete-rds-custom-DBInstanceIdentifier`를 사용하며, AWS Secrets Manager는 프라이빗 키를 비밀 키로 저장합니다.

다음 단계의 작업을 완료합니다.

1. [RDP 연결을 허용하도록 DB 인스턴스 구성](#custom-creating-sqlserver.rdp.port).

1. [비밀 키 검색](#custom-creating-sqlserver.rdp.key).

1. [RDP 유틸리티를 사용하여 EC2 인스턴스에 연결](#custom-creating-sqlserver.rdp.connect).

## RDP 연결을 허용하도록 DB 인스턴스 구성
<a name="custom-creating-sqlserver.rdp.port"></a>

RDP 연결을 허용하려면 VPC 보안 그룹을 구성하고 호스트에 방화벽 규칙을 설정합니다.

### VPC 보안 그룹 구성
<a name="custom-creating-sqlserver.rdp.port.vpc"></a>

DB 인스턴스와 연결된 VPC 보안 그룹이 전송 제어 프로토콜(TCP)용 포트 3389에서 인바운드 연결을 허용하는지 확인합니다. VPC 보안 그룹을 구성하는 방법은 [VPC 보안 그룹 구성](custom-setup-sqlserver.md#custom-setup-sqlserver.vpc.sg) 섹션을 참조하세요.

### 호스트에서 방화벽 규칙 설정
<a name="custom-creating-sqlserver.rdp.port.firewall"></a>

TCP용 포트 3389에서 인바운드 연결을 허용하려면 호스트에 방화벽 규칙을 설정합니다. 다음 예제에서 이 작업을 수행하는 방법을 보여줍니다.

특정 `-Profile` 값(`Public`, `Private` 또는 `Domain`)을 사용하는 것이 좋습니다. `Any`을 사용하면 세 값을 모두 지정하는 것입니다. 쉼표로 구분된 값 조합을 지정할 수도 있습니다. 방화벽 규칙 설정에 대한 자세한 내용은 Microsoft 설명서의 [Set-NetFirewallRule](https://docs.microsoft.com/en-us/powershell/module/netsecurity/set-netfirewallrule?view=windowsserver2019-ps)을 참조하세요.

**Systems Manager 세션 관리자를 사용하여 방화벽 규칙을 설정하는 방법**

1. [AWS Systems Manager를 사용하여 RDS Custom DB 인스턴스에 연결](custom-creating-sqlserver.ssm.md)에 표시된 대로 세션 관리자에 연결합니다.

1. 다음 명령을 실행합니다.

   ```
   Set-NetFirewallRule -DisplayName "Remote Desktop - User Mode (TCP-In)" -Direction Inbound -LocalAddress Any -Profile Any
   ```

**Systems Manager CLI 명령을 사용하여 방화벽 규칙 설정**

1. 다음 명령을 사용하여 호스트에서 RDP를 엽니다.

   ```
   OPEN_RDP_COMMAND_ID=$(aws ssm send-command --region $AWS_REGION \
       --instance-ids $RDS_CUSTOM_INSTANCE_EC2_ID \
       --document-name "AWS-RunPowerShellScript" \
       --parameters '{"commands":["Set-NetFirewallRule -DisplayName \"Remote Desktop - User Mode (TCP-In)\" -Direction Inbound -LocalAddress Any -Profile Any"]}' \
       --comment "Open RDP port" | jq -r ".Command.CommandId")
   ```

1. 출력에서 반환된 명령 ID를 사용하여 이전 명령의 상태를 가져옵니다. 다음 쿼리를 사용하여 명령 ID를 반환하려면 jq 플러그인이 설치되어 있는지 확인합니다.

   ```
   aws ssm list-commands \
       --region $AWS_REGION \
       --command-id $OPEN_RDP_COMMAND_ID
   ```

## 비밀 키 검색
<a name="custom-creating-sqlserver.rdp.key"></a>

AWS Management Console 또는 AWS CLI 중 하나를 사용하여 비밀 키를 검색할 수 있습니다.

### 콘솔
<a name="custom-creating-sqlserver.rdp.key.CON"></a>

**비밀 키를 검색하는 방법**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 AWS Management Console에 로그인한 후 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스(Databases)**를 선택한 후 연결하려는 RDS Custom DB 인스턴스를 선택합니다.

1. **Configuration**(구성) 탭을 선택합니다.

1. DB 인스턴스의 **DB 인스턴스 ID**를 기록해 둡니다(예: `my-custom-instance`).

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

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

1. EC2 인스턴스의 이름을 찾은 다음 연결된 인스턴스 ID를 선택합니다.

   이 예제에서 인스턴스 ID는 `i-abcdefghijklm01234`입니다.

1. **세부 정보(Details)**에서 **키 페어 이름(Key pair name)**을 찾습니다. 페어 이름에는 DB 식별자가 포함됩니다. 이 예제에서 페어 이름은 `do-not-delete-rds-custom-my-custom-instance-0d726c`입니다.

1. 인스턴스 요약에서 **퍼블릭 IPv4 DNS(Public IPv4 DNS)**를 찾습니다. 예를 들어, 퍼블릭 DNS는 `ec2-12-345-678-901.us-east-2.compute.amazonaws.com`일 수 있습니다.

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)에서 AWS Secrets Manager 콘솔을 엽니다.

1. 키 페어와 이름이 같은 비밀 키를 선택합니다.

1. **Retrieve secret value**(보안 암호 값 검색)를 선택합니다.

### AWS CLI
<a name="custom-creating-sqlserver.rdp.key.CLI"></a>

**프라이빗 키를 검색하는 방법**

1. `aws rds describe-db-instances` 명령을 호출하여 RDS Custom DB 인스턴스 목록을 가져옵니다

   ```
   aws rds describe-db-instances \
       --query 'DBInstances[*].[DBInstanceIdentifier,DbiResourceId]' \
       --output text
   ```

1. 샘플 출력에서 DB 인스턴스 식별자를 선택합니다(예: `do-not-delete-rds-custom-my-custom-instance`).

1. `aws ec2 describe-instances` 명령을 호출하여 DB 인스턴스의 EC2 인스턴스 ID를 찾습니다. 다음 예제에서는 EC2 인스턴스 이름을 사용하여 DB 인스턴스를 설명합니다.

   ```
   aws ec2 describe-instances \
       --filters "Name=tag:Name,Values=do-not-delete-rds-custom-my-custom-instance" \
       --output text \
       --query 'Reservations[*].Instances[*].InstanceId'
   ```

   다음 샘플 출력에는 EC2 인스턴스 ID가 나와 있습니다.

   ```
   i-abcdefghijklm01234
   ```

1. EC2 인스턴스 ID를 지정하여 다음 예제에서와 같이 키 이름을 찾습니다.

   ```
   aws ec2 describe-instances \
       --instance-ids i-abcdefghijklm01234 \
       --output text \
       --query 'Reservations[*].Instances[*].KeyName'
   ```

   다음 샘플 출력은 접두사 `do-not-delete-rds-custom-DBInstanceIdentifier`를 사용하는 키 이름을 보여줍니다.

   ```
   do-not-delete-rds-custom-my-custom-instance-0d726c
   ```

## RDP 유틸리티를 사용하여 EC2 인스턴스에 연결
<a name="custom-creating-sqlserver.rdp.connect"></a>

**Amazon EC2 사용 설명서의 [RDP를 사용하여 Windows 인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html#connect-rdp)에 나와 있는 절차를 따릅니다. 이 절차에서는 프라이빗 키가 포함된 .pem 파일을 생성한 것으로 가정합니다.