네트워크 아키텍처
Databricks Apps는 컨트롤 플레인 내에서 실행됩니다. 이 아키텍처가 네트워킹에 미치는 영향을 이해하는 것이 중요합니다.| 구성 요소 | 위치 | 설명 |
|---|---|---|
| 앱 컨테이너 | 컨트롤 플레인 | 앱 코드가 실행되는 격리된 컨테이너 |
| 리버스 프록시 | 컨트롤 플레인 | HTTPS 종료, URL 라우팅, 인증 처리 |
| SQL Warehouse | 데이터 플레인 (서버리스) | 앱이 호출하는 쿼리 엔진 |
| Model Serving | 컨트롤 플레인 | AI/ML 모델 추론 엔드포인트 |
| Unity Catalog | 컨트롤 플레인 | 메타데이터 및 거버넌스 |
트래픽 흐름
참고 핵심 포인트: 앱 컨테이너와 Databricks 서비스(SQL Warehouse, Model Serving) 간의 통신은 Databricks 내부 네트워크 를 통합니다. 퍼블릭 인터넷을 거치지 않으므로 별도의 네트워크 설정이 필요 없습니다.
IP 접근 제어 (IP Access Lists)
Databricks Apps에 접근할 수 있는 IP 주소를 제한하여 보안을 강화할 수 있습니다.워크스페이스 IP Access List 연동
Databricks Apps는 워크스페이스의 IP Access List 설정을 상속 합니다. 워크스페이스에 IP Access List가 구성되어 있으면, 앱에 대한 접근도 동일한 IP 제한이 적용됩니다.| 설정 위치 | 적용 범위 | 설명 |
|---|---|---|
| 워크스페이스 IP Access List | 워크스페이스 전체 (앱 포함) | Admin Console > Settings > IP Access Lists |
| 앱별 개별 IP 제한 | 현재 미지원 | 워크스페이스 레벨에서만 제어 가능 |
IP Access List 설정 방법
1. Admin Console에서 설정:- 워크스페이스 Admin Console 접속
- Settings > Security > IP access lists 이동
- 허용할 IP 범위 추가 (CIDR 형식)
주의 IP Access List의 영향: IP Access List를 활성화하면 워크스페이스의 모든 접근 (UI, API, 앱)이 제한됩니다. 앱 사용자가 허용된 IP에서 접속해야 하므로, VPN 없이 외부에서 접속하는 사용자가 있다면 해당 IP를 반드시 허용 목록에 추가하세요.
앱별 IP 제한이 필요한 경우
현재 Databricks Apps는 앱별 개별 IP 제한을 지원하지 않습니다. 모든 앱에 동일한 워크스페이스 IP Access List가 적용됩니다. 앱별로 다른 IP 정책이 필요하다면 다음 대안을 고려하세요:| 대안 | 설명 | 복잡도 |
|---|---|---|
| 별도 워크스페이스 | 다른 IP 정책이 필요한 앱을 별도 워크스페이스에 배포 | 높음 |
| 앱 코드 내 IP 검증 | Flask/FastAPI에서 request.headers.get('X-Forwarded-For')로 IP 확인 | 중간 |
| 사용자 인증 강화 | IP 대신 사용자 권한으로 접근 제어 | 낮음 |
SSO 없이 앱 접근하기
Databricks Apps는 기본적으로 워크스페이스 SSO 인증이 필수 입니다. 하지만 특정 시나리오에서는 SSO 없이 앱에 접근해야 할 수 있습니다.기본 동작: SSO 필수
| 접근 방식 | 인증 요구사항 | 지원 여부 |
|---|---|---|
| 브라우저 접속 | 워크스페이스 SSO 로그인 필수 | 기본 동작 |
| API 호출 (PAT) | Personal Access Token + CAN USE 권한 | 지원 |
| API 호출 (OAuth) | OAuth M2M 토큰 | 지원 |
| 퍼블릭 익명 접근 | 인증 없음 | 미지원 |
주의 핵심 제약: Databricks Apps의 URL에 접속하면 반드시 Databricks 워크스페이스 인증 을 거쳐야 합니다. Databricks 계정이 없는 외부 사용자(고객, 파트너 등)는 앱에 접근할 수 없습니다. 이는 설계 의도이며, 보안과 거버넌스를 위한 것입니다.향후 로드맵: 외부 IdP(Identity Provider) 기반 인증이 H2 FY27 (DAIS 이후) 에 예정되어 있습니다. 이 기능이 출시되면 Databricks 워크스페이스 계정 없이도 외부 IdP로 인증한 사용자가 앱에 접근할 수 있게 됩니다.
대안 0: Identity Federation (현재 가능한 최선)
외부 사용자가 앱에 접근해야 하는 경우, Identity Federation + SCIM/JIT provisioning 을 사용하면 외부 사용자를 IdP(Okta, Entra ID 등)를 통해 온보딩할 수 있습니다. 풀 워크스페이스 접근 없이 앱만 사용할 수 있도록 설정합니다.대안 1: API 엔드포인트로 접근 (M2M)
앱이 REST API를 제공하는 경우(FastAPI, Flask), 다른 시스템에서 서비스 프린시펄 또는 PAT 으로 앱의 API를 직접 호출할 수 있습니다.참고 이 방식은 사람이 아닌 시스템 간 통신 에 적합합니다. 사용자가 브라우저로 앱 UI에 접근하려면 여전히 SSO가 필요합니다.
대안 2: 프록시 서버 구성
Databricks Apps 앞에 별도의 프록시 서버(Nginx, Cloudflare 등)를 두고, 프록시가 Databricks에 인증한 뒤 결과를 외부에 노출하는 패턴입니다.대안 3: Databricks Apps를 API 백엔드로, 외부 프론트엔드 분리
Private Link 지원
Databricks Apps는 워크스페이스의 Private Link 설정을 따릅니다.AWS PrivateLink
| 시나리오 | 앱 접근 가능 여부 | 설명 |
|---|---|---|
| 퍼블릭 네트워크 허용 | 인터넷에서 접근 가능 | 기본 설정 |
| 프론트엔드 PrivateLink만 | VPC 내부에서만 접근 | 프론트엔드 PrivateLink 엔드포인트를 통해 접근 |
| 백엔드 PrivateLink | 앱→리소스 통신이 프라이빗 | 앱과 데이터 플레인 간 통신에 영향 |
| PrivateLink Only 모드 | VPC 내부에서만 접근 | 퍼블릭 접근 완전 차단 |
Azure Private Link
Azure에서도 동일한 원칙이 적용됩니다. 워크스페이스가 Private Link로 구성되어 있으면 앱 접근도 Private Link를 통해서만 가능합니다.GCP Private Service Connect
GCP에서는 Private Service Connect를 통해 앱에 접근합니다. 단, GCP에서는 CNAME 체이싱이 지원되지 않으므로, 앱별로 개별 DNS A 레코드를 생성하여 프론트엔드 Private Link IP를 가리켜야 합니다.DNS 포워딩 필수 설정 (중요)
주의
Private Link 환경에서 가장 흔한 배포 실패 원인: databricksapps.com 도메인에 대한 조건부 DNS 포워딩 을 구성하지 않으면 앱 접속 시 “Public access is not allowed for workspace” 오류가 발생합니다.
Private Link 환경에서는 앱 도메인(*.databricksapps.com)이 워크스페이스 도메인과 별도 이므로, DNS 포워딩을 추가로 구성해야 합니다:
databricksapps.com 도메인이 퍼블릭 IP로 해석되어 Private Link Only 워크스페이스에서 접속이 차단됩니다.
참고 Private Link 환경에서의 앱 접근: Private Link Only 모드의 워크스페이스에서는 앱 URL도 프라이빗 네트워크에서만 접근 가능합니다. 사용자가 VPN을 통해 접속하거나, VPC/VNet 내부에서 접속해야 합니다.
Egress (아웃바운드) 제어
앱 컨테이너에서 외부 인터넷으로의 아웃바운드 트래픽 은 기본적으로 허용됩니다. 이는 앱에서 외부 API(OpenAI, Slack, 이메일 서비스 등)를 호출할 수 있음을 의미합니다.| 트래픽 방향 | 기본 설정 | 제어 방법 |
|---|---|---|
| 인바운드 (사용자→앱) | SSO 인증 필수 | IP Access List, Private Link |
| 아웃바운드 (앱→외부) | 허용 | NCC, Network Policy |
| 내부 (앱→Databricks 서비스) | 자동 연결 | 서비스 프린시펄 권한으로 제어 |
Network Connectivity Configuration (NCC)
NCC를 사용하면 앱에 안정적인 Egress IP 를 할당할 수 있습니다. 이 IP를 외부 시스템의 방화벽 허용 목록에 추가하면, 특정 IP에서만 접근을 허용하는 외부 서비스와 연동할 수 있습니다. 또한 NCC에 PrivateLink 연결 을 구성하여 앱에서 S3 버킷, NLB 등 프라이빗 대상에 접근할 수 있습니다.Network Policy (Enterprise tier)
Enterprise 등급에서는 Network Policy 로 앱의 아웃바운드 트래픽을 승인된 도메인만 허용하도록 제한할 수 있습니다. 이는 데이터 유출 방지(DLP)에 유용합니다.
참고
Network Policy를 적용하기 전에 dry-run 모드 로 먼저 검증하는 것을 권장합니다. system.access.outbound_network 시스템 테이블을 조회하여 실제로 어떤 외부 도메인에 접속하는지 확인하세요.
앱 빌드 시 필수 Egress 도메인
Network Policy를 적용할 때 다음 도메인은 반드시 허용해야 합니다 (앱 빌드 및 의존성 설치에 필요):| 도메인 | 용도 |
|---|---|
*.databricksapps.com | 앱 런타임 |
pypi.org | Python 패키지 설치 |
files.pythonhosted.org | Python 패키지 다운로드 |
registry.npmjs.org | Node.js 패키지 설치 |
*.amazonaws.com | AWS 인프라 접근 |
주의 보안 고려사항: 앱에서 외부 API를 호출할 때, API 키는 반드시 Secret 리소스 로 관리하세요. 앱 코드에 하드코딩하거나app.yaml의value에 직접 넣지 마세요.
커스텀 도메인
현재 Databricks Apps는 커스텀 도메인을 직접 지원하지 않습니다. 앱 URL은 항상 Databricks가 자동으로 생성하는 형식을 따릅니다:커스텀 도메인이 필요한 경우의 대안
| 대안 | 설명 | 복잡도 |
|---|---|---|
| CNAME + 리버스 프록시 | Cloudflare나 Nginx에서 커스텀 도메인 → 앱 URL로 프록시 | 중간 |
| URL 리다이렉트 | 커스텀 도메인에서 앱 URL로 302 리다이렉트 | 낮음 |
| 별도 플랫폼 | 커스텀 도메인이 필수라면 Cloud Run/Vercel에 배포 | 높음 |
참고 커스텀 도메인 지원은 많은 사용자가 요청하고 있는 기능이며, 향후 로드맵에서 검토될 가능성이 있습니다.
보안 체크리스트
Databricks Apps를 프로덕션에 배포하기 전에 확인해야 할 네트워킹 및 보안 항목을 정리합니다.| # | 항목 | 확인 방법 |
|---|---|---|
| 1 | IP Access List 설정 | 필요한 경우 워크스페이스에 IP 제한이 적용되어 있는지 확인 |
| 2 | Private Link 구성 | 민감 데이터를 다루는 경우 Private Link 환경 사용 |
| 3 | SP 최소 권한 | 앱의 서비스 프린시펄에 필요한 최소 권한만 부여 |
| 4 | Secret 관리 | 모든 민감 정보가 Secret 리소스로 관리되는지 확인 |
| 5 | 사용자 인증 | 민감 데이터는 사용자 인증(User Authorization)으로 접근 제어 |
| 6 | 감사 로그 | 앱 접근 및 데이터 조회에 대한 로깅 구현 |
| 7 | HTTPS | 자동 적용됨 (별도 설정 불필요) |
| 8 | 앱 간 격리 | 자동 적용됨 (각 앱은 독립된 네임스페이스에서 실행) |