Emplacements externes
S’applique à : Databricks SQL Databricks Runtime Unity Catalog uniquement
Unity Catalog et le metastore intégré Azure Databricks Hive utilisent des emplacements par défaut pour les tables managées. Unity Catalog introduit plusieurs nouveaux objets sécurisables pour accorder des privilèges aux données dans le stockage d’objets cloud.
Informations d’identification du stockage
Objet Unity Catalog utilisé pour extraire les informations d’identification à long terme des fournisseurs de stockage cloud.
-
Objet Unity Catalog utilisé pour associer un URI de stockage d’objets cloud à des informations d’identification de stockage.
-
Table Unity Catalog créée dans un emplacement externe managé par Unity Catalog.
Emplacement externe
Un emplacement externe est un objet sécurisable qui combine un chemin de stockage avec un identifiant de stockage qui autorise l’accès à ce chemin.
Le créateur d’un emplacement externe est son propriétaire initial. Le propriétaire d’un emplacement externe peut modifier le nom, l’URI et les informations d’identification de stockage de l’emplacement externe.
Après la création d’un emplacement externe, vous pouvez lui accorder l’accès aux principaux de niveau compte (utilisateurs et groupes).
Un utilisateur ou un groupe ayant l’autorisation d’utiliser un emplacement externe peut accéder à n’importe quel chemin de stockage dans le chemin de l’emplacement sans accès direct à l’identifiant de stockage.
Pour affiner le contrôle d’accès, vous pouvez utiliser l’instruction GRANT sur des tables externes pour encapsuler l’accès à des fichiers individuels au sein d’un emplacement externe.
Les noms d’emplacements externes ne sont pas qualifiés et doivent être uniques au sein du metastore.
Le chemin de stockage d’un emplacement externe ne peut pas être contenu dans le chemin de stockage d’un autre emplacement externe, ni dans celui d’une table externe à l’aide d’informations d’identification de stockage explicites.
Avertissement
Si un schéma (base de données) est inscrit dans votre metastore Hive au niveau de l’espace de travail, la suppression de ce schéma à l’aide de l’option CASCADE
entraîne la suppression récursive de tous les fichiers de cet emplacement de schéma, quel que soit le type de table (managé ou externe).
Si le schéma est inscrit dans un metastore Unity Catalog, les fichiers des tables managées Unity Catalog sont supprimés de manière récursive. Toutefois, les fichiers des tables externes ne sont pas supprimés. Vous devez gérer ces fichiers directement à l’aide du fournisseur de stockage cloud.
Par conséquent, pour éviter toute perte accidentelle de données, vous ne devez jamais inscrire un schéma dans un metastore Hive à un emplacement contenant des données existantes. Vous ne devez pas non plus créer de tables externes dans un emplacement géré par des schémas de metastore Hive ou contenant des tables managées Unity Catalog.
Représentation graphique des relations
Le diagramme suivant décrit la relation entre les éléments suivants :
- informations d’identification de stockage
- emplacements externes
- tables externes
- chemins de stockage
- entités IAM
- comptes de service Azure
Exemples
-- Grant `finance` user permission to create external location on `my_azure_storage_cred` storage credential, and then create an external location on the specific path to which `my_azure_storage_cred` has access
> GRANT CREATE EXTERNAL LOCATION ON STORAGE CREDENTIAL `my_azure_storage_cred` TO `finance`
> CREATE EXTERNAL LOCATION `finance_loc` URL 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance'
WITH (CREDENTIAL `my_azure_storage_cred`)
COMMENT 'finance';
-- Grant read, write, and create table access to the finance location to `finance` user
> GRANT READ FILES, WRITE FILES, CREATE EXTERNAL TABLE ON EXTERNAL LOCATION `finance_loc` TO `finance`;
-- `finance` can read from any storage path under abfss://depts/finance but nowhere else
> SELECT count(1) FROM `delta`.`abfss://container@storageaccount.dfs.core.windows.net/depts/finance` WITH (CREDENTIAL my_azure_storage_cred);
100
> SELECT count(1) FROM `delta`.`abfss://container@storageaccount.dfs.core.windows.net/depts/hr/employees` WITH (CREDENTIAL my_azure_storage_cred);
Error
-- `finance` can create an external table over specific object within the `finance_loc` location
> CREATE TABLE main.default.sec_filings LOCATION 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings';
-- Cannot list files under an external table with a user that doesn't have SELECT permission on it
> LIST 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings'
Error
> LIST 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings/_delta_log'
Error
Articles connexes
- Informations d’identification de stockage
- MODIFIER LES INFORMATIONS D’IDENTIFICATION DE STOCKAGE
- ALTER TABLE
- CRÉER UN EMPLACEMENT
- DÉCRIRE LES INFORMATIONS D’IDENTIFICATION DE STOCKAGE
- DESCRIBE TABLE
- DROP STORAGE CREDENTIAL
- DROP TABLE
- SHOW EXTERNAL LOCATIONS
- AFFICHER LES INFORMATIONS D’IDENTIFICATION DE STOCKAGE
- SHOW TABLES
- GRANT
- REVOKE