프로젝트 및 사용자 관리

프로젝트 및 사용자 관리

1️⃣ + 프로젝트 개념 (퍼블릭 vs 프라이빗)

Harbor에서 **프로젝트(Project)**는 컨테이너 이미지를 저장하는 논리적인 단위입니다.

  • 조직 또는 팀 단위로 구분하여 이미지 관리 가능
  • 퍼블릭(Public): 인증 없이 누구나 Pull 가능
  • 프라이빗(Private): 권한 있는 사용자만 접근 가능

1. 프로젝트 생성 예시

Harbor UI에서 다음과 같이 생성합니다:

Projects ▶ New Project ▶ Name: backend-app
                      ▶ Access Level: Private

Harbor Project 생성 UI 예시


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]

RSS Feed
마지막 수정일자