LabHub

기업 인증 연동 · LDAP 과 조직도 · 실습

조직도 설계와 그룹 무결성 점검

LabHub 에서 이어서 보기

목표

조직 구조(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_ouOrg 가 아닌 행(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.
각 그룹은 member2명 이상 가져야 하고, 모든 member DN 은
실제 존재하는 사용자여야 합니다.
5. cn=role-admin 의 member 에 cn=role-approver 의 DN 을 추가합니다(중첩 그룹).
6. uid=kimou=People 에서 ou=Org 아래의 조직 중 하나로 이동시킵니다.
이동 후 원래 위치에서는 조회되지 않아야 합니다.
그리고 그를 member 로 갖고 있던 그룹들의 member 도 새 DN 으로 함께 고치세요.
서버는 그룹을 따라 고쳐 주지 않습니다. 그대로 두면 kim 의 옛 DN 이 끊어진
멤버십으로 남아 7단계에서 2건이 나오고, 그 단계를 통과할 수 없습니다.
7. /root/ldap/orgcheck.sh 를 만듭니다. 모든 groupOfNamesmember DN 중
실제로 존재하지 않는 DN 을 찾아 한 줄에 하나씩 출력하고,
하나라도 있으면 0 이 아닌 종료코드로 끝냅니다.
실행 결과로 발견한 DN 을 /root/ldap/dangling.txt 에 저장하세요.
(30-legacy.ldif 가 적재한 그룹에 하나가 숨어 있습니다.)
8. 7단계에서 찾은 끊어진 member 를 해당 그룹에서 제거하고,
orgcheck.sh 를 다시 실행했을 때 종료코드 0 이 나오게 합니다.
그룹 엔트리 자체는 남아 있어야 합니다.

참고

단계 8개

  1. 조직 구조 설계표
  2. OU LDIF 작성
  3. 조직 적재
  4. 역할 그룹 생성
  5. 중첩 그룹
  6. 인사이동 반영
  7. 끊어진 멤버십 탐지
  8. 정리와 재검증