Lokalizacje zewnętrzne

Dotyczy:zaznacz pole wyboru oznaczone jako tak tylko wykaz aparatu Unity środowiska Uruchomieniowegozaznacz pole wyboru oznaczone jako takusługi SQL zaznacz pole wyboru oznaczone jako tak 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.

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

Diagram ER lokalizacji zewnętrznej

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