Externa platser

Gäller endast för:markerad ja Databricks SQL markerad ja Databricks Runtime markerad ja Unity Catalog

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.

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 kan ändra den externa platsens namn, URI och lagringsautentiseringsuppgifter.

När en extern plats har skapats kan du bevilja åtkomst till den till huvudkonton på kontonivå (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 GRANTexterna tabeller 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 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, tar du bort schemat med hjälp av CASCADE alternativet så att alla filer på den schemaplatsen tas bort rekursivt, oavsett tabelltyp (hanterad eller extern).

Om schemat är registrerat i ett Unity Catalog-metaarkiv tas filerna för hanterade Unity Catalog-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
  • lagringssökvägar
  • IAM-entiteter
  • Azure-tjänstkonton

Er-diagram för extern plats

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