Repository·Registry·LDAP, 아티팩트 저장·탐색·인증을 나눠 설계하는 법

Repository·Registry·Directory(LDAP)의 역할을 구분하고, 인증·권한 연계와 동기화 메커니즘, CI/CD·컨테이너 보안 적용 사례를 정리한다.

2026-08-13 · 최초 발행 2025-11-26

Repository·Registry·Directory의 역할 구분

엔터프라이즈 IT에서 산출물을 오래 보관하고 안전하게 찾아 쓰려면 서로 다른 역할을 하는 세 컴포넌트가 필요하다. Repository는 바이너리·소스·스키마·문서 같은 산출물의 중앙 저장소로, 버전과 무결성, 승인·배포·보존으로 이어지는 라이프사이클을 관리한다. Artifact Repository(Nexus/Artifactory), Data/Model Repository, 소스 중심의 Git 서버가 이 범주에 속한다.

Registry는 산출물이나 서비스에 대한 카탈로그·인덱스 역할을 한다. 위치(URI), 버전 태그, 정책 라벨 같은 경량 메타데이터로 조회·발견을 최적화하며, 서비스 레지스트리(Consul/Eureka)나 컨테이너 이미지 레지스트리, API 카탈로그가 여기에 해당한다.

Directory 서비스는 조직·사용자·기기·정책의 계층형 속성을 저장한다. 읽기 최적화와 참조 일관성을 중시하며, 프로토콜로는 무거운 X.500 기반 DAP(Directory Access Protocol)와 TCP/IP 위에서 동작하는 경량 LDAP(Lightweight DAP)가 있는데 실무 표준은 LDAP다. 정리하면 Repository가 실물과 상세 메타데이터를 보유하고, Registry가 탐색·참조를 제공하며, Directory가 인증·권한·속성 결정을 담당하는 구조다.

인증·권한 연계

인증은 LDAP Bind(Simple 또는 SASL)로 이뤄지고 TLS·StartTLS를 적용하며, 계정 잠금이나 비밀번호 정책도 여기서 연동된다. 권한은 그룹·속성 기반 RBAC/ABAC으로 매핑하는데, Repository·Registry의 프로젝트·리포지토리·네임스페이스 권한을 LDAP 그룹과 동기화하는 방식이 일반적이다.

메타데이터 스키마와 거버넌스

공통 스키마에는 artifactId, version, checksum(SHA-256), provenance, SBOM, 서명 상태, 보존 기한 같은 필드가 들어간다. 스키마 자체도 버저닝하고, 역호환 정책과 필수·선택 필드 검증 파이프라인을 함께 운영해야 한다.

동기화와 일관성 메커니즘

Push 방식의 웹훅·스트림으로 이벤트가 발생하면 Registry 인덱스를 갱신하고 서명·취약점 스캔 같은 정책 엔진을 트리거한다. 읽기 캐시와 Geo-리플리케이션을 두되, 쓰기 경로는 단일 리더로 유지하고 인덱스는 최종 일관 모델을 적용하는 편이 안전하다.

운영·보안·감사

전송 구간은 LDAPS/TLS와 mTLS(레지스트리·프록시)로 보호하고, 코드서명이나 컨테이너 Notation으로 서명을 남긴다. 감사는 누가·무엇을·언제·어디서 했는지 추적해야 하는데, LDAP 그룹 변경이 권한 변화로 이어지는 영향도를 분석하고 불변(append-only) 로그로 저장한다.

컴포넌트 비교

구분 성능 확장성 일관성 안정성 운영 편의
Repository 대용량 쓰기/읽기 균형, 체크섬 검증 비용 존재 오브젝트 스토리지 기반 수평 확장 우수 강·최종 혼합, 쓰기 경로 강 일관성 권장 저장소 무결성·백업 중요 정책·보존·버전 관리 도구 풍부
Registry 읽기·검색 최적, 색인 중심 샤딩/캐시로 고확장 최종 일관성 허용(색인 갱신 지연) 장애시 조회 영향 최소화 설계 용이 라벨·태그·인덱스 관리 용이
Directory(LDAP) 읽기 매우 빠름, 쓰기 상대적 비용 다중 리드 레플리카로 대규모 조회 대응 참조 일관성 중요, 멀티 마스터 주의 성숙한 복제·스키마 검증 계정·그룹·정책 중앙 관리 용이

통합 동작 절차

Object StorageLDAP DirectoryRegistry/IndexRepository APIDeveloper/ClientObject StorageLDAP DirectoryRegistry/IndexRepository APIDeveloper/Client오류 처리: AuthN 실패→401, 무결성 실패→409, 인덱스 지연→최종 일관성 경고1) PUT artifact + metadata2) LDAP Bind(AuthN) + group search3) AuthZ context(groups, attrs)4) Write blob + checksum5) Update index(tags, provenance)6) Ack (event emitted)7) Query by tag/label8) Artifact references9) GET artifact10) Stream binary

실무 적용 사례

CI/CD 파이프라인에서는 빌드→서명→SBOM 첨부→취약점 스캔→Repository 업로드→Registry 인덱스 갱신 순으로 아티팩트 라이프사이클을 구성한다. 배포 시점에는 Registry에 질의해 승인 태그가 붙은 것만 허용하고, LDAP 그룹을 기준으로 환경별 배포 권한을 나눈다.

컨테이너 공급망 보안에서는 이미지를 푸시할 때 서명을 검증하고 정책 엔진과 연계해, 취약점이 기준을 넘으면 레지스트리 태그를 차단한다. LDAP 속성(팀·역할)을 기준으로 서명 키 사용 권한을 부여하는 방식도 함께 쓰인다.

서비스 카탈로그·API 거버넌스에서는 OpenAPI 스펙, 계약(Contract), 테스트 리포트를 Repository에 보관하고 Registry에서 버전·호환성·의존성을 조회해 릴리스 게이트를 자동화한다. 접근 통제는 LDAP로 처리한다.

엔터프라이즈 구성·정책 관리에서는 Windows Registry나 애플리케이션 설정을 산출물로 템플릿화해 Repository에 저장하고, 배포 에이전트가 Registry로 대상·버전을 조회한 뒤 LDAP 그룹 기준으로 정책을 적용한다.

설계 지침

입력은 산출물 바이너리, JSON 메타데이터, 사용자 인증 정보다. 처리는 LDAP 인증·권한 평가 → 무결성 체크섬 확인 → 보안 스캔 → 저장 → 인덱스 갱신 이벤트 발행 순서로 이뤄지고, 출력은 저장 위치, 참조 URI·다이제스트, 정책 준수 결과, 인덱스 태그다.

인증에 실패하면 401을 반환하고 LDAP 잠금·비밀번호 만료 메시지를 표준화한다. 무결성이 맞지 않으면 409를 반환하며 재시도 가이드를 함께 제공한다. 인덱스가 지연되면 읽기 경로에서 캐시를 일시적으로 쓰고 최종 일관성 경고 헤더를 붙인다.

쓰기 트랜잭션은 저장소 커밋이 성공한 뒤에만 Registry를 업데이트하며, 2단계 커밋이나 outbox 패턴을 권장한다. 동일 artifactId/version의 병행 쓰기는 Optimistic Lock(ETag)으로 막고, 이벤트 재처리에는 idempotency 키를 써서 인덱스의 지연을 허용하는 대신 일관성을 유지한다.

LDAP 질의와 아티팩트 업로드 예시

환경은 Ubuntu 22.04, OpenLDAP 2.6, ldap-utils가 설치된 사내 LDAP 서버를 가정한다.

특정 사용자의 그룹을 확인한다.

# 특정 사용자 그룹 확인
ldapsearch -H ldaps://ldap.example.com \
  -D "uid=svc-ci,ou=svc,dc=example,dc=com" -W \
  -b "dc=example,dc=com" \
  "(&(objectClass=person)(uid=jkim))" memberOf

Repository에 아티팩트를 업로드하고 Registry에 태그를 붙인다.

# 예: Artifactory/Nexus 호환 엔드포인트 가정
curl -u jkim:**** -T app-1.2.3.jar \
  "https://repo.example.com/repository/releases/com/acme/app/1.2.3/app-1.2.3.jar"

# 메타데이터 라벨(Registry 인덱스) 부여 예시
curl -u jkim:**** -X POST \
  -H "Content-Type: application/json" \
  -d '{"tags":["prod-approved","sbom:1.0"],"sha256":"..."}' \
  "https://registry.example.com/api/v1/artifacts/com.acme.app/1.2.3/tags"

도입 효과와 트레이드오프

스토리지는 오브젝트 스토리지에 불변 버전 정책을 적용하고 체크섬 검증을 필수화하는 것이 모범사례이지만, 불변성을 강화할수록 삭제·정리 비용이 늘어나는 트레이드오프가 따른다. 보안은 LDAPS·mTLS·서명·SBOM을 필수화하고 최소 권한 RBAC을 적용해야 하지만, 초기 마이그레이션과 키 관리 복잡도가 올라간다. 일관성은 outbox·이벤트 기반으로 색인을 동기화하고 재시도·중복 방지를 갖춰야 하는데, 이는 최종 일관성을 받아들이고 운영 가시성을 확보해야 한다는 뜻이다. 가용성은 Registry를 무상태로 설계해 수평 확장하고 LDAP 리드 레플리카를 두는 것이 유리하지만, 레플리카 지연과 권한 변경 전파 시간이라는 대가가 있다.

이렇게 세 컴포넌트를 통합하면 검색·검증 자동화로 승인 대기가 줄어 배포 리드타임이 20~40% 단축되고, 불변 아티팩트와 인덱스 재구성 자동화로 장애 복구 RTO가 30% 개선되며, SBOM·취약점 결과를 인덱싱해두면 영향도 질의가 즉시 가능해져 보안 이슈 대응이 50% 가속되는 효과를 기대할 수 있다. 정성적으로는 스키마·정책이 중앙화돼 거버넌스가 일관되고, 행위 추적과 재현 가능성이 확보돼 감사·컴플라이언스가 강화되며, 레지스트리 카탈로그를 기준으로 팀 간 계약이 명확해진다.

RepositoryRegistryLDAP아티팩트관리인증연계