

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 에 페더레이션 Databricks Unity Catalog
<a name="catalog-federation-databricks"></a>

AWS Glue Data Catalog 는 Databricks 서비스 보안 주체의 OAuth2 자격 증명을 Databricks 사용하여에 페더레이션합니다. 이 인증 메커니즘 AWS Glue Data Catalog 을 사용하면가 서비스 보안 주체와 연결된 권한을 기반으로에서 다양한 객체(예: 카탈로그Databricks Unity Catalog, 데이터베이스 및 테이블)의 메타데이터에 액세스할 수 있습니다. 올바른 객체에 대한 액세스를 보장하려면 서비스 보안 주체에게에서 이러한 객체의 메타데이터를 읽는 Databricks 데 필요한 권한을 부여해야 합니다.

다음으로 카탈로그 페더레이션을 사용하면 Databricks Unity Catalog에서 Iceberg 테이블을 검색하고 쿼리할 수 있습니다. 델타 테이블을 읽으려면 Iceberg를 사용하여 이러한 테이블에 메타데이터를 사용할 수 있는지 확인하세요Uniform. Databricks 자습서 및 설명서에 따라 Databricks 워크스페이스에서 서비스 보안 주체 및 관련 권한을 생성합니다.

## 사전 조건
<a name="catalog-federation-databricks-prerequisites"></a>

Lake Formation에서 관리하는 데이터 카탈로그에서 페더레이션 카탈로그를 생성하기 전에 다음 권한이 있는지 확인합니다.

IAM 보안 주체(사용자 또는 역할)에는 다음 권한이 있어야 합니다.
+ **Lake Formation 권한** - `lakeformation:RegisterResource`, `lakeformation:DescribeResource` 
+ **AWS Glue 권한** - `glue:CreateConnection`, `glue:CreateCatalog`, `glue:GetConnection`, `glue:PassConnection` 
+ **Secrets Manager 권한** - `secretsmanager:CreateSecret`, `secretsmanager:GetSecretValue` 
+ **IAM 권한** - `iam:CreateRole`, `iam:AttachRolePolicy`, `iam:PassRole` 

Lake Formation 데이터 레이크 관리자이거나 데이터 카탈로그에 대한 `CREATE_CATALOG` 권한이 있어야 합니다.

## 페더레이션 카탈로그 생성
<a name="catalog-federation-databricks-create"></a>

### 콘솔 사용
<a name="catalog-federation-databricks-console"></a>

1. 콘솔에 로그인하고 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) Lake Formation 콘솔을 엽니다.

1. 오른쪽 상단 페이지에서 원하는 AWS 리전을 선택합니다.

1. 왼쪽 탐색 창에서 카탈로그를 선택합니다.

1. **카탈로그 생성을** 선택하여 **카탈로그 생성 워크플로**를 엽니다.

1. **데이터 소스 선택** 단계에서 사용 가능한 옵션 Databricks 중에서 선택합니다.

1. **카탈로그 세부 정보 설정** 단계에서 카탈로그 세부 정보, 연결 세부 정보 및 등록 세부 정보의 세 가지 정보를 제공합니다.

1. **카탈로그 세부 정보** 컨테이너에서 AWS Glue 페더레이션 카탈로그에 고유한 이름을 제공하고 기존 Databricks 카탈로그의 이름을 입력합니다.

1. **연결 세부 정보** 컨테이너에서 액세스 권한이 있는 기존 연결 중에서 선택하거나 구성을 제공하여 새 커넥터를 생성할 수 있습니다.

1. 새로운 연결 구성은 다음과 같습니다.
   + 연결 이름 - AWS Glue 연결 객체의 고유한 이름입니다.
   + 워크스페이스 URL - 기존 Databricks워크스페이스의 엔드포인트 URL입니다.
   + 인증 -가 원격 카탈로그 서버에 연결하는 데 AWS Glue 사용하는 인증 구성을 지정합니다.는 OAuth2 인증과 사용자 지정 인증을 모두 AWS Glue 지원합니다.
   + 토큰 URL - 원격 카탈로그의 자격 증명 공급자의 URL을 지정합니다.
   + OAuth2 클라이언트 ID - 원격 카탈로그와 연결된 OAuth2 자격 증명의 클라이언트 ID를 지정합니다.
   + 보안 암호 -를 사용하여 OAuth2 클라이언트 보안 암호를 저장하고 AWS Secrets Manager 사용하거나 텍스트 상자에 보안 암호 값을 입력합니다. 콘솔에 보안 암호를 수동으로 입력하면가 사용자를 대신하여 보안 암호를 AWS Glue 생성합니다.
   + 토큰 URL 범위 - 인증을 위한 OAuth 범위를 지정합니다.

1.  AWS Glue 및 Lake Formation 서비스 보안 주체가 원격 Iceberg 테이블의 및 Amazon S3 위치에서 각각 보안 암호에 액세스하는 데 사용할 수 있는 IAM 역할을 생성합니다. 등록 드롭다운에서 IAM 역할을 선택합니다. IAM 정책 세부 정보는 다음 CLI 섹션의 2단계 및 3단계를 참조하세요.

1. 연결 테스트를 선택하여 연결 속성과 IAM 역할 액세스가 올바르게 구성되었는지 테스트합니다. Amazon VPC를 Databricks 사용하여에 연결할 때는 연결 테스트 기능을 사용할 수 없습니다.

1. **다음을** 선택하여 설정을 검토합니다.

1. 검토 페이지에서 **카탈로그 생성을** 선택합니다.

### CLI 사용
<a name="catalog-federation-databricks-cli"></a>

1. <a name="databricks-step-1"></a>** AWS Secrets Manager 보안 암호 생성**

    AWS Glue 커넥터는 **OAuth2**와 **Custom**이라는 두 가지 인증 유형을 지원합니다. OAuth2 옵션을 사용하는 경우 AWS Secrets Manager 를 사용하여 Databricks 서비스 보안 주체의 클라이언트 암호를 저장합니다. 나중에 AWS Glue 연결을 생성할 때이 보안 암호를 사용합니다. 사용자 지정 인증의 경우 AWS Secrets Manager 를 사용하여 액세스 토큰을 저장하고 검색합니다.

   다음 예제에서는 , `<databricks-secret>``<client_secret>``<region>`를 사용자 고유의 정보로 바꿉니다.

   ```
   aws secretsmanager create-secret \
   --name <databricks-secret> \
   --description "Databricks secret" \
   --secret-string '{
   "USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET": "<client_secret>"
   }' \
   --region <region>
   ```
**참고**  
`USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`는가 보안 암호의 클라이언트 보안 암호 값을 참조하는 데 AWS Glue 사용하는 예약된 키워드입니다. Lake Formation 콘솔에서 보안 암호를 생성할 때도 동일한 키워드를 사용합니다.

1. <a name="databricks-step-2"></a>**이전 단계에서 생성된 보안 암호에 대한 AWS Glue 연결 객체 액세스 권한을 부여하는 IAM 역할 생성**

    AWS Glue 연결 객체는를 사용하여 OAuth AWS Secrets Manager 보안 암호 토큰을 저장, 검색 및 새로 고칠 때 보안 암호 AWS Secrets Manager 에 대한 액세스 권한이 필요합니다. 또한 AWS Glue Amazon VPC 엔드포인트를 사용하여 Databricks 워크스페이스에 대한 연결을 제한할 때 Amazon VPC 네트워크 인터페이스를 생성, 설명 및 사용하려면 연결 객체에 대한 액세스 권한이 필요합니다.

   IAM 정책을 생성하여 IAM 역할에 연결합니다. 신뢰 정책에 AWS Glue 서비스 보안 주체를 추가합니다.

   다음 예제에서는 , `<your-vpc-id>`및 `<your-secrets-manager-ARN>``<your-subnet-id1>`를 자체 정보로 바꿉니다.  
**Example IAM 정책**  

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [{
               "Effect": "Allow",
               "Action": [
                   "secretsmanager:GetSecretValue",
                   "secretsmanager:DescribeSecret",
                   "secretsmanager:PutSecretValue"
               ],
               "Resource": [
                   "<your-secrets-manager-ARN>"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:CreateNetworkInterface",
                   "ec2:DeleteNetworkInterface",
                   "ec2:DescribeNetworkInterfaces"
               ],
               "Resource": "*",
               "Condition": {
                   "ArnEquals": {
                       "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/<your-vpc-id>",
                       "ec2:Subnet": ["arn:aws:ec2:region:account-id:subnet/<your-subnet-id1>"]
                   }
               }
           }
       ]
   }
   ```  
**Example 신뢰 정책**  

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [{
           "Effect": "Allow",
           "Principal": {
               "Service": "glue.amazonaws.com"
           },
           "Action": "sts:AssumeRole"
       }]
   }
   ```

1. <a name="databricks-step-3"></a>**카탈로그의 Amazon S3 위치에 대한 읽기 액세스 권한을 Lake Formation에 부여하는 IAM 정책 생성**

   데이터 카탈로그에서 페더레이션 카탈로그의 카탈로그 소유자는 Lake Formation을 사용하여 데이터 팀에 대략적인 테이블 액세스, 세분화된 열 수준, 행 수준 및 셀 수준 액세스, 태그 기반 액세스 권한을 부여합니다. Lake Formation은 원격 Iceberg 테이블의 기본 Amazon S3 위치에 대한 액세스 권한을 부여하는 IAM 역할을 사용합니다. 이 액세스를 통해 Lake Formation은 원격 테이블을 쿼리하는 분석 엔진에 범위가 지정된 액세스 자격 증명을 제공할 수 있습니다.

   IAM 정책을 생성하고 IAM 역할에 연결합니다. IAM 역할 신뢰 정책에 Lake Formation 서비스 보안 주체를 추가합니다.

   다음 예제에서는 `<your-s3-bucket-N>` 및 `<your-kms-key>`을 고유한 정보로 바꿉니다.  
**Example IAM 정책**  

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [{
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::<your-s3-bucket-1>/*",
                   "arn:aws:s3:::<your-s3-bucket-2>/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket"
               ],
               "Resource": [
                   "arn:aws:s3:::<your-s3-bucket-1>",
                   "arn:aws:s3:::<your-s3-bucket-2>"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt",
                   "kms:Encrypt"
               ],
               "Resource": [
                   "<your-kms-key>"
               ]
           }
       ]
   }
   ```  
**Example 신뢰 정책**  

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [{
           "Sid": "",
           "Effect": "Allow",
           "Principal": {
               "Service": "lakeformation.amazonaws.com"
           },
           "Action": "sts:AssumeRole"
       }]
   }
   ```
**참고**  
Lake Formation 콘솔을 사용하여 페더레이션 카탈로그를 생성할 때 콘솔은 두 정책이 모두 연결된 단일 IAM 역할을 사용하여 설정을 완료합니다.

1. <a name="databricks-step-4"></a>** AWS Glue 연결 객체 생성**

   데이터 카탈로그는 데이터 카탈로그를에 연결하기 `DATABRICKSICEBERGRESTCATALOG` 위한 connectionType을 지원합니다Databricks. 이 AWS Glue 커넥터는 OAuth2 및 사용자 지정 인증 방법을 지원합니다.

   다음 예제에서는 OAuth2 인증 구성을 사용하여 AWS Glue 연결을 생성합니다. `highlighed sections`를 자신의 정보로 대체합니다.

   ```
   aws glue create-connection \
       --connection-input '{
   "Name": "<your-glue-connection-to-databricks-unity-account>",
   "ConnectionType": "DATABRICKSICEBERGRESTCATALOG",
   "ConnectionProperties": {
       "INSTANCE_URL": "<your-databricks-workspace-catalog-URL>",
       "ROLE_ARN": "<your-IAM-role-for-secrets-and-VPC-access>"
   },
   "AuthenticationConfiguration": {
       "AuthenticationType": "OAUTH2",
       "OAuth2Properties": {
           "OAuth2GrantType": "CLIENT_CREDENTIALS",
           "TokenUrl": "<your-internal-or-external-token-server-url>",
           "OAuth2ClientApplication": {
               "UserManagedClientApplicationClientId": "<your-client-id>"
           },
           "TokenUrlParametersMap": {
               "scope": "all-apis"
           }
       },
       "SecretArn": "arn:aws:secretsmanager:<aws-region>:<your-aws-account-id>:secret:<databricks-secret>"
   }
   }'
   ```

1. <a name="databricks-step-5"></a>**Lake Formation 리소스로 AWS Glue 연결 등록**

    AWS Glue 연결 객체(4단계에서 생성됨) 및 IAM 역할(3단계에서 생성됨)을 사용하여 이제 AWS Glue 연결 객체를 Lake Formation 관리형 리소스로 등록할 수 있습니다.

   `<your-glue-connector-arn>` 및 `<your-IAM-role-ARN-having-LF-access>`을(를) 자신의 정보로 대체합니다.

   ```
   aws lakeformation register-resource \
       --resource-arn <your-glue-connector-arn> \
       --role-arn <your-IAM-role-ARN-having-LF-access> \
       --with-federation \
       --with-privileged-access
   ```

1. <a name="databricks-step-6"></a>**데이터 카탈로그에서 페더레이션 카탈로그 생성**

    AWS Glue 연결 객체를 생성하고 Lake Formation에 등록한 후 데이터 카탈로그에서 페더레이션 카탈로그를 생성할 수 있습니다.

   페더레이션 카탈로그에에서 고유한 이름을 제공하고`<your-federated-catalog-name>`,에서 카탈로그를 참조하고`"<catalog-name-in-Databricks>`, Databricks에서 이전에 생성한 연결 이름을 입력합니다`"<your-glue-connection-name>`.

   ```
   aws glue create-catalog \
       --name <your-federated-catalog-name> \
       --catalog-input '{
       "FederatedCatalog": {
           "Identifier": "<catalog-name-in-Databricks>",
           "ConnectionName": "<your-glue-connection-name>"
       },
       "CreateTableDefaultPermissions": [],
       "CreateDatabaseDefaultPermissions": []
   }'
   ```

## 와 통합 시 고려 사항 Databricks
<a name="databricks-considerations"></a>
+ 에서 리소스(예: 데이터베이스 및 테이블)를 삭제해도 DatabricksLake Formation은 해당 페더레이션 리소스에 부여된 권한을 자동으로 취소하지 않습니다. 액세스 권한을 제거하려면 Lake Formation을 사용하여 페더레이션 리소스에 대해 이전에 부여된 권한을 명시적으로 취소해야 합니다.
+ 이 통합을 사용하여 Amazon S3에 저장된 Iceberg 테이블을 쿼리할 수 있습니다. 다른 테이블 형식 또는 객체 스토리지를 사용하는 경우 원격 카탈로그의 메타데이터를에 페더레이션하고 데이터베이스 AWS Glue 및 테이블을 나열할 수 있지만와 같은 쿼리 작업은 쿼리 중에 실패하고 'Apache Iceberg테`SELECT ColumnFoo from TableBar`이블을 읽지 못했습니다. 객체 스토리지 위치는 지원되지 않습니다.'
+ 동일한 AWS Glue 연결을 재사용하여 여러 페더레이션 카탈로그를 생성할 수 있습니다. 카탈로그를 삭제해도 연결된 연결 객체는 삭제되지 않습니다. 연결 객체를 삭제하려면 AWS CLI `aws glue delete-connection` 명령을 사용하고 연결된 모든 카탈로그를 먼저 삭제해야 합니다.