Boundary -exec 플래그
Boundary -exec 플래그
-exec 플래그는 boundary connect가 내장 connect helper가 없는 클라이언트에서도 TCP 세션을 어떤 클라이언트로든 감싸(wrap)게 해줘요. 거의 모든 도구에 대한 인증 프록시를 만들 수 있죠. 이 플래그로 Boundary TCP 세션을 선호하는 클라이언트로 감싸고, 거의 모든 것에 대한 인증 프록시를 만들 수 있어요.
본문
클라이언트로 플래그 전달하기
-exec를 사용할 때는 이중 대시 -- 뒤에 실행되는 명령에 플래그를 포함시켜 클라이언트로 전달할 수 있어요. 예를 들어 다음 명령은 -l myuser -i ~/.ssh/identity를 PuTTY 클라이언트에 전달해요:
$ boundary connect ssh -style putty -exec putty.exe -target-id ttcp_1234567890 -- -l myuser -i ~/.ssh/identity
출력: PuTTY가 인증 프록시를 통해 연결된 새 세션 창을 열어요. (실행하는 인스턴스에서 확인하세요.)
템플릿 값 대입하기
명령 인자에 다음 템플릿 값을 대입할 수 있어요. Boundary는 이 값들을 실행된 명령에 환경 변수로 주입해요:
| 템플릿 | 환경 변수 | 설명 |
|---|---|---|
{{boundary.ip}} |
BOUNDARY_PROXIED_IP |
boundary connect가 연 리스닝 소켓의 IP 주소 |
{{boundary.port}} |
BOUNDARY_PROXIED_PORT |
boundary connect가 연 리스닝 소켓의 포트 |
{{boundary.addr}} |
BOUNDARY_PROXIED_ADDR |
주소의 host:port 형식. 본질적으로 {{boundary.ip}}:{{boundary.port}}와 동일한 값 |
예시: 대상의 기본 포트 변경하기
예를 들어 Boundary를 사용해 curl 주변에 인증 방화벽을 만들고 싶다면, 기본 TCP 대상을 기본 포트 :22에서 :443으로 변경할 수 있어요:
$ boundary targets update tcp -default-port 443 -id ttcp_1234567890
Target information:
Address: 127.0.0.1
Created Time: Fri, 25 Sep 2020 18:35:47 PDT
Description: Provides an initial target in Boundary
ID: ttcp_1234567890
Name: Generated target
Session Connection Limit: 1
Session Max Seconds: 28800
Type: tcp
Updated Time: Fri, 25 Sep 2020 18:36:18 PDT
Version: 2
Scope:
ID: p_1234567890
Name: Generated project scope
Parent Scope ID: o_1234567890
Type: project
Attributes:
Default Port: 443
위 출력에서 대상의 기본 포트가 이제 :443으로 변경됐어요.
이제 TCP 대상 세션의 클라이언트로 curl을 사용할 수 있어요. 예를 들어 다음 명령은 curl을 사용해 hashicorp.com을 인증된 다운로드로 가져와요:
$ boundary connect -exec curl -target-id ttcp_1234567890 \
-- -vvsL --output /dev/null hashicorp.com
* Trying 76.76.21.21...
* TCP_NODELAY set
* Connected to hashicorp.com (76.76.21.21) port 80 (#0)
> GET / HTTP/1.1
> Host: hashicorp.com
> User-Agent: curl/7.64.1
> Accept: */*
...<truncated output>...
-exec는 클라이언트를 감싸는 서브커맨드에도 사용할 수 있다는 점을 기억하세요. 예를 들어 putty.exe가 Windows 호스트에 있지만 명령이 WSL에서 실행되고 있다면, WSL이 Windows 바이너리를 호출할 때 .exe를 사용해야 하므로 올바른 바이너리를 지정하는 데 다음 명령을 사용할 수 있어요:
$ boundary connect ssh -style putty -exec putty.exe -target-id ttcp_1234567890