다음을 통해 공유


토큰 인증을 사용하여 API Databricks 앱에 연결

OAuth 2.0 전달자 토큰 인증을 사용하여 HTTP API(예: FastAPI 또는 Gradio 앱)를 노출하는 Databricks 앱을 호출할 수 있습니다. 이 방법은 로컬 개발 환경, 외부 애플리케이션 및 기타 Azure Databricks 앱에서 작동합니다.

비고

이 메서드는 API 또는 엔드포인트를 노출하는 앱에만 적용됩니다(경로를 사용하여 /api/ 액세스할 수 있음). 사용자 인터페이스 또는 백그라운드 처리만 제공하는 앱의 경우 토큰 인증을 사용하여 연결할 수 없습니다.

요구 사항

토큰 인증을 사용하여 Databricks 앱에 연결하려면 다음 요구 사항을 충족해야 합니다.

  • 앱은 경로를 사용하여 /api/ 액세스할 수 있는 하나 이상의 API 엔드포인트를 노출해야 합니다.
  • 앱에 대한 권한이 있어야 합니다 CAN USE . Databricks 앱에 대한 권한 구성을 참조하세요.
  • 지원되는 인증 방법 중 하나를 사용하여 Azure Databricks 액세스 토큰을 생성할 수 있어야 합니다.

인증 방법

비고

Azure Entra ID 토큰을 사용하여 Databricks 앱을 직접 호출할 수 없습니다. 토큰 페더레이션에는 Azure Databricks가 서버 쪽을 수행하지 않는 클라이언트 쪽 토큰 교환 단계가 필요합니다. 인증에 Azure Entra ID 토큰을 사용하려면 먼저 OAuth 토큰으로 교환해야 합니다. ID 공급자 토큰을 사용하여 인증을 참조하세요.

연결 시나리오와 일치하는 인증 방법을 선택합니다.

로컬 개발

로컬 개발 환경에서 연결하려면 사용자 자격 증명과 함께 Azure Databricks CLI 또는 SDK를 사용합니다.

  1. CLI를 사용하여 로그인합니다.

    databricks auth login --host https://<workspace-url> --profile my-env
    

    Azure Databricks는 OAuth U2M(사용자-컴퓨터) 인증을 사용하는 것이 좋습니다.

  2. 액세스 토큰 생성:

    CLI

    databricks auth token --profile my-env
    

    파이썬

    from databricks.sdk.core import Config
    config = Config(profile="my-env")
    token = config.oauth_token().access_token
    

외부 애플리케이션

외부 애플리케이션에서 프로그래밍 방식으로 액세스하려면 M2M(컴퓨터-컴퓨터) 자격 증명으로 서비스 주체 인증을 사용합니다. OAuth를 사용하여 Azure Databricks에 대한 서비스 주체 액세스 권한 부여를 참조하세요.

  1. 서비스 주체를 만들고 클라이언트 ID 및 비밀을 가져옵니다. 서비스 주체를 참조하세요.

  2. Azure Databricks SDK를 사용하여 액세스 토큰을 생성합니다.

    from databricks.sdk import WorkspaceClient
    import requests
    
    # Option 1: Explicit credentials
    wc = WorkspaceClient(
        host="https://<workspace-url>",
        client_id="<service-principal-client-id>",
        client_secret="<service-principal-client-secret>"
    )
    
    # Option 2: Environment variables
    # Set DATABRICKS_HOST, DATABRICKS_CLIENT_ID, DATABRICKS_CLIENT_SECRET
    wc = WorkspaceClient()
    
    # Generate Bearer token
    headers = wc.config.authenticate()
    

다른 Databricks 애플리케이션에서

한 Databricks 앱에서 다른 앱으로 연결하는 경우 앱은 할당된 서비스 주체를 사용하여 인증을 자동으로 처리합니다.

from databricks.sdk import WorkspaceClient
import requests

# No explicit credentials needed, uses app's service principal
wc = WorkspaceClient()
headers = wc.config.authenticate()

사용자 권한 부여에 대한 OAuth 범위 지정

이전 섹션과 같이 Azure Databricks CLI 또는 SDK를 통합 인증과 함께 사용하는 경우 도구는 자동으로 기본 all-apis 범위를 요청합니다. 그러나 앱에서 사용자 권한 부여를 사용하는 경우 사용자 지정 OAuth 흐름을 사용하여 추가 범위가 있는 액세스 토큰을 수동으로 요청해야 합니다.

액세스 토큰에사용자 권한 부여>에 구성된 범위가 포함되어 있는지 확인합니다. 토큰에 필요한 범위가 없으면 401 또는 403 오류로 요청이 실패할 수 있습니다.

예를 들어 다음 요청은 sql, file.files, 및 dashboards.genie 범위로 액세스 토큰을 명시적으로 요청합니다.

curl --request POST \
https://<databricks-instance>/oidc/v1/token \
--data "client_id=databricks-cli" \
--data "grant_type=authorization_code" \
--data "redirect_uri=<redirect-url>" \
--data "code_verifier=<code-verifier>" \
--data "code=<authorization-code>" \
--data "scope=sql+file.files+dashboards.genie"

전체 지침은 OAuth U2M 액세스 토큰 수동 생성을 참조하세요.

앱에 요청 보내기

앱의 API 엔드포인트를 호출할 때, 권한 부여 헤더에 전달자 토큰을 포함시키고, <your-endpoint>을 앱의 실제 API 경로로 바꾸세요.

CURL

curl "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>" \
     -H "Authorization: Bearer <YOUR_TOKEN>"

요청이 있는 Python

import requests

response = requests.get(
    "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
    headers={"Authorization": f"Bearer {token}"}
)

SDK를 사용하여 Python

from databricks.sdk import WorkspaceClient
import requests

wc = WorkspaceClient()
headers = wc.config.authenticate()

response = requests.get(
    "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
    headers=headers
)

보안 고려 사항

로컬 환경에서 앱에 연결하는 경우 다음 보안 모범 사례를 따릅니다.

  • 소스 코드에서 액세스 토큰을 하드 코딩하지 않습니다. 환경 변수 또는 보안 자격 증명 저장소를 사용합니다.
  • 토큰이 손상된 경우 보안 위험을 최소화하기 위해 정기적으로 토큰을 새로 고칩니다.
  • 애플리케이션 로그에서 액세스 토큰 또는 중요한 데이터를 로깅하지 않습니다.

Troubleshooting

로컬 컴퓨터에서 앱에 연결할 때 문제가 발생하는 경우 이러한 솔루션을 사용해 보세요.

인증 실패(401 오류)

다음을 확인합니다.

  • 토큰이 유효합니다(실행 databricks auth token --profile my-env).
  • 프로필이 올바르게 구성됨 databricks auth login
  • 토큰이 만료되지 않았습니다.
  • 토큰에는 필요한 OAuth 범위가 포함됩니다. CLI 및 SDK 도구는 사용자 권한 부여에 충분하지 않을 수 있는 기본 all-apis범위만 제공합니다.

사용 권한이 거부됨(403 오류)

다음을 확인합니다.

  • CAN USE 앱에 대한 권한이 있습니다.
  • 토큰에는 필요한 OAuth 범위가 포함됩니다. 범위가 부족하면 유효한 사용 권한이 있더라도 403 오류가 발생할 수 있습니다.

앱을 찾을 수 없음(404 오류)

다음을 확인합니다.

  • ID 및 작업 영역 URL이 올바릅니다.
  • 앱이 배포되고 실행되고 있습니다.
  • 엔드포인트 경로가 앱에 있음

네트워크 연결 문제

다음을 확인합니다.

  • 네트워크에서 아웃바운드 HTTPS 연결을 허용합니다.
  • *.databricksapps.com 네트워크에서 도메인에 액세스할 수 있습니다.

또한 조직에서 구성이 필요한 프록시를 사용하는지 확인합니다.

추가 리소스

자세한 내용은 다음 리소스를 참조하세요.