OpenZiti Controller ZAC

1. ZAC란 무엇인가?

ZAC(Ziti Administration Console) 는 OpenZiti 네트워크를 시각적으로 관리할 수 있는 웹 기반 관리 UI입니다.

  • OpenZiti Controller가 직접 ZAC를 호스팅합니다.
  • 별도 서버 없이 Controller의 Management API 포트를 통해 접속합니다.
  • 접속 URL 형식: https://<Controller_주소>:8441/zac/

2. ZAC 대시보드

대시보드의 추가 기능

Downloads 버튼

다운로드 버튼을 클릭하면 Ziti Tunneler 다운로드 페이지로 이동합니다. ZT 클라이언트의 다양한 버전도 확인할 수 있습니다.

Docs 버튼

Docs 버튼을 클릭하면 OpenZiti의 전체 공식 문서로 이동합니다.

3. Identities

아이덴티티(Identity)는 OpenZiti 네트워크에서 모든 참여자를 식별하는 고유한 신원 정보입니다. 사람(사용자), 디바이스, 라우터, 서버 등 네트워크에 참여하는 모든 것이 아이덴티티를 가집니다.

라우터를 생성하며 자동으로 Identity가 생깁니다. 각 라우터는 자체 아이덴티티를 가집니다.

핵심 원리:
  • 라우터를 생성하고 Controller에 등록(enroll)하면 → 라우터 전용 Identity가 자동으로 생성됩니다.
  • 이 자동 생성된 Identity는 라우터가 Controller와 인증을 통해 네트워크에 참여하는 데 사용됩니다.
상태색상의미
인증 성공🟢 초록색네트워크 참여 허용
인증 실패/미연결🔴 빨간색네트워크 참여 불가
💡 추가 설명 — Identity의 종류
종류설명
Router Identity라우터 생성 시 자동으로 생성됨
User Identity원격 사용자(REMOTE-PC 등) 수동 생성
Device Identity서버나 PC에 ZET(Ziti Edge Tunneler)를 설치할 때 생성

Identity는 JWT(JSON Web Token) 파일로 발급되며, 이 파일을 Ziti 클라이언트에서 등록하면 해당 장치가 OpenZiti 네트워크의 구성원이 됩니다.

4. Services (서비스)

Service(서비스) 는 OpenZiti 네트워크에서 보호하고 노출할 애플리케이션(목적지)을 정의하는 객체입니다. “이 앱에 이 방법으로 접근하라”고 OpenZiti에게 알려주는 역할입니다.

서비스 생성에 필요한 두 가지 설정

서비스를 생성하려면 최소 두 가지 설정이 필요합니다. 하나는 Intercept, 하나는 Host입니다.

설정역할비유
Intercept클라이언트가 접근하는 가상 주소/포트 정의“이 주소로 오는 요청을 내가 잡겠다”
Host실제 애플리케이션이 있는 서버 주소/포트 정의“실제로 요청을 전달할 목적지”

💡 추가 설명 — 동작 원리

클라이언트 → [Intercept 주소로 요청] → OpenZiti 오버레이 → [Host 주소로 전달] → 실제 서버

예를 들어, myziti.local:80으로 접속하면 → OpenZiti가 가로채서 → 실제 10.20.0.4:80으로 전달합니다. 클라이언트는 실제 서버 IP를 알 필요가 없어, 네트워크 노출을 최소화합니다.

5. Policies (정책)

Policy(정책) 는 “어떤 Identity가 어떤 Service에 어떤 방식으로 접근할 수 있는가”를 정의하는 권한 규칙입니다. 서비스와 아이덴티티를 연결하는 다리 역할을 합니다.

두 가지 Policy 모드
모드역할할당 대상
DIAL서비스에 접속(연결 요청) 권한클라이언트 (사용자, 원격 PC 등)
BIND서비스를 노출(호스팅) 권한서버 측 라우터 또는 디바이스

💡 추가 설명 — 정책 없이는 접근 불가

OpenZiti는 기본적으로 Zero Trust 원칙을 따릅니다. 즉, 명시적으로 허용하지 않으면 모든 접근이 차단됩니다. 서비스 생성 → 아이덴티티 생성 → 정책으로 연결 이 세 단계가 모두 완료되어야 실제 통신이 가능합니다.

예시 (시나리오 1 — 웹 서비스 접근):

정책 이름서비스아이덴티티모드
AZ-WEB-ACCESS-DIALAZ-WEB-SERVICEOP-PRIVATE-ER, REMOTE-PCDIAL
AZ-WEB-ACCESS-BINDAZ-WEB-SERVICEAZ-PRIVATE-ERBIND

6. Routers (라우터)

Router(라우터) 는 OpenZiti 오버레이 네트워크에서 트래픽을 중계하는 노드입니다. 일반 네트워크의 라우터와 유사하지만, OpenZiti 오버레이 위에서만 동작합니다.

라우터의 종류
종류위치역할
Public Router공개 IP를 가진 클라우드외부 클라이언트의 진입점, 라우터 간 링크 형성
Private Router내부 네트워크 (온프레미스/클라우드 내부)내부 서비스 트래픽 처리, 외부에 직접 노출 안 됨
💡 추가 설명 — 라우터 등록 흐름
1. 라우터 VM에서 ziti_router_auto_enroll 실행

2. Controller에 인증 요청 (JWT 또는 admin 자격증명 사용)

3. Controller가 라우터 전용 Identity 자동 생성

4. 인증 성공 → ZAC에서 초록색으로 표시

5. 라우터가 OpenZiti 오버레이에 참여

7. Authentication (인증)

기본적으로 모든 Controller는 자체 서명 인증서(Self-signed Certificate)를 가집니다. 나머지 모든 컴포넌트는 동일한 인증서로 서명됩니다. 만약 자체 CA(인증기관)를 사용하고 싶다면 여기에 추가할 수 있습니다.

인증 방식 요약
항목기본값커스텀
Certificate AuthorityController 자체 서명 인증서직접 CA 등록 가능
컴포넌트 서명동일한 Controller CA로 서명외부 CA 사용 가능

💡 추가 설명 — Self-signed vs. 외부 CA

  • Self-signed (기본): 빠르게 테스트 환경 구성 가능. 별도 설정 불필요. 단, 외부 신뢰 기관의 검증 없음.
  • 외부 CA 사용: 기업 환경에서 이미 운영 중인 PKI 인프라와 통합할 때 사용. ZAC의 Authentication 탭에서 CA 인증서를 직접 업로드하면 됩니다.

8. Sessions (세션)

Session(세션) 은 아이덴티티가 서비스에 실제로 접속했을 때 생성되는 활성 연결 기록입니다.

항목설명
생성 시점Identity가 Policy에 의해 허용된 서비스에 성공적으로 연결할 때
확인 용도“누가 현재 어떤 서비스를 사용 중인가?” 모니터링
표시 정보연결된 Identity, 대상 Service, 연결 시간 등

9. API Sessions

API Session 은 라우터, ZET 클라이언트 등 각종 컴포넌트가 Controller에 연결되어 있는 상태를 보여주는 뷰입니다.

항목SessionsAPI Sessions
대상서비스 접속 연결Controller와의 제어 연결
확인 내용누가 어느 서비스에 접속 중인가어떤 컴포넌트가 Controller에 연결되어 있는가

10. 핵심 개념 정리

메뉴역할주요 작업
Dashboard전체 현황 요약컴포넌트 수 확인, 다운로드/문서 접근
Identities네트워크 참여자 관리사용자/디바이스 Identity 생성, 상태 확인
Services보호할 애플리케이션 정의Intercept + Host 설정
Policies접근 권한 규칙 정의DIAL/BIND 정책 생성
Routers트래픽 중계 노드 관리라우터 생성/등록/상태 확인
Authentication인증서/CA 관리자체 CA 등록
Sessions활성 서비스 연결 확인연결 상태 모니터링
API SessionsController 연결 컴포넌트 확인컴포넌트 연결 상태 모니터링
서비스 접근을 위한 필수 3단계
① Identity 생성
   └─ 접근할 사용자/디바이스의 신원 등록

② Service 생성
   └─ Intercept(가상 주소) + Host(실제 서버 주소) 설정

③ Policy 생성
   └─ "어떤 Identity가" + "어떤 Service에" + "DIAL/BIND" 연결

⚠️ 이 세 단계 중 하나라도 빠지면 연결이 되지 않습니다. OpenZiti의 Zero Trust 원칙 — 명시적으로 허용하지 않으면 모든 것은 차단됩니다.

11. 구성 요소 관계도

┌─────────────────────────────────────────────┐
│              ZT Controller                  │
│         (ZAC 호스팅 + 인증 관리)                │
└────────────────┬────────────────────────────┘
                 │ 인증 (Identity 기반)
        ┌────────┴────────┐
        │                 │
   ┌────▼────┐      ┌─────▼─────┐
   │ Router  │      │  Router   │
   │(Private)│      │ (Public)  │
   └────┬────┘      └─────┬─────┘
        │                 │
   [내부 트래픽]    [외부 연결 진입]

   ┌────▼──────────────────────┐
   │         Service           │
   │  Intercept ──► Host       │
   │ (가상 주소)    (실제 서버)    │
   └────┬──────────────────────┘
        │ Policy로 연결
   ┌────▼────────────────┐
   │      Identity       │
   │ (사용자/디바이스/라우터)  │
   └─────────────────────┘