프로젝트 및 사용자 관리
1️⃣ + 프로젝트 개념 (퍼블릭 vs 프라이빗)
Harbor에서 **프로젝트(Project)**는 컨테이너 이미지를 저장하는 논리적인 단위입니다.
- 조직 또는 팀 단위로 구분하여 이미지 관리 가능
- 퍼블릭(Public): 인증 없이 누구나 Pull 가능
- 프라이빗(Private): 권한 있는 사용자만 접근 가능
1. 프로젝트 생성 예시
Harbor UI에서 다음과 같이 생성합니다:
Projects ▶ New Project ▶ Name: backend-app
▶ Access Level: Private
2. 퍼블릭 vs 프라이빗 비교
항목 | 퍼블릭(Project) | 프라이빗(Project) |
---|---|---|
이미지 Pull | 누구나 가능 | 인증된 사용자만 가능 |
사용 사례 | 오픈소스 배포용 | 내부 서비스 전용 |
보안 수준 | 낮음 | 높음 |
✅ 아키텍처 흐름도
[개발자 A] ──────┐
▼
┌────────────────────┐
│ Harbor Project │
│ (backend-app) │
└─────┬───────────────┘
▼
[Registry Storage (S3, PV)]
2️⃣ + 사용자/그룹 관리, 역할 할당
Harbor는 RBAC(Role Based Access Control)을 지원합니다.
1. 역할(Role) 종류
역할 | 설명 |
---|---|
Admin | 전체 Harbor 시스템 관리자 |
Project Admin | 특정 프로젝트 내 모든 권한 |
Developer | 이미지 Push/Pull 가능 |
Guest | 이미지 Pull만 가능 |
2. 사용자 추가 및 권한 부여
Projects ▶ backend-app ▶ Members ▶ Add Member
▶ Username: johndoe ▶ Role: Developer
3. 그룹 기반 관리 예시
외부 LDAP/AD 연동 시 그룹 단위로 권한을 부여할 수 있습니다.
Group Name: dev-team
Project: backend-app
Role: Developer
✅ 사용자/그룹 흐름도
[Harbor Users / LDAP Group]
↓
[Harbor Project]
↓
[Role Assignment (Admin / Dev / Guest)]
3️⃣ + LDAP/AD 인증 연동 실습
Harbor는 LDAP 및 Active Directory(AD) 연동을 통해 SSO 기반 인증을 제공합니다.
1. LDAP 연동 예시
Administration ▶ Configuration ▶ Authentication
Auth Mode: LDAP
LDAP URL: ldap://ldap.example.com
Search DN: cn=admin,dc=example,dc=com
Search Password: secret
Base DN: dc=example,dc=com
UID: uid
2. AD 연동 시 추가 설정
LDAP URL: ldap://ad.example.com
LDAP Scope: Subtree
Group Membership: ✔️ Enabled
✅ LDAP 인증 플로우
[사용자 로그인]
↓
[Harbor → LDAP/AD 서버]
↓
[인증 확인 후 Harbor 로그인 성공]
🧪 테스트 방법
docker login harbor.example.com
Username: johndoe
Password: <LDAP 비밀번호>
4️⃣ + Robot Account와 API Token 생성
Robot Account는 자동화된 Push/Pull 작업에 사용되는 계정입니다.
- CI/CD 파이프라인에 적합
- 권한 범위 제한 가능
1. Robot 계정 생성
Projects ▶ backend-app ▶ Robot Accounts ▶ New Robot Account
▶ Name: gitlab-ci
▶ Expiration: 30 days
▶ Permissions: Push + Pull
2. 예시: GitLab에서 Harbor 연동
.gitlab-ci.yml
예제:
image: docker:latest
services:
- docker:dind
variables:
HARBOR_REGISTRY: harbor.example.com/backend-app
HARBOR_USER: robot$gitlab-ci
HARBOR_PASSWORD: <robot token>
build:
script:
- docker login -u $HARBOR_USER -p $HARBOR_PASSWORD $HARBOR_REGISTRY
- docker build -t $HARBOR_REGISTRY/web:latest .
- docker push $HARBOR_REGISTRY/web:latest
✅ API 토큰 사용 플로우
[CI/CD 서버]
↓
[Robot 계정으로 Harbor 인증]
↓
[이미지 Push or Pull]
마지막 수정일자