기업 인증 연동 · LDAP 과 조직도 · 실습
조직도 설계와 그룹 무결성 점검
목표
조직 구조(OU)와 역할 그룹을 직접 설계·적재하고, 인사이동을 반영하고,
끊어진 그룹 멤버십을 스크립트로 탐지해 정리할 수 있게 됩니다.
왜 중요한가
LDAP 그룹의 member 는 그냥 DN 문자열입니다. 그 DN 이 실제로 존재하는지
서버가 검사해 주지 않습니다. 그래서 사용자를 지우면 **그룹에는 그 사람의 DN 이
그대로 남습니다.** 이 끊어진 멤버십은 조용히 쌓이다가, 권한 감사 때
"이 그룹 멤버가 12명인데 실제 재직자는 9명"이라는 지적으로 돌아옵니다.
또 하나 — 조직도를 그대로 트리에 옮기면 인사이동마다 DN 이 바뀌고,
DN 을 연결 키로 쓰던 연동 시스템이 전부 깨집니다. 무엇을 트리로 두고
무엇을 속성으로 둘지가 이 실습의 진짜 주제입니다.
단계
0. 준비: slapd 를 1389 로 기동하고 00-base, 10-people, 20-groups,
그리고 /opt/lab/fixtures/auth/ldif/30-legacy.ldif 까지 적재해 둡니다.
1. /root/ldap/org.csv 를 만듭니다. 첫 줄은 ou_name,parent_ou,manager_uid.ou=Org 아래에 둘 조직 6개 이상을 적습니다.parent_ou 가 Org 가 아닌 행(2단계 조직)이 최소 2개 있어야 하고,manager_uid 는 디렉터리에 실제 존재하는 uid 여야 합니다.
2. 설계표대로 /root/ldap/org.ldif 를 작성합니다.
먼저 ou=Org,dc=labhub,dc=co,dc=kr 을 만들고 그 아래에 조직들을 둡니다.
각 엔트리는 objectClass: organizationalUnit 이어야 합니다.
3. org.ldif 를 적재합니다. ou=Org 하위에 organizationalUnit 이
설계표의 행 수만큼 있어야 합니다.
4. ou=Groups 아래에 역할 그룹 세 개를 만듭니다.cn=role-admin, cn=role-approver, cn=role-viewer.
각 그룹은 member 를 2명 이상 가져야 하고, 모든 member DN 은
실제 존재하는 사용자여야 합니다.
5. cn=role-admin 의 member 에 cn=role-approver 의 DN 을 추가합니다(중첩 그룹).
6. uid=kim 을 ou=People 에서 ou=Org 아래의 조직 중 하나로 이동시킵니다.
이동 후 원래 위치에서는 조회되지 않아야 합니다.
그리고 그를 member 로 갖고 있던 그룹들의 member 도 새 DN 으로 함께 고치세요.
서버는 그룹을 따라 고쳐 주지 않습니다. 그대로 두면 kim 의 옛 DN 이 끊어진
멤버십으로 남아 7단계에서 2건이 나오고, 그 단계를 통과할 수 없습니다.
7. /root/ldap/orgcheck.sh 를 만듭니다. 모든 groupOfNames 의 member DN 중
실제로 존재하지 않는 DN 을 찾아 한 줄에 하나씩 출력하고,
하나라도 있으면 0 이 아닌 종료코드로 끝냅니다.
실행 결과로 발견한 DN 을 /root/ldap/dangling.txt 에 저장하세요.
(30-legacy.ldif 가 적재한 그룹에 하나가 숨어 있습니다.)
8. 7단계에서 찾은 끊어진 member 를 해당 그룹에서 제거하고,orgcheck.sh 를 다시 실행했을 때 종료코드 0 이 나오게 합니다.
그룹 엔트리 자체는 남아 있어야 합니다.
참고
- 엔트리 존재 확인:
ldapsearch -x -H ... -b "<DN>" -s base -LLL "(objectClass=*)" dn - 속성 삭제:
ldapmodify에changetype: modify/delete: member/member: <DN> - 부모까지 바꾸는 이동:
ldapmodrdn -r -s "<새 상위 DN>" "<기존 DN>" "<새 RDN>" - 흔한 실수 1: 조직도를 그대로 DN 에 넣어 인사이동마다 DN 이 바뀌게 만드는 것.
- 흔한 실수 2:
groupOfNames에 member 없이 만들려다 스키마 위반을 만나는 것. - 흔한 실수 3: 끊어진 멤버십을 정리한다며 그룹 엔트리를 통째로 지우는 것.
단계 8개
- 조직 구조 설계표
- OU LDIF 작성
- 조직 적재
- 역할 그룹 생성
- 중첩 그룹
- 인사이동 반영
- 끊어진 멤버십 탐지
- 정리와 재검증