Externí umístění

Platí pro:zaškrtnutí označeného ano Pouze katalog Unity Pro Databricks SQL zaškrtnutí označeného ano Databricks zaškrtnutí označeného ano

Katalog Unity a integrovaný metastore Azure Databricks Hive používají výchozí umístění pro spravované tabulky. Katalog Unity zavádí několik nových zabezpečitelných objektů pro udělení oprávnění k datům v cloudovém úložišti objektů.

Externí umístění

Externí umístění je zabezpečitelný objekt, který kombinuje cestu k úložišti s přihlašovacími údaji úložiště, které autorizuje přístup k této cestě.

Tvůrce externího umístění je jeho počátečním vlastníkem. Vlastník externího umístění může upravit název externího umístění, identifikátor URI a přihlašovací údaje úložiště.

Po vytvoření externího umístění k němu můžete udělit přístup k objektům zabezpečení na úrovni účtu (uživatelům a skupinám).

Uživatel nebo skupina s oprávněním k použití externího umístění má přístup k libovolné cestě úložiště v cestě k umístění bez přímého přístupu k přihlašovacím údajům úložiště.

Pokud chcete dále upřesnit řízení přístupu, můžete použít grant u externích tabulek k zapouzdření přístupu k jednotlivým souborům v rámci externího umístění.

Názvy externích umístění jsou nekvalifikované a musí být jedinečné v rámci metastoru.

Cesta k úložišti libovolného externího umístění nemůže být obsažena v cestě k úložišti jiného externího umístění ani v cestě k úložišti externí tabulky pomocí explicitních přihlašovacích údajů úložiště.

Upozorňující

Pokud je ve vašem metastoru Hive na úrovni pracovního prostoru zaregistrované schéma (databáze), odstranění tohoto schématu pomocí CASCADE této možnosti způsobí, že se všechny soubory v tomto umístění schématu odstraní rekurzivně bez ohledu na typ tabulky (spravovaný nebo externí).

Pokud je schéma zaregistrované v metastoru katalogu Unity, odstraní se soubory spravovaných tabulek Katalogu Unity rekurzivně. Soubory pro externí tabulky se ale neodstraní. Tyto soubory musíte spravovat přímo pomocí poskytovatele cloudového úložiště.

Abyste se vyhnuli náhodné ztrátě dat, neměli byste nikdy registrovat schéma v metastoru Hive do umístění s existujícími daty. Ani byste neměli vytvářet nové externí tabulky v umístění spravovaném schématy metastoru Hive nebo obsahující spravované tabulky Katalogu Unity.

Grafické znázornění relací

Následující diagram popisuje vztah mezi:

  • přihlašovací údaje k úložišti
  • externí umístění
  • externí tabulky
  • cesty k úložišti
  • Entity IAM
  • Účty služeb Azure

Diagram ER externího umístění

Příklady

-- 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