Udostępnij za pośrednictwem


Lokalizacje zewnętrzne

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