콘텐츠로 이동
Study NoteKeycloak 실습

Samba 테스트 디렉터리

결론부터
Samba 실습은 두 사용자와 두 그룹의 작은 원본 상태를 멱등 seed하고, LDAPS·bind·재생성 뒤 동일성을 검증한다.

외부 디렉터리 연동은 원본 데이터가 일정해야 mapper와 cache 변화를 비교할 수 있다. 이 실습은 alice·bob, app-users·api-admins만으로 권한 차이를 만든다.

이 장에서 처음 나오는 말3개
AD DCActive Directory Domain Controller
도메인의 디렉터리·DNS·인증 기능을 제공하는 서버 역할. 이 실습에서는 Samba가 AD 호환 대역을 맡는다.
seed
검증에 필요한 사용자·group·membership을 같은 입력으로 반복 적용하는 초기 데이터 작업.
domain SIDSecurity Identifier
도메인을 식별하는 값. container 재생성 전후 같은 디렉터리 상태인지 확인하는 표지로 사용한다.
원본membership기대 권한 입력
aliceapp-users, api-admins일반 기능 + 관리 기능
bobapp-users일반 기능만

Samba 데이터는 keycloak-lab-samba-data named volume에 있고, directory CA·leaf certificate·password는 Git 제외 .state/에서 관리한다. Samba는 host port 없이 Compose bridge의 고정 alias로만 접근한다.

  • 테스트 사용자와 group은 어떻게 준비되는가?
  • LDAPS 조회와 사용자 bind에서 무엇을 확인하는가?
  • container 재생성과 디렉터리 초기화는 어떻게 다른가?

전체 Compose 최초 시작은 Samba image build, domain provision, seed와 health를 함께 수행한다. Samba만의 P03 검증 정본은 다음 명령이다.

터미널 창
cd labs/keycloak
./samba/verify-p03.sh

검증은 directory CA로 base search와 사용자/group 조회, alice·bob의 올바른 password bind를 확인한다. 잘못된 CA와 오답 password는 반드시 실패해야 한다. seed를 두 번 적용한 출력도 같아야 한다.

container를 force recreate해도 named volume을 유지하면 domain SID, 사용자와 group membership이 같아야 한다. 반대로 reset.sh --confirm DELETE-keycloak-lab-compose-state는 volume과 .state를 의도적으로 지워 새 domain identity를 만든다. 일반 장애 복구에 reset을 사용하지 않는다.

2026-09-14 macOS/Colima에서 P03과 이후 P11 빈 상태 재현이 통과했다. P11에서는 reset으로 새 SID가 생긴 뒤 보존 stop/resume에서 동일한 SID와 directory 결과를 다시 확인했다. 네이티브 Ubuntu의 P03은 아직 미실행이다.

Samba provision은 SYSVOL ACL을 만들기 위해 container에 SYS_ADMIN capability가 필요했다. 전체 privileged mode, Docker socket, host network와 host port는 쓰지 않는다. 이 capability는 실습 image의 실제 실패와 security.* xattr 요구를 확인한 뒤 추가한 최소 범위다.

이 원본 사용자로 Keycloak 로그인을 재현하려면 외부 디렉터리 계정 로그인 실습으로 이어 간다.

  • alice/bob과 두 group의 작은 고정 상태가 후속 mapper·API 검증의 원본이다.
  • directory CA의 LDAPS와 올바른/오답 bind를 모두 확인한다.
  • container 재생성은 volume을 보존하지만 명시적 reset은 새 domain identity를 만든다.
  • macOS/Colima는 검증됐고 네이티브 Ubuntu 결과는 보류다.