Harbor 아키텍처 구조 이해
1️⃣ + Harbor의 핵심 컴포넌트
Harbor는 단순한 컨테이너 이미지 저장소가 아닌, 보안과 엔터프라이즈 기능이 강화된 모듈형 아키텍처입니다.
아래는 주요 구성요소입니다:
1. Core Service
- Harbor의 중심 로직
- 사용자 요청을 처리하며, DB 및 다른 컴포넌트들과 통신
- API, Web UI, RBAC 정책 처리 포함
2. Registry
- 이미지 저장 및 전송 담당
- Docker의 distribution 프로젝트 기반
- OCI 표준을 따름
3. Job Service
- 백그라운드 작업 처리 담당
- 예: 이미지 복제, 스캔, 삭제 스케줄링 등
4. Database
- Harbor는 주로 PostgreSQL 사용
- 사용자, 프로젝트, 이미지 메타데이터 저장
5. Clair / Trivy
- 취약점 스캐너
- 업로드된 이미지의 보안 이슈를 자동으로 탐지
- Clair 또는 Trivy 중 선택 가능
6. Notary
- 이미지 서명(Signing) 기능 제공
- 신뢰된 이미지 배포 가능 (Content Trust)
7. Portal (Web UI)
- 사용자 인터페이스
- 프로젝트 생성, 권한 설정, 이미지 조회 등 대부분의 기능 수행 가능
✅ Harbor 컴포넌트 아키텍처 다이어그램
┌───────────────┐
│ Web Portal │
└──────┬────────┘
│ REST API
▼
┌──────────────┐
│ Core API │
└────┬───┬─────┘
│ │
┌─────────────┘ └──────────────┐
▼ ▼
┌──────────────┐ ┌─────────────────┐
│ Job Service │ │ Registry │
└──────┬───────┘ └────────┬────────┘
│ │
▼ ▼
┌────────────────┐ ┌─────────────────────┐
│ Scanner (Clair/│ │ Notary (Signer) │
│ Trivy) │ └─────────────────────┘
└────────────────┘
▲
│
┌─────────────┐
│ PostgreSQL │ ◄─── Harbor DB (메타데이터 저장)
└─────────────┘
2️⃣ + 데이터 흐름과 통신 방식
컨테이너 이미지의 Push/Pull, 스캔 등은 다양한 컴포넌트 간의 상호작용을 필요로 합니다.
1. 이미지 Push/Pull 흐름
[Client (Docker)] ⇄ [Nginx Proxy] ⇄ [Registry]
│
▼
[Core Service]
│
▼
[DB 저장]
- 사용자가
docker push
를 하면 Nginx Reverse Proxy를 통해 Registry로 전달 - Core는 이미지 메타데이터를 DB에 저장
- 스캔이 설정되어 있다면 Job Service가 자동으로 스캔 요청
2. 이미지 스캔 흐름
[Push 완료]
↓
[Core] ──▶ [Job Service] ──▶ [Scanner (Trivy/Clair)]
↓
[DB에 결과 저장]
- 취약점 탐지는 자동화되며 결과는 UI에서 확인 가능
3. 이미지 복제 흐름 (멀티 레지스트리)
[Core] ─▶ [Job Service] ─▶ [원격 Registry] ⇄ 이미지 복제
- Job Service가 정기적으로 이미지 동기화를 실행
- 멀티 클러스터/리전 환경에서 유용
3️⃣ + 내부 인증/인가 구조와 RBAC
Harbor는 세밀한 접근 제어를 위해 RBAC(Role-Based Access Control) 및 인증 연동 기능을 제공합니다.
1. 인증(Authentication)
방식 | 설명 |
---|---|
DB | 기본 사용자 계정 관리 (내부 DB) |
LDAP/AD | 사내 인증 서버 연동 |
OIDC | OpenID Connect 기반 Single Sign-On |
Robot 계정 | 자동화 도구용 토큰 기반 계정 |
2. 인가(Authorization)
- 프로젝트 단위의 권한 설정이 핵심
- 역할 기반 정책 제공
역할 | 기능 요약 |
---|---|
Admin | 전체 시스템 관리자 |
Project Admin | 해당 프로젝트의 설정 및 멤버 관리 가능 |
Developer | 이미지 Push/Pull 가능 |
Guest | 이미지 조회(Pull)만 가능 |
✅ RBAC 흐름도
┌────────────┐
│ 사용자 로그인 │
└────┬───────┘
│
┌────▼─────┐
│ 인증 방식 │
│ (LDAP 등)│
└────┬─────┘
▼
┌──────────────┐
│ 역할 매핑 │ ← Core가 RBAC 룰 확인
└────┬─────────┘
▼
┌──────────────┐
│ 요청 승인 여부│
└──────────────┘
Harbor의 모듈별 아키텍처, 내부 흐름, 그리고 보안 체계를 잘 이해하면,
단순한 이미지 저장소가 아닌 엔터프라이즈급 컨테이너 관리 허브로서의 활용이 가능해집니다.
마지막 수정일자