Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment configurer un objet d’emplacement externe dans Unity Catalog pour contrôler l’accès au stockage cloud à partir d’Azure Databricks.
Vue d’ensemble des emplacements externes
Les emplacements externes associent des informations d’identification de stockage à des conteneurs de stockage d’objets cloud. Les emplacements externes sont utilisés pour définir :
Emplacements de stockage gérés pour les tables et volumes gérés. Les emplacements de stockage gérés peuvent se situer au niveau du metastore, du catalogue ou du schéma. Consultez Spécifier un emplacement de stockage managé dans Unity Catalog.
Emplacements des tables externes et des volumes externes.
Les emplacements externes peuvent référencer le stockage dans un conteneur de stockage Azure Data Lake Storage, un compartiment AWS S3 ou un compartiment Docker R2.
Le diagramme ci-dessous montre comment les emplacements externes référencent les informations d’identification de stockage et les emplacements de stockage cloud.
Dans ce diagramme :
- Chaque emplacement externe référence une information d’identification de stockage et un emplacement de stockage cloud.
- Une identifiant de stockage peut être utilisé par plusieurs emplacements externes.
Les informations d’identification de stockage 1 accordent l’accès à tout sous le chemin d’accès
bucket/tables/*, de sorte que l’emplacement externe A et l’emplacement externe B le référencent.
Vue d’ensemble de la création d’emplacements externes
Vous pouvez utiliser l’une des interfaces suivantes pour créer un emplacement externe :
-
Cette option fournit une interface utilisateur graphique. Vous pouvez utiliser l’Explorateur de catalogue pour créer des emplacements externes qui font référence aux conteneurs Azure Data Lake Storage, aux compartiments S3 (en lecture seule), aux compartiments Docker R2 et à la racine DBFS (hérité)
Commandes SQL dans un notebook ou une requête SQL sur Databricks
Cet article traite des options 1 et 2.
Note
Le stockage de données dans l'emplacement racine DBFS est une pratique obsolète, et Databricks recommande de ne pas l'utiliser. Toutefois, si votre espace de travail stocke des données dans la racine DBFS, vous pouvez créer un emplacement externe pour régir l’accès à ces données à l’aide du catalogue Unity. Pour plus d’informations, consultez Se connecter à un emplacement externe racine DBFS (hérité) .
Pour plus d’informations sur l’utilisation d’emplacements externes et la relation entre les informations d’identification de stockage et les emplacements externes, consultez Se connecter au stockage d’objets cloud à l’aide du catalogue Unity.
Avant de commencer
Prerequisites:
Vous devez créer le conteneur de stockage Azure Data Lake Storage, le compartiment AWS S3 ou le compartiment Docker R2 que vous souhaitez utiliser comme emplacement externe avant de créer l’objet d’emplacement externe dans Azure Databricks.
Les comptes de stockage Azure Data Lake Storage que vous utilisez en tant qu’emplacements externes doivent avoir un espace de noms hiérarchique.
Vous ne pouvez pas utiliser des conteneurs de stockage Azure avec des stratégies d’immuabilité (WORM - Write Once, Read Many) activées en tant qu’emplacements externes. Les stratégies d’immuabilité empêchent les autorisations DELETE requises par le catalogue Unity sur les conteneurs de stockage. Pour plus d’informations sur les stratégies d’immuabilité, consultez Configurer des stratégies d’immuabilité pour les conteneurs.
Si l’accès au réseau public est désactivé sur le compte de stockage, vous devez activer l’option Autoriser les services approuvés Azure pour autoriser Azure Databricks à se connecter au compte de stockage. Vous pouvez configurer ce paramètre à l’aide d’Azure CLI :
# Check current network rule set az storage account show --name <storage_account_name> --resource-group <resource_group_name> --query "networkRuleSet" # Set bypass for Azure Services az storage account update \ --name <storage_account_name> \ --resource-group <resource_group_name> \ --bypass AzureServices
N’utilisez pas la notation par points (par exemple,
incorrect.bucket.name.notation) dans les noms de compartiments S3. Bien que AWS autorise les points dans les noms de compartiments, Databricks ne prend pas en charge les compartiments S3 avec notation de points. Les buckets contenant des points peuvent entraîner des problèmes de compatibilité avec des fonctionnalités telles que Delta Sharing en raison d'échecs de validation des certificats SSL. Pour de plus amples informations, consultez les meilleures pratiques de nommage des compartiments AWS.Les chemins d’accès d’emplacement externe doivent contenir uniquement des caractères ASCII standard (lettres
A–Z,a–zchiffres0–9et symboles communs tels que/,_,-).
- Vous devez disposer d’informations d’identification de stockage définies dans Azure Databricks qui donnent accès au chemin de l’emplacement de stockage cloud. Consultez Créer un justificatif de stockage pour se connecter à Azure Data Lake Storage, Créer un justificatif de stockage pour se connecter à Cloudflare R2 ou Créer un justificatif de stockage pour se connecter à AWS S3 (en lecture seule).
Conditions requises pour les autorisations :
- Vous devez disposer du privilège
CREATE EXTERNAL LOCATIONsur le metastore et sur les informations d’identification de stockage référencées dans l’emplacement externe. Les administrateurs de metastore ontCREATE EXTERNAL LOCATIONsur le metastore par défaut. - Si vous créez un emplacement externe pour l’emplacement de stockage racine DBFS, le système peut créer les informations d’identification de stockage pour vous, mais vous devez être administrateur d’espace de travail. Pour plus d’informations, consultez Se connecter à un emplacement externe racine DBFS (hérité)
Option 1 : Créer un emplacement externe à l’aide de l’Explorateur de catalogues
Vous pouvez créer manuellement un emplacement externe à l’aide de Catalog Explorer.
Autorisations et prérequis : consultez Avant de commencer.
Pour créer l’emplacement externe :
Connectez-vous à un espace de travail associé au metastore.
Dans la barre latérale, cliquez sur
Catalogue.
Cliquez sur le bouton Données >externes, accédez à l’onglet Emplacements externes, puis cliquez sur Créer un emplacement.
Saisissez un nom d’emplacement externe.
Sélectionnez le type de stockage : Azure Data Lake Storage, S3 (lecture seule),R2 ou DBFS Root.
Le stockage de données dans la racine DBFS est une pratique héritée non recommandée. Pour plus d’informations, consultez Se connecter à un emplacement externe racine DBFS (hérité) .
Sous URL, saisissez ou sélectionnez le chemin d’accès à l’emplacement externe.
Pour Azure Data Lake Storage, S3 et R2, vous avez les options suivantes :
Pour copier le chemin du conteneur à partir d’un point de montage DBFS existant , cliquez sur Copier depuis DBFS.
Si vous ne copiez pas à partir d’un point de montage existant, utilisez le champ URL pour entrer le conteneur ou le chemin de compartiment que vous souhaitez utiliser comme emplacement externe.
Par exemple,
abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path>our2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>.
Pour la racine DBFS :
- Le système remplit le sous-chemin vers l’emplacement de stockage racine DBFS. Si vous êtes administrateur d’espace de travail, le système crée également les informations d’identification de stockage pour vous.
Consultez Se connecter à un emplacement externe racine DBFS (hérité) .
Sélectionnez les informations d’identification de stockage qui autorisent l’accès à l’emplacement externe.
Note
Si votre emplacement externe concerne la racine DBFS et que vous êtes administrateur d’espace de travail, le système crée les informations d’identification de stockage pour vous, et vous n’avez pas besoin de en sélectionner un.
Si vous n’avez pas d’informations d’identification de stockage, vous pouvez en créer un :
Dans la liste déroulante des identifiants de stockage, sélectionnez + Créer de nouveaux identifiants de stockage.
Les informations d’identification que vous entrez dépendent du type de stockage :
Pour Azure Data Lake Storage, entrez l’ID du connecteur d’accès et (éventuellement) l’identité managée affectée par l’utilisateur qui donne accès à l’emplacement de stockage. Consultez Créer des informations d’identification de stockage qui accèdent à Azure Data Lake Storage
Pour les jetons d’API Cloudflare, entrez le compte Cloudflare, l’ID de clé d’accès et la clé d’accès secrète. Voir Créer des informations d’identification de stockage pour la connexion à Cloudflare R2.
Pour AWS S3, entrez l’ARN du rôle IAM qui autorise l’accès à l’emplacement de stockage. Consultez Créer des informations d’identification de stockage pour la connexion à AWS S3 (en lecture seule).
(Facultatif) Si vous souhaitez que les utilisateurs aient un accès en lecture seule à l’emplacement externe, cliquez sur Options avancées, puis sélectionnez Lecture seule. Pour plus d’informations, consultez Marquer un emplacement externe en lecture seule.
Les emplacements externes qui référencent des chemins AWS S3 sont, par nature, en lecture seule.
(Facultatif) Si l’emplacement externe est destiné à un catalogue fédéré de metastore Hive, cliquez sur Options avancées et activez Mode de secours.
Consultez Activer le mode de secours sur des emplacements externes.
(Facultatif, pour les emplacements AWS S3 uniquement) Si le compartiment S3 nécessite un chiffrement SSE, vous pouvez configurer un algorithme de chiffrement pour permettre aux tables et volumes externes dans le catalogue Unity d’accéder aux données de votre compartiment S3.
Pour obtenir des instructions, consultez Configurer un algorithme de chiffrement sur un emplacement externe (AWS S3 uniquement).
(Facultatif) Pour permettre la possibilité de s’abonner aux notifications de modification sur l’emplacement externe, cliquez sur Options avancées , puis sélectionnez Activer les événements de fichier.
Pour plus d’informations, consultez (Recommandé) Activer les événements de fichier pour un emplacement externe.
Cliquez sur Créer.
(Facultatif) Liez l’emplacement externe à des espaces de travail spécifiques.
Par défaut, tout utilisateur disposant des privilèges requis peut utiliser l’emplacement externe sur n’importe quel espace de travail associé au metastore. Si vous voulez autoriser l’accès uniquement à certains espaces de travail, accédez à l’onglet Espaces de travail et attribuez les espaces de travail. Voir (Facultatif) Affecter un emplacement externe à des espaces de travail spécifiques.
Accédez à l’onglet Autorisations pour accorder l’autorisation d’utiliser l’emplacement externe.
Pour que quelqu’un puisse utiliser l’emplacement externe, vous devez accorder des autorisations :
- Pour utiliser l’emplacement externe afin d’ajouter un emplacement de stockage managé au metastore, au catalogue ou au schéma, accordez le privilège
CREATE MANAGED LOCATION. - Pour créer des tables ou des volumes externes, accordez les privilèges
CREATE EXTERNAL TABLEouCREATE EXTERNAL VOLUME.
- Cliquez sur Accorder.
- Dans la boîte de dialogue Accorder sur
<external location>, sélectionnez les utilisateurs, les groupes ou les principaux de service dans le champ Principaux, puis sélectionnez le privilège que vous souhaitez accorder. - Cliquez sur Accorder.
- Pour utiliser l’emplacement externe afin d’ajouter un emplacement de stockage managé au metastore, au catalogue ou au schéma, accordez le privilège
Option 2 : Créer un emplacement externe à l’aide de SQL
Pour créer un emplacement externe à l’aide de SQL, exécutez la commande suivante dans un notebook ou dans l’éditeur de requête SQL. Remplacez les valeurs d’espace réservé. Pour connaître les autorisations requises et les prérequis, consultez Avant de commencer.
-
<location-name>: nom de l’emplacement externe. Silocation_namecontient des caractères spéciaux, tels que des traits d’union (-), il doit être entouré d’accents graves (` `). Voir Les noms.
-
<bucket-path>: chemin d’accès de votre locataire Cloud auquel cet emplacement externe accorde l’accès. Par exemple,abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path>our2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>. -
<storage-credential-name>: nom des informations d’identification de stockage qui autorisent la lecture et l’écriture dans le conteneur de stockage ou le chemin d’accès du compartiment. Si le nom des informations d’identification de stockage contient des caractères spéciaux, tels que des traits d’union (-), il doit être entouré d’accents graves (` `).
CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];
Si vous souhaitez limiter l’accès à un emplacement externe à des espaces de travail spécifiques dans votre compte, ce qu’on appelle aussi la liaison d’espaces de travail ou l’isolation des emplacements externes, consultez (Facultatif) Affecter un emplacement externe à des espaces de travail spécifiques.
(Facultatif) Affecter un emplacement externe à des espaces de travail spécifiques
Par défaut, un emplacement externe est accessible depuis tous les espaces de travail du metastore. Cela signifie que si un utilisateur a reçu un privilège (comme READ FILES) sur cet emplacement externe, il peut exercer ce privilège depuis n’importe quel espace de travail associé au metastore. Si vous utilisez des espaces de travail pour isoler l’accès aux données utilisateur, vous pouvez restreindre l’accès à un emplacement externe à certains espaces de travail uniquement. Cette fonctionnalité est appelée liaison d’espaces de travail ou isolation des emplacements externes.
Les cas d’usage classiques pour lier un emplacement externe à des espaces de travail spécifiques sont notamment les suivants :
- Faire en sorte que les ingénieurs de données disposant du privilège
CREATE EXTERNAL TABLEsur un emplacement externe qui contient des données de production peuvent créer des tables externes sur cet emplacement seulement depuis un espace de travail de production. - Faire en sorte que les ingénieurs de données disposant du privilège
READ FILESsur un emplacement externe qui contient des données sensibles peuvent accéder à ces données seulement depuis des espaces de travail spécifiques.
Pour plus d’informations sur la restriction d’autres types d’accès aux données par espace de travail, consultez Limiter l’accès au catalogue à des espaces de travail spécifiques.
Important
Les liaisons d’espaces de travail sont vérifiées au moment où des privilèges sont exercés sur les emplacements externes. Par exemple, si un utilisateur crée une table externe en émettant l’instruction CREATE TABLE myCat.mySch.myTable LOCATION 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance' depuis l’espace de travail myWorkspace, les vérifications de liaison d’espaces de travail suivantes sont effectuées en plus des vérifications habituelles des privilèges utilisateur :
- L’emplacement externe couvrant
'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance'est-il lié àmyWorkspace? - Le catalogue
myCatest-il lié àmyWorkspaceavec un niveau d’accèsRead & Write?
Si l’emplacement externe est par la suite dissocié de myWorkspace, la table externe continue de fonctionner.
Cette fonctionnalité vous permet également de remplir un catalogue depuis un espace de travail central et de le mettre à la disposition d’autres espaces de travail à l’aide de liaisons de catalogue, sans avoir à rendre l’emplacement externe disponible dans ces autres espaces de travail.
Lorsque le contrôle de sortie serverless n’est pas configuré, les liaisons avec un emplacement externe sont vérifiées uniquement lorsque cet emplacement est référencé directement, par exemple dans une CREATE TABLE ou CREATE EXTERNAL TABLE instruction.
Lorsque le contrôle de sortie serverless est configuré, les liaisons sont également vérifiées indirectement, par exemple lorsque les utilisateurs accèdent aux données d’un catalogue ou d’une table externe qui dépend de cet emplacement externe. Dans ce cas, les liaisons d’emplacement externe doivent correspondre aux liaisons de catalogue ou être désactivées en sélectionnant tous les espaces de travail ayant accès à l’emplacement externe ou en modifiant la valeur isolation-modeOPEN.
Lier un emplacement externe à un ou plusieurs espaces de travail
Pour affecter un emplacement externe à des espaces de travail spécifiques, vous pouvez utiliser Catalog Explorer ou l’interface CLI Databricks.
Autorisations requises: administrateur du metastore, propriétaire de l’emplacement externe ou MANAGE sur l’emplacement externe.
Note
Les administrateurs de metastore peuvent voir tous les emplacements externes d’un metastore en utilisant Catalog Explorer et les propriétaires d’emplacement externe peuvent voir tous les emplacements externes qu’ils possèdent dans un metastore, que l’emplacement externe soit ou non affecté à l’espace de travail actuel. Les emplacements externes qui ne sont pas affectés à l’espace de travail apparaissent en grisé.
Explorateur de catalogues
Connectez-vous à un espace de travail lié au metastore.
Dans la barre latérale, cliquez sur
Catalogue.
Cliquez sur le bouton Données >externes pour accéder à l’onglet Emplacements externes.
Sélectionnez l’emplacement externe et accédez à l’onglet Espaces de travail.
Dans l’onglet Espaces de travail, décochez la case Tous les espaces de travail ont accès.
Si votre emplacement externe est déjà lié à un ou plusieurs espaces de travail, cette case est déjà décochée.
Cliquez sur Affecter à des espaces de travail, puis saisissez ou recherchez les espaces de travail auxquels vous souhaitez affecter l’emplacement.
Pour révoquer l’accès, accédez à l’onglet Espaces de travail, sélectionnez l’espace de travail, puis cliquez sur Révoquer. Pour autoriser l’accès depuis tous les espaces de travail, cochez la case Tous les espaces de travail ont accès.
CLI
Deux groupes de commandes de l’interface CLI Databricks et deux étapes sont nécessaires pour affecter un emplacement externe à un espace de travail.
Dans les exemples ci-dessous, remplacez <profile-name> par le nom de votre profil de configuration d’authentification Azure Databricks. Il doit contenir la valeur d’un jeton d’accès personnel, ainsi que le nom de l’instance de l’espace de travail et l’ID de l’espace de travail où vous avez généré le jeton d’accès personnel. Consultez l’authentification par jeton d’accès personnel (déconseillée).
Utilisez la commande
external-locationsdu groupeupdatepour définir leisolation modede l’emplacement externe surISOLATED:databricks external-locations update <my-location> \ --isolation-mode ISOLATED \ --profile <profile-name>Le
isolation-modepar défaut estOPENpour tous les espaces de travail associés au metastore.Utilisez la commande
workspace-bindingsdu groupeupdate-bindingspour affecter les espaces de travail à l’emplacement externe :databricks workspace-bindings update-bindings external-location <my-location> \ --json '{ "add": [{"workspace_id": <workspace-id>}...], "remove": [{"workspace_id": <workspace-id>}...] }' --profile <profile-name>Utilisez les propriétés
"add"et"remove"pour ajouter ou supprimer des liaisons d’espaces de travail.Note
La liaison en lecture seule (
BINDING_TYPE_READ_ONLY) n’est pas disponible pour les emplacements externes. Par conséquent, il n’est pas nécessaire de définirbinding_typepour la liaison d’emplacements externes.
Pour répertorier toutes les attributions d’espace de travail pour un emplacement externe, utilisez la commande workspace-bindings du groupe get-bindings :
databricks workspace-bindings get-bindings external-location <my-location> \
--profile <profile-name>
Consultez également Liaisons d’espaces de travail dans les informations de référence sur l’API REST.
Dissocier un emplacement externe d’un espace de travail
Les instructions à suivre pour révoquer l’accès d’un espace de travail à un emplacement externe en utilisant Catalog Explorer ou le groupe de commandes CLI workspace-bindings figurent dans Lier un emplacement externe à un ou plusieurs espaces de travail.
Étapes suivantes
- Accorder à d’autres utilisateurs l’autorisation d’utiliser des emplacements externes. Consultez Gérer les emplacements externes.
- Définir des emplacements de stockage managés à l’aide d’emplacements externes. Consultez Spécifier un emplacement de stockage managé dans Unity Catalog.
- Définir des tables externes à l’aide d’emplacements externes. Consultez Travailler avec des tables externes.
- Définir des volumes externes à l’aide d’emplacements externes. Consultez Que sont les volumes Unity Catalog ?.