Externí umístění
Platí pro:Pouze katalog Unity Pro Databricks SQL Databricks
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ů.
-
Objekt katalogu Unity používaný k abstrakci dlouhodobých přihlašovacích údajů od poskytovatelů cloudového úložiště.
-
Objekt katalogu Unity použitý k přidružení identifikátoru URI cloudového úložiště objektů k přihlašovacím údajům úložiště.
-
Tabulka katalogu Unity vytvořená v externím umístění spravovaném katalogem Unity.
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í a uživatelé s oprávněním MANAGE
mohou změnit název, identifikátor URI a přihlašovací údaje externího umístění.
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
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