Federate a Databricks Unity Catalog - AWS Lake Formation

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Federate a Databricks Unity Catalog

AWS Glue Data Catalog se federa para Databricks usar las OAuth2 credenciales de un Databricks director de servicio. Este mecanismo de autenticación permite acceder AWS Glue Data Catalog a los metadatos de varios objetos (como catálogos, bases de datos y tablas) en Databricks Unity Catalog función de los privilegios asociados al principal del servicio. Para garantizar el acceso a los objetos correctos, es esencial conceder al responsable del servicio los permisos necesarios Databricks para leer los metadatos de estos objetos.

A continuación, la federación de catálogos permite descubrir y consultar Iceberg tablas en su catálogo de Databricks Unity. Para leer las tablas delta, asegúrese de que Iceberg los metadatos estén disponibles para utilizarlas. Uniform Siga el Databricks tutorial y la documentación para crear el servicio principal y los privilegios asociados en su Databricks espacio de trabajo.

Requisitos previos

Antes de crear un catálogo federado en Data Catalog que esté gobernado por Lake Formation, asegúrese de tener los siguientes permisos:

Su director de IAM (usuario o rol) debe tener los siguientes permisos:

  • Permisos de Lake Formationlakeformation:RegisterResource, lakeformation:DescribeResource

  • AWS Glue permisosglue:CreateConnection,glue:CreateCatalog,glue:GetConnection, glue:PassConnection

  • Permisos de Secrets Managersecretsmanager:CreateSecret, secretsmanager:GetSecretValue

  • Permisos de IAMiam:CreateRole,, iam:AttachRolePolicy iam:PassRole

Debe ser administrador de un lago de datos de Lake Formation o tener CREATE_CATALOG permiso para acceder al catálogo de datos

Cree un catálogo federado

  1. Inicie sesión en la consola y abra la consola de Lake Formation en https://console.aws.amazon.com/lakeformation/.

  2. Elige la AWS región que prefieras en la sección superior derecha de la página.

  3. En el panel de navegación izquierdo, elija Catálogos.

  4. Seleccione Crear catálogo para abrir el flujo de trabajo de creación de catálogo.

  5. En el paso Elegir fuente de datos, seleccione una Databricks de las opciones disponibles.

  6. En el paso Definir los detalles del catálogo, debe proporcionar tres datos: detalles del catálogo, detalles de conexión y detalles de registro.

  7. En el contenedor de detalles del catálogo, proporcione un nombre único al catálogo AWS Glue federado e introduzca el nombre del Databricks catálogo existente.

  8. En el contenedor de detalles de conexiones, puede elegir entre una conexión existente a la que tenga acceso o proporcionar la configuración necesaria para crear un conector nuevo.

  9. Las nuevas configuraciones de conexión incluyen:

    • Nombre de conexión: nombre exclusivo del objeto de AWS Glue conexión.

    • URL del espacio de trabajo: la URL de punto final de tu espacio de Databricks trabajo existente.

    • Autenticación: especifique la configuración de autenticación que se AWS Glue utiliza para conectarse al servidor de catálogo remoto. AWS Glue admite tanto OAuth2 la autenticación como la personalizada.

    • URL del token: especifique la URL del proveedor de identidad del catálogo remoto.

    • OAuth2 ID de cliente: especifique el ID de cliente de la OAuth2 credencial asociada a su catálogo remoto.

    • Secreto: almacene y use el secreto OAuth2 del cliente utilizando AWS Secrets Manager o introduzca el valor secreto en el cuadro de texto. Al introducir el secreto manualmente en la consola, AWS Glue crea el secreto en tu nombre.

    • Ámbito de la URL del token: especifique el OAuth ámbito de la autenticación.

  10. Cree una función de IAM que AWS Glue los directores del servicio de Lake Formation puedan utilizar para acceder a las ubicaciones secretas y Amazon S3 de Iceberg las tablas remotas, respectivamente. Seleccione la función de IAM en el menú desplegable de registro. Consulte los pasos 2 y 3 de la siguiente sección de CLI para obtener detalles sobre la política de IAM.

  11. Seleccione Probar conexión para comprobar si las propiedades de la conexión y el acceso a los roles de IAM están configurados correctamente. La funcionalidad de conexión de prueba no está disponible cuando se conecta Databricks mediante Amazon VPC.

  12. Seleccione Siguiente para revisar la configuración.

  13. Selecciona Crear catálogo en la página de revisión.

  1. Crea un AWS Secrets Manager secreto

    El AWS Glue conector admite dos tipos de autenticación: OAuth2una personalizada. Cuando se usa OAuth2 la opción, AWS Secrets Manager se usa para almacenar el secreto del cliente principal del Databricks servicio. Más adelante, utilizará este secreto al crear la AWS Glue conexión. Para la autenticación personalizada, AWS Secrets Manager utilícela para almacenar y recuperar el token de acceso.

    En el siguiente ejemplo, sustituya<databricks-secret>,<client_secret>, <region> por su propia información.

    aws secretsmanager create-secret \ --name <databricks-secret> \ --description "Databricks secret" \ --secret-string '{ "USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET": "<client_secret>" }' \ --region <region>
    nota

    USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRETes una palabra clave reservada que se AWS Glue utiliza para hacer referencia a un valor secreto de cliente incluido en el secreto. Usa también la misma palabra clave cuando crees el secreto en la consola de Lake Formation.

  2. Cree un rol de IAM que dé acceso al objeto de AWS Glue conexión al secreto creado en el paso anterior

    El objeto de AWS Glue conexión requiere acceso al AWS Secrets Manager secreto cuando se utiliza AWS Secrets Manager para almacenar, recuperar y actualizar el token OAuth secreto. El objeto de AWS Glue conexión también requiere acceso para crear, describir y utilizar las interfaces de red de Amazon VPC cuando utiliza un punto de enlace de Amazon VPC para restringir la conectividad a su espacio de trabajo. Databricks

    Cree una política de IAM y adjúntela a un rol de IAM. Añada el principal AWS Glue de servicio a la política de confianza.

    En el siguiente ejemplo <your-secrets-manager-ARN><your-vpc-id>, sustituya y <your-subnet-id1> por su propia información.

    ejemplo Política de 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>"] } } } ] }
    ejemplo Política de confianza
    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
  3. Cree una política de IAM que dé a Lake Formation acceso de lectura a la ubicación de Amazon S3 del catálogo

    Como propietario de un catálogo federado en Data Catalog, utiliza Lake Formation para conceder a sus equipos de datos un acceso detallado a las tablas, un acceso detallado (a nivel de columnas, filas y celdas) y un acceso basado en etiquetas. Lake Formation utiliza una función de IAM que le da acceso a las ubicaciones subyacentes de Amazon S3 de sus tablas Iceberg remotas. Este acceso permite a Lake Formation vender credenciales de acceso limitado a los motores de análisis que consultan tablas remotas.

    Cree una política de IAM y asígnela a una función de IAM. Agregue el director de servicio de Lake Formation a la política de confianza de funciones de IAM.

    En el siguiente ejemplo, reemplace <your-s3-bucket-N> y <your-kms-key> por su propia información.

    ejemplo Política de 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>" ] } ] }
    ejemplo Política de confianza
    { "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
    nota

    Cuando utiliza la consola Lake Formation para crear un catálogo federado, la consola utiliza un único rol de IAM con ambas políticas asociadas para completar la configuración.

  4. Cree un objeto de conexión AWS Glue

    Data Catalog admite ConnectionTypeDATABRICKSICEBERGRESTCATALOG: para conectar Data Catalog a. Databricks Este AWS Glue conector admite métodos OAuth2 de autenticación personalizados.

    El siguiente ejemplo utiliza la configuración de OAuth2 autenticación para crear una AWS Glue conexión. Modifique el highlighed sections añadiendo su información.

    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. Registrar AWS Glue la conexión como recurso de Lake Formation

    Con el objeto de AWS Glue conexión (creado en el paso 4) y el rol de IAM (creado en el paso 3), ahora puede registrar el objeto de AWS Glue conexión como un recurso gestionado por Lake Formation.

    Reemplace el <your-glue-connector-arn> y el <your-IAM-role-ARN-having-LF-access> con su información.

    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. Cree un catálogo federado en Data Catalog

    Tras crear un objeto de AWS Glue conexión y registrarlo en Lake Formation, puede crear un catálogo federado en el catálogo de datos:

    Proporcione al catálogo federado un nombre exclusivo en<your-federated-catalog-name>, haga referencia al catálogo en Databricks at "<catalog-name-in-Databricks> e introduzca el nombre de la conexión creado anteriormente en. "<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": [] }'

Consideraciones a la hora de integrarse con Databricks

  • Al colocar recursos (como bases de datos y tablas) enDatabricks, Lake Formation no revoca automáticamente los permisos otorgados a ese recurso federado. Para eliminar los permisos de acceso, debe revocar explícitamente los permisos que se concedieron anteriormente en el recurso federado mediante Lake Formation.

  • Puede consultar las tablas de Iceberg almacenadas en Amazon S3 mediante esta integración. Si utiliza cualquier otro formato de tabla o almacenamiento de objetos, puede federar los metadatos de catálogos remotos AWS Glue y enumerar sus bases de datos y tablas, pero las operaciones de consulta SELECT ColumnFoo from TableBar fallarán durante la consulta y generarán el error «No se pudo leer la tabla». Apache Iceberg No se admite la ubicación de almacenamiento de objetos.

  • Puede reutilizar la misma AWS Glue conexión para crear varios catálogos federados. Al eliminar un catálogo, no se eliminará el objeto de conexión asociado. Para eliminar un objeto de conexión, utilice el aws glue delete-connection comando AWS CLI y asegúrese de eliminar primero todos los catálogos asociados.