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 tabeller. Unity Catalog introducerar flera nya skyddsbara objekt som ger behörighet till data i molnobjektlagring.
lagringsautentiseringsuppgifter
Ett Unity Catalog-objekt som används för att abstrahera långsiktiga autentiseringsuppgifter från molnlagringsleverantörer.
-
Ett Unity Catalog-objekt som används för att koppla samman en URI för molnobjektlagring med en lagringsautentisering.
-
En tabell i Unity-katalog
skapad i en kataloghanterad extern platsav Unity-katalogen .
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.
Skaparen av en extern plats är dess ursprungliga ä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 bevilja å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 tabeller för att kapsla in åtkomst till enskilda filer på en extern plats.
Externa platsnamn är okvalificerade och måste vara unika inom metastore.
Lagringssökvägen för en extern plats kan inte finnas i en annan extern plats lagringssökväg eller i en extern tabells lagringssökväg med hjälp av en explicit lagringsautentiseringsuppgift.
Varning
Om ett schema (databas) har registrerats i hive-metaarkivet på arbetsytan, kommer alla filer på den schemaplatsen att tas bort rekursivt när du använder alternativet CASCADE
, oavsett tabelltyp (hanterad eller extern).
Om schemat är registrerat i ett Unity Catalog-metaarkiv tas filerna för Unity Catalog hanterade tabeller bort rekursivt. Filerna för externa tabeller 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 ett schema i ett Hive-metaarkiv till en plats med befintliga data. Du bör inte heller skapa nya externa tabeller på en plats som hanteras av Hive-metaarkivscheman eller som innehåller hanterade Unity Catalog-tabeller.
Grafisk representation av relationer
Följande diagram beskriver relationen mellan:
- autentiseringsuppgifter för lagring
- externa platser
- externa tabeller
- lagringsvä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