Vi har nylig annonsert støtte for AWS Lake formasjon finmaskede retningslinjer for tilgangskontroll i Amazonas Athena spørringer etter data lagret i alle støttede filformater ved bruk av tabellformater som Apache Iceberg, Apache Hudi og Apache Hive. AWS Lake Formation lar deg definere og håndheve tilgangspolicyer på database-, tabell- og kolonnenivå for å spørre Iceberg-tabeller lagret i Amazon S3. Lake Formation gir et autorisasjons- og styringslag på data som er lagret i Amazon S3. Denne funksjonen krever at du oppgraderer til Athena motor versjon 3.
Store organisasjoner har ofte virksomhetslinjer (LoBs) som opererer med autonomi når det gjelder å administrere forretningsdataene sine. Det gjør deling av data på tvers av LoBs ikke-trivielt. Disse organisasjonene har tatt i bruk en føderert modell, der hver LoB har autonomi til å ta beslutninger om dataene deres. De bruker utgiver-/forbrukermodellen med et sentralisert styringslag som brukes til å håndheve tilgangskontroller. Hvis du er interessert i å lære mer om data mesh-arkitektur, besøk Design en datanettingsarkitektur ved å bruke AWS Lake Formation og AWS Glue. Med Athena-motorversjon 3 kan kunder bruke de samme finkornede kontrollene for åpne datarammeverk som Apache Iceberg, Apache Hudi og Apache Hive.
I dette innlegget dykker vi dypt ned i en brukssak hvor du har en produsent/forbrukermodell med datadeling aktivert for å gi begrenset tilgang til en Apache Iceberg-tabell som forbrukeren kan spørre etter. Vi vil diskutere kolonnefiltrering for å begrense visse rader, filtrering for å begrense tilgang på kolonnenivå, skjemautvikling og tidsreiser.
Løsningsoversikt
For å illustrere funksjonaliteten til finkornede tillatelser for Apache Iceberg-tabeller med Athena og Lake Formation, har vi satt opp følgende komponenter:
- I produsentkontoen:
- An AWS Lim Datakatalog for å registrere skjemaet til en tabell i Apache Iceberg-format
- Lake Formation for å gi finmasket tilgang til forbrukerkontoen
- Athena for å verifisere data fra produsentkontoen
- På forbrukerkontoen:
- AWS Resource Access Manager (AWS RAM) for å skape et håndtrykk mellom produsentdatakatalogen og forbrukeren
- Lake Formation for å gi finmasket tilgang til forbrukerkontoen
- Athena for å verifisere data fra produsentkonto
Følgende diagram illustrerer arkitekturen.
Forutsetninger
Før du begynner, sørg for at du har følgende:
Oppsett av dataprodusent
I denne delen presenterer vi trinnene for å sette opp dataprodusenten.
Opprett en S3-bøtte for å lagre tabelldataene
Vi oppretter en ny S3-bøtte for å lagre dataene for tabellen:
- På Amazon S3 -konsollen, lage en S3 bøtte med unikt navn (for dette innlegget bruker vi
iceberg-athena-lakeformation-blog
). - Lag produsentmappen inne i bøtta som skal brukes til bordet.
Registrer S3-banen som lagrer tabellen ved hjelp av Lake Formation
Vi registrerer hele S3-banen i Lake Formation:
- Naviger til Lake Formation-konsollen.
- Hvis du logger på for første gang, blir du bedt om å opprette en administratorbruker.
- I navigasjonsruten under Registrer deg og svelg, velg Data lake steder.
- Velg Registrer sted, og oppgi S3-bøttebanen som du opprettet tidligere.
- Velg
AWSServiceRoleForLakeFormationDataAccess
forum IAM rolle.
For ytterligere informasjon om roller, se Krav til roller som brukes til å registrere lokasjoner.
Hvis du har aktivert kryptering av S3-bøtten din, må du gi tillatelser for at Lake Formation kan utføre krypterings- og dekrypteringsoperasjoner. Referere til Registrering av en kryptert Amazon S3-posisjon for veiledning.
- Velg Registrer sted.
Lag et isfjellbord med Athena
La oss nå lage tabellen ved å bruke Athena støttet av Apache Iceberg-format:
- Velg på Athena-konsollen Spørringsredaktør i navigasjonsruten.
- Hvis du bruker Athena for første gang, under innstillinger, velg Administrer og angi S3-bøtteplasseringen som du opprettet tidligere (
iceberg-athena-lakeformation-blog/producer
). - Velg Spar.
- I spørringsredigeringsprogrammet skriver du inn følgende spørring (erstatt plasseringen med S3-bøtten som du registrerte med Lake Formation). Merk at vi bruker standarddatabasen, men du kan bruke hvilken som helst annen database.
- Velg Kjør.
Del tabellen med forbrukerkontoen
For å illustrere funksjonalitet implementerer vi følgende scenarier:
- Gi tilgang til utvalgte kolonner
- Gi tilgang til utvalgte rader basert på et filter
Fullfør følgende trinn:
- På Lake Formation-konsollen, i navigasjonsruten under Datakatalog, velg Datafiltre.
- Velg Lag et nytt filter.
- Til Datafilternavn, Tast inn
blog_data_filter
. - Til Måldatabase, Tast inn
lf-demo-db
. - Til Måltabell, Tast inn
consumer_iceberg
. - Til Tilgang på kolonnenivå, plukke ut Inkluder kolonner.
- Velg kolonnene du vil dele med forbrukeren:
country, address, contactfirstname, city, customerid,
ogcustomername
. - Til Radfilteruttrykk, gå inn i filteret
country='France'
. - Velg Opprett filter.
La oss nå gi tilgang til forbrukerkontoen på consumer_iceberg
tabellen.
- Velg i navigasjonsruten tabeller.
- Velg tabellen consumer_iceberg, og velg Grant på handlinger menyen.
- Plukke ut Eksterne kontoer.
- Skriv inn den eksterne konto-IDen.
- Plukke ut Navngitte datakatalogressurser.
- Velg database og tabell.
- Til Datafiltre, velg datafilteret du opprettet.
- Til Tillatelser for datafilter og Tildelte tillatelser, plukke ut Plukke ut.
- Velg Grant.
Dataforbrukeroppsett
For å sette opp dataforbrukeren godtar vi ressursandelen og lager en tabell ved hjelp av AWS RAM og Lake Formation. Fullfør følgende trinn:
- Logg på forbrukerkontoen og naviger til AWS RAM-konsollen.
- Under Delt med meg Velg navigasjonsruten Ressursandeler.
- Velg ressursandelen din.
- Velg Godta ressursdeling.
- Legg merke til navnet på ressursandelen som skal brukes i de neste trinnene.
- Naviger til Lake Formation-konsollen.
- Hvis du logger på for første gang, blir du bedt om å opprette en administratorbruker.
- Velg databaser i navigasjonsruten, og velg deretter databasen.
- På handlinger meny, velg Opprett ressurskobling.
- Til Navn på ressurslenke, skriv inn navnet på ressurskoblingen din (f.eks.
consumer_iceberg
). - Velg din database og delte tabell.
- Velg Opprett.
Bekreft løsningen
Nå kan vi kjøre forskjellige operasjoner på tabellene for å validere de finmaskede tilgangskontrollene.
Innsettingsoperasjon
La oss sette inn data i consumer_iceberg
tabell i produsentkontoen, og valider at datafiltreringen fungerer som forventet i forbrukerkontoen.
- Logg inn på produsentkontoen.
- Velg på Athena-konsollen Spørringsredaktør i navigasjonsruten.
- Bruk følgende SQL for å skrive og sette inn data i Iceberg-tabellen. Bruk spørringsredigeringsprogrammet til å kjøre ett søk om gangen. Du kan markere/velge ett søk om gangen og klikke "Kjør"/"Kjør igjen:
- Bruk følgende SQL for å lese og velge data i Iceberg-tabellen:
- Logg inn på forbrukerkontoen.
- I Athena spørringsredigering kjører du følgende SELECT-spørring på den delte tabellen:
Basert på filtrene har forbrukeren synlighet til et undersett av kolonner og rader der landet er Frankrike.
Oppdater/slett operasjoner
La oss nå oppdatere en av radene og slette en fra datasettet som er delt med forbrukeren.
- Logg inn på produsentkontoen.
- Oppdater
city='Paris' WHERE city='Reims'
og slett radencustomerid = 3;
- Bekreft det oppdaterte og slettede datasettet:
- Logg inn på forbrukerkontoen.
- I Athena spørringsredigering kjører du følgende SELECT-spørring på den delte tabellen:
Vi kan observere at bare én rad er tilgjengelig og byen er oppdatert til Paris.
Skjemaevolusjon: Legg til en ny kolonne
La oss oppdatere en av radene og slette en fra datasettet som er delt med forbrukeren.
- Logg inn på produsentkontoen.
- Legg til en ny kolonne kalt
geo_loc
i Isfjell-bordet. Bruk spørringsredigeringsprogrammet til å kjøre ett søk om gangen. Du kan markere/velge ett søk om gangen og klikke "Kjør"/"Kjør igjen:
For å gi synlighet til de nylig lagt til geo_loc
kolonne, må vi oppdatere datafilteret Lake Formation.
- Velg på Lake Formation-konsollen Datafiltre i navigasjonsruten.
- Velg datafilteret ditt og velg Rediger.
- Under Tilgang på kolonnenivå, legg til den nye kolonnen (
geo_loc
). - Velg Spar.
- Logg inn på forbrukerkontoen.
- I Athena spørringsredigering, kjør følgende
SELECT
spørring på den delte tabellen:
Den nye kolonnen geo_loc
er synlig og en ekstra rad.
Skjemautvikling: Slett kolonne
La oss oppdatere en av radene og slette en fra datasettet som er delt med forbrukeren.
- Logg inn på produsentkontoen.
- Endre tabellen for å slippe adressekolonnen fra Iceberg-tabellen. Bruk spørringsredigeringsprogrammet til å kjøre ett søk om gangen. Du kan markere/velge ett søk om gangen og klikke "Kjør"/"Kjør igjen:
Vi kan observere at kolonneadressen ikke er til stede i tabellen.
- Logg inn på forbrukerkontoen.
- I Athena spørringsredigering kjører du følgende SELECT-spørring på den delte tabellen:
Kolonneadressen finnes ikke i tabellen.
Tidsreiser
Vi har nå endret Iceberg-bordet flere ganger. Iceberg-bordet holder styr på øyeblikksbildene. Fullfør følgende trinn for å utforske tidsreisefunksjonaliteten:
- Logg inn på produsentkontoen.
- Spørr systemtabellen:
Vi kan observere at vi har generert flere øyeblikksbilder.
- Noter ned en av
committed_at
verdier som skal brukes i de neste trinnene (for dette eksemplet,2023-01-29 21:35:02.176 UTC
). - Bruk tidsreiser for å finne øyeblikksbildet av tabellen. Bruk spørringsredigeringsprogrammet til å kjøre ett søk om gangen. Du kan markere/velge ett søk om gangen og klikke "Kjør"/"Kjør igjen:
Rydd opp
Fullfør følgende trinn for å unngå fremtidige kostnader:
- På Amazon S3-konsollen, slett bordlagringsbøtten (for dette innlegget, isfjell-athena-lakeformation-blogg).
- I produsentkontoen på Athena-konsollen kjører du følgende kommandoer for å slette tabellene du opprettet:
- I produsentkontoen på Lake Formation-konsollen tilbakekaller du tillatelser til forbrukerkontoen.
- Slett S3-bøtten som brukes for Athena-søkeresultatplasseringen fra forbrukerkontoen.
konklusjonen
Med støtte for krysskontoer, finmaskede tilgangskontrollpolicyer for formater som Iceberg, har du fleksibiliteten til å jobbe med alle formater som støttes av Athena. Muligheten til å utføre CRUD-operasjoner mot dataene i S3-datasjøen kombinert med Lake Formation finmaskede tilgangskontroller for alle tabeller og formater støttet av Athena gir muligheter til å innovere og forenkle datastrategien din. Vi vil gjerne høre tilbakemeldingen din!
Om forfatterne
Kishore Dhamodaran er Senior Solutions Architect hos AWS. Kishore hjelper strategiske kunder med deres skybedriftsstrategi og migrasjonsreise, og utnytter hans mangeårige industri- og skyerfaring.
Jack Ye er programvareingeniør i Athena Data Lake and Storage-teamet hos AWS. Han er Apache Iceberg Committer og PMC-medlem.
Chris Olson er programvareutviklingsingeniør hos AWS.
Xiaoxuan Li er programvareutviklingsingeniør hos AWS.
Rahul Sonawane er en Principal Analytics Solutions Architect hos AWS med AI/ML og Analytics som sitt spesialområde.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- Platoblokkkjede. Web3 Metaverse Intelligence. Kunnskap forsterket. Tilgang her.
- kilde: 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/
- :er
- $OPP
- 1
- 10
- 100
- 7
- a
- evne
- Om oss
- Aksepterer
- adgang
- Logg inn
- tvers
- la til
- Ytterligere
- Tilleggsinformasjon
- adresse
- admin
- vedtatt
- mot
- AI / ML
- Alle
- tillater
- Amazon
- Amazonas Athena
- analytics
- og
- Apache
- arkitektur
- ER
- AREA
- Kunst
- AS
- At
- autorisasjon
- tilgjengelig
- unngå
- AWS
- AWS Lake formasjon
- Backed
- basert
- mellom
- virksomhet
- bedrifter
- by
- som heter
- CAN
- katalog
- sentralisert
- viss
- endring
- avgifter
- Velg
- City
- klikk
- Cloud
- Kolonne
- kolonner
- COM
- kombinert
- fullføre
- komponenter
- Konsoll
- forbruker
- kontroll
- kontroller
- land
- skape
- opprettet
- Opprette
- skaperverket
- Kryss
- Kunder
- dato
- Data Lake
- datadeling
- datastrategi
- Database
- avgjørelser
- dyp
- dypdykk
- Misligholde
- Utvikling
- forskjellig
- diskutere
- ned
- Drop
- hver enkelt
- Tidligere
- redaktør
- emalje
- EMEA
- aktivert
- kryptert
- kryptering
- Motor
- ingeniør
- Enter
- Enterprise
- Eter (ETH)
- evolusjon
- eksempel
- forventet
- erfaring
- utforske
- utvendig
- filet
- filtrere
- filtrering
- filtre
- Finn
- Først
- første gang
- fleksibilitet
- etter
- Til
- format
- formasjon
- rammer
- Frankrike
- fra
- fullt
- funksjonalitet
- framtid
- generert
- få
- Gi
- styresett
- innvilge
- veiledning
- Ha
- å ha
- høre
- hjelper
- Hive
- HTML
- http
- HTTPS
- ID
- iverksette
- in
- Inc.
- industri
- informasjon
- innovere
- samhandle
- interessert
- IT
- reise
- jpg
- innsjø
- Tomt
- lag
- læring
- Nivå
- utnytte
- BEGRENSE
- linjer
- LINK
- plassering
- elsker
- Lyon
- gjøre
- GJØR AT
- administrerende
- medlem
- Meny
- migrasjon
- modell
- mer
- flere
- navn
- Naviger
- Navigasjon
- Trenger
- Ny
- neste
- NYC
- observere
- of
- on
- ONE
- åpen
- åpne data
- betjene
- Drift
- Muligheter
- organisasjoner
- Annen
- brød
- paris
- banen
- utføre
- tillatelser
- plato
- Platon Data Intelligence
- PlatonData
- Politikk
- Post
- presentere
- Principal
- produsent
- gi
- gir
- RAM
- Lese
- nylig
- reflektert
- registrere
- registrert
- erstatte
- Krever
- ressurs
- begrense
- begrenset
- resultere
- Rolle
- roller
- RAD
- Kjør
- samme
- Spar
- scenarier
- Seksjon
- valgt
- senior
- sett
- Del
- delt
- deling
- forenkle
- Snapshot
- Software
- programvareutvikling
- Software Engineer
- Solutions
- Spesialitet
- SQL
- startet
- Steps
- lagring
- oppbevare
- lagret
- Strategisk
- Strategi
- String
- slik
- støtte
- Støttes
- system
- bord
- lag
- Det
- De
- deres
- Disse
- tid
- tidsreiser
- ganger
- tidsstempel
- til
- spor
- reiser
- etter
- unik
- Oppdater
- oppdatert
- oppgradering
- USA
- bruke
- Bruker
- UTC
- VALIDERE
- Verdier
- verifisere
- versjon
- synlighet
- synlig
- Besøk
- med
- Arbeid
- virker
- skrive
- år
- Din
- zephyrnet