Fédérer pour Databricks Unity Catalog - AWS Lake Formation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Fédérer pour Databricks Unity Catalog

AWS Glue Data Catalog se connecte à Databricks l'utilisation des OAuth2 informations d'identification d'un directeur de Databricks service. Ce mécanisme d'authentification permet d'accéder AWS Glue Data Catalog aux métadonnées de divers objets (tels que des catalogues, des bases de données et des tables) en Databricks Unity Catalog fonction des privilèges associés au principal de service. Pour garantir l'accès aux bons objets, il est essentiel d'accorder au principal du service les autorisations nécessaires Databricks pour lire les métadonnées de ces objets.

Ensuite, la fédération de catalogues permet de découvrir et d'interroger Iceberg les tables de votre catalogue Databricks Unity. Pour lire les tables delta, assurez-vous que Iceberg les métadonnées sont disponibles pour ces tables à l'aide deUniform. Suivez le Databricks didacticiel et la documentation pour créer le principal de service et les privilèges associés dans votre Databricks espace de travail.

Conditions préalables

Avant de créer un catalogue fédéré dans Data Catalog régi par Lake Formation, assurez-vous de disposer des autorisations suivantes :

Votre principal IAM (utilisateur ou rôle) doit disposer des autorisations suivantes :

  • Permissions de Lake Formationlakeformation:RegisterResource, lakeformation:DescribeResource

  • AWS Glue autorisationsglue:CreateConnectionglue:CreateCatalog,glue:GetConnection, glue:PassConnection

  • Autorisations du Gestionnaire de Secretssecretsmanager:CreateSecret, secretsmanager:GetSecretValue

  • Autorisations IAMiam:CreateRole, iam:AttachRolePolicy iam:PassRole

Vous devez être un administrateur du lac de Lake Formation ou avoir l'CREATE_CATALOGautorisation d'accéder au catalogue de données

Création d'un catalogue fédéré

  1. Connectez-vous à la console et ouvrez la console Lake Formation à l'adresse https://console.aws.amazon.com/lakeformation/.

  2. Choisissez la AWS région préférée dans la section supérieure droite de la page.

  3. Dans le volet de navigation de gauche, choisissez Catalogues.

  4. Choisissez Créer un catalogue pour ouvrir le flux de travail de création de catalogue.

  5. Dans l'étape Choisir une source de données, Databricks sélectionnez l'une des options disponibles.

  6. À l'étape Définir les détails du catalogue, vous fournissez trois informations : les détails du catalogue, les détails de connexion et les détails d'enregistrement.

  7. Dans le conteneur des détails du catalogue, attribuez un nom unique à votre catalogue AWS Glue fédéré et entrez le nom du Databricks catalogue existant.

  8. Dans le conteneur des détails des connexions, vous pouvez soit choisir une connexion existante à laquelle vous avez accès, soit fournir une configuration pour créer un nouveau connecteur.

  9. Les nouvelles configurations de connexion incluent :

    • Nom de connexion : nom unique de l'objet de AWS Glue connexion.

    • URL de l'espace de travail : URL du point de terminaison de votre Databricks espace de travail existant.

    • Authentification — Spécifiez la configuration d'authentification AWS Glue utilisée pour se connecter au serveur de catalogue distant. AWS Glue prend en charge les deux OAuth2 et l'authentification personnalisée.

    • URL du jeton : spécifiez l'URL du fournisseur d'identité du catalogue distant.

    • OAuth2 ID client — Spécifiez l'ID client des OAuth2 informations d'identification associées à votre catalogue distant.

    • Secret — Stockez et utilisez OAuth2 le secret du client en utilisant AWS Secrets Manager ou entrez la valeur du secret dans la zone de texte. Lorsque vous entrez le secret manuellement dans la console, AWS Glue crée le secret en votre nom.

    • Étendue de l'URL du jeton : spécifiez l' OAuth étendue de l'authentification.

  10. Créez un rôle IAM que les responsables du service Lake Formation AWS Glue et les responsables du service Lake Formation peuvent utiliser pour accéder respectivement aux emplacements secrets et Amazon S3 des Iceberg tables distantes. Sélectionnez le rôle IAM dans le menu déroulant d'inscription. Reportez-vous aux étapes 2 et 3 de la section CLI suivante pour plus de détails sur la politique IAM.

  11. Sélectionnez Tester la connexion pour vérifier si les propriétés de votre connexion et l'accès au rôle IAM sont correctement configurés. La fonctionnalité de test de connexion n'est pas disponible lors de la connexion à Databricks l'aide d'Amazon VPC.

  12. Sélectionnez Suivant pour vérifier vos paramètres.

  13. Sélectionnez Créer un catalogue sur la page de révision.

  1. Créez un AWS Secrets Manager secret

    Le AWS Glue connecteur prend en charge deux types d'authentification : OAuth2l'authentification personnalisée. Lorsque vous utilisez l' OAuth2 option, AWS Secrets Manager utilisez-la pour stocker le secret client du principal de Databricks service. Vous utiliserez ce secret ultérieurement lors de la création de la AWS Glue connexion. Pour l'authentification personnalisée, utilisez-le AWS Secrets Manager pour stocker et récupérer le jeton d'accès.

    Dans l'exemple suivant, remplacez <databricks-secret><client_secret>, <region> par vos propres informations.

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

    USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRETest un mot clé réservé AWS Glue utilisé pour faire référence à une valeur secrète du client dans le secret. Utilisez également le même mot clé lorsque vous créez le secret dans la console Lake Formation.

  2. Créez un rôle IAM qui permet à l'objet de AWS Glue connexion d'accéder au secret créé à l'étape précédente

    L'objet de AWS Glue connexion a besoin d'accéder au AWS Secrets Manager secret lorsque vous l'utilisez AWS Secrets Manager pour stocker, récupérer et actualiser votre jeton OAuth secret. L'objet de AWS Glue connexion nécessite également un accès pour créer, décrire et utiliser les interfaces réseau Amazon VPC lorsque vous utilisez un point de terminaison Amazon VPC pour restreindre la connectivité à votre espace de travail. Databricks

    Créez une politique IAM et associez-la à un rôle IAM. Ajoutez le principal de AWS Glue service à la politique de confiance.

    Dans l'exemple suivant, remplacez <your-secrets-manager-ARN><your-vpc-id>, et <your-subnet-id1> par vos propres informations.

    Exemple Stratégie 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>"] } } } ] }
    Exemple Stratégie d’approbation
    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
  3. Créez une politique IAM qui donne à Lake Formation un accès en lecture à l'emplacement Amazon S3 du catalogue

    En tant que propriétaire d'un catalogue fédéré dans Data Catalog, vous utilisez Lake Formation pour accorder un accès grossier aux tables, un accès fin (au niveau des colonnes, des lignes et au niveau des cellules) et un accès basé sur des balises à vos équipes chargées des données. Lake Formation utilise un rôle IAM qui lui permet d'accéder aux emplacements Amazon S3 sous-jacents de vos tables Iceberg distantes. Cet accès permet à Lake Formation de vendre des identifiants d'accès délimités aux moteurs d'analyse interrogeant des tables distantes.

    Créez une politique IAM et attachez-la à un rôle IAM. Ajoutez le principal de service Lake Formation à la politique de confiance des rôles IAM.

    Dans l'exemple suivant, remplacez <your-s3-bucket-N> et <your-kms-key> par vos propres informations.

    Exemple Stratégie 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>" ] } ] }
    Exemple Stratégie d’approbation
    { "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
    Note

    Lorsque vous utilisez la console Lake Formation pour créer un catalogue fédéré, la console utilise un seul rôle IAM auquel les deux politiques sont associées pour terminer la configuration.

  4. Création d'un objet AWS Glue de connexion

    Data Catalog prend en charge ConnectionType DATABRICKSICEBERGRESTCATALOG : pour connecter Data Catalog à. Databricks Ce AWS Glue connecteur prend en charge OAuth2 les méthodes d'authentification personnalisées.

    L'exemple suivant utilise la configuration OAuth2 d'authentification pour créer une AWS Glue connexion. Remplacez highlighed sections par vos informations.

    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. Enregistrer AWS Glue la connexion en tant que ressource Lake Formation

    À l'aide de l'objet de AWS Glue connexion (créé à l'étape 4) et du rôle IAM (créé à l'étape 3), vous pouvez désormais enregistrer l'objet de AWS Glue connexion en tant que ressource gérée par Lake Formation.

    Remplacez <your-glue-connector-arn> et <your-IAM-role-ARN-having-LF-access> par vos informations.

    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. Création d'un catalogue fédéré dans Data Catalog

    Après avoir créé un objet de AWS Glue connexion et l'avoir enregistré auprès de Lake Formation, vous pouvez créer un catalogue fédéré dans le catalogue de données :

    Fournissez au catalogue fédéré un nom unique à<your-federated-catalog-name>, référencez le catalogue dans Databricks at "<catalog-name-in-Databricks> et un nom de connexion d'entrée créé précédemment à"<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": [] }'

Considérations relatives à l'intégration avec Databricks

  • Lorsque vous déposez des ressources (telles que des bases de données et des tables) dans leDatabricks, Lake Formation ne révoque pas automatiquement les autorisations accordées sur cette ressource fédérée. Pour supprimer les autorisations d'accès, vous devez révoquer explicitement les autorisations précédemment accordées sur la ressource fédérée à l'aide de Lake Formation.

  • Vous pouvez interroger les tables Iceberg stockées dans Amazon S3 à l'aide de cette intégration. Lorsque vous utilisez un autre format de table ou un autre stockage d'objets, vous pouvez fédérer des métadonnées dans des catalogues distants AWS Glue et répertorier ses bases de données et ses tables, mais les opérations de requête de ce type SELECT ColumnFoo from TableBar échoueront lors de la requête avec l'erreur « Impossible de lire la table ». Apache Iceberg L'emplacement de stockage des objets n'est pas pris en charge. '

  • Vous pouvez réutiliser la même AWS Glue connexion pour créer plusieurs catalogues fédérés. La suppression d'un catalogue n'entraîne pas la suppression de l'objet de connexion associé. Pour supprimer un objet de connexion, utilisez la aws glue delete-connection commande AWS CLI et assurez-vous que tous les catalogues associés sont d'abord supprimés.