connect
connect
boundary connect 명령 하위 명령들은 대상(target)에 대한 세션을 인가하고 특정 프로토콜 클라이언트를 호출해서 연결을 도와줘요. API를 호출하는 모든 명령에는 TLS 등을 비롯한 연결 옵션을 제어하는 플래그들이 들어 있어요.
본문
Boundary는 HTTP, RDP, SSH 같은 특정 프로토콜에 대한 접근을 쉽게 만들어 주는 connect 헬퍼를 제공해요. 예를 들어 SSH용 Boundary 헬퍼는 호스트 SSH 키 프롬프트를 자동으로 수락해 줘요. 이런 connect 헬퍼는 boundary connect <subcommand> 형태로 실행해요. boundary connect -h를 실행하면 사용 가능한 헬퍼와 옵션, 인자를 볼 수 있어요.
예시
다음 예시는 대상 ttcp_INY0BCD2VF에 연결하면서 -listen-addr과 -listen-port 플래그로 Boundary가 매 연결에 사용할 리슨 주소와 포트를 지정해요. 여기서는 주소 127.0.0.1과 포트 8872를 써요.
$ boundary connect ssh \
-listen-addr=127.0.0.1 \
-listen-port=8872 \
-target_id=ttcp_INY0BCD2VF
사용법 (Usage)
Usage: boundary connect <subcommand> [options] [args]
Subcommands:
cassandra 대상에 대한 세션을 인가하고 Cassandra 클라이언트를 호출해 연결
http 대상에 대한 세션을 인가하고 HTTP 클라이언트를 호출해 연결
kube 대상에 대한 세션을 인가하고 Kubernetes 클라이언트를 호출해 연결
mongo 대상에 대한 세션을 인가하고 MongoDB 클라이언트를 호출해 연결
mysql 대상에 대한 세션을 인가하고 MySQL 클라이언트를 호출해 연결
postgres 대상에 대한 세션을 인가하고 Postgres 클라이언트를 호출해 연결
rdp 대상에 대한 세션을 인가하고 RDP 클라이언트를 호출해 연결
redis 대상에 대한 세션을 인가하고 Redis 클라이언트를 호출해 연결
ssh 대상에 대한 세션을 인가하고 SSH 클라이언트를 호출해 연결
명령 옵션 (Command options)
-addr(string: "") — Boundary 컨트롤러의 주소를 전체 URL로, 예를 들어https://boundary.example.com:9200처럼 지정해요. 매 명령마다-addr인자를 넘기는 대신BOUNDARY_ADDR환경 변수를 설정할 수도 있어요. 두 경우 모두 CLI 명령을 보낼 Boundary 환경의 주소를 나타내요.-ca-cert(string: "") — 컨트롤러나 워커 서버의 SSL 인증서를 검증하는 데 사용할, 로컬 디스크에 있는 단일 PEM 인코딩 CA 인증서의 경로예요. 이 값은-ca-path보다 우선해요.BOUNDARY_CACERT환경 변수로도 지정할 수 있어요.-ca-path(string: "") — 컨트롤러의 SSL 인증서를 검증하는 데 사용할, 로컬 디스크에 있는 PEM 인코딩 CA 인증서가 담긴 디렉터리 경로예요.BOUNDARY_CAPATH환경 변수로도 지정할 수 있어요.-client-cert(string: "") — Boundary 컨트롤러에 대한 TLS 인증에 사용할, 로컬 디스크에 있는 단일 PEM 인코딩 CA 인증서의 경로예요. 이 플래그를 설정하면-client-key값도 필수예요.BOUNDARY_CLIENT_CERT환경 변수로도 지정할 수 있어요.-client-key(string: "") —-client-cert로 지정한 클라이언트 인증서와 짝을 이루는 단일 PEM 인코딩 개인 키의 경로예요.BOUNDARY_CLIENT_KEY환경 변수로도 지정할 수 있어요.-inactive-timeout=<duration>— 연결 사이에 경과할 수 있는 시간(초)으로, 이 시간이 지나면 Boundary가 사용하지 않는 세션을 닫아요. 오래 실행되는 프로세스 도중 프록시가 끊긴다면 이 값을 늘려도 돼요.-1을 쓰면 타임아웃을 완전히 끄는 거예요.-listen-addr(string: "") — 설정하면 CLI가 리슨 주소를 주어진 값(IP 주소여야 함)에 바인딩하려고 시도해요. 리슨 주소를 바인딩하지 못하면 명령이 오류를 냅니다. 설정하지 않으면 Boundary가 가장 흔한 IPv4 루프백 주소인127.0.0.1을 기본으로 써요.BOUNDARY_CONNECT_LISTEN_ADDR환경 변수로도 지정할 수 있어요.-listen-port(string: "") — 설정하면 CLI가 리슨 포트를 주어진 값에 바인딩하려고 시도해요. 바인딩하지 못하면 명령이 오류를 냅니다.BOUNDARY_CONNECT_LISTEN_PORT환경 변수로도 지정할 수 있어요.-tls-insecure— 설정하면 TLS 인증서 검증을 끄는 옵션이에요. Boundary 서버와 데이터 전송의 보안을 낮추므로 이 옵션 사용은 권장하지 않아요. 기본값은false예요.BOUNDARY_TLS_INSECURE환경 변수로도 TLS 인증서 검증을 끌 수 있어요.-tls-server-name(string: "") — TLS로 Boundary 서버에 연결할 때 SNI 호스트로 사용할 이름이에요.BOUNDARY_TLS_SERVER_NAME환경 변수로도 지정할 수 있어요.
connect 명령 옵션 (Connect command options)
-authz-token(string: "") — 대상에 대한authorize-session액션을 통해 Boundary 컨트롤러가 반환한 인증 문자열이에요.-target-id를 설정하지 않은 경우에만 이 옵션이 필요해요. 값을-로 설정하면 표준 입력에서 인증 문자열을 읽으려고 시도해요.BOUNDARY_CONNECT_AUTHZ_TOKEN환경 변수로도 지정할 수 있어요.-exec(string: "") — 설정하면 워커에 연결한 뒤 실행할 바이너리를 지정해요. PATH에 있는 바이너리나 절대 경로여야 해요. 모든 명령 플래그 뒤에--(공백 + 하이픈 두 개 + 공백)가 오면 그 뒤의 인자는 그 바이너리에 그대로 전달돼요.BOUNDARY_CONNECT_EXEC환경 변수로도 지정할 수 있어요.-host-id(string: "") — 대상의 호스트 집합 중 연결할 특정 호스트의 ID예요. 특정 호스트를 정하지 않으면 Boundary가 임의로 하나를 골라요.-inactive-timeout=<duration>— 연결 사이에 경과할 수 있는 시간(초)으로, 이 시간이 지나면 Boundary가 사용하지 않는 세션을 닫아요. 오래 실행되는 프로세스 도중 프록시가 끊긴다면 이 값을 늘려도 돼요.-1을 쓰면 타임아웃을 완전히 끄는 거예요.-target-id(string: "") — 세션을 인가할 대상의 ID예요. 이 옵션은-authz-token과 함께 쓸 수 없어요.-target-name(string: "") — 스코프 파라미터와 대상 이름으로 세션을 인가할 때 사용하는 대상 이름이에요.-target-scope-id(string: "") — 스코프 파라미터와 대상 이름으로 세션을 인가할 때 사용하는 대상 스코프 ID예요.-scope-name과는 상호 배타적이에요.BOUNDARY_CONNECT_TARGET_SCOPE_ID환경 변수로도 지정할 수 있어요.-target-scope-name(string: "") — 스코프 파라미터와 대상 이름으로 세션을 인가할 때 사용하는 대상 스코프 이름이에요.-scope-id와는 상호 배타적이에요.BOUNDARY_CONNECT_TARGET_SCOPE_NAME환경 변수로도 지정할 수 있어요.
템플릿 값 (Templated values)
명령 인자에 치환되는 템플릿 값들이 있고, 이 값들은 실행된 명령의 환경 변수로도 주입돼요:
{{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}}와 같아요.