CVE-2025-54831 이후, Airflow의 민감정보 관리가 나아가는 방향

지난번 공유드렸던 Apache Airflow 3.0.3 민감 필드 노출 취약점 (CVE-2025-54831) 과 관련해, 현재 보안팀 및 커뮤니티 차원에서 후속 논의가 진행 중입니다.

배경

배경에 대해서 간단하게 정리해보자면:

  • Airflow 2 → 3 으로 전환 과정에서 민감 필드 정보 노출 모델이 변경됨
  • Airflow 2에서는 Connection/Variable의 민감한 값(password, token 등)을 CLI와 API 모두에서 볼 수 있었음.
  • Airflow 3에서는 API에서 민감정보를 마스킹(masking) 하도록 변경되었지만, 3.0.3에서 일시적으로 버그로 인해 노출되었음 → 이후 3.0.4에서 복구CVE 발표.

현재(3.0.4 ~) 모델에서는:

  • API/UI에서는 민감정보 읽기 불가 (write-only)
  • 로컬 CLI만 민감정보 읽기 가능

현재 제기되고 있는 문제점

현재 구조의 보안 모델 자체는 타당하지만, 실제 구현상 일관성 문제가 발생하고 있다.

  • connections list CLI는 기본적으로 모든 값(민감값 포함) 을 출력
  • 반면 variables list CLI는 키만 출력
  • UI에서 Variables export 시 마스킹(****) 값이 노출되어 혼란 발생
  • “import/export” 기능이 API/CLI/UI 간에 일관되지 않음

그래서 "어디까지 보여주는 것이 맞는가?"에 대한 명확한 기준이 필요해졌습니다.

https://lists.apache.org/thread/c79668yh42m5g7f7xck3oh6vft0z2kb6

제안된 변경사항들

  • API는 절대 민감정보를 노출하지 않는다.
    • 이는 서버단 정책이며, 클라이언트(airflow-ctl)는 별도 검증 불필요.
  • UI에서 import/export 기능 제거 또는 제한
    • Export는 제거 (CLI에서만 가능)
    • Import는 유지 가능 (민감정보 노출 없이 입력만 가능)
  • airflow-ctl 도 동일한 정책 적용
    • 어떤 경우에도 민감정보를 표시하지 않음.
  • expose_config 옵션 수정
    • "false" 또는 "non-sensitive-only"만 허용.
    • "true"는 거부됨.
  • CLI 기본 출력 수정
    • 기본적으로는 키 목록만 표시
    • --show-values 옵션을 사용하면 전체 값(민감정보 포함) 표시 가능
    • 이때 “민감정보가 표시될 수 있음” 경고 문구를 출력
    • connections list --conn-idconnections get으로 통합
  • CLI get 명령어는 기존대로 유지
    • 이건 주로 자동화나 스크립트용이므로 변경 없음.

현재까지의 합의점

합의된 부분

  • API/UI에서는 절대 민감정보 노출하지 않음.
  • export는 로컬 CLI 전용.
  • import는 유지 가능.
  • CLI 기본 출력은 키 목록만, --show-values로 세부 출력.
  • 보안 정책은 서버 단에서 강제.

추가 논의/보류 사항

  • CLI list 시 host/port 등 비민감정보를 부분적으로 보여줄지 여부.
  • Fernet 암호화 기반 export/import를 고려할지 여부.
  • 문서 내에서 CLI/API/CTL 간 보안정책을 어떻게 구조화해 설명할지.

마무리하며

이번 논의는 Airflow의 민감정보 관리 모델을 명확히 정립해가는 단계라고 볼 수 있습니다.
Airflow 3를 기점으로 “민감정보는 절대 API/UI에서 노출되지 않는다”는 원칙이 확립되고, CLI·CTL·UI 전반에서 이를 일관성 있게 반영하기 위한 구체적 기준이 마련되고 있는데요.

이 결정은 단기적으로는 일부 사용자 불편을 초래할 수 있다고 보지만,
장기적으로는 보안 일관성 강화, 예상 가능한 동작, 문서화된 기준이라는 긍정적인 결과로 이어질 것으로 보입니다.

앞으로 남은 과제는 CLI의 출력 범위(비민감정보 포함 여부)와 암호화 기반 export/import 같은 세부 정책을 명확히 다듬고, 이를 Security Model 문서에 반영하여 누구나 혼란 없이 이해할 수 있도록 될 것으로 보입니다.

저희 사용자 입장에서는 이러한 변화의 방향을 미리 이해하고, 이에 맞게 조정해 나가는 것이 좋겠습니다 :wink:

2개의 좋아요

오호 저 하나 궁금한게 생겼습니다

지금도 CLI에서 list 하면 host나 port 주소 다 나오지 않나요??

1개의 좋아요

지금은 나오는데 요거 보여주는게 맞는건지 아닌건지 논의하고 있어요