워커(Workers)

워커(Workers)

워커는 사용자(users)와 대상(targets) 사이의 세션(sessions)을 프록시하는 서비스를 나타내는 리소스예요. 워커는 Boundary의 데이터 플레인(data plane)을 구성해요. 사용자와 대상 사이에 직접 네트워크 터널을 만들어, private 리소스에 접근을 제공하면서 그 리소스가 실행되는 네트워크를 노출하지 않을 수 있어요.

세션 프록싱 외에도, 워커는 private Vault 환경 같은 private 서비스에 접근해야 하는 컨트롤러를 위한 프록시 역할을 할 수 있어요. 워커는 자격 증명 주입과 세션 녹화(session recording)를 위한 SSH와 RDP 프로토콜 복호화도 수행할 수 있어요.

워커는 global 스코프에만 존재해요. 워커의 이름은 선택 사항이지만, KMS를 사용해 워커를 등록하는 경우에는 이름이 필요해요. 이름을 정의하면 소문자여야 하고 global 스코프 안에서 고유해야 해요.

출처: HashiCorp Boundary docs

본문

워커는 사용자와 대상 사이의 세션을 프록시하는 서비스를 나타내는 리소스예요. 워커는 Boundary의 데이터 플레인을 구성해요. 사용자와 대상 사이에 직접 네트워크 터널을 만들어 private 리소스에 접근을 제공하면서 그 리소스가 실행되는 네트워크를 노출하지 않을 수 있어요.

세션 프록싱 외에도 워커는 private Vault 환경 같은 private 서비스에 접근해야 하는 컨트롤러를 위한 프록시 역할을 할 수 있어요. 워커는 자격 증명 주입과 세션 녹화를 위한 SSH와 RDP 프로토콜 복호화도 수행할 수 있어요.

워커는 global 스코프에만 존재해요. 워커의 이름은 선택 사항이지만, KMS를 사용해 워커를 등록하는 경우에는 이름이 필요해요. 이름을 정의하면 소문자여야 하고 global 스코프 안에서 고유해야 해요.

워커 등록(Worker registration)

워커가 세션을 프록시하려면 먼저 제어 플레인에 등록해야 해요. Boundary는 세 가지 등록 방법을 지원해요.

  • Controller-led — 먼저 workers:create:controller-led 동작을 사용해 워커 리소스를 만들고, 결과로 나온 활성화 토큰(activation token)을 워커에 제공해요.
  • Worker-led — 워커가 인증 요청 토큰(authorization request token)을 생성하고, workers:create:worker-led 동작으로 그 토큰을 제출해요.
  • KMS — 워커가 공유 KMS를 사용해 업스트림에 인증해요. 이 방법은 워커가 처음 연결할 때 자동으로 워커를 등록해요.

controller-led 또는 worker-led 방법으로 등록된 워커는 자격 증명을 저장할 auth_storage_path에 정의된, 디스크의 접근 가능한 디렉터리가 필요해요. KMS를 사용해 등록된 워커는 연결할 때마다 다시 인증하므로 자격 증명을 로컬에 저장하지 않아요.

워커가 사용하는 등록 방법은 API를 통해 name과 description을 관리할 수 있는지 여부를 결정해요. 자세한 내용은 Attributes를 참고하세요.

워커 등록에 대한 자세한 내용은 Register workers를 참고하세요.

속성(Attributes)

워커는 다음의 구성 가능한 속성을 가져요.

  • name — (선택) Boundary의 리소스 이름이에요. 이름을 설정하면 소문자여야 하고 global 스코프 안에서 고유해야 해요. 이름은 controller-led 또는 worker-led 방법으로 등록하는 워커에 대해서만 API로 설정할 수 있어요. KMS로 등록하는 워커는 이름이 필요하며, 워커 구성 파일에 설정해야 해요. 그런 워커의 이름은 API에서 읽기 전용이에요.
  • description — (선택) 리소스에 대한 설명이에요. 이름과 마찬가지로, 설명은 controller-led 또는 worker-led 방법으로 등록하는 워커에 대해서만 API로 설정할 수 있어요.
  • scope_id — (필수) 워커가 존재하는 스코프의 ID예요. 값은 global이어야 해요.
  • worker_generated_auth_token — (선택) 워커가 생성하는 인증 요청 토큰이에요. worker-led 방법으로 워커를 등록할 때 필요하며, controller-led 방법에서는 사용되지 않아요.

출력 전용 속성

Boundary는 다음 속성을 워커의 구성 파일 또는 워커가 보고하는 상태에서 채워요. API로 설정할 수는 없어요.

  • address — 워커가 도달 가능한 주소로, 워커의 구성 파일에서 가져온 것이에요.
  • type — 워커 유형으로, 워커가 인증하는 방식으로 표시돼요. controller-led 또는 worker-led 방법으로 등록하는 워커는 pki, KMS로 등록하는 워커는 kms 값이에요.
  • config_tags — 워커의 구성 파일에 정의된 태그들이에요.
  • api_tags — Admin UI, CLI, 또는 API로 워커에 적용된 태그들이에요.
  • canonical_tags — 워커의 구성 태그와 API 태그의 중복 제거된 합집합이에요. Boundary는 워커 필터를 적용할 때 canonical 태그를 사용해요.
  • last_status_time — 워커 데몬이 마지막으로 상태를 보고한 시간이에요.
  • active_connection_count — 워커가 현재 처리하는 연결(connections) 수예요.
  • release_version — 워커가 실행하는 Boundary 바이너리의 버전이에요.
  • directly_connected_downstream_workers — 멀티홉(multi-hop) 구성에서 이 워커의 다운스트림에 직접 연결된 워커의 ID들이에요.
  • local_storage_state — 워커의 로컬 디스크 공간 상태예요. Boundary는 이 상태를 사용해 워커가 세션을 녹화하거나 녹화를 재생할 수 있는지 결정해요. 가능한 값은 available, low storage, critically low storage, out of storage, not configured, unknown이에요.
  • remote_storage_state — 워커가 활발히 사용하는 스토리지 버킷(storage buckets)의 권한 상태예요. Boundary는 각 스토리지 버킷의 전체 상태를 available 또는 error로 보고하며, 개별 read, write, delete 권한의 상태도 보고해요.

태그(Tags)

워커에 키/값 태그를 할당하고, 그 태그를 필터에 사용해 어떤 워커가 주어진 리소스를 처리할지 제어할 수 있어요. 예를 들어 태그를 사용해 특정 지역의 워커만 그 지역의 대상에 세션을 프록시하게 하거나, 어떤 워커가 세션 녹화를 수행할지 지정할 수 있어요.

Boundary는 두 가지 태그 소스를 지원해요.

  • 구성 태그(Configuration tags) — 워커의 구성 파일에 정의해요.
  • API 태그(API tags) — Admin UI, CLI, 또는 API로 워커 리소스에 설정해요.

Boundary는 두 소스를 워커의 canonical 태그로 결합하고, 대상(target)의 egress_worker_filter와 ingress_worker_filter 속성이나 스토리지 버킷(storage bucket)의 worker_filter 속성을 평가할 때 canonical 태그를 사용해요.

자세한 내용은 Route traffic through a worker를 참고하세요.

참조되는 곳(Referenced by)

  • Session
  • Session recordings
  • Storage bucket
  • Target

서비스 API 문서

이 리소스와 관련된 서비스는 다음과 같아요.

  • Worker service