Dela via


Skapa en extern plats för att ansluta molnlagring till Azure Databricks

Den här artikeln beskriver hur du konfigurerar ett externt platsobjekt i Unity Catalog för att styra åtkomsten till molnlagring från Azure Databricks.

Översikt över externa platser

Externa platser associerar autentiseringsuppgifter för lagring med lagringscontainrar för molnobjekt. Externa platser används för att definiera:

  • Hanterade lagringsplatser för hanterade tabeller och volymer. Hanterade lagringsplatser kan finnas på metaarkiv-, katalog- eller schemanivå. Se Ange en hanterad lagringsplats i Unity Catalog.

  • Platser för externa tabeller och externa volymer.

Externa platser kan referera till lagring i en Azure Data Lake Storage-lagringscontainer, AWS S3-bucket eller Cloudflare R2-bucket.

Diagrammet nedan representerar filsystemhierarkin för en enda molnlagrings bucket eller container, med fyra externa platser som delar en lagringsautentiseringsuppgift.

Externa platser

Översikt över skapande av extern plats

Du kan använda något av följande gränssnitt för att skapa en extern plats:

  1. Katalogutforskare

    Det här alternativet innehåller ett grafiskt användargränssnitt. Du kan använda Catalog Explorer för att skapa externa platser som refererar till: Azure Data Lake Storage-behållare, S3-behållare (endast läsbara), Cloudflare R2-behållare och DBFS-roten (äldre).

  2. SQL-kommandon i en notebook eller en Databricks SQL-fråga

  3. The Databricks CLI

  4. Terraform

Den här artikeln beskriver alternativ 1 och 2.

Kommentar

Lagring av data på DBFS-rotlagringsplatsen är en äldre metod, och Databricks rekommenderar mot det. Men om din arbetsyta lagrar data i DBFS-roten kan du skapa en extern plats för att styra åtkomsten till dessa data med hjälp av Unity Catalog. Mer information finns i Skapa en extern plats för data i DBFS-roten (äldre).

Mer information om användningen av externa platser och relationen mellan lagringsuppgifter och externa platser finns i Ansluta till molnobjektlagring med Unity Catalog.

Innan du börjar

Förutsättningar:

  • Du måste skapa Azure Data Lake Storage-lagringscontainern, AWS S3-bucketen eller Cloudflare R2-bucketen som du vill använda som extern plats innan du skapar det externa platsobjektet i Azure Databricks.

    • Azure Data Lake Storage-lagringskonton som du använder som externa platser måste ha ett hierarkiskt namnområde.
    • Använd inte punkt notation (till exempel incorrect.bucket.name.notation) i S3 bucketnamn. Även om AWS tillåter punkter i bucketnamn stöder Databricks inte S3-bucketar med punkt notation. Bucketar som innehåller punkter kan orsaka kompatibilitetsproblem med funktioner som Deltadelning på grund av SSL-certifikatverifieringsfel. Mer information finns i metodtipsen för namngivning av AWS-bucketnamn.

    • Sökvägar för externa platser får endast innehålla ASCII-standardtecken (bokstäver A–Z, , siffror 0–9och vanliga symboler som /, _, -a–z).

    • Hinken kan inte ha en S3-åtkomstkontroll-lista kopplad till sig.

Behörighetskrav:

  • Du måste ha CREATE EXTERNAL LOCATION-behörighet både på metaarkivet och lagringsautentiseringarna som refereras i den externa platsen. Metaarkivadministratörer har CREATE EXTERNAL LOCATION på metaarkivet som standard.
  • Om du skapar en extern plats för DBFS-rotlagringsplatsen kan systemet skapa lagringsautentiseringsuppgifterna åt dig, men du måste vara administratör för arbetsytan. Mer information finns i Skapa en extern plats för data i DBFS-roten (äldre)

Alternativ 1: Skapa en extern plats med Hjälp av Katalogutforskaren

Du kan skapa en extern plats manuellt med Hjälp av Katalogutforskaren.

Behörigheter och förutsättningar: se Innan du börjar.

Så här skapar du den externa platsen:

  1. Logga in på en arbetsyta som är ansluten till metastore.

  2. I sidofältet klickar du på dataikonen.Katalog.

  3. På sidan Snabbåtkomst klickar du på knappen Externa data > , går till fliken Externa platser och klickar på Skapa plats.

  4. Ange ett externt platsnamn.

  5. Välj lagringstyp: Azure Data Lake Storage, S3 (skrivskyddad), R2 eller DBFS-rot.

    Att lagra data i DBFS-roten är en okommentad, äldre metod. Mer information finns i Skapa en extern plats för data i DBFS-roten (äldre).

  6. Under URL-anger eller väljer du sökvägen till den externa platsen.

    För Azure Data Lake Storage, S3 och R2 har du följande alternativ:

    • Om du vill kopiera containersökvägen från en befintlig DBFS-monteringspunktklickar du på Kopiera från DBFS-.

    • Om du inte kopierar från en befintlig monteringspunkt använder du FÄLTET URL för att ange den container eller bucketsökväg som du vill använda som extern plats.

      Exempel: abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path> eller r2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>.

    För DBFS-rot:

    • Systemet fyller i undersökvägen till DBFS-rotlagringsplatsen. Om du är administratör för arbetsytan skapar systemet även lagringsautentiseringsuppgifterna åt dig.

    Se Skapa en extern plats för data i DBFS-roten (äldre).

  7. Välj den lagringsautentiseringsuppgift som ger åtkomst till den externa platsen.

    Kommentar

    Om din externa plats är för DBFS-roten och du är arbetsyteadministratör skapar systemet lagringsautentiseringsuppgifterna åt dig och du behöver inte välja någon.

    Om du inte har någon lagringsautentiseringsuppgift kan du skapa en:

    1. I rullgardinsmenyn Storage-autentiseringsuppgifter väljer du + Skapa nya lagringsuppgifter.

    2. Vilken information om autentiseringsuppgifter du anger beror på lagringstypen:

      För Azure Data Lake Storage anger du åtkomstanslutnings-ID och (valfritt) den användartilldelade hanterade identiteten som ger åtkomst till lagringsplatsen. Se Skapa en lagringsautentiseringsuppgift som har åtkomst till Azure Data Lake Storage

      För Cloudflare API-token anger du Cloudflare-kontot, åtkomstnyckelns ID och den hemliga åtkomstnyckeln. Se Skapa en lagringsautentiseringsuppgift för anslutning till Cloudflare R2.

      För AWS S3 anger du IAM-rollen ARN som ger åtkomst till lagringsplatsen. Se Skapa en lagringsautentiseringsuppgift för anslutning till AWS S3 (skrivskyddad).

  8. (Valfritt) Om du vill att användarna ska ha skrivskyddad åtkomst till den externa platsen klickar du på Avancerade alternativ och väljer Skrivskyddad. Mer information finns i Markera en extern plats som skrivskyddad.

    Externa platser som refererar till AWS S3-sökvägar är i sig skrivskyddade.

  9. (Valfritt) Om den externa platsen är avsedd för en federerad Hive-metastorekatalog klickar du på Avancerade alternativ och aktiverar Återgångsläge.

    Se Aktivera reservläge på externa platser.

  10. (Valfritt, endast för AWS S3-platser) Om S3-bucketen kräver SSE-kryptering kan du konfigurera en krypteringsalgoritm så att externa tabeller och volymer i Unity Catalog kan komma åt data i S3-bucketen.

    Anvisningar finns i Konfigurera en krypteringsalgoritm på en extern plats (endast AWS S3).

  11. (Valfritt) Om du vill aktivera möjligheten att prenumerera på ändringsmeddelanden på den externa platsen klickar du på Avancerade alternativ och väljer Aktivera filhändelser.

    Mer information finns i (Rekommenderas) Aktivera filhändelser för en extern plats.

  12. Klicka på Skapa.

  13. (Valfritt) Binda den externa platsen till specifika arbetsytor.

    Som standard kan alla privilegierade användare använda den externa platsen på valfri arbetsyta som är kopplad till metaarkivet. Om du bara vill tillåta åtkomst från specifika arbetsytor går du till fliken Arbetsytor och tilldelar arbetsytor. Se (Valfritt) Tilldela en extern plats till specifika arbetsytor.

  14. Gå till fliken Behörigheter för att bevilja behörighet att använda den externa platsen.

    För att någon ska kunna använda den externa platsen måste du bevilja behörigheter:

    • Om du vill använda den externa platsen för att lägga till en hanterad lagringsplats i metaarkiv, katalog eller schema beviljar du behörigheten CREATE MANAGED LOCATION .

    • Om du vill skapa externa tabeller eller volymer, bevilja åtkomst till CREATE EXTERNAL TABLE eller CREATE EXTERNAL VOLUME.

    1. Klicka på Tillåt.
    2. På dialogrutan Grant on <external location> väljer du användare, grupper eller tjänsternas huvudprinciper i Principals-fältet och väljer den behörighet som du vill bevilja.
    3. Klicka på Tillåt.

Alternativ 2: Skapa en extern plats med SQL

Om du vill skapa en extern plats med SQL kör du följande kommando i en notebook-fil eller SQL-frågeredigeraren. Ersätt platshållarvärdena. Nödvändiga behörigheter och krav finns i Innan du börjar.

  • <location-name>: Ett namn på den externa platsen. Om location_name innehåller specialtecken, till exempel bindestreck (-), måste det omges av backticks (` `). Se Namn.
  • <bucket-path>: Sökvägen i din molnklientorganisation som den här externa platsen ger åtkomst till. Exempel: abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path> eller r2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>.
  • <storage-credential-name>: Namnet på lagringsautentiseringen som tillåter läsning från och skrivning till lagringscontainern eller bucketens sökväg. Om namnet på lagringsautentiseringsuppgifterna innehåller specialtecken, till exempel bindestreck (-), måste det omges av backticks (` `).
CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];

Om du vill begränsa åtkomsten till externa platser till specifika arbetsytor i ditt konto, även kallat bindning av arbetsytor eller extern platsisolering, kan du läsa (Valfritt) Tilldela en extern plats till specifika arbetsytor.

(Valfritt) Tilldela en extern plats till specifika arbetsytor

Som standardinställning är en extern plats åtkomlig från alla arbetsytor i metastore. Det innebär att om en användare har beviljats behörighet (till exempel ) på den externa platsen kan de utöva den behörigheten från alla arbetsytor som READ FILESär kopplade till metaarkivet. Om du använder arbetsytor för att isolera åtkomst till användardata kanske du bara vill tillåta åtkomst till en extern plats från specifika arbetsytor. Den här funktionen kallas för bindning av arbetsytor eller extern platsisolering.

Vanliga användningsfall för att binda en extern plats till specifika arbetsytor är:

  • Att säkerställa att datatekniker som har behörighet på CREATE EXTERNAL TABLE en extern plats som innehåller produktionsdata kan skapa externa tabeller på den platsen endast på en produktionsarbetsyta.
  • Att säkerställa att datatekniker som har behörighet på READ FILES en extern plats som innehåller känsliga data bara kan använda specifika arbetsytor för att komma åt dessa data.

Mer information om hur du begränsar andra typer av dataåtkomst per arbetsyta finns i Begränsa katalogåtkomst till specifika arbetsytor.

Viktigt!

Bindningar för arbetsytor refereras till vid den tidpunkt då behörigheter mot den externa platsen utövas. Om en användare till exempel skapar en extern tabell genom att utfärda -instruktionen CREATE TABLE myCat.mySch.myTable LOCATION 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance'myWorkspace från arbetsytan utförs följande bindningskontroller för arbetsytor utöver vanliga behörighetskontroller för användare:

  • Är den externa platsen 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance' bunden till myWorkspace?
  • Är katalogen myCat bunden till myWorkspace med åtkomstnivå Read & Write?

Om den externa platsen därefter blir obunden från myWorkspace, fortsätter den externa tabellen att fungera.

Med den här funktionen kan du också fylla i en katalog från en central arbetsyta och göra den tillgänglig för andra arbetsytor med hjälp av katalogbindningar, utan att även behöva göra den externa platsen tillgänglig på de andra arbetsytorna.

Binda en extern plats till en eller flera arbetsytor

Om du vill tilldela en extern plats till specifika arbetsytor kan du använda Catalog Explorer eller Databricks CLI.

behörigheter som krävs: Metadatalageradministratör, extern platsägare eller MANAGE på den externa platsen.

Kommentar

Metaarkivadministratörer kan se alla externa platser i ett metaarkiv med hjälp av Catalog Explorer – och externa platsägare kan se alla externa platser som de äger i ett metaarkiv – oavsett om den externa platsen har tilldelats till den aktuella arbetsytan. Externa platser som inte är tilldelade till arbetsytan visas i grått.

Katalogutforskaren

  1. Logga in på en arbetsyta som är länkad till metaarkivet.

  2. I sidofältet klickar du på dataikonen.Katalog.

  3. På sidan Snabbåtkomst klickar du på knappen Externa data > för att gå till fliken Externa platser .

  4. Välj den externa platsen och gå till fliken Arbetsytor .

  5. På fliken Arbetsytor avmarkerar du kryssrutan Alla arbetsytor har åtkomst .

    Om den externa platsen redan är bunden till en eller flera arbetsytor är den här kryssrutan redan avmarkerad.

  6. Klicka på Tilldela till arbetsytor och ange eller hitta de arbetsytor som du vill tilldela.

Om du vill återkalla åtkomsten går du till fliken Arbetsytor, väljer arbetsytan och klickar på Återkalla. Om du vill tillåta åtkomst från alla arbetsytor markerar du kryssrutan Alla arbetsytor har åtkomst.

Kommandoradsgränssnitt (CLI)

Det finns två Databricks CLI-kommandogrupper och två steg som krävs för att tilldela en extern plats till en arbetsyta.

I följande exempel ersätter du <profile-name> med namnet på din Konfigurationsprofil för Azure Databricks-autentisering. Det bör innehålla värdet för en personlig åtkomsttoken, utöver arbetsytans instansnamn och arbetsyte-ID för arbetsytan där du genererade den personliga åtkomsttoken. Mer information finns i autentisering med personlig åtkomsttoken i Azure Databricks.

  1. external-locations Använd kommandogruppens update kommando för att ange den externa platsens isolation mode till ISOLATED:

    databricks external-locations update <my-location> \
    --isolation-mode ISOLATED \
    --profile <profile-name>
    

    Standardinställningen isolation-mode är OPEN för alla arbetsytor som är kopplade till metaarkivet.

  2. workspace-bindings Använd kommandogruppens update-bindings kommando för att tilldela arbetsytorna till den externa platsen:

    databricks workspace-bindings update-bindings external-location <my-location> \
    --json '{
      "add": [{"workspace_id": <workspace-id>}...],
      "remove": [{"workspace_id": <workspace-id>}...]
    }' --profile <profile-name>
    

    Använd egenskaperna "add" och "remove" för att lägga till eller ta bort arbetsytebindningar.

    Kommentar

    Skrivskyddad bindning (BINDING_TYPE_READ_ONLY) är inte tillgänglig för externa platser. Därför finns det ingen anledning att ange binding_type för bindningen av externa platser.

Om du vill visa en lista över alla arbetsytetilldelningar för en extern plats använder du workspace-bindings kommandogruppens get-bindings kommando:

databricks workspace-bindings get-bindings external-location <my-location> \
--profile <profile-name>

Se även Arbetsytebindningar i REST API-referensen.

Koppla bort en extern plats från en arbetsyta

Instruktioner för att återkalla arbetsytans åtkomst till en extern plats med hjälp av Katalogutforskaren workspace-bindings eller CLI-kommandogruppen ingår i Binda en extern plats till en eller flera arbetsytor.

Nästa steg