Se connecter au stockage d’objets cloud à l’aide de Unity Catalog
Cet article donne un aperçu des connexions de stockage cloud qui sont nécessaires pour l’utilisation des données avec Unity Catalog, ainsi que des informations sur la manière dont Unity Catalog régit l’accès au stockage cloud et aux services cloud externes.
Comment Unity Catalog utilise-t-il le stockage cloud ?
Databricks recommande d'utiliser Unity Catalog pour gérer l'accès à toutes les données que vous avez stockées dans le stockage d'objets cloud. Unity Catalog fournit une suite d'outils pour configurer des connexions sécurisées au stockage d'objets cloud. Ces connexions permettent d'accéder aux actions suivantes :
- Ingérez les données brutes dans un lakehouse.
- Créez et lisez des tables gérées et des volumes gérés de données non structurées dans le stockage cloud géré par Unity Catalog.
- Enregistrez ou créez des tables externes contenant des données tabulaires et des volumes externes contenant des données non structurées dans le stockage cloud géré par votre fournisseur de services cloud.
- Lire et écrire des données non structurées (Unity Catalog *volumes*).
Plus précisément, Unity Catalog utilise le stockage cloud de deux manières principales :
- Emplacements de stockage default (ou « gérés ») pour les tables gérées et les volumes gérés (données non structurées et non tabulaires) que vous créez dans Databricks. Ces emplacements de stockage gérés peuvent être définis au niveau du métastore, du catalogue ou du schéma. Vous créez des emplacements de stockage **entièrement managé**s dans votre fournisseur **cloud**, mais leur cycle de vie est **entièrement managé** par Unity Catalog.
- Emplacements de stockage où les tables externes et les volumes sont stockés. Ce sont des tables et des volumes dont l'accès depuis Databricks est géré par Unity Catalog, mais dont le cycle de vie des données et le Layout des fichiers sont gérés à l'aide de votre fournisseur cloud et d'autres plateformes de données. Généralement, vous utilisez des tables externes pour enregistrer de grandes quantités de vos données existantes dans Databricks, ou si vous avez également besoin d'un accès en écriture aux données à l'aide d'outils extérieurs à Databricks.
Pour plus d'informations sur les tables et volumes gérés ou externes, consultez Tables Databricks et Que sont les volumes Unity Catalog ?.
Ne donnez pas aux identités non-Unity Catalog d'accès au niveau du stockage aux tables ou volumes gérés par Unity Catalog. Cela compromet la sécurité et la gouvernance des données.
Évitez d'accorder aux utilisateurs ou aux Service Principal un accès direct aux buckets Amazon S3 ou Cloudflare R2 qui sont utilisés comme stockage géré par Unity Catalog. La seule identité qui devrait avoir accès aux données gérées par Unity Catalog est l'identité utilisée par Unity Catalog. Ignorer ceci crée les problèmes suivants dans votre environnement :
- Les contrôles d'accès établis dans Unity Catalog peuvent être contournés par les utilisateurs ayant un accès direct aux compartiments S3 ou R2.
- Les fonctions d'audit, de traçabilité et les autres fonctionnalités de monitoring de Unity Catalog ne captureront pas l'accès direct.
- Le cycle de vie des données est rompu. C'est-à-dire que la modification, la suppression ou l'évolution des tables dans Databricks compromettra les consommateurs ayant un accès direct au stockage, et les écritures effectuées en dehors de Databricks pourraient entraîner une corruption des données.
Options de stockage cloud prises en charge par Unity Catalog
Unity Catalog prend en charge les options de stockage cloud suivantes pour Databricks sur AWS.
Option de stockage cloud | Description |
|---|---|
compartiments AWS S3 | S3 est approprié pour la plupart des cas d'utilisation de Databricks. Consultez Connexion à un emplacement externe AWS S3. |
Buckets Cloudflare R2 | Cloudflare R2 est principalement destiné aux cas d'utilisation OpenSharing dans lesquels vous souhaitez éviter les frais de sortie de données. Voir Se connecter à un emplacement externe Cloudflare R2. |
Racine DBFS | La racine DBFS est un emplacement de stockage cloud hérité. Bien que Databricks déconseille le stockage de données dans le stockage racine DBFS, votre workspace pourrait le faire en raison de pratiques héritées. Voir Se connecter à un emplacement externe de la racine DBFS (hérité). |
Comment Unity Catalog régit-il l'accès au stockage cloud ?
Pour gérer l'accès au stockage cloud sous-jacent qui contient des tables et des volumes, Unity Catalog utilise un objet sécurisable appelé emplacement externe , qui définit un chemin d'accès à un emplacement de stockage cloud et les identifiants nécessaires pour accéder à cet emplacement. Ces identifiants sont, à leur tour, définis dans un objet sécurisable Unity Catalog appelé un identifiant de stockage . En accordant et en révoquant l'accès aux objets sécurisables d'emplacement externe dans Unity Catalog, vous contrôlez l'accès aux données dans l'emplacement de stockage dans le cloud. En accordant et en révoquant l'accès aux objets sécurisables des identifiants de stockage dans Unity Catalog, vous contrôlez la possibilité de créer des objets d'emplacement externe.
Aperçu des identifiants de stockage
Un identifiant de stockage représente un mécanisme d'authentification et d'autorisation pour accéder aux données stockées sur votre tenant cloud. Par exemple, un identifiant de stockage est associé à un rôle IAM pour les buckets S3, ou à un jeton API R2 pour les buckets Cloudflare R2.
Les privilèges accordés dans Unity Catalog contrôlent les utilisateurs et les groupes qui peuvent utiliser l'identifiant pour définir des emplacements externes. L'autorisation de créer et d'utiliser des identifiants de stockage ne doit être accordée qu'aux utilisateurs qui ont besoin de créer des objets d'emplacement externe.
Vue d'ensemble des emplacements externes
Un emplacement externe combine un chemin de stockage cloud avec un identifiant de stockage qui autorise l'accès au chemin spécifié. Plusieurs emplacements externes peuvent utiliser le même identifiant de stockage. Les emplacements externes peuvent faire référence à des chemins de stockage dans n'importe laquelle des options de stockage cloud prises en charge.
Le diagramme ci-dessous montre comment les emplacements externes référencent les identifiants de stockage et les emplacements de stockage cloud.

Dans ce diagramme :
- Chaque emplacement externe référence un identifiant de stockage et un emplacement de stockage cloud.
- Plusieurs emplacements externes peuvent faire référence au même identifiant de stockage. L' identifiant de stockage 1 accorde l'accès à tout ce qui se trouve sous le chemin
bucket/tables/*, de sorte que l' emplacement externe A et l' emplacement externe B y font tous deux référence.
Les emplacements externes sont utilisés dans Unity Catalog à la fois pour les assets de données externes, tels que les *tables externes* et les *volumes externes*, et pour les assets de données gérés, tels que les *tables gérées* et les *volumes gérés*. Pour plus d'informations sur la différence entre les assets de données externes et gérés dans Unity Catalog, consultez les tables Databricks et Que sont les volumes Unity Catalog ?.
Les privilèges accordés dans Unity Catalog contrôlent quels utilisateurs et groupes peuvent accéder au chemin de stockage cloud défini par l'emplacement externe. L'autorisation de créer et d'utiliser des emplacements externes ne doit être accordée qu'aux utilisateurs qui ont besoin de créer des tables externes, des volumes externes ou des emplacements de stockage gérés.
Pour en savoir plus sur les meilleures pratiques pour l'utilisation des emplacements externes, consultez Emplacements externes.
Utilisation des emplacements externes lors de la création de tables et de volumes externes
Les tables externes et les volumes externes enregistrés dans Unity Catalog sont essentiellement des pointeurs vers des données dans le stockage cloud que vous gérez en dehors de Databricks. Lorsque vous créez une table externe ou un volume externe dans Unity Catalog, vous devez référencer un chemin d'accès de stockage cloud qui est inclus dans un objet d'emplacement externe sur lequel vous avez reçu les privilèges adéquats. Pour plus d'informations sur la différence entre les assets de données externes et gérés dans Unity Catalog, consultez Tables Databricks et Qu'est-ce que les volumes Unity Catalog ? Pour les privilèges, consultez Accorder des permissions sur un emplacement externe.
Utilisation d'emplacements externes lorsque vous créez un stockage géré
Les tables gérées et les volumes gérés sont entièrement managés par Unity Catalog. Ils sont stockés par default dans un emplacement de stockage géré , qui peut être défini au niveau du métastore, du catalogue ou du schéma. Lorsque vous attribuez un emplacement de stockage géré à un metastore, un catalogue ou un schéma, vous devez référencer un objet d'emplacement externe et vous devez disposer des privilèges adéquats pour l'utiliser. Consultez Spécifier un emplacement de stockage géré dans Unity Catalog et Bonnes pratiques de Unity Catalog.
Accès basé sur le chemin aux données dans le stockage cloud
Bien que Unity Catalog prenne en charge l'accès basé sur les chemins aux tables externes et aux volumes externes à l'aide d'URI de stockage cloud, Databricks recommande aux utilisateurs de lire et d'écrire toutes les tables Unity Catalog à l'aide de noms de table et d'accéder aux données dans les volumes à l'aide des chemins /Volumes. Les volumes sont l'objet sécurisable que la plupart des utilisateurs de Databricks devraient utiliser pour interagir directement avec les données non tabulaires dans le stockage d'objets cloud. Consultez Qu'est-ce qu'un volume Unity Catalog ?.
Si vous mettez à jour les métadonnées de table externe à l'aide d'un client non-Databricks ou d'un accès basé sur le chemin depuis Databricks, ces métadonnées ne synchronisent pas automatiquement leur état avec Unity Catalog. Databricks déconseille de telles mises à jour de métadonnées, mais si vous en effectuez une, vous devez exécuter MSCK REPAIR TABLE <table-name> SYNC METADATA pour mettre à jour le schéma dans Unity Catalog. Voir REPAIR TABLE.
Workflow de gestion de l'accès au stockage cloud dans Unity Catalog
Pour gérer l'accès au stockage cloud à l'aide de Unity Catalog, procédez comme suit :
- Créez un objet d’identification de stockage qui contient une identification cloud à long terme, tel qu’un rôle IAM, avec un accès au chemin de stockage cloud.
- Créez un objet d'emplacement externe qui référence le chemin de stockage et l'objet d'informations d'identification de stockage.
- Référencez un chemin d'accès inclus dans l'emplacement externe lorsque vous créez des tables externes, des volumes externes ou des emplacements de stockage gérés default. Il peut s'agir du chemin d'accès exact défini dans l'emplacement externe ou d'un sous-chemin.