OpenZiti의 구성 요소

배포되는 구성 요소

컨트롤러(Controller)

컨트롤러는 네트워크의 핵심 기능을 담당합니다. 컨트롤러는 구성 계층을 제공합니다. 컨트롤러는 서비스를 구성하는 역할을 맡을 뿐만 아니라, 사용자, 장치 및 네트워크를 구성하는 노드들이 사용하는 신원을 관리하는 중심점 역할을 합니다. 마지막으로, 가장 중요한 점은 컨트롤러가 네트워크 내 모든 연결에 대한 인증 및 권한 부여를 담당한다는 것입니다.

컨트롤러는 공개 키 인프라 (PKI)로 구성되어야 합니다. 구성된 PKI는 네트워크 내의 두 구성 요소 간에 안전하고 상호 인증된 TLS(mTLS) 네트워크 연결을 설정하는 데 사용됩니다. 컨트롤러는 자체적인 PKI를 제공하지 않지만, 컨트롤러가 인증서 서명 요청(CSR)에 서명하려면 서명에 사용할 키와 인증서로 컨트롤러를 구성해야 합니다. ziti pki 명령을 사용하여 PKI를 생성할 수 있습니다.

또한 이 컨트롤러는 네트워크 운영자가 기존에 보유한 PKI를 재사용하고자 하는 경우, 타사 PKI의 사용도 지원합니다. 타사 CA를 활용하면 적절하게 서명된 인증서를 확보하고 배포해야 하는 부담은 네트워크 운영자에게 넘어가지만, 전문적인 고객에게는 이를 통해 네트워크 전반의 관리가 더 수월해질 수 있습니다.

컨트롤러는 네트워크 관리에 필요한 정보를 저장하기 위해 bbolt 기반의 로컬 데이터베이스를 사용합니다.

컨트롤러의 TLS 서버는 여러 개의 인증서가 존재할 때 표시할 올바른 인증서를 선택하기 위해 SNI를 사용합니다. Ziti 클라이언트는 ALPN을 사용하여 제어 플레인(ziti-ctrl) 또는 REST API(h2, http/1.1)와의 연결을 협상합니다.

라우터(Router)

라우터는 네트워크의 기본 구성 요소입니다. 이러한 라우터는 트래픽을 한 네트워크 노드에서 목적지까지 안전하고 안정적으로 전달하는 역할을 합니다.

Ziti 라우터들은 서로 연결되어 메시 네트워크를 형성합니다. 이 메시 네트워크는 지연 시간을 지속적으로 모니터링하며, 트래픽을 목적지로 라우팅할 때 가장 빠른 경로를 사용합니다. 또한 이러한 모니터링을 통해 능동적 장애 조치(active failover)가 가능해, 노드 장애가 발생하더라도 안정적인 네트워크 연결을 보장합니다.

라우터는 클라이언트 연결을 위한 네트워크의 진입점입니다. 라우터는 컨트롤러와 연동하여 클라이언트의 인증 및 권한 부여를 담당합니다.

Edge 클라이언트 (Edge Client)

네트워크에 연결하려면 엣지 클라이언트가 필요합니다. 엣지 클라이언트는 기존 시스템(브라운필드)과 신규 시스템(그린필드) 모두에서 작동하도록 설계되었습니다.

개발 중인 솔루션에 새로운 소프트웨어 개발이 포함되는 경우, Ziti SDK는 다양한 언어와 런타임을 지원하여 빠르고 안정적이며 안전한 연결을 제공합니다. 이 SDK는 네트워크에 안전하게 연결하는 데 필요한 기능을 제공하며, 대상 애플리케이션에 쉽게 통합될 수 있도록 설계되었습니다.

기존 솔루션에 보안 연결 기능을 추가할 때, OpenZiti는 ‘터널러(tunnelers)’라고 불리는 특화된 엣지 클라이언트를 제공하며, 이는 원활하고 안전한 연결을 보장할 뿐만 아니라 대상 애플리케이션에 대한 변경 작업이 필요하지 않습니다.

BrowZer

BrowZer는 클라이언트 측 설치 없이도 웹 브라우저에서 신뢰 관계를 구축할 수 있도록 지원하는 선택적 구성 요소 모음입니다. 즉, 웹 브라우저에 확장 프로그램을 설치할 필요가 없으며, 모바일이나 데스크톱 클라이언트(터널러)를 설치할 필요도 없습니다!

이를 통해 웹 애플리케이션에 제로 트러스트 네트워킹을 자동으로 통합할 수 있어, 웹 브라우저(예: Chrome, Brave, Edge 등)를 본격적인 클라이언트로 전환합니다. 사용자가 필요로 하는 유일한 소프트웨어는 이미 매일 사용하고 있는 일반적인 브라우저뿐입니다.

또한 주목할 점은, BrowZer를 사용하면 웹 애플리케이션 개발자가 안전한 원격 액세스를 구현하기 위해 웹 애플리케이션 자체에 먼저 모니터링 기능을 추가하거나 다른 방식으로 수정해야 하는 부담이 전혀 없다는 것입니다.

BrowZer를 사용하면 제3자로부터 라이선스를 취득한 웹 애플리케이션을 수정할 필요 없이 운영하고 보호할 수 있습니다. 마찬가지로, 웹 애플리케이션을 수정할 수는 있지만 수정을 원하지 않는 경우에도 BrowZer를 통해 OpenZiti가 해당 애플리케이션을 보호할 수 있습니다. BrowZer Bootstrapper는 웹 서버에서 사용자의 브라우저로 웹 애플리케이션이 로드되는 과정에서 필요한 계측 작업을 자동으로, 실시간으로 수행합니다.

논리적 구성 요소

네트워크가 구축되고 배포되면 다음 단계는 소프트웨어 기반 네트워크를 구성하는 것입니다. 네트워크 구성을 위해 필요한 세 가지 주요 개념은 ‘신원(Identities)’, ‘서비스(Services)’, 그리고 ‘정책(Policies)’입니다.

서비스(Services)

서비스는 기존 네트워크에서 클라이언트가 액세스할 수 있는 모든 리소스의 정의를 포함합니다. 서비스는 언더레이 개념의 표현이 아니라, 강력하고 확장 가능한 정체성으로 정의됩니다. 이는 네트워크에서 정의된 서비스가 서비스를 식별하기 위해 사용할 수 있는 거의 무한한 “네임스페이스”를 가지고 있음을 의미합니다. 서비스는 DNS 이름이나 IP 주소(언더레이 개념)가 아니라, 이름 및/또는 인증서로 정의됩니다. 또한 서비스는 네트워크를 나가는 트래픽이 나아가기 전에 반드시 전송되어야 하는 노드를 선언합니다. 트래픽이 네트워크로 들어오는 노드는 트래픽이 나가는 노드와 동일할 수 있습니다. 또는 트래픽이 출구 노드에 도달하기 위해 네트워크 라우터를 경유해야 할 수도 있습니다. 최종 사용자가 해야 할 일은 단순히 노드를 지정하는 것뿐이며, 나머지는 네트워크가 처리합니다.

신원(Identies)

‘Identity’는 네트워크 내에서 연결을 수립할 수 있는 개별 엔드포인트를 나타냅니다. 네트워크 내에서 이루어지는 모든 연결은 X.509 인증서를 사용하여 상호 인증됩니다. 각 Identity는 특정 인증서의 서명과 매핑됩니다. 에지 클라이언트는 네트워크에 연결을 시작할 때 이 인증서를 제시합니다. 네트워크는 제시된 인증서를 사용하여 클라이언트를 인증하고, 해당 Identity가 사용 권한을 가진 서비스를 열거합니다.

정책(Policy)

정책은 ID, 서비스 및 에지 라우터 간의 상호작용 방식을 제어합니다. 서비스를 이용하려면 해당 ID에 서비스에 대한 접근 권한이 부여되어야 합니다. 또한, 서비스에 대한 모든 접근은 하나 이상의 에지 라우터를 거치므로, 서비스와 ID 모두 동일한 에지 라우터 또는 에지 라우터들에 대한 접근 권한을 부여받아야 합니다.

Role Attributes

ID, 서비스, 에지 라우터와 같은 엔티티는 ID나 이름을 사용하여 정책에 명시적으로 추가할 수 있습니다. 또한 엔티티에는 역할 속성을 지정할 수도 있습니다. 역할 속성은 sales, Boston, us-employees 또는 support와 같은 간단한 문자열입니다. 이들의 의미는 관리자가 결정합니다. 정책은 일치할 역할 속성 집합을 지정하여 엔티티를 포함할 수 있습니다.

Service Policies

서비스 정책은 소프트웨어 기반 네트워크 내에서 신원과 서비스 간의 매핑 관계를 정의합니다. 가장 간단히 말해, 서비스 정책은 서비스 그룹과 신원 그룹으로 구성됩니다. 서비스 정책에 서비스를 추가하면, 해당 서비스 정책에 포함된 신원들에게 해당 서비스에 대한 접근 권한이 부여됩니다. 마찬가지로, 서비스 정책에 신원을 추가하면, 해당 신원에게 해당 서비스 정책에 매핑된 서비스들에 대한 접근 권한이 부여됩니다.

서비스 정책은 어떤 주체가 서비스에 접속(서비스를 이용)할 수 있는지, 그리고 어떤 주체가 서비스에 바인딩(서비스를 제공하거나 호스팅)할 수 있는지를 모두 제어합니다. 각 서비스 정책은 접속 권한이나 바인딩 권한 중 하나만 부여할 수 있으며, 두 가지 권한을 모두 부여할 수는 없습니다.

Edge Router Policies

에지 라우터 정책은 ID와 에지 라우터 간의 매핑을 관리합니다. 에지 라우터 정책은 에지 라우터 그룹과 ID 그룹으로 구성됩니다. 에지 라우터 정책에 라우터를 추가하면, 해당 에지 라우터 정책에 속한 ID들이 지정된 에지 라우터에 액세스할 수 있게 됩니다. 마찬가지로, 에지 라우터 정책에 ID를 추가하면, 해당 ID가 해당 에지 라우터 정책에 매핑된 에지 라우터들에 액세스할 수 있게 됩니다.

Service Edge Router Policies

서비스 에지 라우터 정책은 서비스와 에지 라우터 간의 매핑을 관리합니다. 서비스 에지 라우터 정책은 에지 라우터 그룹과 서비스 그룹으로 구성됩니다. 서비스 에지 라우터 정책에 에지 라우터를 추가하면, 해당 정책에 포함된 서비스들이 지정된 에지 라우터에 액세스할 수 있게 됩니다. 마찬가지로, 서비스 에지 라우터 정책에 서비스를 추가하면, 해당 서비스가 해당 정책에 매핑된 에지 라우터들에 액세스할 수 있게 됩니다.