보안: SSL/TLS로 Weaviate 보호하기

보안: SSL/TLS로 Weaviate 보호하기

Weaviate 데이터베이스가 인터넷에 노출되면, 암호화되지 않은 연결은 심각한 취약점이 돼요. 네트워크 패킷이 이동하는 여러 지점에서 가로채일 수 있고, 다음이 노출될 수 있습니다.

  • 어떤 데이터를 다루는지 드러내는 민감한 쿼리와 검색어
  • 독점 정보를 담은 벡터 임베딩과 데이터 페이로드
  • 암호화 없이 전송되는 인증 자격 증명
  • 무단 접근을 허용할 수 있는 API 키와 토큰

그래서 SSL/TLS(Secure Sockets Layer/Transport Layer Security)로 데이터베이스를 보호하는 것이 중요해요. SSL/TLS는 클라이언트와 데이터베이스 사이에 암호화된 보안 연결을 만들어, 트래픽이 가로채여도 제3자가 내용을 읽을 수 없게 합니다.

출처: 공식문서 - Securing Weaviate with SSL/TLS

상황부터 — SSL/TLS가 필요한 때

  • 관리형 배포: Weaviate Cloud 등 관리형 서비스는 SSL/TLS가 이미 설정·관리됩니다. 이 가이드는 셀프호스팅 환경(VPS, AWS·GCP·Azure 같은 하이퍼스케일러, 온프레미스)에서 Weaviate를 외부 네트워크에 노출해야 할 때를 위한 것이에요.
  • 테스트·로컬 배포는 네트워크 암호화가 필수는 아니지만, 생산 배포(내부·외부 모두)에서는 SSL/TLS 활성화가 모범 사례(best practice) 입니다.

Weaviate의 이중 포트 아키텍처

Weaviate는 두 개의 엔드포인트가 필요하고, 둘 다 SSL/TLS 보호가 필요해요. 전통적인 단일 포트 앱보다 복잡한 이유입니다.

기본 포트 용도 프로토콜
8080 REST API와 쿼리 인터페이스(쿼리는 gRPC로도 가능) HTTP
50051 고성능 데이터 연산과 쿼리 gRPC

각 엔드포인트는 자체 도메인/서브도메인과 SSL 인증서가 필요해요.

포트 6060은 Go 프로파일링용이에요. 생산 배포에서는 보통 내부 전용으로 두고 인터넷에 노출하지 않아야 합니다. 외부 접근이 필요하면 같은 SSL/TLS 원칙을 적용하되 인증도 제대로 설정하세요.

보안 접근 방식 고르기

셀프호스팅 데이터베이스를 보호하는 세 가지 옵션이 있어요. 복잡도·비용·확장성에 따라 골라보세요.

접근 방식 복잡도 적합한 곳 인프라 핵심 장점
옵션 1: Nginx Proxy Manager 입문 개인 프로젝트, GUI 선호 Docker 기반 쉬운 GUI 구성, 시각적 인증서 관리
옵션 2: Traefik 중급 성장하는 회사, IaC 워크플로우 Docker Compose 자동 구성, Infrastructure as Code, 컨테이너 네이티브
옵션 3: Kubernetes + Cert-Manager 고급 엔터프라이즈, 생산 규모 Kubernetes 자동 갱신, 고가용성, 엔터프라이즈급 오케스트레이션

구성 전 공통 준비

  1. SSL 인증서 요청 전에 DNS 레코드를 구성하세요.
    • A 레코드: weaviate.yourdomain.com → 서버 IP
    • A 레코드: grpc.yourdomain.com → 서버 IP
    • 팁: 서브도메인 관리를 쉽게 하려면 와일드카드(*.yourdomain.com) DNS 레코드를 쓰세요. DNS 전파를 기다린 뒤 진행합니다.
  2. 컨테이너 간 안전한 통신을 위해 공유 네트워크를 만듭니다.
docker network create weaviate-network

로컬 검증 예시 — Docker 네트워크 내부에서만 접근 가능한지 확인:

# 내부(성공해야 함)
docker exec weaviate curl http://localhost:8080/v1/meta
# 호스트(연결 거부되어야 함)
curl http://localhost:8080/v1/meta

내부 테스트는 성공하고 호스트 테스트는 실패하면, Weaviate가 Docker 네트워크 안에서만 접근 가능하고 호스트·인터넷에는 노출되지 않았다는 뜻이에요.

요약

  • 암호화 없이는 쿼리·임베딩·자격 증명·API 키가 탈취될 수 있어요.
  • Weaviate는 REST(8080)·gRPC(50051) 2개 포트 + 2개 인증서가 필요.
  • 관리형은 이미 보안 처리됨. 셀프호스팅은 Nginx/Traefik/Cert-Manager 중 선택.
  • 내부 네트워크 격리 + SSL/TLS를 함께 적용하는 게 안전.

더 알아보기 (Learn more)