Externa platser
gäller för: Databricks SQL
Databricks Runtime
Unity Catalog endast
Unity Catalog och det inbyggda Azure Databricks Hive-metaarkivet använder standardplatser för hanterade tables. Unity Catalog introducerar flera nya skyddsbara objekt som kopplar grant behörigheter till data i molnobjektlagring.
lagringsautentiseringsuppgifter
Ett Unity-Catalog-objekt som används för att abstrahera bort långsiktig lagring credentials från molnlagring providers.
-
Ett Unity-Catalog-objekt som används för att associera en lagrings-URI för molnobjekt med en lagringsautentiseringsuppgifter.
-
En Unity-Catalogtable som skapats i en Enhet Catalog-hanterad extern plats.
Extern plats
En extern plats är ett skyddsbart objekt som kombinerar en lagringssökväg med en lagringsautentiseringsuppgift som ger åtkomst till den sökvägen.
En extern plats skapare är dess första ägare. En extern plats ägare och användare med MANAGE
behörighet kan ändra den externa platsens namn, URI och lagringsautentiseringsuppgifter.
När en extern plats har skapats kan du grant åtkomst till den till kontonivå huvudnamn (användare och grupper).
En användare eller grupp med behörighet att använda en extern plats kan komma åt valfri lagringssökväg inom platsens sökväg utan direkt åtkomst till lagringsautentiseringsuppgifterna.
Om du vill förfina åtkomstkontrollen ytterligare kan du använda GRANT på externa tables för att kapsla in åtkomst till enskilda filer på en extern plats.
Externa platsnamn är okvalificerade och måste vara unika i metaarkivet.
Lagringssökvägen för en extern plats kan inte finnas i en annan extern plats' lagringssökväg, eller inom en extern table:s lagringssökväg med hjälp av explicit lagringsautentiseringsuppgifter.
Varning
Om en schema (databas) är registrerad i din hive-metaarkiv på arbetsytenivå, medför det att om du tar bort schema med alternativet CASCADE
, kommer alla filer på den schema platsen att tas bort rekursivt, oavsett table typ (hanterad eller extern).
Om schema är registrerat i ett Unity Catalog-metaarkiv tas filerna för Unity Cataloghanterade tables bort rekursivt. Filerna för externa tables tas dock inte bort. Du måste hantera dessa filer direkt med hjälp av molnlagringsprovidern.
För att undvika oavsiktlig dataförlust bör du därför aldrig registrera en schema i ett Hive-metaarkiv till en plats med befintliga data. Du bör inte heller skapa nya externa tables på en plats som hanteras av Hive-metastore-scheman eller som innehåller Unity Catalog-hanterad tables.
Grafisk representation av relationer
Följande diagram beskriver relationen mellan:
- lagring credentials
- externa platser
- externa tables
- lagringssökvägar
- IAM-entiteter
- Azure-tjänstkonton
Exempel
-- 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