지난 Airflow 밋업에 오셨던 분들은 Keycloak을 활용한 인증 관리, 라이트닝 토크로 들으신 분들도 많을 거예요.
그 자리에서 “이제 Keycloak 기반 인증이 진짜 잘 된다!”라는 이야기가 나왔는데,
이게 사실 당연히 잘 돼야 하는 건데… 예전엔 그렇지 않았습니다.
오늘은 왜 그랬는지, 그리고 어떻게 지금처럼 안정적인 구조가 만들어졌는지 간단히 정리해보려고 합니다.
(1.x 시절은 제가 직접 경험해보지 못해서, 메일링 리스트/이슈/PR 등을 기반으로 전해 들은 내용을 포함합니다.)
https://lists.apache.org/thread/cm0pj3dhgb5wqgpc27rdfjzkpq2clnmz
Airflow 1, 불평 많던 FAB를 쓸 수 밖에 없던 시절
저는 Airflow 1을 실제로 사용해본 세대는 아니지만, 커뮤니티 기록을 보면 당시 구조는 꽤 갑갑했던 것 같습니다.
Airflow 1에서는 인증/권한 관리를 하려면 FAB(Flask App Builder) 을 무조건 써야 했습니다.
RBAC가 들어오면서 분명 나아지긴 했지만, 동시에 이런 문제들이 반복됐다고 해요:
- FAB 업데이트와 보안 패치를 Airflow가 기다려야 했고
- Airflow 자체 코드 일부가 FAB Security Manager를 벤더링해서 관리해야 했고
- Airflow 설정인지 FAB 설정인지 헷갈리는 경우가 많았고
- 엔터프라이즈 통합 속도를 FAB가 못 따라왔고
- Airflow 문서와 FAB 문서를 계속 왔다 갔다 해야 했고…
커뮤니티에서는 이런 말이 계속 나왔다고 합니다.
“FAB를 벗어날 수 없을까…?”
하지만 구조적으로 당장 떼어낼 수 있는 상황은 아니었다고 합니다.
바퀴를 새로 만들 이유가 있나? 잘하는 시스템에 붙이면 되지!
제가 Airflow 2를 쓰기 시작했을 때 이미 이런 논의가 활발하게 진행 중이었어요.
“Airflow가 인증 시스템까지 직접 만들 필요가 있을까?”
“확장 가능한 Auth Manager만 잘 만들어두면 각 조직이 원하는 걸 붙일 수 있는 거 아닌가?”
이 방향이 점점 힘을 얻게 되었고, 결국 Airflow는 자체 RBAC/인증 시스템을 키우는 대신 인증에 강한 외부 시스템을 연결할 수 있는 “플랫폼”이 되기로 했습니다.
- Keycloak을 쓰고 싶은 회사는 Keycloak Auth Manager
- AWS 환경은 AWS Managed Identity
- LDAP 환경은 LDAP Auth Manager
- 필요하면 Custom Auth Manager도 사용 가능
이 철학이 AIP-56의 기반이 됩니다.
AIP-56 Extensible User Management
AIP-56은 바로 이 목표를 실현하기 위한 장기 프로젝트였습니다.
Airflow 3.0 준비 작업과 병렬로 진행되었고 2.x 후반 → 3.0 전환 시점에 진짜 구조가 크게 흔들렸습니다.
이 때 저희 커뮤니티에서 기여 모임을 진행하고 있었는데…
개발툴이 기능 속도를 못 따라가서 고생했던 기억이 많네요 ㅋㅋㅋ
(pull하기 무서웠죠 ㅋㅋㅋㅋㅋ)
테스트하려고 로그인했는데 인증이 깨져서 swagger가 안 열리고,
UI는 새 API를 바라보는데 Authorization이 안 맞고…
뭐 이런 상황들이 꽤 있었습니다 ㅎㅎ 삽질 많이 했던 기억이 나네요 ㅋㅋㅋㅋㅋㅋ
결국 아래와 같이 변경 되었습니다:
- Auth Manager API가 정식으로 정리되고
- 기존 FAB 기반 로직이 provider로 단계적으로 탈착되고
- FastAPI 기반 신규 API 도입
- UI에서 FAB 흔적 제거
- SimpleAuthManager가 기본값으로 들어오고
- Keycloak / AWS Auth Manager가 provider 형태로 공식 제공
이제는 Airflow가 특정 인증 방식에 묶여 있지 않습니다.
원하는 인증 방식을 그냥 하나 골라서 붙이면 되는 구조가 됐습니다.
아래의 프로젝트와 같이 커스텀 LDAP Auth Manager 를 만들어 붙일 수도 있습니다.
https://github.com/emredjan/airflow-ldap-auth-manager
밋업에서 Keycloak 데모가 ‘매끄럽게’ 보였던 이유는 단순히 Keycloak이 좋아서가 아니라, Airflow 전체가 원래의 제약을 벗어나기 위해 지난 2년간 꾸준히 길을 닦아왔기 때문입니다.
빈센트 형님 덕분에… 편하게 씁니다..!
마무리하며
이런 글을 쓰고 있는 저는…
아직 FAB 인증을 쓰고 있긴 합니다 ㅋㅋㅋㅋㅋ
iframe으로 된 UI만 봐도 불편…!
요즘 바빠서 손 못 대고 있는데, Airflow 4.x에서는 FAB 인증이 공식 지원이 끊긴다고 하니 저도 슬슬 갈아탈 준비를 해야겠네요 ㅎㅎ
