Part 1: Personal Access Token (PAT)
PAT란
PAT(Personal Access Token)는 워크스페이스 레벨에서 발급되는 문자열 기반 토큰 입니다. HTTP 요청의Authorization: Bearer <token> 헤더에 포함하여 인증합니다. Databricks 초기부터 지원된 가장 단순한 인증 방식입니다.
언제 PAT를 사용하는가
주의 Databricks는 PAT 대신 OAuth를 강력히 권장합니다. PAT는 다음과 같은 제한적 상황에서만 사용하세요.
| 상황 | 사유 |
|---|---|
| 빠른 API 테스트 | curl로 즉시 테스트, 프로덕션 전환 시 OAuth로 교체 |
| 레거시 시스템 연동 | OAuth를 지원하지 않는 구형 도구/라이브러리 |
| 학습/교육 목적 | 인증 개념을 이해하기 위한 가장 단순한 예시 |
PAT 생성
UI에서 생성
- Workspace > Settings > Developer > Access tokens 이동
- Generate new token 클릭
- Comment(설명)와 Lifetime(수명) 입력
- Generate 클릭 → 토큰이 한 번만 표시됨
CLI로 생성
Service Principal용 OBO Token
Service Principal은 직접 UI에 로그인할 수 없으므로, 관리자가 On-Behalf-Of(OBO) 방식으로 SP의 PAT를 대리 발급합니다.참고 OBO Token vs OAuth M2M: SP용 PAT(OBO Token)보다는 OAuth M2M(client_credentials)을 권장합니다. OAuth M2M은 토큰 자동 갱신을 지원하고, Secret 로테이션이 더 유연합니다.
Scoped PAT (권한 범위 제한)
PAT는 기본적으로 사용자의 전체 권한 으로 동작합니다. Scoped PAT를 사용하면 특정 API 범위로만 제한할 수 있습니다. 지원되는 scope는 다음과 같습니다.| Scope | 접근 가능 API |
|---|---|
sql | SQL Warehouse, Query 실행 |
unity-catalog | Unity Catalog 메타데이터 관리 |
scim | 사용자/그룹 관리 (SCIM API) |
clusters | 클러스터 생성/관리 |
workspace | 노트북, 디렉토리 관리 |
PAT 보안 관리
자동 폐기 정책
Databricks는 90일간 미사용된 PAT를 자동 폐기 합니다. 이는 “잊혀진 토큰”이 무한히 유효한 상태로 남는 것을 방지합니다.워크스페이스 관리자 정책
관리자는 다음을 설정할 수 있습니다.| 정책 | 설명 |
|---|---|
| PAT 비활성화 | 워크스페이스 전체에서 PAT 사용 금지 |
| 최대 수명 제한 | 예: 최대 90일까지만 유효한 토큰 발급 허용 |
| 특정 사용자만 허용 | PAT 발급 권한을 관리자에게만 제한 |
토큰 모니터링
PAT vs OAuth: 상세 비교
아래 테이블은 PAT와 OAuth의 핵심 차이를 비교합니다.| 항목 | PAT | OAuth (U2M/M2M) |
|---|---|---|
| 토큰 수명 | 사용자 지정 (무기한 가능) | 1시간 (고정) |
| 자동 갱신 | ❌ 수동 재발급 | ✅ 자동 |
| Account 레벨 | ❌ 워크스페이스만 | ✅ Account + Workspace |
| 토큰 저장 | 평문 문자열 (파일, 환경변수) | OS 보안 저장소 (U2M) 또는 메모리 (M2M) |
| 유출 시 피해 | 토큰 수명 동안 무제한 접근 | 최대 1시간 (자동 만료) |
| 감사 추적 | 토큰 ID로 추적 | OAuth 세션으로 추적 |
| 멀티 워크스페이스 | 워크스페이스별 별도 토큰 | 프로파일로 통합 관리 |
| PKCE 보호 | ❌ | ✅ (U2M) |
PAT 사용 예시 (참고용)
Part 2: OAuth Token Federation
개념
OAuth Token Federation은 외부 IdP(Identity Provider)가 발급한 OIDC 토큰으로 Databricks에 인증 하는 방식입니다. 핵심 아이디어는 단순합니다:“이미 신뢰할 수 있는 외부 시스템이 발급한 신원 증명을 Databricks가 그대로 수용한다.”이를 통해 Databricks Secret(client_secret)을 전혀 관리하지 않고도 인증할 수 있습니다.
왜 혁신적인가
OAuth M2M의 가장 큰 운영 부담은 Secret 관리 입니다.| OAuth M2M의 Secret 관리 과제 | Token Federation의 해결 |
|---|---|
| Secret 생성/저장/로테이션 | Secret 자체가 없음 |
| Secret 유출 위험 (CI/CD 변수, 설정 파일) | 유출 가능한 Secret이 존재하지 않음 |
| Secret 만료 시 서비스 중단 | 외부 IdP가 매번 새 토큰 발급 |
| 멀티 환경(dev/staging/prod) Secret 관리 | 환경별 외부 토큰 자동 발급 |
참고 비유: 호텔에서 체크인할 때 여권(외부 IdP 토큰)을 보여주면, 호텔(Databricks)이 객실 키(access_token)를 발급하는 것과 같습니다. 여권은 이미 신뢰할 수 있는 기관(정부 = IdP)이 발급했으므로, 호텔이 별도의 회원 카드(client_secret)를 요구하지 않습니다.
동작 원리
핵심 구성 요소
| 구성 요소 | 설명 |
|---|---|
| Federation Policy | 어떤 외부 IdP를 신뢰할지 정의 (issuer URL, audience) |
| Service Principal Mapping | 외부 토큰의 subject를 어떤 SP에 매핑할지 정의 |
| OIDC Token | 외부 IdP가 발급하는 JWT (JSON Web Token) |
| Token Exchange | 외부 OIDC 토큰을 Databricks access_token으로 교환하는 과정 |
지원 시나리오
Token Federation은 OIDC를 지원하는 모든 외부 IdP 와 연동할 수 있습니다. 아래 테이블은 주요 사용 사례와 외부 IdP를 보여줍니다.| 시나리오 | 외부 IdP | OIDC Issuer 예시 |
|---|---|---|
| GitHub Actions | GitHub OIDC Provider | https://token.actions.githubusercontent.com |
| Azure DevOps | Azure AD (Entra ID) | https://login.microsoftonline.com/{tenant}/v2.0 |
| AWS 워크로드 | AWS STS (OIDC) | https://sts.amazonaws.com |
| GCP 워크로드 | Google OIDC | https://accounts.google.com |
| Kubernetes | K8s Service Account | 클러스터별 OIDC issuer URL |
| GitLab CI | GitLab OIDC | https://gitlab.com |
GitHub Actions 연동 예시
GitHub Actions는 Token Federation의 가장 대표적인 사용 사례입니다.1단계: Service Principal 생성
Account Console에서 CI/CD용 SP를 생성하고, 필요한 권한을 부여합니다.2단계: Federation Policy 생성
Databricks Account Console 또는 API에서 Federation Policy를 구성합니다.| 필드 | 설명 |
|---|---|
issuer | GitHub OIDC Provider의 URL |
audiences | 토큰이 사용될 대상 (Databricks) |
subject_claim | JWT에서 subject를 추출할 claim 이름 |
subject | 허용할 subject 값 (특정 repo/branch로 제한) |
3단계: GitHub Actions 워크플로우
참고 Secret이 전혀 없습니다: 위 워크플로우에서DATABRICKS_HOST는 URL(공개 정보)일 뿐이고, OIDC 토큰은 GitHub가 매 실행마다 자동 발급합니다.client_secret이나 PAT를 GitHub Secrets에 저장할 필요가 없습니다.
Token Federation vs OAuth M2M 비교
두 방식 모두 Service Principal로 인증하지만, Secret 관리 방식에서 근본적인 차이가 있습니다.| 항목 | OAuth M2M | Token Federation |
|---|---|---|
| 인증 자격 | client_id + client_secret | 외부 OIDC 토큰 |
| Secret 관리 | 필요 (생성, 저장, 로테이션) | 불필요 |
| 유출 위험 | client_secret 유출 가능 | 유출 가능한 자격 증명 없음 |
| 설정 복잡도 | 낮음 | 중간 (Federation Policy 설정) |
| 외부 IdP 의존 | 없음 | 있음 (IdP 장애 시 인증 불가) |
| 적용 범위 | 모든 자동화 환경 | OIDC 지원 환경만 |
Token Federation의 한계
- 초기 설정 복잡도: Federation Policy, SP Mapping 등 초기 구성이 OAuth M2M보다 복잡합니다. 하지만 한 번 설정하면 운영 부담이 거의 없습니다.
- 외부 IdP 의존: GitHub, Azure AD 등 외부 서비스 장애 시 인증이 불가능합니다.
- OIDC 필수: 외부 시스템이 OIDC 토큰을 발급할 수 있어야 합니다. 모든 시스템이 이를 지원하지는 않습니다.
- 디버깅 어려움: 인증 실패 시 외부 IdP 토큰의 claim 값, Federation Policy 매핑 등 확인할 요소가 많습니다.
인증 방법 최종 정리
아래 테이블은 네 가지 인증 방법의 선택 기준을 최종 정리합니다.| 질문 | 답변 → 인증 방법 |
|---|---|
| 개발자가 로컬에서 작업하는가? | OAuth U2M |
| 자동화이고, 외부 IdP(GitHub 등)가 OIDC를 지원하는가? | Token Federation |
| 자동화이고, 외부 IdP가 없거나 OIDC 미지원인가? | OAuth M2M |
| 5분 안에 빠르게 API 테스트해야 하는가? | PAT (임시용) |
주의 프로덕션 환경에서 PAT는 사용하지 마세요. PAT는 개발/테스트 단계의 임시 수단입니다. 프로덕션으로 전환할 때는 반드시 OAuth 기반 인증으로 교체하세요. 조직의 보안 감사(Audit)에서 PAT 사용은 거의 항상 지적 사항입니다.