에 페더레이션 Databricks Unity Catalog - AWS Lake Formation

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

에 페더레이션 Databricks Unity Catalog

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

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

사전 조건

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 권한이 있어야 합니다.

페더레이션 카탈로그 생성

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

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

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

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

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

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

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

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

  9. 새로운 연결 구성은 다음과 같습니다.

    • 연결 이름 - AWS Glue 연결 객체의 고유한 이름입니다.

    • 워크스페이스 URL - 기존 Databricks워크스페이스의 엔드포인트 URL입니다.

    • 인증 -가 원격 카탈로그 서버에 연결하는 데 AWS Glue 사용하는 인증 구성을 지정합니다.는 OAuth2 인증과 사용자 지정 인증을 모두 AWS Glue 지원합니다.

    • 토큰 URL - 원격 카탈로그의 자격 증명 공급자의 URL을 지정합니다.

    • OAuth2 클라이언트 ID - 원격 카탈로그와 연결된 OAuth2 자격 증명의 클라이언트 ID를 지정합니다.

    • 보안 암호 -를 사용하여 OAuth2 클라이언트 보안 암호를 저장하고 AWS Secrets Manager 사용하거나 텍스트 상자에 보안 암호 값을 입력합니다. 콘솔에 보안 암호를 수동으로 입력하면가 사용자를 대신하여 보안 암호를 AWS Glue 생성합니다.

    • 토큰 URL 범위 - 인증을 위한 OAuth 범위를 지정합니다.

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

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

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

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

  1. AWS Secrets Manager 보안 암호 생성

    AWS Glue 커넥터는 OAuth2Custom이라는 두 가지 인증 유형을 지원합니다. 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 콘솔에서 보안 암호를 생성할 때도 동일한 키워드를 사용합니다.

  2. 이전 단계에서 생성된 보안 암호에 대한 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>를 자체 정보로 바꿉니다.

    예 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>"] } } } ] }
    예 신뢰 정책
    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
  3. 카탈로그의 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>을 고유한 정보로 바꿉니다.

    예 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>" ] } ] }
    예 신뢰 정책
    { "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
    참고

    Lake Formation 콘솔을 사용하여 페더레이션 카탈로그를 생성할 때 콘솔은 두 정책이 모두 연결된 단일 IAM 역할을 사용하여 설정을 완료합니다.

  4. 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>" } }'
  5. 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
  6. 데이터 카탈로그에서 페더레이션 카탈로그 생성

    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

  • 에서 리소스(예: 데이터베이스 및 테이블)를 삭제해도 DatabricksLake Formation은 해당 페더레이션 리소스에 부여된 권한을 자동으로 취소하지 않습니다. 액세스 권한을 제거하려면 Lake Formation을 사용하여 페더레이션 리소스에 대해 이전에 부여된 권한을 명시적으로 취소해야 합니다.

  • 이 통합을 사용하여 Amazon S3에 저장된 Iceberg 테이블을 쿼리할 수 있습니다. 다른 테이블 형식 또는 객체 스토리지를 사용하는 경우 원격 카탈로그의 메타데이터를에 페더레이션하고 데이터베이스 AWS Glue 및 테이블을 나열할 수 있지만와 같은 쿼리 작업은 쿼리 중에 실패하고 'Apache Iceberg테SELECT ColumnFoo from TableBar이블을 읽지 못했습니다. 객체 스토리지 위치는 지원되지 않습니다.'

  • 동일한 AWS Glue 연결을 재사용하여 여러 페더레이션 카탈로그를 생성할 수 있습니다. 카탈로그를 삭제해도 연결된 연결 객체는 삭제되지 않습니다. 연결 객체를 삭제하려면 AWS CLI aws glue delete-connection 명령을 사용하고 연결된 모든 카탈로그를 먼저 삭제해야 합니다.