Comment Databricks applique-t-il l’isolation des utilisateurs ?
Cette page explique comment Databricks utilise Lakeguard pour appliquer l'isolation des utilisateurs dans des environnements de compute partagés et le contrôle d'accès granulaire dans des computes dédiés.
Qu'est-ce que Lakeguard ?
Lakeguard est un ensemble de Technologies sur Databricks qui assure l'isolation du code et le filtrage des données afin que plusieurs utilisateurs puissent partager la même ressource de compute de manière sécurisée et rentable, et accéder aux données avec des contrôles d'accès précis en place sur le compute offrant un accès machine privilégié.
Comment fonctionne Lakeguard ?
Dans les environnements compute partagés tels que le compute classique standard, le compute Serverless et les SQL Warehouses, Lakeguard isole le code utilisateur du moteur Spark et des autres utilisateurs. Cette conception permet à de nombreux utilisateurs de partager les mêmes ressources compute tout en maintenant des limites strictes entre les utilisateurs, le Driver Spark et les exécuteurs. Grâce à cette isolation, le compute standard peut appliquer en mode natif des contrôles d'accès précis, tels que les filtres de ligne et les masques de colonne.
Le compute dédié utilise l'architecture Spark classique, où le code utilisateur n'est pas isolé du moteur, de sorte qu'il ne peut pas appliquer de contrôles d'accès précis sans risquer de surcharger les requêtes. Au lieu de cela, le compute dédié délègue le filtrage des données au compute Serverless de votre Workspace, qui est isolé par Lakeguard et effectue le filtrage en son nom. C'est pourquoi le contrôle d'accès précis sur le compute dédié nécessite que votre Workspace soit activé pour le compute Serverless. Voir Contrôle d’accès granulaire sur compute dédié.
Architecture Spark classique
L'image suivante montre comment, dans l'architecture Spark traditionnelle, les applications utilisateur partagent une JVM avec un accès privilégié à la machine sous-jacente.

architecture Lakeguard
Lakeguard isole tout le code utilisateur à l’aide de conteneurs sécurisés. Cela permet à plusieurs charges de travail de s'exécuter sur la même ressource compute tout en maintenant une isolation stricte entre les utilisateurs.

Isolation du client Spark
Lakeguard isole les applications clientes du driver Spark et les unes des autres à l'aide de deux composants clés :
- **Spark Connect** : Lakeguard utilise Spark Connect (introduit avec Apache Spark 3.4) pour découpler les applications clientes du Driver. Les applications clientes et les Driver ne partagent plus la même JVM ou le même classpath. Cette séparation empêche l'accès non autorisé aux données. Cette conception empêche également les utilisateurs d'accéder aux données résultant d'une sur-récupération lorsque les query incluent des filtres au niveau des lignes ou des colonnes.
Spark Connect diffère l'analyse et la résolution de noms à la durée d'exécution, ce qui peut modifier le comportement de votre code. Voir Comparaison de Spark Connect à Spark Classic.
- Sandboxing des conteneurs : Chaque application cliente s'exécute dans son propre environnement de conteneur isolé. Cela empêche le code utilisateur d'accéder aux données d'autres utilisateurs ou à la machine sous-jacente. Le sandboxing utilise des techniques d'isolation basées sur des conteneurs pour créer des limites sécurisées entre les utilisateurs.
Isolation des UDF
By default, les exécuteurs Spark n'isolent pas les UDF. Ce manque d'isolation peut permettre aux UDF d'écrire des fichiers ou d'accéder à la machine sous-jacente.
Lakeguard isole le code défini par l'utilisateur, y compris les UDF, sur les exécuteurs Spark en :
- Mettre en sandbox l'environnement d'exécution sur les exécuteurs Spark.
- Isolation du trafic réseau sortant des UDF pour empêcher tout accès externe non autorisé.
- Réplication de l’environnement client dans le sandbox UDF afin que les utilisateurs puissent accéder aux bibliothèques requises.
Cette isolation s'applique aux UDF sur compute standard et aux UDF Python sur compute serverless et SQL warehouses.