LIT-freeipa-overview
2026-02-14
요약
FreeIPA는 389 Directory Server, MIT Kerberos, Dogtag CA, SSSD, ISC BIND, Certmonger를 통합한 Linux/UNIX 환경의 중앙 집중식 ID 관리 솔루션이다. "Identity, Policy, Audit"의 약자로, 사용자·호스트·서비스 인증, 호스트 기반 접근 제어(HBAC), sudo 규칙, 인증서 관리, DNS를 하나의 시스템으로 관리한다. Active Directory와의 cross-realm 트러스트를 통해 이기종 환경 통합도 지원한다. Red Hat IdM은 FreeIPA의 상용 버전이다.
핵심 포인트
아키텍처: 기존 오픈소스의 조합
FreeIPA는 새로운 기술을 발명하지 않고, 검증된 오픈소스 구성 요소들을 통합하는 접근을 취한다:
| 기능 | 구성 요소 | 역할 |
|---|---|---|
| 디렉토리 | 389 Directory Server | 사용자, 그룹, 호스트, 정책 등 모든 데이터의 주 저장소 |
| 인증 | MIT Kerberos KDC | SSO 인증. IPA-KDB 플러그인으로 389 DS를 백엔드로 사용 |
| 인증서 | Dogtag Certificate System | 내부 CA. 인증서 발행·갱신·폐기 |
| 클라이언트 | SSSD | 클라이언트 측 인증 에이전트. 캐싱, 오프라인 인증 |
| DNS | ISC BIND + 커스텀 플러그인 | 도메인 내 DNS 관리. 호스트 등록 시 자동 DNS 생성 |
| 인증서 갱신 | Certmonger | 인증서 만료 전 자동 갱신 |
이 조합은 각 구성 요소를 단독으로 운영할 때의 복잡성을 제거한다. 예를 들어, MIT Kerberos만 단독으로 운영하면 principal 관리, keytab 배포, 데이터베이스 관리를 모두 수동으로 해야 하지만, FreeIPA에서는 ipa user-add 하나로 LDAP 엔트리 + Kerberos principal + 홈 디렉토리 설정이 동시에 이루어진다. [추론]
IPA-KDB: 389 DS와 MIT Kerberos의 접착제
IPA-KDB 플러그인은 FreeIPA 아키텍처의 핵심이다. MIT Kerberos의 DAL(Database Abstraction Layer) 인터페이스를 구현하여 389 DS를 Kerberos 데이터베이스로 사용하게 한다:
- IPAv2에서 사용하던 MIT kldap DAL 백엔드를 IPAv3에서 IPA-KDB로 교체
- MS-PAC 처리를 통해 AD 트러스트 지원
- Kerberos principal과 LDAP 엔트리의 1:1 매핑으로 통합 관리
이것은 MIT Kerberos의 LDAP 백엔드 기능(LIT-kerberos-implementations-overview 참조)을 FreeIPA에 특화시킨 것이다. [추론]
HBAC: 호스트 기반 접근 제어
HBAC은 FreeIPA의 정책(Policy) 기능 중 가장 핵심적인 것으로, "누가, 어디서, 무엇을 할 수 있는가"를 제어한다:
- 누구 (Who): 사용자 또는 사용자 그룹
- 어디 (Where): 호스트 또는 호스트 그룹
- 무엇 (What): 서비스 (SSH, FTP 등)
기본적으로 allow_all 규칙이 활성화되어 있으며, 세분화를 위해 이를 비활성화하고 개별 규칙을 생성한다. ipa hbactest 유틸리티로 정책 테스트 후 적용할 수 있어, 잘못된 정책으로 사용자가 잠기는 것을 방지한다.
Sudo 규칙 중앙 관리
FreeIPA는 개별 호스트의 /etc/sudoers를 관리하는 대신 중앙에서 sudo 규칙을 정의하고 배포한다:
- User Group, Host Group, Command Group을 사용하여 규칙 단순화
- SSSD가 클라이언트에서 FreeIPA의 sudo 규칙을 가져와 적용
- 주의: sudo 1.8.23+에서는 HBAC가 먼저 접근을 허용해야 sudo 규칙이 평가됨
이것은 HBAC → sudo의 계층 구조로, HBAC이 "문 앞 출입 통제"이고 sudo가 "문 안에서의 권한 제어"라고 이해할 수 있다. [추론]
AD 트러스트: 이기종 환경 통합
IPAv3에서 도입된 AD 트러스트는 Samba와의 통합을 통해 구현된다:
- Cross-realm Kerberos 트러스트 설정으로 AD 사용자가 IPA 도메인의 서비스에 접근
- IPA-KDB 플러그인이 Kerberos 티켓의 MS-PAC 데이터를 처리
- SSSD가 AD 사용자의 인증 흐름을 처리 (AD KDC → cross-realm → IPA KDC)
- IPASAM 백엔드가 389 DS에서 필요한 데이터를 RPC 서비스에 제공
핵심은 AD 사용자가 IPA 도메인의 HBAC 및 sudo 규칙의 적용을 받는다는 것이다. AD에서 인증하되, 리소스 접근 권한은 IPA에서 제어한다.
LDAPI와의 관계
FreeIPA 서버 내부에서 IPA 프레임워크와 389 DS 간의 통신은 **LDAPI(LDAP over Unix Domain Socket)**를 사용한다 (LIT-ldapi-summary 참조). 이를 통해:
- 비밀번호 없이 SASL EXTERNAL 인증으로 389 DS에 접근
- root 프로세스가 cn=Directory Manager로 자동 매핑
- 네트워크 오버헤드 없는 로컬 통신
4.13.0의 주요 변화
최신 버전 4.13.0의 주목할 만한 변화:
- Modern WebUI (Beta): 기존 WebUI를 대체할 새 UI 베타
- DoT/DoH 지원: DNS 쿼리의 암호화로 보안 강화
- LDAP System Accounts: 시스템 계정의 완전한 관리 기능
- Random Serial Numbers (RSNv3): 인증서 일련번호 예측 불가능하게 만들어 보안 강화
- 170건+ 버그 수정: FIPS 모드, HSM 지원 등
FreeIPA가 통합하는 기술 스택 전체 그림
사용자/클라이언트
│
├─ SSSD (클라이언트 에이전트)
│ ├─ Kerberos 인증 처리
│ ├─ HBAC 정책 평가
│ ├─ sudo 규칙 가져오기
│ └─ 캐싱 / 오프라인 인증
│
FreeIPA 서버
│
├─ 389 DS ←──LDAPI──→ IPA 프레임워크
│ └─ 사용자, 그룹, 호스트, 정책, sudo 규칙 저장
│
├─ MIT Kerberos KDC
│ └─ IPA-KDB 플러그인 → 389 DS 백엔드
│
├─ Dogtag CA
│ └─ 인증서 발행/갱신/폐기
│
├─ ISC BIND
│ └─ DNS 관리 (호스트 자동 등록)
│
├─ Certmonger
│ └─ 인증서 자동 갱신
│
└─ Samba (AD 트러스트)
└─ MS-RPC, Netlogon, IPASAM
나의 생각
- FreeIPA의 가치는 개별 구성 요소가 아니라 **통합(integration)**에 있다. 389 DS, MIT Kerberos, Dogtag는 모두 독립적으로 사용할 수 있는 성숙한 소프트웨어이지만, 이들을 하나로 묶어 "사용자 추가 한 번에 모든 것이 설정되는" 경험을 제공하는 것이 FreeIPA의 핵심 가치이다. [추론]
- HBAC → sudo의 계층 관계는 잘 설계되어 있다. 호스트 접근 자체를 먼저 제어한 후, 접근이 허용된 호스트에서의 권한을 sudo로 세밀하게 조정하는 것은 Defense-in-Depth 원칙에 부합한다. [추론]
- AD 트러스트 구현에서 IPA-KDB의 MS-PAC 처리는 Microsoft의 Kerberos 확장(LIT-kerberos-implementations-overview 참조)을 오픈소스 측에서 호환 구현한 것이다. PAC에 로컬 그룹을 추가(augment)하는 설계는, AD 인증은 AD에서 하되 인가는 IPA에서 하는 명확한 책임 분리를 보여준다. [추론]
- FreeIPA는 이 vault에서 조사한 여러 기술의 교차점이다: 389 DS(디렉토리), MIT Kerberos(인증), LDAPI(로컬 통신). 이 각각의 기술이 어떻게 작동하는지 이해하면 FreeIPA의 아키텍처가 자연스럽게 이해된다.
Links
- 원본: REF-freeipa-architecture
- 원본: REF-freeipa-release-status
- 관련 (LDAP 개요): LIT-ldap-overview
- 관련: LIT-389-directory-server-overview
- 관련: LIT-kerberos-implementations-overview
- 관련: LIT-ldapi-summary
- 관련: LIT-slapd-overview
- 관련: LIT-ldap-data-model-summary
- 관련: LIT-directory-object-identifier-comparison
- 관련 Permanent Note: [[]]