왜 인증이 중요한가
Databricks는 데이터 레이크하우스의 모든 자산 — 테이블, 모델, 노트북, Job — 에 대한 접근을 API 기반 으로 제어합니다. 웹 UI에서 클릭하든, CLI에서 명령을 실행하든, CI/CD 파이프라인이 자동으로 배포하든, 결국은 REST API 호출이 발생하고, 그 호출에는 반드시 “누가(Who) 어떤 권한(What)으로 요청하는가” 를 증명하는 인증 토큰이 필요합니다. 인증이 부실하면 다음과 같은 문제가 연쇄적으로 발생합니다.| 문제 | 결과 |
|---|---|
| 공유 계정/토큰 사용 | 감사 추적 불가, 사고 발생 시 책임 소재 불분명 |
| 장기 유효 토큰 유출 | 외부 공격자가 전체 워크스페이스에 무제한 접근 |
| 직원 퇴사 후 토큰 미회수 | 전직 직원의 권한이 그대로 남아 보안 사각지대 형성 |
| 인증과 인가 혼동 | 과도한 권한 부여로 최소 권한 원칙(Principle of Least Privilege) 위반 |
인증 방법 전체 비교
아래 테이블은 Databricks가 지원하는 네 가지 인증 방법의 핵심 차이를 한눈에 보여줍니다.| 인증 방법 | 대상 | 보안 수준 | 토큰 수명 | 자동 갱신 | Account 레벨 | 권장 용도 |
|---|---|---|---|---|---|---|
| OAuth U2M | 사용자 | 높음 | 1시간 | ✅ | ✅ | 대화형 도구 (CLI, SDK, IDE) |
| OAuth M2M | Service Principal | 높음 | 1시간 | ✅ (재발급) | ✅ | CI/CD, 자동화, 스케줄 Job |
| OAuth Token Federation | 외부 워크로드 | 매우 높음 | 1시간 | ✅ | ✅ | GitHub Actions, Cloud 워크로드 |
| PAT | 사용자/SP | 보통 | 설정 가능 (최대 무기한) | ❌ | ❌ | 레거시 통합, 빠른 테스트 |
어떤 인증을 선택해야 하는가?
의사결정은 “누가 인증하는가” 와 “어떤 환경에서 실행되는가” 두 가지 축으로 결정됩니다.시나리오별 가이드
아래 테이블은 실무에서 자주 만나는 시나리오와 적합한 인증 방법을 매핑합니다.| 시나리오 | 권장 인증 | 이유 |
|---|---|---|
| 개발자가 로컬에서 Databricks CLI 사용 | OAuth U2M | 브라우저 로그인 한 번으로 토큰 자동 관리 |
| VS Code + Databricks Extension | OAuth U2M | IDE가 브라우저 인증 흐름을 자동 처리 |
| GitHub Actions에서 Unity Catalog 배포 | Token Federation | GitHub OIDC 토큰으로 Secret 없이 인증 |
| Jenkins에서 Job 트리거 | OAuth M2M | Service Principal + client_credentials |
| Terraform으로 워크스페이스 프로비저닝 | OAuth M2M | IaC 파이프라인에 SP 인증 적용 |
| Airflow에서 Databricks Operator 사용 | OAuth M2M | Connection에 SP client_id/secret 설정 |
| 빠른 API 테스트 (일회성) | PAT | 발급이 빠르지만, 프로덕션 전환 시 OAuth로 교체 |
| 외부 SaaS에서 Databricks API 호출 | OAuth M2M | SaaS가 SP로 인증, 최소 권한 부여 |
On-Behalf-Of (위임 인증) 개념
Databricks 인증에서 가장 중요하면서도 자주 혼동되는 개념이 On-Behalf-Of (OBO) 입니다.핵심 아이디어
사용자가 Databricks CLI를 실행하면, CLI 자체가 Databricks에 접근하는 것이 아닙니다. CLI는 사용자를 대신하여(on behalf of) API를 호출합니다. 즉:- 인증 주체: 사용자 본인 (브라우저로 로그인)
- 실행 주체: CLI/SDK/IDE (도구)
- 권한: 사용자 본인의 권한 그대로 적용
| 관점 | 설명 |
|---|---|
| 감사 로그 | API 호출이 “CLI”가 아닌 사용자 이름 으로 기록됨 |
| 권한 범위 | 도구가 사용자보다 더 많은 권한을 가질 수 없음 |
| 토큰 수명 | 사용자 세션에 연동, 로그아웃하면 토큰 무효화 |
OBO vs Service Principal
| 구분 | On-Behalf-Of (U2M) | Service Principal (M2M) |
|---|---|---|
| 인증 주체 | 사람 | 시스템 ID |
| 권한 소유 | 사용자 본인 | SP에 별도 부여 |
| 감사 로그 | 사용자 이름 | SP 이름 |
| 사용자 퇴사 시 | 자동 차단 | 영향 없음 (의도된 동작) |
| 대표 사용 | CLI, IDE, 노트북 | CI/CD, 스케줄 Job, IaC |
다음 단계
각 인증 방법의 동작 원리, 설정 방법, 코드 예시를 상세히 다루는 서브페이지로 이동하세요.| 가이드 | 내용 |
|---|---|
| OAuth U2M (사용자 인증) | PKCE 흐름, 브라우저 인증, 토큰 갱신, CLI/SDK 설정 |
| OAuth M2M (서비스 인증) | Service Principal, client_credentials, 코드 예시 |
| PAT & Token Federation | PAT 생성/관리, Token Federation 개념, GitHub Actions 연동 |
참고 권장 읽기 순서: 개발자라면 OAuth U2M → OAuth M2M → PAT & Token Federation 순서로 읽으세요. 플랫폼 관리자라면 이 README의 비교 테이블을 기준으로 팀에 적합한 인증 정책을 먼저 결정한 후, 해당 방법의 상세 가이드를 참고하세요.