다음을 통해 공유


서비스 주체에 대한 Microsoft Entra ID 토큰 가져오기

이 페이지에서는 Azure에서 서비스 주체를 만들고 Microsoft Entra ID 액세스 토큰을 생성하여 Azure Databricks REST API로 인증하는 방법을 보여 줍니다. 서비스 주체는 OAuth 2.0 클라이언트 자격 증명 흐름을 사용하며 일반 사용자와 다른 액세스 제어를 가질 수 있습니다.

토큰을 생성하려면 다음 단계를 수행합니다.

  1. 서비스 주체가 없는 경우 Azure에서 서비스 주체를 만듭니다.
  2. 서비스 주체 자격 증명을 사용하여 액세스 토큰을 생성합니다.
  3. Databricks API와 함께 토큰을 사용합니다.

중요합니다

Databricks는 대부분의 사용 사례에 Azure Databricks 관리 서비스 주체를 사용하는 것이 좋습니다. 추가 Microsoft Entra ID 권한이 필요하기 때문에 Azure 리소스에 액세스해야 하는 경우에만 Microsoft Entra ID 관리 서비스 주체를 사용합니다.

Databricks는 1시간 이내에 만료되고 수동으로 교체해야 하므로 Microsoft Entra ID 토큰을 수동으로 만드는 것을 권장하지 않습니다. 토큰 관리를 자동으로 처리하는 통합 인증과 함께 도구 또는 SDK를 사용합니다.

서비스 주체 만들기

서비스 주체가 없는 경우 Azure Portal 또는 Azure CLI를 사용하여 만듭니다. 서비스 주체 자격 증명을 사용하여 액세스 토큰을 생성합니다.

Azure 포털

  1. Azure Portal에 로그인합니다.
  2. 필요한 경우 디렉터리 + 구독을 사용하여 올바른 테넌트로 전환합니다.
  3. Microsoft Entra ID를 검색하여 선택합니다.
  4. +앱 등록>를 클릭합니다.
  5. 이름을 입력하고 이 조직 디렉터리에서만 계정을 선택합니다(단일 테넌트).
  6. 등록을 클릭합니다.
  7. 개요 페이지에서 다음 값을 복사합니다.
    • 애플리케이션(클라이언트) ID
    • 디렉터리(테넌트) ID
  8. 인증서 및 비밀>>로 이동합니다.
  9. 설명을 추가하고 만료 기간을 설정한 다음 추가를 클릭합니다.
  10. 클라이언트 비밀 값을 복사하고 안전하게 저장 합니다. 애플리케이션 암호입니다.

Azure 커맨드 라인 인터페이스 (CLI)

전체 지침 은 Azure CLI를 사용하여 Azure 서비스 주체 만들기 를 참조하세요.

액세스 토큰 생성

REST API 또는 Azure CLI를 사용하여 토큰을 생성할 수 있습니다. 두 방법 중 하나를 사용하기 전에 다음 서비스 주체 정보를 수집합니다.

매개 변수 설명
Tenant ID Directory (tenant) ID Microsoft Entra ID에 등록된 관련 응용 프로그램의 경우입니다.
Client ID Application (client) ID Microsoft Entra ID에 등록된 관련 응용 프로그램의 경우입니다.
Client secret Value Microsoft Entra ID에 등록된 관련 애플리케이션에 대한 클라이언트 암호입니다.

REST API

이 메서드를 사용하여 Microsoft ID 플랫폼 REST API를 직접 호출하여 액세스 토큰을 생성합니다.

curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token \
-d 'client_id=<client-id>' \
-d 'grant_type=client_credentials' \
-d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
-d 'client_secret=<client-secret>'

매개 변수의 scope 값을 변경하지 마세요. 기본 범위(2ff814a6-3304-4ab8-85cb-cd0e6f879c1d, /.default로 인코딩된 URL)와 함께 Azure Databricks(%2F.default)의 프로그래매틱 ID를 나타냅니다.

액세스 토큰은 access_token 응답 필드에 있습니다.

Azure CLI

이 메서드를 사용하여 인증 흐름 및 토큰 관리를 자동으로 처리하는 Azure CLI를 통해 액세스 토큰을 생성합니다.

비고

자체 포함 REST API 메서드와 달리 Azure CLI는 구독 컨텍스트를 유지 관리합니다. CLI에서 토큰을 생성할 때 사용할 구독을 알 수 있도록 올바른 구독 ID를 설정해야 합니다.

  1. Azure 구독 ID 가져오기:

    • Azure Databricks 작업 영역에서 다음을 수행합니다. 사용자 이름 >>를 클릭하고 구독 ID를 찾습니다.

    • Azure CLI를 사용하여 다음을 수행합니다. 다음 명령을 실행합니다(작업 영역 URL로 바꾸기).

      az databricks workspace list --query "[?workspaceUrl==\`adb-0000000000000000.0.azuredatabricks.net\`].{id:id}" -o tsv
      
      # /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Databricks/workspaces/my-ws
      

      다음은 00000000-0000-0000-0000-000000000000/subscriptions/ 구독 ID입니다.

      테넌트 오류가 발생하면 올바른 테넌트에 로그인합니다.

      az login -t <tenant-id>
      

      Azure Portal에서 구독 및 테넌트 ID 가져오기를 참조하세요.

  2. 서비스 주체 계정을 사용하여 로그인합니다.

    az login \
    --service-principal \
    -t <Tenant-ID> \
    -u <Client-ID> \
    -p <Client-secret>
    
  3. 서비스 주체에 대한 올바른 구독을 확인하고 설정합니다.

    az account set -s <subscription-id>
    
  4. 액세스 토큰 생성:

    az account get-access-token \
    --resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d \
    --query "accessToken" \
    -o tsv
    

    리소스 ID 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d 는 모든 Azure 환경에서 Azure Databricks의 표준 식별자입니다.

Databricks API와 함께 액세스 토큰 사용

서비스 주체의 작업 영역 액세스에 따라 적절한 방법을 선택합니다.

작업 영역의 서비스 주체

먼저 서비스 주체 API 또는 Databricks CLI를 사용하여 작업 영역에 서비스 주체를 추가합니다.

  1. Databricks API와 함께 액세스 토큰을 사용합니다.

    Databricks CLI (권장):

    databricks clusters list -p <profile-name-that-references-azure-ad-access-token>
    

    curl:

    curl -X GET \
    -H 'Authorization: Bearer <access-token>' \
    https://<databricks-instance>/api/2.0/clusters/list
    

Azure 역할이 있는 서비스 주체

서비스 주체가 Azure의 Contributor 작업 영역 리소스에 대한 역할 또는 Owner 역할을 가지고 있지만 아직 Azure Databricks 작업 영역에 추가되지 않은 경우 이 메서드를 사용합니다.

  1. 필요한 정보를 수집합니다.

    매개 변수 설명
    서비스 주체 자격 증명 Microsoft Entra ID에 등록된 관련 애플리케이션의 테넌트 ID, 클라이언트 ID 및 클라이언트 암호
    Microsoft Entra 액세스 토큰 위의 REST API 메서드 를 사용하여 생성된 토큰
    구독 ID Azure Databricks 작업 영역과 연결된 Azure 구독 ID입니다. 이 정보와 다음 Azure 리소스 정보를 찾으려면 리소스 열기를 참조하세요.
    리소스 그룹 이름 Azure Databricks 작업 영역과 연결된 Azure 리소스 그룹
    작업 영역 이름 대상 Azure Databricks 작업 영역의 이름
  2. Azure Resource Manager에 대한 관리 토큰을 가져옵니다.

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/<tenant-id>/oauth2/token \
    -d 'client_id=<client-id>' \
    -d 'grant_type=client_credentials' \
    -d 'resource=https%3A%2F%2Fmanagement.core.windows.net%2F' \
    -d 'client_secret=<client-secret>'
    
  3. 두 토큰을 모두 사용하여 Databricks API를 호출합니다.

     curl -X GET \
    -H 'Authorization: Bearer <databricks-access-token>' \
     -H 'X-Databricks-Azure-SP-Management-Token: <management-access-token>' \
     -H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Databricks/workspaces/<workspace-name>' \
     https://<databricks-instance>/api/2.0/clusters/list
    

    첫 번째 인증 후에 서비스 주체는 작업 영역 관리자가 되며 더 이상 API 액세스를 위한 Azure 역할이 필요하지 않습니다.