vi nyligen meddelade stöd för AWS Lake Formation finmaskiga åtkomstkontrollpolicyer i Amazonas Athena frågor för data lagrade i alla filformat som stöds med tabellformat som Apache Iceberg, Apache Hudi och Apache Hive. AWS Lake Formation låter dig definiera och tillämpa databas-, tabell- och kolumnnivå åtkomstpolicyer för att fråga Iceberg-tabeller lagrade i Amazon S3. Lake Formation tillhandahåller ett auktoriserings- och styrningslager på data som lagras i Amazon S3. Denna funktion kräver att du uppgraderar till Athena motor version 3.
Stora organisationer har ofta lines of businesses (LoBs) som arbetar med autonomi när det gäller att hantera sina affärsdata. Det gör att dela data över LoBs icke-trivialt. Dessa organisationer har antagit en federerad modell, där varje LoB har autonomi att fatta beslut om deras data. De använder utgivar-/konsumentmodellen med ett centraliserat styrningslager som används för att upprätthålla åtkomstkontroller. Om du är intresserad av att lära dig mer om datanätarkitektur, besök Designa en datanätarkitektur med AWS Lake Formation och AWS Glue. Med Athena-motorversion 3 kan kunder använda samma finkorniga kontroller för öppna dataramverk som Apache Iceberg, Apache Hudi och Apache Hive.
I det här inlägget djupdyker vi i ett användningsfall där du har en producent/konsumentmodell med datadelning aktiverad för att ge begränsad åtkomst till en Apache Iceberg-tabell som konsumenten kan fråga. Vi kommer att diskutera kolumnfiltrering för att begränsa vissa rader, filtrering för att begränsa åtkomst på kolumnnivå, schemautveckling och tidsresor.
Lösningsöversikt
För att illustrera funktionaliteten hos finkorniga behörigheter för Apache Iceberg-bord med Athena och Lake Formation, ställer vi in följande komponenter:
- I producentkontot:
- An AWS-lim Datakatalog för att registrera schemat för en tabell i Apache Iceberg-format
- Lake Formation för att ge finkornig tillgång till konsumentkontot
- Athena för att verifiera data från producentkontot
- På konsumentkontot:
- AWS Resource Access Manager (AWS RAM) för att skapa ett handslag mellan producentdatakatalogen och konsumenten
- Lake Formation för att ge finkornig tillgång till konsumentkontot
- Athena för att verifiera data från producentkonto
Följande diagram illustrerar arkitekturen.
Förutsättningar
Innan du börjar, se till att du har följande:
Inställning av dataproducent
I det här avsnittet presenterar vi stegen för att ställa in dataproducenten.
Skapa en S3-bucket för att lagra tabelldata
Vi skapar en ny S3-bucket för att spara data för tabellen:
- På Amazon S3 -konsolen, skapa en S3-hink med unikt namn (för det här inlägget använder vi
iceberg-athena-lakeformation-blog
). - Skapa producentmappen inuti hinken för att använda för bordet.
Registrera S3-vägen som lagrar tabellen med Lake Formation
Vi registrerar S3 hela vägen i Lake Formation:
- Navigera till Lake Formation-konsolen.
- Om du loggar in för första gången uppmanas du att skapa en administratörsanvändare.
- I navigeringsfönstret, under Registrera och intagväljer Data sjö platser.
- Välja Registrera plats, och ange S3-skopbanan som du skapade tidigare.
- Välja
AWSServiceRoleForLakeFormationDataAccess
för IAM roll.
För ytterligare information om roller, se Krav för roller som används för att registrera platser.
Om du aktiverade kryptering av din S3-bucket måste du ge behörighet för Lake Formation att utföra kryptering och dekrypteringsoperationer. Hänvisa till Registrera en krypterad Amazon S3-plats för vägledning.
- Välja Registrera plats.
Skapa ett isbergsbord med Athena
Låt oss nu skapa tabellen med Athena med stöd av Apache Iceberg-format:
- Välj på Athena-konsolen Frågeredigerare i navigeringsfönstret.
- Om du använder Athena för första gången, under Inställningarväljer hantera och ange S3-bucket-platsen som du skapade tidigare (
iceberg-athena-lakeformation-blog/producer
). - Välja Save.
- I frågeredigeraren anger du följande fråga (ersätt platsen med S3-hinken som du registrerade med Lake Formation). Observera att vi använder standarddatabasen, men du kan använda vilken annan databas som helst.
- Välja Körning.
Dela tabellen med konsumentkontot
För att illustrera funktionalitet implementerar vi följande scenarier:
- Ge åtkomst till valda kolumner
- Ge åtkomst till valda rader baserat på ett filter
Följ följande steg:
- På Lake Formation-konsolen, i navigeringsfönstret under Datakatalogväljer Datafilter.
- Välja Skapa nytt filter.
- För Datafilternamn, stiga på
blog_data_filter
. - För Måldatabas, stiga på
lf-demo-db
. - För Måltabell, stiga på
consumer_iceberg
. - För Åtkomst på kolumnnivå, Välj Inkludera kolumner.
- Välj kolumner att dela med konsumenten:
country, address, contactfirstname, city, customerid,
ochcustomername
. - För Radfilteruttryck, ange filtret
country='France'
. - Välja Skapa filter.
Låt oss nu ge tillgång till konsumentkontot på consumer_iceberg
tabell.
- Välj i navigeringsfönstret Bord.
- Välj tabellen konsument_isberg och välj Grant på Handlingar meny.
- Välja Externa konton.
- Ange det externa konto-ID.
- Välja Namngivna datakatalogresurser.
- Välj din databas och tabell.
- För Datafilter, välj det datafilter du skapade.
- För Datafilterbehörigheter och Beviljade behörigheter, Välj Välja.
- Välja Grant.
Datakonsumentkonfiguration
För att ställa in datakonsumenten accepterar vi resursdelningen och skapar en tabell med AWS RAM och Lake Formation. Slutför följande steg:
- Logga in på konsumentkontot och navigera till AWS RAM-konsolen.
- Enligt Delade med mig välj i navigeringsfönstret Resursandelar.
- Välj din resursandel.
- Välja Acceptera resursandel.
- Notera namnet på resursresursen som ska användas i nästa steg.
- Navigera till Lake Formation-konsolen.
- Om du loggar in för första gången uppmanas du att skapa en administratörsanvändare.
- Välja Databaser i navigeringsfönstret och välj sedan din databas.
- På Handlingar meny, välj Skapa resurslänk.
- För Resurslänkens namn, ange namnet på din resurslänk (t.ex.
consumer_iceberg
). - Välj din databas och delade tabell.
- Välja Skapa.
Validera lösningen
Nu kan vi köra olika operationer på tabellerna för att validera de finkorniga åtkomstkontrollerna.
Insättningsoperation
Låt oss infoga data i consumer_iceberg
tabell i producentkontot och validera att datafiltreringen fungerar som förväntat i konsumentkontot.
- Logga in på producentkontot.
- Välj på Athena-konsolen Frågeredigerare i navigeringsfönstret.
- Använd följande SQL för att skriva och infoga data i Iceberg-tabellen. Använd frågeredigeraren för att köra en fråga i taget. Du kan markera/välja en fråga i taget och klicka på "Kör"/"Kör igen:
- Använd följande SQL för att läsa och välja data i Iceberg-tabellen:
- Logga in på konsumentkontot.
- I Athena-frågeredigeraren kör du följande SELECT-fråga på den delade tabellen:
Baserat på filtren har konsumenten synlighet till en delmängd av kolumner och rader där landet är Frankrike.
Uppdatera/ta bort operationer
Låt oss nu uppdatera en av raderna och ta bort en från datamängden som delas med konsumenten.
- Logga in på producentkontot.
- Uppdatering
city='Paris' WHERE city='Reims'
och radera radencustomerid = 3;
- Verifiera den uppdaterade och borttagna datamängden:
- Logga in på konsumentkontot.
- I Athena-frågeredigeraren kör du följande SELECT-fråga på den delade tabellen:
Vi kan observera att endast en rad är tillgänglig och staden uppdateras till Paris.
Schemautveckling: Lägg till en ny kolumn
Låt oss uppdatera en av raderna och ta bort en från datamängden som delas med konsumenten.
- Logga in på producentkontot.
- Lägg till en ny kolumn som heter
geo_loc
i Iceberg-bordet. Använd frågeredigeraren för att köra en fråga i taget. Du kan markera/välja en fråga i taget och klicka på "Kör"/"Kör igen:
För att ge synlighet till de nyligen tillagda geo_loc
kolumnen måste vi uppdatera datafiltret Lake Formation.
- Välj på Lake Formation-konsolen Datafilter i navigeringsfönstret.
- Välj ditt datafilter och välj Redigera.
- Enligt Åtkomst på kolumnnivå, lägg till den nya kolumnen (
geo_loc
). - Välja Save.
- Logga in på konsumentkontot.
- Kör följande i Athena-frågeredigeraren
SELECT
fråga på den delade tabellen:
Den nya kolumnen geo_loc
är synlig och en extra rad.
Schemautveckling: Ta bort kolumn
Låt oss uppdatera en av raderna och ta bort en från datamängden som delas med konsumenten.
- Logga in på producentkontot.
- Ändra tabellen för att ta bort adresskolumnen från Iceberg-tabellen. Använd frågeredigeraren för att köra en fråga i taget. Du kan markera/välja en fråga i taget och klicka på "Kör"/"Kör igen:
Vi kan observera att kolumnadressen inte finns i tabellen.
- Logga in på konsumentkontot.
- I Athena-frågeredigeraren kör du följande SELECT-fråga på den delade tabellen:
Kolumnadressen finns inte i tabellen.
Tidsresa
Vi har nu bytt Iceberg-bordet flera gånger. Iceberg-bordet håller reda på ögonblicksbilderna. Utför följande steg för att utforska tidsresefunktionen:
- Logga in på producentkontot.
- Fråga systemtabellen:
Vi kan observera att vi har genererat flera ögonblicksbilder.
- Notera en av
committed_at
värden som ska användas i nästa steg (för det här exemplet,2023-01-29 21:35:02.176 UTC
). - Använd tidsresor för att hitta tabellens ögonblicksbild. Använd frågeredigeraren för att köra en fråga i taget. Du kan markera/välja en fråga i taget och klicka på "Kör"/"Kör igen:
Städa upp
Utför följande steg för att undvika framtida avgifter:
- På Amazon S3-konsolen, ta bort bordsförvaringshinken (för detta inlägg, isberg-athena-lakeformation-blogg).
- Kör följande kommandon i producentkontot på Athena-konsolen för att ta bort tabellerna du skapade:
- Återkalla behörigheter till konsumentkontot i producentkontot på Lake Formation-konsolen.
- Ta bort S3-bucket som används för Athena-frågeresultatplatsen från konsumentkontot.
Slutsats
Med stöd för cross account, finkorniga åtkomstkontrollpolicyer för format som Iceberg, har du flexibiliteten att arbeta med alla format som stöds av Athena. Möjligheten att utföra CRUD-operationer mot data i din S3-datasjö i kombination med Lake Formation finkorniga åtkomstkontroller för alla tabeller och format som stöds av Athena ger möjligheter att förnya och förenkla din datastrategi. Vi vill gärna höra din feedback!
Om författarna
Kishore Dhamodaran är Senior Solutions Architect på AWS. Kishore hjälper strategiska kunder med deras molnföretagsstrategi och migrationsresa, och utnyttjar hans år av industri- och molnerfarenhet.
Jack Ye är en mjukvaruingenjör i Athena Data Lake and Storage-teamet på AWS. Han är Apache Iceberg Committer och PMC-medlem.
Chris Olson är en mjukvaruutvecklingsingenjör på AWS.
Xiaoxuan Li är en mjukvaruutvecklingsingenjör på AWS.
Rahul Sonawane är Principal Analytics Solutions Architect på AWS med AI/ML och Analytics som sitt specialområde.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. Tillgång här.
- Källa: https://aws.amazon.com/blogs/big-data/interact-with-apache-iceberg-tables-using-amazon-athena-and-cross-account-fine-grained-permissions-using-aws-lake-formation/
- :är
- $UPP
- 1
- 10
- 100
- 7
- a
- förmåga
- Om oss
- Acceptera
- tillgång
- Konto
- tvärs
- lagt till
- Annat
- ytterligare information
- adress
- administration
- antagen
- mot
- AI / ML
- Alla
- tillåter
- amason
- Amazonas Athena
- analytics
- och
- Apache
- arkitektur
- ÄR
- OMRÅDE
- Konst
- AS
- At
- tillstånd
- tillgänglig
- undvika
- AWS
- AWS Lake Formation
- dragen tillbaka
- baserat
- mellan
- företag
- företag
- by
- kallas
- KAN
- katalog
- centraliserad
- vissa
- byta
- avgifter
- Välja
- Stad
- klick
- cloud
- Kolumn
- Kolonner
- COM
- kombinerad
- fullborda
- komponenter
- Konsol
- Konsumenten
- kontroll
- kontroller
- land
- skapa
- skapas
- Skapa
- skapande
- Cross
- Kunder
- datum
- datasjö
- datadeling
- datstrategi
- Databas
- beslut
- djup
- djupdykning
- Standard
- Utveckling
- olika
- diskutera
- ner
- Drop
- varje
- Tidigare
- redaktör
- EMEA
- aktiverad
- krypterad
- kryptering
- Motor
- ingenjör
- ange
- Företag
- Eter (ETH)
- Utvecklingen
- exempel
- förväntat
- erfarenhet
- utforska
- extern
- Fil
- filtrera
- filtrering
- filter
- hitta
- Förnamn
- första gången
- Flexibilitet
- efter
- För
- format
- bildning
- ramar
- Frankrike
- från
- full
- funktionalitet
- framtida
- genereras
- skaffa sig
- Ge
- styrning
- bevilja
- vägleda
- Har
- har
- höra
- hjälper
- Bikupa
- html
- http
- HTTPS
- ID
- genomföra
- in
- Inc.
- industrin
- informationen
- förnya
- interagera
- intresserad
- IT
- resa
- jpg
- sjö
- land
- lager
- inlärning
- Nivå
- hävstångs
- BEGRÄNSA
- rader
- LINK
- läge
- älskar
- Lyon
- göra
- GÖR
- hantera
- medlem
- Meny
- migration
- modell
- mer
- multipel
- namn
- Navigera
- Navigering
- Behöver
- Nya
- Nästa
- NYC
- observera
- of
- on
- ONE
- öppet
- öppna uppgifter
- driva
- Verksamhet
- möjligheter
- organisationer
- Övriga
- panelen
- paris
- bana
- utföra
- behörigheter
- plato
- Platon Data Intelligence
- PlatonData
- Strategier
- Inlägg
- presentera
- Principal
- producent
- ge
- ger
- RAM
- Läsa
- nyligen
- reflekterad
- registrera
- registrerat
- ersätta
- Kräver
- resurs
- begränsa
- begränsad
- resultera
- Roll
- roller
- RAD
- Körning
- Samma
- Save
- scenarier
- §
- vald
- senior
- in
- Dela
- delas
- delning
- förenkla
- Snapshot
- Mjukvara
- mjukvaruutveckling
- Programvara ingenjör
- Lösningar
- Specialitet
- SQL
- igång
- Steg
- förvaring
- lagra
- lagras
- Strategisk
- Strategi
- Sträng
- sådana
- stödja
- Som stöds
- system
- bord
- grupp
- den där
- Smakämnen
- deras
- Dessa
- tid
- tidsresor
- gånger
- tidsstämpel
- till
- spår
- färdas
- under
- unika
- Uppdatering
- uppdaterad
- uppgradera
- USA
- användning
- Användare
- UTC
- BEKRÄFTA
- Värden
- verifiera
- version
- synlighet
- synlig
- Besök
- med
- Arbete
- fungerar
- skriva
- år
- Din
- zephyrnet