RDP 대상(RDP targets)

RDP 대상(RDP targets)

RDP 대상은 Active Directory 인증을 사용하는 Windows 환경에서 주입된 애플리케이션 크레덴셜(injected application credentials)을 사용해 클라이언트와 최종 호스트 사이의 RDP 세션을 인증해요. 주입된 크레덴셜 덕분에 사용자는 RDP로 원격 호스트에 안전하게 연결하면서도, 그 대상 호스트에 대한 유효한 크레덴셜을 직접 소지하지 않을 수 있어요.

출처: HashiCorp Boundary docs

본문

RDP 대상을 설정하려면 RDP 대상 유형을 구성하고, 그 RDP 대상에 크레덴셜 주입(credential injection)을 구성해야 해요.

주소와 포트가 있는 어떤 네트워크 서비스든 대상으로 구성할 수 있어요. 세션을 시작하려면 Boundary가 대상에 접근할 수 있어야 해요. 서비스가 공개적으로 접근 불가능하면, 대상 네트워크에 접근할 수 있도록 워커(worker)를 배포해야 해요.

RDP 대상 생성하기

아래 예시들은 단순함을 위해 직접 대상 주소(direct target address)를 사용하지만, HashiCorp는 확장된 프로덕션 배포에서는 호스트 카탈로그와 호스트 셋을 구성할 것을 권장해요.

RDP 대상을 만들려면 다음 단계를 따르세요.

Admin UI로 생성:

  • Boundary에 로그인해요.
  • 조직을 선택하고, 대상을 만들 프로젝트를 선택해요.
  • Project Actions 아래에서 Targets를 선택해요.
  • New Target을 클릭해요.
  • 다음 필드를 작성해요:
    • Name — (필수) 식별을 위한 이름. 이름은 유일해야 해요.
    • Description — (선택) 식별을 위한 대상 설명
    • Type — (필수) RDP 대상을 만들려면 RDP를 선택해요.
    • Target Address — (선택) 호스트 카탈로그와 호스트 셋을 사용하지 않는다면, 대상 주소를 입력해 대상을 단일 주소에 매핑할 수 있어요. 유효한 IP 주소나 DNS 이름이어야 해요.
    • Default Port — (필수) 연결할 기본 포트. 예: 3389
    • Aliases — (선택) 대상의 유일한 식별자로, CLI나 투명 세션으로 대상에 더 쉽게 연결하게 해줘요. 앨리어스를 만들려면 다음 필드를 작성하고 Add를 클릭해요:
      • Select scope — 앨리어스를 만들 스코프를 선택해요. 대상의 프로젝트 스코프에 앨리어스를 만들려면 먼저 org와 project suffix를 만들어야 해요. 그렇지 않으면 글로벌 스코프에만 앨리어스를 만들 수 있어요. 스코프 suffix 생성 문서를 참고하세요.
      • Alias value — 대상을 나타내는 앨리어스로 사용할 문자열을 입력해요. 앨리어스 값은 호스트 이름이나 DNS 형태의 문자열일 수 있어요.
  • Save를 클릭해요.

CLI로 생성:

  • Boundary에 로그인해요.
  • BOUNDARY_PROJECT_ID 환경 변수를 설정하거나, 다음 단계에서 스코프 ID(예: p_1234567890)를 제공해요.
  • 별칭 windows.2025, 직접 대상 주소 10.0.0.20, 기본 연결 포트 3389를 가진 windows-server-2025라는 RDP 대상을 만들려면 다음 명령을 사용해요:
$ boundary targets create rdp \
  -scope-id $BOUNDARY_PROJECT_ID \
  -name "windows-server-2025" \
  -with-alias-value "windows.2025" \
  -address "10.0.0.20" \
  -default-port 3389

대상을 만들 때는 scope-id 필드를 반드시 제공해야 해요. RDP 대상을 만들 때 사용할 수 있는 속성은 다음과 같아요:

  • -description=<string> — 식별용 대상 설명(선택)
  • -name=<string> — 식별용 대상 이름(선택)
  • -scope-id=<string> — 대상을 만들 스코프. 기본값은 global이에요. BOUNDARY_SCOPE_ID 환경 변수로도 스코프를 지정할 수 있어요.
  • -address=<string> — 대상이 연결할 유효한 네트워크 주소(선택). 호스트 소스와 함께 사용할 수 없어요. Kerberos 인증을 사용하는 RDP 대상에 대상 주소를 설정할 때는 대상의 호스트 이름에 도메인을 붙여서 사용하세요. 예: target-hostname.mydomain.com. NTLM 인증을 사용하는 RDP 대상에는 대상 주소를 대상의 IP 주소로 설정하세요.
  • -default-client-port=<string> — 이 대상에 투명 세션을 설정할 때 Client Agent가 로컬 프록시 리스너를 바인딩하는 포트. 클라이언트 애플리케이션이 기본적으로 다이얼하는 포트와 일치하도록 설정해야 해요. 예를 들어 SSH 클라이언트는 22, RDP 클라이언트는 3389, HTTPS 클라이언트는 443을 다이얼해요. 이 값을 설정하지 않으면 Client Agent는 -default-port로 폴백해요. -default-client-port가 클라이언트 애플리케이션과 일치하지 않으면 투명 세션이 실패해요.
  • -default-port=<string> — 설정된 경우 대상의 기본 포트
  • -egress-worker-filter=<string> — 대상의 세션을 처리할 수 있는 egress 워커를 필터링하는 부울 표현식
  • -ingress-worker-filter=<string> — 대상의 세션을 처리할 수 있는 ingress 워커를 필터링하는 부울 표현식
  • -session-connection-limit=<string> — 세션에서 허용되는 최대 연결 수. -1이면 무제한이에요. Windows 원격 데스크톱 연결 애플리케이션은 세션을 시작할 때 여러 연결을 소비해요. RDP 대상의 session-connection-limit을 1로 설정하면 이 클라이언트를 사용하는 모든 RDP 연결이 실패하게 돼요. 연결 제한을 설정하지 않거나 RDP 클라이언트가 사용하는 여러 연결을 고려해 2 이상으로 구성할 수 있어요. 자세한 내용은 RDP target attributes 문서를 참고하세요.
  • -session-max-seconds=<string> — 모든 연결을 포함한 세션의 최대 수명. 정수 초 또는 지속 시간 문자열로 지정할 수 있어요. 최대 기간을 지정하지 않으면 Boundary는 기본값인 8시간(28800초)을 사용해요.
  • -with-alias-authorize-session-host-id=<string> — 앨리어스가 대상의 세션을 승인할 때 사용하는 호스트 ID
  • -with-alias-scope-id=<string> — 대상과 앨리어스를 만들 스코프 ID. 기본값은 global이에요. 앨리어스는 글로벌과 프로젝트 스코프에 만들 수 있어요. 대상의 프로젝트 스코프에 앨리어스를 만들려면 먼저 org와 project suffix를 만들어야 해요. 그렇지 않으면 글로벌 스코프에만 앨리어스를 만들 수 있어요. 스코프 suffix 생성 문서를 참고하세요.
  • -with-alias-value=<string> — 대상을 나타내는 앨리어스 값. 이 파라미터로 앨리어스와 대상을 동시에 만들고 서로 연결할 수 있어요. 프로젝트 스코프에 있는 대상의 앨리어스를 만들 때는 alias.projectsuffix.orgsuffix 형식으로 org와 project suffix를 값에 붙여야 해요. 값은 DNS 네이밍 규칙을 따라야 해요.

Terraform으로 생성:

Boundary Terraform provider로 대상과 대상 앨리어스를 정의할 수 있어요:

resource "boundary_target" "windows_rdp" {
  name         = "windows-server-2025"
  description  = "RDP target"
  type         = "rdp"
  address      = "10.0.0.20"
  default_port = "3389"
  scope_id     = boundary_scope.project.id
  injected_application_credential_source_ids = [
    boundary_credential_username_password.windows_rdp_creds.id
  ]
}

resource "boundary_alias_target" "windows_target_alias" {
  name                      = "windows-server-2025-alias"
  description               = "Target alias for windows-server-2025"
  scope_id                  = "global"
  value                     = "windows.2025"
  destination_id            = boundary_target.windows_rdp.id
}

주입된 애플리케이션 크레덴셜 구성하기

최종 사용자가 대상에 연결할 수 있도록 RDP 대상에 주입된 애플리케이션 크레덴셜(injected application credential)을 반드시 구성해야 해요.

RDP 대상에 크레덴셜을 구성하는 방법:

  • Static 크레덴셜(username_password_domain)
  • Vault generic credential library
  • Vault LDAP credential library

크레덴셜 주입으로 대상 구성하는 방법은 Configure targets with credential injection 문서를 참고하세요.

더 알아보기 (Learn more)