고객 질문: “IC360 포털에서 SP 1개로 Databricks를 호출하는데, 실제 사용자를 식별할 수 없습니다. SP 1개를 유지하면서 호출한 사용자를 특정할 수 있나요?”
문제 상황
외부 포털이 단일 Service Principal로 Databricks를 호출하면, 감사 로그에 SP만 기록됩니다.해결 방법 1: On-Behalf-Of (OBO) 인증 (권장)
사용자의 OAuth 토큰으로 Databricks API를 호출하면, 감사 로그에 실제 사용자가 기록됩니다.구현 (FastAPI 예제)
app.yaml 설정
OBO가 적합한 경우
| 요구사항 | OBO 적합 |
|---|---|
| 사용자별 UC 권한 적용 | 적합 — 사용자의 GRANT가 그대로 적용 |
| 감사 로그에 사용자 기록 | 적합 — 실제 사용자 ID 기록 |
| 외부 포털에서 Databricks 호출 | 포털이 SSO 연동 가능해야 함 |
| Databricks 계정 없는 외부 사용자 | 부적합 — 워크스페이스 계정 필요 |
해결 방법 2: 쿼리 태그 (OBO 불가 시)
외부 시스템이 Databricks SSO와 연동할 수 없는 경우, 쿼리 태그로 사용자 정보를 전달합니다.감사 로그에서 추적
두 방법 비교
| 항목 | OBO | 쿼리 태그 |
|---|---|---|
| 사용자 식별 정확도 | 높음 (토큰 기반) | 중간 (앱이 정직해야 함) |
| UC 권한 적용 | 사용자별 자동 적용 | SP 권한만 적용 |
| 감사 로그 | 사용자 ID 자동 기록 | 태그에서 수동 추출 |
| 구현 난이도 | SSO 연동 필요 | SQL SET 한 줄 |
| 사전 조건 | 사용자에게 Databricks 계정 필요 | 없음 |
관련 문서
- Databricks Apps 인증 — SP vs 사용자 인증 상세
- 감사 로그 — system.access.audit 활용
- 차세대 ID 보안 — Token Federation, OBO 배경