Virksomhedskunder har flere brancher (LOB'er) og grupper og teams inden for dem. Disse kunder skal balancere styring, sikkerhed og compliance mod behovet for maskinlæringshold (ML) for hurtigt at få adgang til deres datavidenskabelige miljøer på en sikker måde. Disse virksomhedskunder, der begynder at adoptere AWS, udvider deres fodaftryk på AWS eller planlægger at forbedre et etableret AWS-miljø, skal sikre, at de har et stærkt fundament for deres cloudmiljø. Et vigtigt aspekt af dette fundament er at organisere deres AWS-miljø efter en multi-konto strategi.
I stillingen Sikker Amazon SageMaker Studio forudindstillede URL'er Del 2: Privat API med JWT-godkendelse, viste vi, hvordan man bygger en privat API til at generere Amazon SageMaker Studio foruddefinerede URL'er, der kun er tilgængelige for en godkendt slutbruger inden for virksomhedens netværk fra en enkelt konto. I dette indlæg viser vi, hvordan du kan udvide den arkitektur til flere konti for at understøtte flere LOB'er. Vi demonstrerer, hvordan du kan bruge Studio forudindstillede URL'er i et miljø med flere konti til at sikre og dirigere adgang fra forskellige personer til deres relevante Studio-domæne. Vi forklarer processen og netværksflowet, og hvordan man nemt skalerer denne arkitektur til flere konti og Amazon SageMaker domæner. Den foreslåede løsning sikrer også, at al netværkstrafik forbliver inden for AWS's private netværk, og kommunikation foregår på en sikker måde.
Selvom vi demonstrerer at bruge to forskellige LOB'er, hver med en separat AWS-konto, kan denne løsning skaleres til flere LOB'er. Vi introducerer også en logisk konstruktion af en delt servicekonto, der spiller en nøglerolle i styring, administration og orkestrering.
Løsningsoversigt
Vi kan opnå kommunikation mellem alle LOBs SageMaker VPC'er og den delte servicekonto VPC ved hjælp af enten VPC-peering eller AWS Transit Gateway. I dette indlæg bruger vi en transitgateway, fordi den giver en enklere VPC-til-VPC-kommunikationsmekanisme over VPC-peering, når der er et stort antal VPC'er involveret. Vi bruger også Amazonrute 53 videresendelsesregler i kombination med indgående og udgående resolvere for at løse alle DNS-forespørgsler til den delte servicekontos VPC-slutpunkter. Netværksarkitekturen er designet ved hjælp af følgende mønstre:
Lad os se på de to hovedarkitekturkomponenter, informationsflowet og netværksflowet, mere detaljeret.
Informationsflow
Det følgende diagram illustrerer informationsstrømmens arkitektur.
Workflow-trinene er som følger:
- Brugeren autentificerer med Amazon Cognito brugerpulje og modtager et token til at bruge Studio-adgangs-API'en.
- Brugeren kalder API'et for at få adgang til Studio og inkluderer tokenet i anmodningen.
- Når denne API aktiveres, vil den brugerdefinerede AWS Lambda autorisator udløses for at validere tokenet med identitetsudbyderen (IdP), og returnerer de korrekte tilladelser til brugeren.
- Når opkaldet er godkendt, udløses en lambdafunktion.
- Denne Lambda-funktion bruger brugerens navn til at hente deres LOB-navn og LOB-kontoen fra følgende Amazon DynamoDB tabeller, der gemmer disse relationer:
- Brugertabel – Denne tabel indeholder forholdet mellem brugere og deres LOB.
- LOBs tabel – Denne tabel indeholder forholdet mellem LOB'erne og AWS-kontoen, hvor SageMaker-domænet for den LOB findes.
- Med konto-id'et overtager Lambda-funktionen PresignedUrlGenerator-rollen på den konto (hver LOB-konto har en PresignedURLGenerator-rolle, som kun kan påtages af Lambda-funktionen, der er ansvarlig for at generere de forudindstillede URL'er).
- Endelig kalder funktionen SageMaker create-presigned-domain-url API-kaldet til den bruger i deres LOB's SageMaker-domæne.
- Den foruddefinerede URL returneres til slutbrugeren, som bruger den via Studio VPC-slutpunktet.
Trin 1-4 er dækket mere detaljeret i del 2 af denne serie, hvor vi forklarer, hvordan den tilpassede Lambda-autorizer fungerer og tager sig af autorisationsprocessen i adgangs-API-gatewayen.
Netværksstrøm
Al netværkstrafik flyder på en sikker og privat måde vha AWS PrivateLink, som vist i følgende diagram.
Trinnene er som følger:
- Når brugeren kalder adgangs-API'en, sker det via VPC-slutpunktet for Amazon API Gateway i netværks-VPC'en på kontoen for delte tjenester. Denne API er indstillet som privat og har en politik, der kun tillader dets forbrug via dette VPC-slutpunkt, som beskrevet i del 2 af denne serie.
- Al godkendelsesprocessen foregår privat mellem API Gateway, Lambda og Amazon Cognito.
- Efter autorisation er givet, udløser API Gateway Lambda-funktionen, der er ansvarlig for at generere de forudindstillede URL'er ved hjælp af AWS' private netværk.
- Da routing Lambda-funktionen bor i en VPC, sker alle opkald til forskellige tjenester gennem deres respektive VPC-endepunkter i den delte tjenestekonto. Funktionen udfører følgende handlinger:
- Hent legitimationsoplysningerne til at påtage sig rollen via AWS Security Token Service (AWS STS) VPC-slutpunkt i netværkskontoen.
- Ring til DynamoDB for at hente bruger- og LOB-oplysninger gennem DynamoDB VPC-slutpunktet.
- Kald SageMaker API for at oprette en foruddefineret URL til brugeren i deres SageMaker-domæne gennem SageMaker API VPC-slutpunktet.
- Brugeren bruger endelig den forudindstillede URL via Studio VPC-slutpunktet i netværks-VPC'en på den delte servicekonto, fordi dette VPC-slutpunkt er blevet specificeret under oprettelsen af den forudindstillede URL.
- Al yderligere kommunikation mellem Studio og AWS-tjenester sker via Studios ENI inde i LOB-kontoens SageMaker VPC. For eksempel for at tillade SageMaker at ringe Amazon Elastic Container Registry (Amazon ECR), Amazon ECR-grænseflade VPC-slutpunktet kan leveres i den delte servicekonto VPC, og en videresendelsesregel deles med SageMaker-konti, der skal forbruge den. Dette gør det muligt for SageMaker-forespørgsler til Amazon ECR at blive løst til dette slutpunkt, og Transit Gateway-routingen vil klare resten.
Forudsætninger
For at repræsentere et miljø med flere konti bruger vi én delt tjenestekonto og to forskellige LOB'er:
- Delte tjenester-konto – Hvor VPC-endepunkterne og Studio Access Gateway API bor
- SageMaker-konto LOB A – Kontoen for SageMaker-domænet for LOB A
- SageMaker-konto LOB B – Kontoen for SageMaker-domænet for LOB B
For mere information om, hvordan du opretter en AWS-konto, se Hvordan opretter og aktiverer jeg en ny AWS-konto.
LOB-konti er logiske enheder, der er forretnings-, afdelings- eller domænespecifikke. Vi antager én konto pr. logisk enhed. Der vil dog være forskellige konti pr. miljø (udvikling, test, produktion). For hvert miljø har du typisk en separat delt servicekonto (baseret på overholdelseskrav) for at begrænse sprængningsradius.
Du kan bruge skabelonerne og instruktionerne i GitHub repository at etablere den nødvendige infrastruktur. Dette lager er struktureret i mapper til de forskellige konti og forskellige dele af løsningen.
Opsætning af infrastruktur
For store virksomheder med mange Studio-domæner er det også tilrådeligt at have en centraliseret slutpunktsarkitektur. Dette kan resultere i omkostningsbesparelser, da arkitekturen skaleres og flere domæner og konti oprettes. Networking.yml-skabelonen i den delte servicekonto implementerer VPC-endepunkterne og nødvendige Route 53-ressourcer og Transit Gateway-infrastrukturen for at udskalere den foreslåede løsning.
Detaljerede instruktioner for implementeringen kan findes i filen README.md i GitHub-lageret. Den fulde implementering inkluderer følgende ressourcer:
- to AWS CloudFormation skabeloner på kontoen for delte tjenester: én til netværksinfrastruktur og én til AWS serverløs applikationsmodel (AWS SAM) Studio-adgang Gateway API
- Én CloudFormation-skabelon til infrastrukturen i SageMaker-kontoen LOB A
- Én CloudFormation-skabelon til infrastrukturen for SageMaker-kontoen LOB B
- Eventuelt kan en lokal simulator implementeres i den delte tjenestekonto for at teste ende-til-ende-implementeringen
Når alt er implementeret, skal du navigere til Transit Gateway-konsollen for hver SageMaker-konto (LOB-konti) og bekræfte, at transitgatewayen er blevet delt korrekt, og VPC'erne er knyttet til den.
Hvis nogen videresendelsesregler er blevet delt med konti, kan de eventuelt tilknyttes SageMaker-kontienes VPC. De grundlæggende regler for at få den centraliserede VPC-slutpunktsløsning til at fungere, deles automatisk med LOB-kontoen under implementeringen. For mere information om denne tilgang, se Centraliseret adgang til VPC private endpoints.
Udfyld dataene
Kør følgende script for at udfylde DynamoDB-tabellerne og Amazon Cognito-brugerpuljen med de nødvendige oplysninger:
Scriptet udfører de nødvendige API-kald ved hjælp af AWS kommandolinjegrænseflade (AWS CLI) og de tidligere konfigurerede parametre og profiler.
Amazon Cognito-brugere
Dette trin fungerer på samme måde som del 2 af denne serie, men skal udføres for brugere i alle LOB'er og bør matche deres brugerprofil i SageMaker, uanset hvilken LOB de tilhører. Til dette indlæg har vi én bruger i et Studio-domæne i LOB A (bruger-lob-a) og én bruger i et Studio-domæne i LOB B (bruger-lob-b). Følgende tabel viser de brugere, der er udfyldt i Amazon Cognito-brugerpuljen.
Bruger | Adgangskode |
bruger-lob-a | UserLobA1! |
bruger-lob-b | BrugerLobB1! |
Bemærk, at disse adgangskoder er konfigureret til demoformål.
DynamoDB tabeller
Adgangsapplikationen bruger to DynamoDB-tabeller til at dirigere anmodninger fra de forskellige brugere til deres LOB's Studio-domæne.
Brugertabellen indeholder forholdet mellem brugere og deres LOB.
Primærnøgle | ROS |
bruger-lob-a | lob-a |
bruger-lob-b | lob-b |
LOB-tabellen indeholder forholdet mellem LOB og AWS-kontoen, hvor SageMaker-domænet for den LOB findes.
ROS | KONTO-ID |
lob-a | <YOUR_LOB_A_ACCOUNT_ID> |
lob-b | <YOUR_LOB_B_ACCOUNT_ID> |
Bemærk, at disse brugernavne skal være konsistente på tværs af Studio-brugerprofilerne og navnene på de brugere, vi tidligere har føjet til Amazon Cognito-brugerpuljen.
Test implementeringen
På dette tidspunkt kan vi teste implementeringen ved at gå til API Gateway og kontrollere, hvad API'en svarer for nogen af brugerne. Vi får en foruddefineret URL i svaret; indtagelse af denne URL i browseren vil dog give en godkendelsestoken-fejl.
Til denne demo har vi opsat et simuleret lokalt miljø med en bastion-vært og en Windows-applikation. Vi installerer Firefox i Windows-forekomsten og bruger udviklerværktøjerne til at tilføje autorisationsheadere til vores anmodninger og teste løsningen. Mere detaljeret information om, hvordan man opsætter det lokale simulerede miljø er tilgængelig i det tilknyttede GitHub-lager.
Følgende diagram viser vores testarkitektur.
Vi har to brugere, en til LOB A (Bruger A) og en anden til LOB B (Bruger B), og vi viser, hvordan Studio-domænet ændrer sig blot ved at ændre autorisationsnøglen hentet fra Amazon Cognito, når du logger ind som Bruger A og Bruger B.
Udfør følgende trin for at teste implementeringen:
- Hent sessionstokenet for bruger A, som vist i del 2 af serien og også i instruktionerne i GitHub-lageret.
Vi bruger følgende eksempelkommando til at hente brugeroplysningerne fra Amazon Cognito:
- Til denne demo bruger vi en simuleret Windows-applikation på stedet. For at oprette forbindelse til Windows-instansen kan du følge den samme fremgangsmåde, der er angivet i Sikker adgang til Amazon SageMaker Studio med AWS SSO og en SAML-applikation.
- Firefox skal være installeret i instansen. Hvis ikke, kan vi én gang i tilfældet installere Firefox.
- Åbn Firefox og prøv at få adgang til Studios API med enten
user-lob-a
oruser-lob-b
som API-stiparameter.
Du får en ikke-autoriseret besked.
- Åbn udviklerværktøjerne til Firefox og på Netværk fanen, vælg (højreklik) det forrige API-kald, og vælg Rediger og send igen.
- Her tilføjer vi tokenet som en autorisationsheader i Firefox-udviklerværktøjerne og sender anmodningen til Studio Access Gateway API igen.
Denne gang ser vi i udviklerværktøjerne, at URL'en returneres sammen med en 302-omdirigering.
- Selvom omdirigeringen ikke virker, når du bruger udviklerværktøjerne, kan du stadig vælge den for at få adgang til LOB SageMaker-domænet for den pågældende bruger.
- Gentag for bruger B med dens tilsvarende token og kontroller, at de bliver omdirigeret til et andet Studio-domæne.
Hvis du udfører disse trin korrekt, kan du få adgang til begge domæner på samme tid.
I vores lokale Windows-applikation kan vi have begge domæner forbrugt via Studio VPC-slutpunktet gennem vores VPC-peering-forbindelse.
Lad os undersøge nogle andre testscenarier.
Hvis du redigerer API'et igen og ændrer stien til den modsatte LOB, får vi, når du sender igen, en fejl i API-svaret: et forbudt svar fra API Gateway.
At prøve at tage den returnerede URL for den korrekte bruger og forbruge den i din bærbare computers browser vil også mislykkes, fordi den ikke vil blive brugt via det interne Studio VPC-slutpunkt. Dette er den samme fejl, som vi så, da vi testede med API Gateway. Det returnerer fejlen "Godkendelsestoken, der indeholder utilstrækkelige tilladelser".
Hvis det tager for lang tid at forbruge den foruddefinerede URL, vil det resultere i fejlen "Ugyldig eller udløbet godkendelsestoken".
Skaler domæner
Når et nyt SageMaker-domæne tilføjes, skal du udføre følgende netværks- og adgangstrin:
- Del transit-gatewayen med den nye konto ved hjælp af AWS Resource Access Manager (AWS RAM).
- Tilslut VPC'en til transit-gatewayen i LOB-kontoen (dette gøres i AWS CloudFormation).
I vores scenarie blev transit-gatewayen indstillet med automatisk tilknytning til standardrutetabellen og automatisk udbredelse aktiveret. I et virkeligt brugstilfælde skal du muligvis udføre tre yderligere trin:
- Tilknyt den vedhæftede Studio VPC til den respektive Transit Gateway-rutetabel for SageMaker-domæner i den delte servicekonto.
- Udbred de tilknyttede VPC-ruter til Transit Gateway.
- Til sidst skal du tilføje konto-id'et sammen med LOB-navnet til LOB'ernes DynamoDB-tabel.
Ryd op
Udfør følgende trin for at rydde op i dine ressourcer:
- Slet VPC-peering-forbindelsen.
- Fjern de tilknyttede VPC'er fra de private hostede zoner.
- Slet den lokale simulator-skabelon fra kontoen for delte tjenester.
- Slet Studio CloudFormation-skabelonerne fra SageMaker-kontiene.
- Slet adgangsskabelonen CloudFormation fra den delte servicekonto.
- Slet netværksskabelonen CloudFormation fra den delte servicekonto.
Konklusion
I dette indlæg gik vi igennem, hvordan du kan konfigurere privat API-adgang til flere konti til Studio. Vi forklarede, hvordan netværks- og applikationsstrømmene sker, samt hvordan du nemt kan skalere denne arkitektur til flere konti og SageMaker-domæner. Gå over til GitHub repository at begynde din rejse. Vi vil meget gerne høre din feedback!
Om forfatterne
Neelam Koshiya er Enterprise Solutions Architect hos AWS. Hendes nuværende fokus er at hjælpe virksomhedskunder med deres cloud-adoptionsrejse for strategiske forretningsresultater. I sin fritid nyder hun at læse og være udendørs.
Alberto Menendez er Associate DevOps Consultant i Professional Services hos AWS. Han hjælper med at accelerere kundernes rejser til skyen. I sin fritid nyder han at dyrke sport, især basketball og padel, tilbringe tid med familie og venner og lære om teknologi.
Rajesh Ramchander er Senior Data & ML Engineer i Professional Services hos AWS. Han hjælper kunder med at migrere big data og AL/ML-arbejdsbelastninger til AWS.
Ram Vittal er maskinlæringsløsningsarkitekt hos AWS. Han har over 20 års erfaring med at arkitekte og bygge distribuerede, hybride og cloud-applikationer. Han brænder for at bygge sikker og skalerbar AI/ML og big data-løsninger for at hjælpe virksomhedskunder med deres cloud-adoption og optimeringsrejse for at forbedre deres forretningsresultater. I sin fritid nyder han tennis og fotografering.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- Platoblokkæde. Web3 Metaverse Intelligence. Viden forstærket. Adgang her.
- Udmøntning af fremtiden med Adryenn Ashley. Adgang her.
- Kilde: https://aws.amazon.com/blogs/machine-learning/secure-amazon-sagemaker-studio-presigned-urls-part-3-multi-account-private-api-access-to-studio/
- :er
- $OP
- 20 år
- 7
- 8
- 9
- a
- Om
- fremskynde
- adgang
- tilgængelig
- Konto
- Konti
- opnå
- tværs
- aktioner
- tilføjet
- Yderligere
- administration
- vedtage
- Vedtagelse
- mod
- AI / ML
- Alle
- tillader
- Amazon
- Amazon Cognito
- Amazon SageMaker
- Amazon SageMaker Studio
- ,
- En anden
- api
- API-adgang
- Anvendelse
- applikationer
- tilgang
- passende
- arkitektur
- ER
- AS
- udseende
- Associate
- forbundet
- Association
- antaget
- At
- Auth
- autentificeret
- godkender
- tilladelse
- Automatisk Ur
- automatisk
- til rådighed
- AWS
- AWS CloudFormation
- Balance
- baseret
- grundlæggende
- Basketball
- BE
- fordi
- begynde
- være
- mellem
- Big
- Big data
- browser
- bygge
- Bygning
- virksomhed
- virksomheder
- by
- ringe
- Opkald
- CAN
- hvilken
- tilfælde
- centraliseret
- lave om
- Ændringer
- skiftende
- afgift
- kontrollere
- Vælg
- Cloud
- cloud adoption
- kombination
- Kommunikation
- Kommunikation
- Virksomheder
- fuldføre
- Compliance
- komponenter
- Bekræfte
- Tilslut
- tilslutning
- konsekvent
- Konsol
- konstruere
- konsulent
- forbruge
- forbruges
- forbrug
- Container
- Corporate
- Tilsvarende
- Koste
- omkostningsbesparelser
- dækket
- skabe
- oprettet
- skabelse
- Legitimationsoplysninger
- Nuværende
- skik
- Kunder
- data
- datalogi
- Standard
- demonstrere
- demonstreret
- Afdeling
- indsat
- implementering
- udruller
- beskrevet
- konstrueret
- detail
- detaljeret
- dev
- Udvikler
- Udvikling
- forskellige
- direkte
- distribueret
- dns
- domæne
- Domæner
- i løbet af
- hver
- nemt
- enten
- aktiveret
- ende til ende
- Endpoint
- ingeniør
- sikre
- sikrer
- Enterprise
- enheder
- enhed
- Miljø
- miljøer
- fejl
- især
- etableret
- at alt
- eksempel
- eksisterer
- ekspanderende
- erfaring
- Forklar
- forklarede
- udforske
- udvide
- FAIL
- familie
- File (Felt)
- Endelig
- Firefox
- flow
- strømme
- Fokus
- følger
- efter
- følger
- Fodspor
- Til
- fundet
- Foundation
- Gratis
- venner
- fra
- fuld
- funktion
- yderligere
- gateway
- generere
- generere
- få
- GitHub
- Giv
- gå
- regeringsførelse
- bevilget
- Gruppens
- ske
- sker
- Have
- hoved
- headers
- høre
- hjælpe
- hjælpe
- hjælper
- besidder
- host
- hostede
- Hvordan
- How To
- Men
- HTML
- http
- HTTPS
- Hybrid
- i
- ID
- Identity
- vigtigt
- vigtigt aspekt
- Forbedre
- in
- omfatter
- oplysninger
- Infrastruktur
- installere
- installeret
- instans
- anvisninger
- grænseflade
- interne
- indføre
- påberåber sig
- involverede
- IT
- ITS
- rejse
- Journeys
- jpg
- Jwt
- Nøgle
- stor
- læring
- Line (linje)
- linjer
- Lister
- Lives
- logisk
- Lang
- Se
- kærlighed
- maskine
- machine learning
- Main
- lave
- måde
- mange
- Match
- Kan..
- mekanisme
- besked
- migrere
- ML
- mere
- flere
- navn
- navne
- Naviger
- Behov
- netværk
- netværkstrafik
- netværk
- Ny
- nummer
- of
- on
- ONE
- modsat
- optimering
- orkestrering
- Andet
- udendørs
- parameter
- parametre
- del
- dele
- lidenskabelige
- Nulstilling/ændring af adgangskoder
- sti
- mønstre
- Udfør
- udfører
- Tilladelser
- fotografering
- plato
- Platon Data Intelligence
- PlatoData
- spiller
- Punkt
- politik
- pool
- befolkede
- Indlæg
- tidligere
- tidligere
- private
- behandle
- produktion
- professionel
- Profil
- Profiler
- passende
- foreslog
- udbyder
- giver
- formål
- forespørgsler
- hurtigt
- RAM
- Læsning
- virkelige verden
- modtager
- omdirigere
- Uanset
- forhold
- Relationer
- Repository
- repræsentere
- anmode
- anmodninger
- påkrævet
- Krav
- løst
- ressource
- Ressourcer
- dem
- svar
- REST
- begrænse
- resultere
- afkast
- Højreklik
- roller
- R
- veje
- Herske
- regler
- sagemaker
- Sam
- samme
- Besparelser
- skalerbar
- Scale
- skalaer
- scenarie
- scenarier
- Videnskab
- sikker
- sikkerhed
- sikkerhedsbogstav
- senior
- adskille
- Series
- Serverless
- tjeneste
- Tjenester
- Session
- sæt
- delt
- bør
- Vis
- vist
- Shows
- simulator
- enkelt
- løsninger
- Løsninger
- nogle
- specifikke
- specificeret
- udgifterne
- Sport
- Starter
- Trin
- Steps
- Stadig
- butik
- Strategisk
- strategisk forretning
- Strategi
- stærk
- struktureret
- Studio
- support
- bord
- Tag
- tager
- hold
- Teknologier
- skabelon
- skabeloner
- prøve
- Test
- at
- oplysninger
- deres
- Them
- Disse
- tre
- Gennem
- tid
- til
- token
- også
- værktøjer
- Trafik
- transit
- udløst
- typisk
- URL
- brug
- brug tilfælde
- Bruger
- brugere
- VALIDATE
- via
- gik
- Vej..
- GODT
- Hvad
- som
- WHO
- vilje
- vinduer
- med
- inden for
- Arbejde
- virker
- år
- Du
- Din
- zephyrnet
- zoner