이 페이지에서는 데이터 수신자가 IdP(자체 ID 공급자)에 등록된 Python 클라이언트를 사용하여 Databricks에서 만든 델타 공유 공유에 대한 액세스를 설정하는 방법을 설명합니다. 이 "M2M(컴퓨터-컴퓨터) OAuth 클라이언트 자격 증명 부여 흐름은 일반적으로 가상 머신에서 실행되는 야간 작업과 같은 애플리케이션이 데이터에 자율적으로 액세스하는 시나리오에서 사용됩니다. 이 인증 흐름은 OIDC 페더레이션을 사용하여 수신자의 IdP에서 발급한 JWT(JSON Web Tokens)를 Databricks에서 인증하는 단기 OAuth 토큰으로 사용할 수 있도록 합니다. 이 Databricks-to-open 공유 인증 흐름은 Unity 카탈로그가 활성화된 Databricks 작업 공간에 액세스할 수 없는 수신자를 위한 것입니다.
Open OIDC 페더레이션은 Databricks가 발급한 장기 전달자 토큰을 사용하는 대신, Databricks가 아닌 수신자를 공급자에 연결하는 대안입니다. OAuth 클라이언트 자격 증명 부여 흐름에서 OAuth 애플리케이션은 받는 사람의 IdP에 SP(서비스 주체)로 등록됩니다. Databricks, 공급자 및 받는 사람 간에는 수명이 긴 비밀이나 자격 증명이 공유되지 않습니다. 전달자 토큰을 사용하여 공유에 대한 인증을 관리하는 방법에 대한 자세한 내용은 전달자 토큰(공개 공유)사용하여 Databricks가 아닌 사용자에 대한 받는 사람 개체 만들기를 참조하세요.
이 문서는 받는 사람을 위한 것입니다. 공급자가 Azure Databricks에서 받는 사람에 대해 OIDC 페더레이션을 사용하도록 설정하는 방법에 대한 자세한 내용은 OIDC(Open ID Connect) 페더레이션을 사용하여 델타 공유 공유(공개 공유)인증을 사용하도록 설정하는 방법을 참조하세요. U2M(사용자-컴퓨터) 흐름에 대한 자세한 내용은 사용자-컴퓨터 흐름(열린 공유)에서 OIDC(Open ID Connect) 페더레이션을 사용하여 델타 공유 받기를 참조하세요.
IdP에 앱 등록
OIDC 페더레이션을 사용하여 클라이언트 애플리케이션에 델타 공유 공유에 대한 액세스 권한을 부여하려면 먼저 IdP에 OAuth 애플리케이션을 등록해야 합니다. 이 섹션에서는 Microsoft Entra ID에 OAuth 애플리케이션을 등록하는 방법을 설명합니다. 다른 IDP는 해당 설명서를 참조하세요.
Microsoft Entra ID에 앱 등록
이 지침은 일반적인 안내를 목적으로 하며 최신 상태로 유지된다는 보장은 없습니다. 자세한 앱 등록 지침은 이 Microsoft 빠른 시작참조하세요.
- 최소한 애플리케이션 개발자로 Microsoft Entra 관리 센터에 로그인합니다.
- 앱 등록으로 이동하여 리디렉션 URL 없이 새 등록을 만듭니다.
- 인증서로 이동하여 & 비밀(시크릿)을 선택하고, > 앱에 대한 비밀을 생성합니다.
- 비밀 값을 복사하고 안전하게 저장합니다.
- 앱에 대한 앱 등록 > 개요 페이지에서 애플리케이션(클라이언트) ID 복사합니다.
- 매니페스트를 업데이트하여 앱을 V2 애플리케이션으로 수정합니다.
- 앱의 관리 섹션에서 매니페스트을 선택합니다.
- 편집기에서
accessTokenAcceptedVersion2설정합니다. - 변경 내용을 저장합니다.
Azure Databricks 데이터 공급자에게 필요한 정보 보내기
받는 사람으로서 Microsoft Entra ID를 사용하는 경우 다음 지침에 따라 공급자가 요구하는 필드를 가져올 수 있습니다. 가장 최신 지침은 항상 Microsoft Entra ID 설명서를 참조하세요.
발급자 URL :
https://login.microsoftonline.com/{tenantId}/v2.0,{tenantId}을 Entra 테넌트 ID로 바꾸십시오. 테넌트 ID를 모르는 경우 Microsoft Entra ID 설명서참조하세요.주체 클레임: 데이터에 액세스하는 엔터티를 식별하는 JWT 페이로드의 필드를 참조합니다. 사용되는 특정 필드는 IdP(ID 공급자) 및 사용 사례에 따라 달라집니다. 예를 들어 Microsoft Entra ID의 M2M 애플리케이션의 경우 주체 클레임은
azp토큰을 사용할 권한이 있는 애플리케이션의 클라이언트 ID를 나타냅니다. 자세한 내용은 Microsoft Entra ID 액세스 토큰 클레임 참조를 참조하세요.제목: 받는 사람의 IdP(ID 공급자)에 등록된 OAuth 애플리케이션의 고유 식별자를 참조합니다.
예를 들어 Microsoft Entra ID에서 애플리케이션 (클라이언트) ID입니다. 등록하는 동안 클라이언트 ID를 복사하지 않은 경우 IdP와 관련된 단계에 따라 검색할 수 있습니다. Microsoft Entra ID의 경우 다음 단계를 수행합니다.- Microsoft Entra 관리 센터에서 앱 등록 으로 이동합니다.
- 등록된 OAuth 애플리케이션을 선택합니다.
- 개요 페이지에서 애플리케이션(클라이언트) ID 를 찾습니다.
다른 IdP의 경우, 해당 문서를 참조하여 같은 식별자를 찾아보세요.
대상 그룹: Azure Databricks에 대한 머신 인증의 경우, 보통 리소스의
clientId을 사용하지만 다른 유효한 리소스 식별자를 지정할 수 있습니다.이전 단계에서 이 항목을 복사했어야 합니다. 그렇지 않은 경우 Microsoft Entra 관리 센터로 이동하고, 앱 등록검색하고, 등록된 애플리케이션을 선택한 다음, 개요 페이지에서 애플리케이션(클라이언트) ID 찾습니다. 다른 리소스 ID를 사용할 수도 있습니다.
발급자, 주체 클레임, 주체 및 대상 그룹을 공급자와 공유합니다.
Databricks 공급자가 공유하는 OAuth 프로필 파일을 사용하도록 앱 구성
공급자의 델타 공유 공유에 액세스하도록 앱을 구성하려면 다음을 수행합니다.
Databricks 공급자가 공유한 OIDC 프로필 포털 URL로 이동합니다.
URL을 아직 받지 못한 경우 요청합니다.
포털 페이지에서 M2M 타일을 선택하고, For OAuth아래에서 파일다운로드를 클릭합니다.
다운로드한
oauth_config.shareJSON 파일을 수정하여clientId,clientSecret및scope추가합니다.앱을 등록할 때 클라이언트 ID 및 클라이언트 암호를 복사해야 합니다. 클라이언트 비밀을 다시 검색할 수 없습니다. 클라이언트 ID를 검색하려면 이전 섹션의 지침을 참조하세요.
앱을 사용할 때, 청중으로
{clientId}을/를 선택한다면, 범위는{clientId}/.default로 지정해야 합니다. 예를 들어, 대상 그룹이61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6일 경우 범위는61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6/.default이어야 합니다.샘플 프로필:
{ "shareCredentialsVersion": 2, "endpoint": "https://oregon.cloud.databricks.com/api/2.0/delta-sharing/metastores/11a11aaa-11aa-11a12-11aa-111a1aa11111/recipients/a11da11aa1-a1a1-11a1-a11a-1111a11111aa", "tokenEndpoint": "https://login.microsoftonline.com/a111a111-1111-1aaa-1aa1-1aa1111aa1/oauth2/v2.0/token", "type": "oauth_client_credentials", "clientId": "[REPLACE_WITH_YOUR_CLIENT_ID]", "clientSecret": "[REPLACE_WITH_YOUR_CLIENT_SECRET]", "scope": "[REPLACE_WITH_YOUR_SCOPE]" }최신 델타 공유 Python OSS 클라이언트를 설치하고 구성합니다.
최신 버전의 Delta Sharing Python OSS 클라이언트가 있어야 합니다.
python3 -m venv .venv source .venv/bin/activate pip3 install "delta-sharing>=1.3.1"업데이트된
oauth_config.share파일을 저장합니다.구성을 테스트합니다.
테스트 스크립트를 만드십시오,
test.py:import delta_sharing # Point to the profile file. It can be a file on the local file system or a file on a remote storage. profile_file = "oauth_config.share" # Create a SharingClient. client = delta_sharing.SharingClient(profile_file) # # List all shared tables. tables = client.list_all_tables() print(tables) # replace the following line with the coordinates of the shared table #table_url = profile_file + "#sample_share.sample_db.sample_table" # Fetch 10 rows from a table and convert it to a Pandas DataFrame. # This can be used to read sample data from a table that cannot fit in the memory. #df = delta_sharing.load_as_pandas(table_url, limit=10) #print(df)스크립트를 실행합니다.
python3 test.py스크립트는 공유 테이블을 나열해야 합니다.