Samba 테스트 디렉터리
외부 디렉터리 연동은 원본 데이터가 일정해야 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 | 기대 권한 입력 |
|---|---|---|
| alice | app-users, api-admins | 일반 기능 + 관리 기능 |
| bob | app-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 결과는 보류다.