반응형
LDAP(Lightweight Directory Access Protocol)은 기업 시스템에서 사용자 계정과 인증 정보를 중앙에서 관리하기 위해 널리 사용됩니다. 그중 OpenLDAP은 대표적인 오픈소스 LDAP 서버이며, **접근 제어(ACL, Access Control List)**는 OpenLDAP의 보안을 좌우하는 핵심 기능입니다.
이번 글에서는 Ubuntu 공식 문서인 OpenLDAP Access Control Guide를 기반으로, OpenLDAP의 ACL 개념부터 실전 적용 방법까지 정리해드립니다. LDAP을 막 시작한 관리자부터 실무 운영 중인 개발자까지, 모두에게 유용한 내용이니 끝까지 읽어보시기 바랍니다.
🔐 ACL이란 무엇인가요?
**ACL(Access Control List)**은 OpenLDAP에서 누가 어떤 객체(DN)에 어떤 작업(읽기, 쓰기 등)을 할 수 있는지를 정의하는 보안 정책입니다.
📌 주요 키워드
- to : ACL의 대상(DN 또는 속성)
- by : 권한 부여 대상(사용자, 그룹 등)
- access level : 권한의 수준 (read, write, auth, none 등)
예를 들면:
access to dn.subtree="ou=people,dc=example,dc=com"
by self write
by users read
by anonymous auth
🔎 ACL 구문의 구조
ACL 규칙은 다음 형식으로 구성됩니다:
access to <대상>
by <주체> <권한>
[by <주체2> <권한2> ...]
💡 예시 1: 사용자 자신의 정보는 수정 가능, 다른 사용자는 읽기만 가능
access to dn.subtree="ou=people,dc=example,dc=com"
by self write
by users read
by anonymous auth
💡 예시 2: 특정 속성에 대한 권한 제한
access to attrs=userPassword
by self write
by anonymous auth
by * none
💡 예시 3: 관리자 전체 권한, 나머지는 제한
access to *
by dn.exact="cn=admin,dc=example,dc=com" manage
by * none
🧩 주요 Access Level
권한 수준 설명
none | 접근 불가 |
compare | 값 비교만 가능 (assert) |
search | 검색 허용 |
read | 읽기 허용 |
write | 쓰기 허용 |
auth | 인증 목적 접근 허용 |
manage | 객체 관리(삭제, 수정 등) 허용 |
🧰 ACL 적용 위치
Ubuntu에서 OpenLDAP은 동적 구성(Dynamic Configuration, cn=config) 방식을 사용하므로, 직접 slapd.conf를 수정하는 대신 ldapmodify 명령으로 구성해야 합니다.
📌 ACL 조회
ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config olcAccess
📌 ACL 수정 예시
- LDIF 파일 생성 (modify_acl.ldif):
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: to attrs=userPassword
by self write
by anonymous auth
by * none
olcAccess: to *
by self write
by users read
by anonymous auth
- 적용:
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f modify_acl.ldif
✅ 실무에서 자주 쓰는 ACL 패턴
목적 LDIF 설정
일반 사용자 비밀번호만 변경 허용 | attrs=userPassword 에 self write |
일반 사용자는 다른 사용자 속성 읽기만 허용 | by users read |
익명 사용자는 인증만 가능 | by anonymous auth |
admin만 전체 권한 | by dn.exact="cn=admin,dc=example,dc=com" manage |
⚠️ 주의사항
- 순서 중요: ACL은 위에서부터 평가됩니다. 먼저 매칭된 규칙이 우선 적용되므로, 보다 제한적인 규칙을 위에 배치해야 합니다.
- 구성 백업 필수: ACL을 잘못 설정하면 관리자도 접근이 불가능해질 수 있습니다. 변경 전 반드시 slapcat 등으로 백업하세요.
- 경로 정확성 체크: dn.subtree, dn.one, dn.exact, attrs 구문은 명확하게 지정해야 오류가 나지 않습니다.
🔄 ACL 테스트 방법
- ldapwhoami 명령으로 인증된 사용자 확인
- ldapwhoami -x -D "uid=john,ou=people,dc=example,dc=com" -W
- 접근 테스트 시도:
- ldapsearch -x -D "uid=john,ou=people,dc=example,dc=com" -W -b "dc=example,dc=com"
- 로그 확인:
- sudo tail -f /var/log/syslog | grep slapd
📦 정리
- ACL은 OpenLDAP 보안의 핵심입니다.
- 사용자, 속성, DN 경로에 따라 세밀하게 제어 가능합니다.
- Ubuntu에서는 slapd.conf 대신 cn=config를 통해 동적으로 설정합니다.
- 실수로 ACL을 잘못 설정할 경우 접근이 완전히 막힐 수 있으므로, 항상 변경 전 백업을 권장합니다.
반응형
'Program' 카테고리의 다른 글
Ubuntu에서 OpenLDAP 사용자 및 그룹 관리 완전 가이드 (0) | 2025.06.17 |
---|---|
OpenLDAP 복제 설정 가이드: Ubuntu 서버에서 마스터-리플리카 구성하기 (1) | 2025.06.17 |
Ubuntu 서버에 OpenLDAP 설치 및 구성하기: 실무 중심 단계별 가이드 (0) | 2025.06.17 |
Ubuntu AppArmor 보안 모듈 완전 정복 가이드 (0) | 2025.06.17 |
Ubuntu 서버 방화벽 설정 완벽 가이드: UFW 기본 사용법부터 포트 제어까지 (0) | 2025.06.17 |