Lokalizacje zewnętrzne
Dotyczy: tylko wykaz aparatu Unity środowiska Uruchomieniowego usługi SQL databricks usługi Databricks
Wykaz aparatu Unity i wbudowany magazyn metadanych Hive usługi Azure Databricks używają domyślnych lokalizacji dla tabel zarządzanych. Wykaz aparatu Unity wprowadza kilka nowych zabezpieczanych obiektów w celu udzielenia uprawnień do danych w magazynie obiektów w chmurze.
-
Obiekt wykazu aparatu Unity używany do abstrakcji długoterminowych poświadczeń od dostawców magazynu w chmurze.
-
Obiekt wykazu aparatu Unity używany do skojarzenia identyfikatora URI magazynu obiektów w chmurze z poświadczeniami magazynu.
-
Tabela wykazu aparatu Unity utworzona w lokalizacji zewnętrznej zarządzanej przez wykaz aparatu Unity.
Lokalizacja zewnętrzna
Lokalizacja zewnętrzna to zabezpieczany obiekt, który łączy ścieżkę magazynu z poświadczeniami magazynu, które autoryzuje dostęp do tej ścieżki.
Twórca lokalizacji zewnętrznej jest jego początkowym właścicielem. Właściciel lokalizacji zewnętrznej może zmodyfikować nazwę, identyfikator URI i poświadczenia magazynu lokalizacji zewnętrznej.
Po utworzeniu lokalizacji zewnętrznej można udzielić dostępu do niej podmiotom zabezpieczeń na poziomie konta (użytkownikom i grupom).
Użytkownik lub grupa z uprawnieniem do korzystania z lokalizacji zewnętrznej może uzyskać dostęp do dowolnej ścieżki magazynu w ścieżce lokalizacji bez bezpośredniego dostępu do poświadczeń magazynu.
Aby jeszcze bardziej uściślić kontrolę dostępu, można użyć funkcji GRANT w tabelach zewnętrznych, aby hermetyzować dostęp do poszczególnych plików w lokalizacji zewnętrznej.
Nazwy lokalizacji zewnętrznych są niekwalifikowane i muszą być unikatowe w magazynie metadanych.
Ścieżka magazynu dowolnej lokalizacji zewnętrznej nie może być zawarta w ścieżce magazynu innej lokalizacji zewnętrznej ani w ścieżce magazynu tabeli zewnętrznej przy użyciu jawnego poświadczenia magazynu.
Ostrzeżenie
Jeśli schemat (baza danych) jest zarejestrowany w magazynie metadanych programu Hive na poziomie obszaru roboczego, usunięcie tego schematu przy użyciu CASCADE
opcji powoduje ponowne usunięcie wszystkich plików w tej lokalizacji schematu niezależnie od typu tabeli (zarządzanego lub zewnętrznego).
Jeśli schemat jest zarejestrowany w magazynie metadanych wykazu aparatu Unity, pliki tabel zarządzanych wykazu aparatu Unity są usuwane rekursywnie. Pliki tabel zewnętrznych nie są jednak usuwane. Te pliki należy zarządzać bezpośrednio przy użyciu dostawcy magazynu w chmurze.
W związku z tym, aby uniknąć przypadkowej utraty danych, nigdy nie należy rejestrować schematu w magazynie metadanych Hive w lokalizacji z istniejącymi danymi. Nie należy również tworzyć nowych tabel zewnętrznych w lokalizacji zarządzanej przez schematy magazynu metadanych Hive lub zawierające tabele zarządzane przez wykaz aparatu Unity.
Graficzna reprezentacja relacji
Na poniższym diagramie opisano relację między:
- poświadczenia magazynu
- lokalizacje zewnętrzne
- tabele zewnętrzne
- ścieżki magazynu
- Jednostki IAM
- Konta usług platformy Azure
Przykłady
-- 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