Внешние места
применимо: Databricks SQL
Databricks Runtime
Каталог Unity только
Каталог Unity и встроенное хранилище метаданных Azure Databricks Hive используют расположения по умолчанию для управляемых таблиц. Каталог Unity представляет несколько новых защищаемых объектов для предоставления разрешений на доступ к данным в облачном хранилище объектов.
-
Объект каталога Unity, используемый для абстрагирования долгосрочных учетных данных от поставщиков услуг облачного хранения.
-
Объект каталога Unity, используемый для связывания URI облачного хранилища объектов с учетными данными хранилища.
-
Таблица каталога Unity, созданная во внешнем расположении, управляемом каталогом Unity.
Внешнее расположение
Внешнее расположение — это защищаемый объект, который объединяет путь к хранилищу с учетными данными хранилища для авторизации доступа к этому пути.
Создатель внешнего расположения является его первоначальным владельцем. Владелец внешней локации и пользователи с правами MANAGE
могут изменять её имя, URI и учетные данные хранения.
После создания внешнего местоположения можно предоставить доступ к нему субъектам уровня учетной записи (пользователям и группам).
Пользователь или группа с разрешением на использование внешнего расположения могут обращаться к любому пути в хранилище в пределах пути этого расположения без прямого доступа к учетным данным хранилища.
Для более точного управления доступом можно использовать GRANT в внешних таблицах, чтобы инкапсулировать доступ к отдельным файлам во внешнем расположении.
Имена внешних расположений являются неквалифицированными и должны быть уникальными в пределах хранилища метаданных.
Путь к хранилищу любого внешнего расположения не может включаться в путь к хранилищу другого внешнего расположения или в путь к хранилищу внешней таблицы при использовании явных учетных данных для хранения.
Предупреждение
Если в хранилище метаданных Hive уровня рабочей области зарегистрирована схема (база данных), удаление схемы с помощью параметра CASCADE
приводит к удалению всех файлов в этом расположении схемы рекурсивно независимо от типа таблицы (управляемого или внешнего).
Если схема зарегистрирована в метахранилище каталога Unity, файлы управляемых таблиц каталога Unity удаляются рекурсивно. Однако файлы для внешних таблиц не удаляются. Эти файлы необходимо управлять напрямую с помощью поставщика облачных хранилищ.
Таким образом, чтобы избежать случайной потери данных, никогда не следует регистрировать схему в хранилище метаданных Hive на месте, где уже существуют данные. Не следует создавать новые внешние таблицы в местоположении, управляемом метаданными Hive, или содержащем управляемые таблицы Unity Catalog.
Графическое представление связей
На схеме ниже показана связь между следующими элементами:
- учетные данные хранилища;
- внешние локации
- внешние таблицы
- пути к хранилищам
- сущности системы управления доступом (IAM)
- учетные записи службы Azure.
Примеры
-- 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