Amazon Prognos är en helt hanterad tjänst som bygger på samma teknik som används för prognoser på Amazon.com. Forecast använder maskininlärning (ML) för att kombinera tidsseriedata med ytterligare variabler för att skapa mycket exakta prognoser. Prognos kräver ingen ML-erfarenhet för att komma igång. Du behöver bara ange historisk data och ytterligare information som kan påverka prognoser.
Kunder vänder sig mot att använda en Software as service (SaaS) -modell för leverans av multi-tenant-lösningar. Du kan bygga SaaS-applikationer med en mängd olika arkitektoniska modeller för att uppfylla lagkrav och efterlevnadskrav. Beroende på SaaS-modellen delas resurser som Prognos mellan hyresgäster. Prognosdataåtkomst, övervakning och fakturering måste övervägas per hyresgäst för att distribuera SaaS-lösningar.
Det här inlägget beskriver hur du använder Prognos i en SaaS-applikation med flera hyresgäster med Attributbaserad åtkomstkontroll (ABAC) i AWS identitets- och åtkomsthantering (IAM) för att tillhandahålla dessa funktioner. ABAC är ett kraftfullt tillvägagångssätt som du kan använda för att isolera resurser mellan hyresgäster.
I det här inlägget ger vi vägledning om hur du konfigurerar IAM-policyer för hyresgäster som använder ABAC-principer och prognoser. För att demonstrera konfigurationen satte vi upp två hyresgäster, TenantA
och TenantB
, och visa ett användningsfall i samband med ett SaaS-program med hjälp av Prognos. I vårt användningsfall, TenantB
kan inte ta bort TenantA
resurser och vice versa. Följande diagram illustrerar vår arkitektur.
TenantA
och TenantB
har tjänster som körs som mikroservice inom Amazon Elastic Kubernetes-tjänst (Amazon EKS). Klientapplikationen använder Forecast som en del av sitt affärsflöde.
Prognosdata intag
Prognosen importerar data från hyresgästens Amazon enkel lagringstjänst (Amazon S3) hink till den prognostiserade S3-hinken. Data kan krypteras under transport och i vila automatiskt med hjälp av prognoshanterade nycklar eller hyresgästspecifika nycklar igenom AWS nyckelhanteringstjänst (AWS KMS). Den hyresgästspecifika nyckeln kan skapas av SaaS-applikationen som en del av ombordstigning, eller så kan hyresgästen tillhandahålla sin egen kundhanterade nyckel (CMK) med AWS KMS. Återkallande av tillstånd för den klientspecifika nyckeln hindrar Prognos från att använda klientens data. Vi rekommenderar att du använder en klientspecifik nyckel och en IAM-roll per klient i en SaaS-miljö med flera klienter. Detta gör det möjligt att säkra data på klient-för-klient-basis.
Lösningsöversikt
Du kan partitionera data på Amazon S3 för att separera hyresgäståtkomst på olika sätt. För det här inlägget diskuterar vi två strategier:
- Använd en S3-hink per hyresgäst
- Använd en enda S3-hink och separera klientdata med ett prefix
Mer information om olika strategier finns i Lagring av data för flera hyresgäster på Amazon S3 GitHub -repo.
När du använder en hink per hyresgäst använder du en IAM-policy för att begränsa åtkomsten till en viss hyresgästs S3-hink. Till exempel:
Det finns en hård gräns för antalet S3-skott per konto. En strategi för flera konton måste övervägas för att övervinna denna gräns.
I vårt andra alternativ separeras klientdata med ett S3-prefix i en enda S3-hink. Vi använder en IAM-policy för att begränsa åtkomst inom ett hinkprefix per hyresgäst. Till exempel:
För det här inlägget använder vi det andra alternativet att tilldela S3-prefix i en enda hink. Vi krypterar klientdata med hjälp av CMK i AWS KMS.
Hyresgästens ombordstigning
SaaS-applikationer är beroende av en friktionsfri modell för att introducera nya hyresgäster i sin miljö. Detta kräver ofta orkestrering av flera komponenter för att framgångsrikt tillhandahålla och konfigurera alla element som behövs för att skapa en ny klient. Denna process, i SaaS-arkitektur, kallas hyresgästen ombord. Detta kan initieras direkt av hyresgäster eller som en del av en leverantörshanterad process. Följande diagram illustrerar flödet av att konfigurera Prognos per hyresgäst som en del av ombordstigningsprocessen.
Resurser är taggade med klientinformation. För det här inlägget märker vi resurser med ett värde för hyresgästen, till exempel tenant_a
.
Skapa en prognosroll
Denna IAM-roll antas av Prognos per hyresgäst. Du bör tillämpa följande policy för att Prognosen ska kunna interagera med Amazon S3 och AWS KMS i kundkontot. Rollen är taggad med tagghyresgästen. Se till exempel följande kod:
Skapa policyerna
I nästa steg skapar vi policyer för vår prognosroll. För det här inlägget delar vi upp dem i två policyer för mer läsbarhet, men du kan skapa dem efter dina behov.
Policy 1: Prognos skrivskyddad åtkomst
Följande policy ger behörighet att beskriva, lista och fråga Prognosresurser. Denna policy begränsar Prognos till skrivskyddad åtkomst. Valideringsvillkor för hyresgästtaggen i följande kod ser till att hyresgästtaggsvärdet matchar huvudmännens klienttagg. Referera till fet kod för detaljer.
Policy 2: åtkomstpolicy för Amazon S3 och AWS KMS
Följande policy ger AWS KMS behörighet och åtkomst till S3-klientprefixet. Valideringsvillkor för hyresgästtaggen i följande kod ser till att hyresgästtaggsvärdet matchar huvudmännens klienttagg. Referera till fet kod för detaljer.
Skapa en klient specifik nyckel
Vi skapar nu en hyresgästspecifik nyckel i AWS KMS per hyresgäst och märker den med hyresgästtaggsvärdet. Alternativt kan hyresgästen ta med sin egen nyckel till AWS KMS. Vi ger föregående roller (Forecast_TenantA_Role
or Forecast_TenantB_Role
) åtkomst till den hyresgästspecifika nyckeln.
Följande skärmdump visar till exempel nyckel-värdeparet av tenant
och tenant_a
.
Följande skärmdump visar IAM-rollerna som kan använda den här nyckeln.
Skapa en applikationsroll
Den andra rollen vi skapar antas av SaaS-applikationen per klient. Du bör tillämpa följande policy för att tillåta att appen interagerar med Prognos, Amazon S3 och AWS KMS. Rollen är taggad med tagghyresgästen. Se följande kod:
Skapa policyerna
Vi skapar nu policyer för applikationsrollen. För det här inlägget delar vi upp dem i två policyer för mer läsbarhet, men du kan skapa dem efter dina behov.
Policy 1: Prognosåtkomst
Följande policy ger behörighet att skapa, uppdatera och ta bort prognosresurser. Policyn tillämpar taggkravet under skapandet. Dessutom begränsar det list
, describe
och delete
åtgärder på resurser till respektive hyresgäst. Denna policy har IAM PassRole
att låta prognosen ta rollen.
Smakämnen tenant
taggvalideringsvillkor i följande kod ser till att hyresgästtaggsvärdet matchar hyresgästen. Referera till fet kod för detaljer.
Policy 2: Amazon S3, AWS KMS, Amazon CloudWatch och tillgång till resursgrupper
Följande policy ger behörighet att få tillgång till Amazon S3 och AWS KMS-resurser, och även amazoncloudwatch. Det begränsar åtkomst till det klient-specifika S3-prefixet och klient-specifika CMK. Hyresgästvalideringsvillkoret är i fet kod.
Skapa en resursgrupp
Resursgruppen gör det möjligt att fråga alla taggade resurser av klienten. I följande exempelkod används AWS-kommandoradsgränssnitt (AWS CLI) för att skapa en resursgrupp för TenantA
:
Prognos applikationsflöde
Följande diagram illustrerar vårt applikationsflöde för prognoser. Applikationstjänsten antar IAM-roll för hyresgästen och som en del av affärsflödet åberopar Forecast API.
Skapa en prediktor för TenantB
Resurser som skapats bör taggas med klienttagaren. Följande kod använder Python (Boto3) API för att skapa en prediktor för TenantB (se fet kod för detaljer):
Skapa en prognos om prediktorn för TenantB
Följande kod använder Python (Boto3) API för att skapa en prognos för prediktorn du just skapade:
Validera åtkomst till prognosresurser
I det här avsnittet bekräftar vi att endast respektive klient kan få tillgång till prognosresurser. Åtkomst, ändring eller radering av prognosresurser som tillhör en annan klient ger ett fel. Följande kod använder Python (Boto3) API för att demonstrera TenantA som försöker ta bort en TenantB-prognosresurs:
Lista och övervaka prediktorer
Följande exempelkod använder Python (Boto3) API för att fråga Prognoser för TenantA med hjälp av resursgrupper:
Som AWS välarkitekterade ramverk förklarar, är det viktigt att övervaka servicekvoter (som också kallas servicegränser). Prognosen har begränsningar per konto; för mer information, se Riktlinjer och kvoter.
Följande kod är ett exempel på att fylla i ett CloudWatch-mått med det totala antalet prediktorer:
andra överväganden
Resursbegränsningar och strypning måste hanteras av applikationen över hyresgäster. Om du inte kan ta emot Prognosgränser, bör du överväga en konfiguration med flera konton.
Prognoslistans API: er eller resursgruppssvaret måste filtreras efter applikation baserat på tenant
taggvärde.
Slutsats
I det här inlägget visade vi hur man isolerar prognosåtkomst med hjälp av ABAC-tekniken i en SaaS-applikation med flera hyresgäster. Vi visade hur man begränsar åtkomst till Prognos för klient med hjälp av klienttaggen. Du kan ytterligare anpassa policyer genom att använda fler taggar eller tillämpa denna strategi på andra AWS-tjänster.
Mer information om att använda ABAC som auktoriseringsstrategi finns i Vad är ABAC för AWS?
Om författarna
Gunjan Garg är en Sr. Software Development Engineer i AWS Vertical AI-teamet. I sin nuvarande roll på Amazon Forecast fokuserar hon på tekniska problem och tycker om att bygga skalbara system som ger mest användare till slutanvändarna. På fritiden tycker hon om att spela Sudoku och Minesweeper.
Matias Battaglia är teknisk chef på Amazon Web Services. I sin nuvarande roll tycker han om att hjälpa kunder i alla faser av molnresan. På sin fritid tycker han om att bygga AI / ML-projekt.
Rakesh Ramadas är ISV Solution Architect på Amazon Web Services. Hans fokusområden inkluderar AI / ML och Big Data.
- tillgång
- Konto
- Handling
- Annat
- AI
- amason
- Amazon Prognos
- Amazon Web Services
- api
- API: er
- Ansökan
- tillämpningar
- arkitektur
- tillstånd
- AWS
- fakturering
- SLUTRESULTAT
- Byggnad
- företag
- cloud
- koda
- Efterlevnad
- Aktuella
- Kunder
- datum
- datatillgång
- Avkryptera
- leverans
- Utveckling
- ingenjör
- Teknik
- Miljö
- flöda
- Fokus
- Fri
- GitHub
- Grupp
- Hur ser din drömresa ut
- How To
- HTTPS
- IAM
- Identitet
- Inverkan
- informationen
- IT
- Nyckel
- nycklar
- Kubernetes
- inlärning
- linje
- Lista
- maskininlärning
- ledning
- ML
- modell
- övervakning
- Onboarding
- Alternativet
- Övriga
- Strategier
- policy
- projekt
- Python
- Krav
- resurs
- Resurser
- respons
- REST
- rinnande
- SaaS
- Serier
- Tjänster
- in
- inställning
- delas
- Enkelt
- Mjukvara
- mjukvaruutveckling
- Lösningar
- delas
- igång
- .
- förvaring
- Strategi
- System
- Teknisk
- Teknologi
- tid
- transitering
- Uppdatering
- användare
- värde
- webb
- webbservice
- inom