聯合到 Databricks Unity Catalog - AWS Lake Formation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

聯合到 Databricks Unity Catalog

AWS Glue Data Catalog Databricks使用Databricks服務主體的 OAuth2 登入資料聯合到 。此身分驗證機制 AWS Glue Data Catalog 允許 根據與服務主體相關聯的權限Databricks Unity Catalog,存取 中各種物件 (例如目錄、資料庫和資料表) 的中繼資料。為了確保存取正確的物件,必須在 中授予服務主體必要的許可Databricks,以讀取這些物件的中繼資料。

接下來,目錄聯合會可讓您探索和查詢 Databricks Unity Catalog 中的Iceberg資料表。若要讀取差異資料表,請使用 確保這些資料表有Iceberg中繼資料可用Uniform。遵循Databricks教學課程和文件,在Databricks工作區中建立服務主體和相關聯的權限。

先決條件

在由 Lake Formation 管理的 Data Catalog 中建立聯合目錄之前,請確定您具有下列許可:

您的 IAM 主體 (使用者或角色) 必須具有下列許可:

  • Lake Formation 許可lakeformation:RegisterResourcelakeformation:DescribeResource

  • AWS Glue 許可glue:CreateConnectionglue:CreateCatalogglue:GetConnectionglue:PassConnection

  • Secrets Manager 許可secretsmanager:CreateSecretsecretsmanager:GetSecretValue

  • IAM 許可iam:CreateRoleiam:AttachRolePolicyiam:PassRole

您必須是 Lake Formation 資料湖管理員或具有 Data Catalog 的CREATE_CATALOG許可

建立聯合目錄

  1. 登入 主控台,並在 https://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 用來連線至遠端目錄伺服器的身分驗證組態。 同時 AWS Glue 支援 OAuth2 和自訂身分驗證。

    • 權杖 URL – 指定遠端目錄身分提供者的 URL。

    • OAuth2 用戶端 ID – 指定與遠端目錄相關聯之 OAuth2 登入資料的用戶端 ID。

    • 秘密 – 使用 儲存並使用 OAuth2 用戶端秘密, AWS Secrets Manager 或在文字方塊中輸入秘密值。當您在主控台中手動輸入秘密時, 會代表您 AWS Glue 建立秘密。

    • 權杖 URL 範圍 – 指定身分驗證的 OAuth 範圍。

  10. 建立 IAM 角色,讓 AWS Glue 和 Lake Formation 服務主體可以分別用來存取遠端Iceberg資料表的 和 Amazon S3 位置中的秘密。在註冊下拉式清單中選取 IAM 角色。如需 IAM 政策詳細資訊,請參閱下列 CLI 章節中的步驟 2 和 3。

  11. 選取測試連線,以測試您的連線屬性和 IAM 角色存取是否已正確設定。Databricks 使用 Amazon VPC 連線至 時,無法使用測試連線功能。

  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. 建立 IAM 角色,讓 AWS Glue 連線物件存取上一個步驟中建立的秘密

    當您使用 AWS Secrets Manager 存放、擷取和重新整理 OAuth AWS Secrets Manager 秘密字符時, AWS Glue 連線物件需要存取秘密。當您使用 Amazon VPC 端點限制與Databricks工作區的連線時, AWS Glue 連線物件也需要存取才能建立、描述和使用 Amazon VPC 網路介面。

    建立 IAM 政策並將其連接至 IAM 角色。將 AWS Glue 服務主體新增至信任政策。

    在下列範例中,將 <your-secrets-manager-ARN><your-vpc-id>和 取代<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. 建立 IAM 政策,讓 Lake Formation 能夠讀取目錄的 Amazon S3 位置

    身為 Data Catalog 中聯合目錄的目錄擁有者,您可以使用 Lake Formation 將粗細資料表存取、精細 - 資料欄層級、資料列層級和儲存格層級 - 存取,以及標籤型存取授予資料團隊。Lake Formation 使用 IAM 角色,讓其存取遠端 Iceberg 資料表的基礎 Amazon S3 位置。此存取可讓 Lake Formation 將範圍存取憑證提供給查詢遠端資料表的分析引擎。

    建立 IAM 政策並連接至 IAM 角色。將 Lake Formation 服務主體新增至 IAM 角色信任政策。

    在下列範例中,將 <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 連線物件

    Data Catalog 支援 connectionType:DATABRICKSICEBERGRESTCATALOG用於將 Data Catalog 連線至 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. 將 AWS Glue 連線註冊為 Lake Formation 資源

    使用 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. 在 Data Catalog 中建立聯合目錄

    建立 AWS Glue 連線物件並使用 Lake Formation 註冊後,您可以在 Data Catalog 中建立聯合目錄:

    在 提供聯合目錄唯一名稱<your-federated-catalog-name>、在 Databricks中參考目錄"<catalog-name-in-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

  • 當您在 中捨棄資源 (例如資料庫和資料表) 時Databricks,Lake Formation 不會自動撤銷在該聯合資源上授予的許可。若要移除存取許可,您需要使用 Lake Formation 明確撤銷先前在聯合資源上授予的許可。

  • 您可以使用此整合來查詢存放在 Amazon S3 中的 Iceberg 資料表。使用任何其他資料表格式或物件儲存時,您可以將遠端目錄中的中繼資料聯合到 AWS Glue ,並列出其資料庫和資料表,但 之類的查詢操作SELECT ColumnFoo from TableBar會在查詢期間失敗,且發生錯誤 ' 無法讀取Apache Iceberg資料表。不支援物件儲存位置。」

  • 您可以重複使用相同的 AWS Glue 連線來建立多個聯合目錄。刪除目錄不會刪除相關聯的連線物件。若要刪除連線物件,請使用 AWS CLI aws glue delete-connection命令,並確保先刪除所有相關聯的目錄。