Vi for nylig annoncerede støtte til AWS søformation finmaskede adgangskontrolpolitikker i Amazonas Athena forespørgsler efter data gemt i et hvilket som helst understøttet filformat ved hjælp af tabelformater som Apache Iceberg, Apache Hudi og Apache Hive. AWS Lake Formation giver dig mulighed for at definere og håndhæve adgangspolitikker på database-, tabel- og kolonneniveau for at forespørge Iceberg-tabeller gemt i Amazon S3. Lake Formation giver et godkendelses- og styringslag på data gemt i Amazon S3. Denne funktion kræver, at du opgraderer til Athena motor version 3.
Store organisationer har ofte brancher (LoB'er), der opererer med autonomi i håndteringen af deres forretningsdata. Det gør deling af data på tværs af LoB'er ikke-trivielt. Disse organisationer har vedtaget en fødereret model, hvor hver LoB har autonomi til at træffe beslutninger om deres data. De bruger udgiver-/forbrugermodellen med et centraliseret styringslag, der bruges til at håndhæve adgangskontrol. Hvis du er interesseret i at lære mere om data mesh-arkitektur, så besøg Design en datamesh-arkitektur ved hjælp af AWS Lake Formation og AWS Glue. Med Athena engine version 3 kan kunder bruge de samme finkornede kontroller til åbne datarammeværker såsom Apache Iceberg, Apache Hudi og Apache Hive.
I dette indlæg dykker vi dybt ned i en use-case, hvor du har en producent/forbrugermodel med datadeling aktiveret for at give begrænset adgang til en Apache Iceberg-tabel, som forbrugeren kan forespørge på. Vi vil diskutere kolonnefiltrering for at begrænse bestemte rækker, filtrering for at begrænse adgang til kolonneniveau, skemaudvikling og tidsrejser.
Løsningsoversigt
For at illustrere funktionaliteten af finkornede tilladelser til Apache Iceberg-tabeller med Athena og Lake Formation har vi opsat følgende komponenter:
- På producentkontoen:
- An AWS Lim Datakatalog til at registrere skemaet for en tabel i Apache Iceberg-format
- Lake Formation for at give finmasket adgang til forbrugerkontoen
- Athena for at verificere data fra producentkontoen
- På forbrugerkontoen:
- AWS Resource Access Manager (AWS RAM) for at skabe et håndtryk mellem producentens datakatalog og forbrugeren
- Lake Formation for at give finmasket adgang til forbrugerkontoen
- Athena for at verificere data fra producentkonto
Følgende diagram illustrerer arkitekturen.
Forudsætninger
Før du går i gang, skal du sørge for at have følgende:
Opsætning af dataproducent
I dette afsnit præsenterer vi trinene til opsætning af dataproducenten.
Opret en S3-spand til at gemme tabeldataene
Vi opretter en ny S3-spand for at gemme dataene til tabellen:
- På Amazon S3-konsollen, lav en S3-spand med unikt navn (til dette indlæg bruger vi
iceberg-athena-lakeformation-blog
). - Opret producentmappen inde i bøtten, der skal bruges til bordet.
Registrer S3-stien, der gemmer tabellen ved hjælp af Lake Formation
Vi registrerer hele S3-stien i Lake Formation:
- Naviger til Lake Formation-konsollen.
- Hvis du logger ind for første gang, bliver du bedt om at oprette en administratorbruger.
- I navigationsruden under Registrer og indtag, vælg Placering af datasøer.
- Vælg Registrer placering, og angiv den S3-spandsti, du oprettede tidligere.
- Vælg
AWSServiceRoleForLakeFormationDataAccess
forum IAM rolle.
For yderligere information om roller, se Krav til roller, der bruges til at registrere lokationer.
Hvis du aktiverede kryptering af din S3-bøtte, skal du give Lake Formation tilladelser til at udføre krypterings- og dekrypteringsoperationer. Henvise til Registrering af en krypteret Amazon S3-placering til vejledning.
- Vælg Registrer placering.
Lav et Iceberg-bord ved hjælp af Athena
Lad os nu oprette tabellen ved hjælp af Athena understøttet af Apache Iceberg-format:
- Vælg på Athena-konsollen Forespørgselsredaktør i navigationsruden.
- Hvis du bruger Athena for første gang, skal du under Indstillinger, vælg Administrer og indtast S3-bucket-placeringen, som du oprettede tidligere (
iceberg-athena-lakeformation-blog/producer
). - Vælg Gem.
- Indtast følgende forespørgsel i forespørgselseditoren (erstat placeringen med den S3-spand, som du registrerede hos Lake Formation). Bemærk, at vi bruger standarddatabasen, men du kan bruge enhver anden database.
- Vælg Kør.
Del bordet med forbrugerkontoen
For at illustrere funktionalitet implementerer vi følgende scenarier:
- Giv adgang til udvalgte kolonner
- Giv adgang til udvalgte rækker baseret på et filter
Udfør følgende trin:
- På Lake Formation-konsollen i navigationsruden under Datakatalog, vælg Datafiltre.
- Vælg Opret nyt filter.
- Til Datafilternavn, gå ind
blog_data_filter
. - Til Måldatabase, gå ind
lf-demo-db
. - Til Måltabel, gå ind
consumer_iceberg
. - Til Adgang på kolonneniveau, Vælg Inkluder kolonner.
- Vælg de kolonner, du vil dele med forbrugeren:
country, address, contactfirstname, city, customerid,
,customername
. - Til Rækkefilterudtryk, indtast filteret
country='France'
. - Vælg Opret filter.
Lad os nu give adgang til forbrugerkontoen på consumer_iceberg
tabel.
- Vælg i navigationsruden tabeller.
- Vælg tabellen forbruger_isbjerg, og vælg Grant på den handlinger menu.
- Type Eksterne konti.
- Indtast det eksterne konto-id.
- Type Navngivne datakatalogressourcer.
- Vælg din database og tabel.
- Til Datafiltre, vælg det datafilter, du har oprettet.
- Til Datafiltertilladelser , Givbare tilladelser, Vælg Type.
- Vælg Grant.
Opsætning af dataforbruger
For at konfigurere dataforbrugeren accepterer vi ressourceandelen og opretter en tabel ved hjælp af AWS RAM og Lake Formation. Udfør følgende trin:
- Log ind på forbrugerkontoen, og naviger til AWS RAM-konsollen.
- Under Delt med mig i navigationsruden skal du vælge Ressourceandele.
- Vælg din ressourceandel.
- Vælg Accepter ressourceandel.
- Bemærk navnet på den ressourceandel, der skal bruges i de næste trin.
- Naviger til Lake Formation-konsollen.
- Hvis du logger ind for første gang, bliver du bedt om at oprette en administratorbruger.
- Vælg Databaser i navigationsruden, og vælg derefter din database.
- På handlinger menu, vælg Opret ressourcelink.
- Til Navn på ressourcelink, indtast navnet på dit ressourcelink (f.eks.
consumer_iceberg
). - Vælg din database og din delte tabel.
- Vælg Opret.
Bekræft løsningen
Nu kan vi køre forskellige operationer på tabellerne for at validere de finkornede adgangskontroller.
Indsæt operation
Lad os indsætte data i consumer_iceberg
tabel i producentkontoen, og valider, at datafiltreringen fungerer som forventet på forbrugerkontoen.
- Log ind på producentkontoen.
- Vælg på Athena-konsollen Forespørgselsredaktør i navigationsruden.
- Brug følgende SQL til at skrive og indsætte data i Iceberg-tabellen. Brug forespørgselseditoren til at køre én forespørgsel ad gangen. Du kan fremhæve/vælge én forespørgsel ad gangen og klikke på "Kør"/"Kør igen:
- Brug følgende SQL til at læse og vælge data i Iceberg-tabellen:
- Log ind på forbrugerkontoen.
- I Athena-forespørgselseditoren skal du køre følgende SELECT-forespørgsel på den delte tabel:
Baseret på filtrene har forbrugeren synlighed til en delmængde af kolonner og rækker, hvor landet er Frankrig.
Opdater/slet handlinger
Lad os nu opdatere en af rækkerne og slette en fra datasættet, der er delt med forbrugeren.
- Log ind på producentkontoen.
- Opdatering
city='Paris' WHERE city='Reims'
og slet rækkencustomerid = 3;
- Bekræft det opdaterede og slettede datasæt:
- Log ind på forbrugerkontoen.
- I Athena-forespørgselseditoren skal du køre følgende SELECT-forespørgsel på den delte tabel:
Vi kan observere, at kun én række er tilgængelig, og byen er opdateret til Paris.
Skemaudvikling: Tilføj en ny kolonne
Lad os opdatere en af rækkerne og slette en fra datasættet, der er delt med forbrugeren.
- Log ind på producentkontoen.
- Tilføj en ny kolonne kaldet
geo_loc
i Iceberg-bordet. Brug forespørgselseditoren til at køre én forespørgsel ad gangen. Du kan fremhæve/vælge én forespørgsel ad gangen og klikke på "Kør"/"Kør igen:
For at give synlighed til de nyligt tilføjede geo_loc
kolonne, skal vi opdatere søformationsdatafilteret.
- Vælg på Lake Formation-konsollen Datafiltre i navigationsruden.
- Vælg dit datafilter og vælg Redigere.
- Under Adgang på kolonneniveau, tilføj den nye kolonne (
geo_loc
). - Vælg Gem.
- Log ind på forbrugerkontoen.
- Kør følgende i Athena-forespørgselseditoren
SELECT
forespørgsel på den delte tabel:
Den nye kolonne geo_loc
er synlig og en ekstra række.
Skemaudvikling: Slet kolonne
Lad os opdatere en af rækkerne og slette en fra datasættet, der er delt med forbrugeren.
- Log ind på producentkontoen.
- Skift tabellen for at fjerne adressekolonnen fra Iceberg-tabellen. Brug forespørgselseditoren til at køre én forespørgsel ad gangen. Du kan fremhæve/vælge én forespørgsel ad gangen og klikke på "Kør"/"Kør igen:
Vi kan se, at kolonneadressen ikke er til stede i tabellen.
- Log ind på forbrugerkontoen.
- I Athena-forespørgselseditoren skal du køre følgende SELECT-forespørgsel på den delte tabel:
Kolonneadressen er ikke til stede i tabellen.
Tidsrejser
Vi har nu ændret Iceberg-bordet flere gange. Iceberg-bordet holder styr på snapshots. Udfør følgende trin for at udforske tidsrejsefunktionaliteten:
- Log ind på producentkontoen.
- Spørg systemtabellen:
Vi kan observere, at vi har genereret flere snapshots.
- Noter en af de
committed_at
værdier, der skal bruges i de næste trin (for dette eksempel,2023-01-29 21:35:02.176 UTC
). - Brug tidsrejser til at finde bordets øjebliksbillede. Brug forespørgselseditoren til at køre én forespørgsel ad gangen. Du kan fremhæve/vælge én forespørgsel ad gangen og klikke på "Kør"/"Kør igen:
Ryd op
Udfør følgende trin for at undgå fremtidige gebyrer:
- På Amazon S3-konsollen skal du slette bordopbevaringsbøtten (for dette indlæg, isbjerg-athena-søformation-blog).
- Kør følgende kommandoer på producentkontoen på Athena-konsollen for at slette de tabeller, du har oprettet:
- I producentkontoen på Lake Formation-konsollen skal du tilbagekalde tilladelser til forbrugerkontoen.
- Slet den S3-bøtte, der blev brugt til Athena-forespørgselsresultatplaceringen, fra forbrugerkontoen.
Konklusion
Med understøttelse af krydskonto, finmaskede adgangskontrolpolitikker til formater som Iceberg, har du fleksibiliteten til at arbejde med ethvert format, der understøttes af Athena. Evnen til at udføre CRUD-operationer mod dataene i din S3-datasø kombineret med Lake Formation finmaskede adgangskontroller til alle tabeller og formater understøttet af Athena giver muligheder for at innovere og forenkle din datastrategi. Vi vil meget gerne høre din feedback!
Om forfatterne
Kishore Dhamodaran er Senior Solutions Architect hos AWS. Kishore hjælper strategiske kunder med deres cloud-virksomhedsstrategi og migrationsrejse, og udnytter hans mangeårige branche- og cloud-erfaring.
Jack Ye er softwareingeniør hos Athena Data Lake and Storage-teamet hos AWS. Han er Apache Iceberg Committer og PMC-medlem.
Chris Olson er softwareudviklingsingeniør hos AWS.
Xiaoxuan Li er softwareudviklingsingeniør hos AWS.
Rahul Sonawane er Principal Analytics Solutions Architect hos AWS med AI/ML og Analytics som speciale.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- Platoblokkæde. Web3 Metaverse Intelligence. Viden forstærket. Adgang 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
- $OP
- 1
- 10
- 100
- 7
- a
- evne
- Om
- Acceptere
- adgang
- Konto
- tværs
- tilføjet
- Yderligere
- yderligere information
- adresse
- admin
- vedtaget
- mod
- AI / ML
- Alle
- tillader
- Amazon
- Amazonas Athena
- analytics
- ,
- Apache
- arkitektur
- ER
- OMRÅDE
- Kunst
- AS
- At
- tilladelse
- til rådighed
- undgå
- AWS
- AWS søformation
- Backed
- baseret
- mellem
- virksomhed
- virksomheder
- by
- kaldet
- CAN
- katalog
- centraliseret
- vis
- lave om
- afgifter
- Vælg
- By
- klik
- Cloud
- Kolonne
- Kolonner
- KOM
- kombineret
- fuldføre
- komponenter
- Konsol
- forbruger
- kontrol
- kontrol
- land
- skabe
- oprettet
- Oprettelse af
- skabelse
- Cross
- Kunder
- data
- Data Lake
- datadeling
- datastrategi
- Database
- afgørelser
- dyb
- dyb dykke
- Standard
- Udvikling
- forskellige
- diskutere
- ned
- Drop
- hver
- tidligere
- editor
- EMEA
- aktiveret
- krypteret
- kryptering
- Engine (Motor)
- ingeniør
- Indtast
- Enterprise
- Ether (ETH)
- evolution
- eksempel
- forventet
- erfaring
- udforske
- ekstern
- File (Felt)
- filtrere
- filtrering
- Filtre
- Finde
- Fornavn
- første gang
- Fleksibilitet
- efter
- Til
- format
- formation
- rammer
- Fransk vin
- fra
- fuld
- funktionalitet
- fremtiden
- genereret
- få
- Giv
- regeringsførelse
- indrømme
- vejledning
- Have
- have
- høre
- hjælper
- Hive
- HTML
- http
- HTTPS
- ID
- gennemføre
- in
- Inc.
- industrien
- oplysninger
- innovere
- interagere
- interesseret
- IT
- rejse
- jpg
- sø
- Land
- lag
- læring
- Niveau
- løftestang
- GRÆNSE
- linjer
- LINK
- placering
- kærlighed
- Lyon
- lave
- maerker
- styring
- medlem
- Menu
- migration
- model
- mere
- flere
- navn
- Naviger
- Navigation
- Behov
- Ny
- næste
- NYC
- observere
- of
- on
- ONE
- åbent
- åbne data
- betjene
- Produktion
- Muligheder
- organisationer
- Andet
- brød
- Paris
- sti
- udføre
- Tilladelser
- plato
- Platon Data Intelligence
- PlatoData
- politikker
- Indlæg
- præsentere
- Main
- producent
- give
- giver
- RAM
- Læs
- for nylig
- afspejles
- register
- registreret
- erstatte
- Kræver
- ressource
- begrænse
- begrænset
- resultere
- roller
- roller
- RÆKKE
- Kør
- samme
- Gem
- scenarier
- Sektion
- valgt
- senior
- sæt
- Del
- delt
- deling
- forenkle
- Snapshot
- Software
- softwareudvikling
- Software Engineer
- Løsninger
- Specialty
- SQL
- påbegyndt
- Steps
- opbevaring
- butik
- opbevaret
- Strategisk
- Strategi
- String
- sådan
- support
- Understøttet
- systemet
- bord
- hold
- at
- deres
- Disse
- tid
- tidsrejser
- gange
- tidsstempel
- til
- spor
- rejse
- under
- enestående
- Opdatering
- opdateret
- opgradering
- USA
- brug
- Bruger
- UTC
- VALIDATE
- Værdier
- verificere
- udgave
- synlighed
- synlig
- Besøg
- med
- Arbejde
- virker
- skriver
- år
- Din
- zephyrnet