서비스 주체(레거시)를 사용하여 Unity 카탈로그 관리 스토리지 만들기
Important
이 설명서는 사용 중지되었으며 업데이트되지 않을 수 있습니다. 이 콘텐츠에 언급된 제품, 서비스 또는 기술은 더 이상 지원되지 않습니다. 현재 관리 설명서를 보려면 Azure Databricks 계정 관리를 참조하세요.
이 문서에서는 서비스 주체를 사용하여 외부 위치 및 관리 스토리지를 만드는 레거시 방법을 설명합니다. Databricks는 서비스 주체 대신 Azure 관리 ID를 스토리지 컨테이너에 대한 액세스를 제공하는 ID로 사용하는 것이 좋습니다. Unity Catalog에서 Azure 관리 ID를 사용하여 스토리지에 액세스를 참조하세요.
그러나 서비스 주체를 계속 사용하려는 경우 또는 서비스 주체를 사용하는 기존 Unity 카탈로그 관리 스토리지 또는 외부 위치가 있고 프로세스를 이해하려는 경우 이 보관 문서에 지침이 제공됩니다.
서비스 주체(레거시)를 사용하여 액세스되는 메타스토어 만들기
서비스 주체가 액세스하는 Unity Catalog 메타스토어를 만들려면 다음을 수행합니다.
Azure Data Lake Storage Gen2용 스토리지 계정을 만듭니다.
이 계정의 스토리지 컨테이너는 자체 관리 스토리지 위치가 있는 카탈로그 또는 스키마에 있는 테이블을 제외하고 메타스토어의 모든 관리 테이블을 저장합니다.
Data Lake Storage Gen2에서 사용할 스토리지 계정 만들기를 참조하세요. Azure Databricks 작업 영역과 동일한 지역에 있는 프리미엄 성능 Azure Data Lake Storage Gen2 계정이어야 합니다.
새 스토리지 계정에 컨테이너를 만듭니다.
다음 형식의 컨테이너에 대한 ADLSv2 URI를 기록해 둡니다.
abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<metastore-name>
다음 단계에서
<storage-container>
를 이 URI로 바꿉니다.Microsoft Entra ID에서 서비스 주체 및 Microsoft Entra ID(Azure Active Directory)를 사용하여 Access Storage의 지침을 사용하여 서비스 주체를 만들고 스토리지 계정에 권한을 할당합니다.
Unity 카탈로그는 이 서비스 주체를 사용하여 Unity 카탈로그 사용자를 대신하여 스토리지 계정의 컨테이너에 액세스합니다. 서비스 주체에 대한 클라이언트 암호를 생성합니다. MS Entra 서비스 주체 인증을 참조하세요. 이 서비스 주체를 만든 위치에 서비스 주체, 클라이언트 애플리케이션 ID 및 디렉터리 ID에 대한 클라이언트 암호를 기록해 둡니다. 다음 단계에서는
<client-secret>
,<client-application-id>
,<directory-id>
를 이 값으로 바꿉니다.metastore를 만들 때 사용할 이러한 속성을 기록해 둡다.
<aad-application-id>
- 스토리지 계정 지역
<storage-container>
- 서비스 주체의
<client-secret>
,<client-application-id>
및<directory-id>
계정 콘솔 UI에서 서비스 주체를 사용하여 액세스하는 메타스토어는 만들 수 없습니다. 대신 계정 메타스토어 API를 사용합니다. 예시:
curl -n -X POST --header 'Content-Type: application/json' https://<account-domain>/api/2.0/accounts/<account-id>/metastores --data '{ "metastore_info": { "name": "<metastore-name>", "storage_root": "<storage-container>", "region": "<region>" "storage_root_credential_id" } }'
계정 수준 API에 인증하는 방법을 알아보려면 MS Entra 서비스 주체 인증을 참조하세요.
메타스토어를 만드는 사용자는 소유자입니다. Databricks는 메타스토어의 소유권을 그룹에 다시 할당하는 것이 좋습니다. 메타스토어 관리자 할당을 참조하세요.
메타스토어 ID를 기록해 둡니다. 메타스토어의 속성을 볼 때 메타스토어의 ID는 URL에서
/data
이후와/configuration
이전 부분입니다.메타스토어가 만들어졌지만 Unity 카탈로그는 아직 데이터를 쓸 수 없습니다. 메타스토어의 설정을 마치려면 다음을 수행합니다.
별도의 브라우저에서 메타스토어에 할당된 작업 영역에 작업 영역 관리자로 로그인합니다.
URL의 첫 번째 부분인 작업 영역 URL을 기록해 둡니다.
https://
이후와azuredatabricks.net
이 포함된 부분입니다.개인용 액세스 토큰을 생성합니다. 토큰 관리 API를 참조하세요.
홈 디렉터리의
.netrc
파일에 개인용 액세스 토큰을 추가합니다. 이렇게 하면 개인용 액세스 토큰이 셸의 명령 기록에 표시되지 않도록 하여 보안을 향상시킵니다. 토큰 관리 API를 참조하세요.다음 cURL 명령을 실행하여 메타스토어에 대한 루트 스토리지 자격 증명을 만듭니다. 자리 표시자 값을 바꿉니다.
<workspace-url>
: 개인용 액세스 토큰이 생성된 작업 영역의 URL입니다.<credential-name>
: 스토리지 자격 증명의 이름입니다.<directory-id>
: 만든 서비스 주체의 디렉터리 ID입니다.<application-id>
: 만든 서비스 주체의 애플리케이션 ID입니다.<client-secret>
: 서비스 주체에 대해 생성한 클라이언트 암호 값입니다(클라이언트 암호 ID가 아님).
curl -n -X POST --header 'Content-Type: application/json' https://<workspace-url>/api/2.0/unity-catalog/storage-credentials --data "{ \"name\": \"<credential-name>\", \"azure_service_principal\": { \"directory_id\": \"<directory-id>\", \"application_id\": \"<application-id>\", \"client_secret\": \"<client-secret>\" } }"
cURL 명령 응답에서
id
값인 스토리지 자격 증명 ID를 기록해 둡니다.
다음 cURL 명령을 실행하여 메타스토어를 새 루트 스토리지 자격 증명으로 업데이트합니다. 자리 표시자 값을 바꿉니다.
<workspace-url>
: 개인용 액세스 토큰이 생성된 작업 영역의 URL입니다.<metastore-id
>: 메타스토어의 ID입니다.<storage-credential-id
>: 이전 명령의 스토리지 자격 증명 ID입니다.
curl -n -X PATCH --header 'Content-Type: application/json' https://<workspace-url>/api/2.0/unity-catalog/metastores/<metastore-id> --data "{\"storage_root_credential_id\": \"<storage-credential-id>\"}"
이제 메타스토어에 작업 영역을 추가할 수 있습니다.
서비스 주체(레거시)를 사용하는 스토리지 자격 증명 만들기
서비스 주체를 사용하여 스토리지 자격 증명을 만들려면 Azure Databricks 계정 관리자여야 합니다. 서비스 주체 스토리지 자격 증명을 만드는 계정 관리자는 소유권을 다른 사용자 또는 그룹에 위임하여 권한을 관리할 수 있습니다.
먼저 서비스 주체를 만들고 서비스 주체 및 Microsoft Entra ID(Azure Active Directory)를 사용하여 Access Storage에 따라 스토리지 계정에 대한 액세스 권한을 부여합니다.
카탈로그 탐색기를 사용하여 서비스 주체 스토리지 자격 증명을 추가할 수 없습니다. 대신 스토리지 자격 증명 API를 사용합니다. 예시:
curl -X POST -n \
https://<databricks-instance>/api/2.1/unity-catalog/storage-credentials \
-d '{
"name": "<storage-credential-name>",
"read_only": true,
"azure_service_principal": {
"directory_id": "<directory-id>",
"application_id": "<application-id>",
"client_secret": "<client-secret>"
},
"skip_validation": "false"
}'
Databricks Terraform 공급자 및 databricks_storage_credential을 사용하여 스토리지 자격 증명을 만들 수도 있습니다.