Globalt sett har många organisationer kritisk affärsdata spridd mellan olika innehållsförråd, vilket gör det svårt att komma åt denna information på ett strömlinjeformat och sammanhållet sätt. Att skapa en enhetlig och säker sökupplevelse är en betydande utmaning för organisationer eftersom varje arkiv innehåller ett brett utbud av dokumentformat och åtkomstkontrollmekanismer.
Amazon Kendra är en intelligent företagssöktjänst som tillåter användare att söka i olika innehållsförråd. Kunder ansvarar för att autentisera och auktorisera användare att få åtkomst till deras sökapplikation, och Amazon Kendra möjliggör säker sökning för företagsapplikationer, och ser till att resultaten av en användares sökfråga endast inkluderar dokument som användaren har behörighet att läsa. Amazon Kendra kan enkelt validera identiteten för enskilda användare såväl som användargrupper som utför sökningar med tillägg av säkra söktokens. Genom att lägga till användartokens för säker sökning förenklas och säkras att utföra åtkomstbaserade filtrerade sökningar i Amazon Kendra. Du kan säkert skicka användaråtkomstinformation i frågans nyttolast istället för att använda attributfilter för att åstadkomma detta. Med den här funktionen kan Amazon Kendra validera tokeninformationen och automatiskt tillämpa den på sökresultaten för korrekt och säker åtkomstbaserad filtrering.
Amazon Kendra stöder tokenbaserad användaråtkomstkontroll med följande tokentyper:
- Öppna ID
- JWT med en delad hemlighet
- JWT med en publik nyckel
- JSON
Tidigare såg vi en demonstration av token-baserad användaråtkomstkontroll i Amazon Kendra med Open ID. I det här inlägget demonstrerar vi tokenbaserad användaråtkomstkontroll i Amazon Kendra med JWT med en delad hemlighet. JWT, eller JSON Web Token, är en öppen standard som används för att dela säkerhetsinformation mellan en klient och en server. Den innehåller kodade JSON-objekt, inklusive en uppsättning anspråk. JWTs signeras med en kryptografisk algoritm för att säkerställa att anspråken inte kan ändras efter att token har utfärdats. JWT:er är användbara i scenarier gällande auktorisering och informationsutbyte.
JWT består av tre delar separerade med punkter (.):
- Sidhuvud – Den innehåller delar som typen av token, som är JWT, signeringsalgoritmen som används, såsom HMAC SHA256 eller RSA, och en valfri nyckelidentifierare.
- nyttolast – Detta innehåller flera nyckel-värdepar, kallade hävdar, som utfärdas av identitetsleverantören. Utöver flera anspråk som rör utgivning och utgång av poletten kan poletten även innehålla information om den enskilde huvudmannen och hyresgästen.
- namnteckning – För att skapa signaturdelen tar du den kodade rubriken, den kodade nyttolasten, en hemlighet, algoritmen som anges i rubriken och signerar det.
Därför ser en JWT ut så här:
Följande är ett exempel på rubriken:
Följande är exempel på nyttolasten:
JWT skapas med en hemlig nyckel, och den hemliga nyckeln är privat för dig, vilket betyder att du aldrig kommer att avslöja den för allmänheten eller injicera den i JWT. När du tar emot en JWT från klienten kan du verifiera JWT med den hemliga nyckeln som är lagrad på servern. Alla ändringar av JWT kommer att resultera i verifieringsfel (JWT-validering).
Det här inlägget visar provanvändningen av en JWT med en delad åtkomstnyckel och dess användning för att säkra Amazon Kendra-index med åtkomstkontroller. I produktionen använder du en säker leverantör av autentiseringstjänster som du väljer och baserat på dina krav för att generera JWT.
För att lära dig mer om JWT, se Introduktion till JSON Web Tokens.
Lösningsöversikt
Liknande den inlägg med Open ID är den här lösningen designad för en uppsättning användare och grupper för att göra sökfrågor till ett dokumentförråd, och resultat returneras endast från de dokument som är auktoriserade för åtkomst inom den gruppen. Följande tabell visar vilka dokument varje användare har behörighet att få åtkomst till för vårt användningsfall. Dokumenten som används i detta exempel är en delmängd av AWS offentliga dokument.
Användare | Grupp | Dokumenttyp Auktoriserad för åtkomst |
Gäst | . | Bloggar |
Patricia | Kund | Bloggar, användarhandböcker |
James | Försäljning | Bloggar, användarhandböcker, fallstudier |
John | Marknadsföring | Bloggar, användarhandböcker, fallstudier, analytikerrapporter |
mary | Lösningsarkitekt | Bloggar, användarhandböcker, fallstudier, analytikerrapporter, whitepapers |
Följande diagram illustrerar skapandet av en JWT med en delad åtkomstnyckel för att kontrollera åtkomst för användare till de specifika dokumenten i Amazon Kendra-index.
När ett Amazon Kendra-index tar emot ett fråge-API-anrop med en användaråtkomsttoken, validerar det token med en delad hemlig nyckel (lagras säkert i AWS Secrets Manager) och får parametrar som användarnamn och grupper i nyttolasten. Amazon Kendra-indexet filtrerar sökresultaten baserat på den lagrade åtkomstkontrolllistan (ACL) och informationen som tas emot i användarens JWT. Dessa filtrerade resultat returneras som svar på det API-anrop som applikationen gör.
Förutsättningar
För att följa stegen i det här inlägget, se till att du har följande:
Generera en JWT med en delad hemlig nyckel
Följande exempel på Java-kod visar hur man skapar en JWT med en delad hemlig nyckel med öppen källkod jsonwebtoken paket. I produktionen kommer du att använda en säker leverantör av autentiseringstjänster som du väljer och baserat på dina krav för att generera JWT.
Vi skickar användarnamnet och grupperar informationen som påståenden i nyttolasten, signerar JWT med den delade hemligheten och genererar en JWT specifik för den användaren. Ange en 256 bitars sträng som din hemlighet och behåll värdet på den base64 URL-kodade delade hemligheten för att använda i ett senare steg.
Skapa ett Amazon Kendra-index med en delad hemlighet av JWT
För instruktioner om hur du skapar ett Amazon Kendra-index, se Skapa ett index. Anteckna AWS identitets- och åtkomsthantering (IAM) roll som du skapade under processen. Ge rollen åtkomst till S3-bucket och Secrets Manager efter principen om minst privilegium. Till exempel policyer, se Exempel på IAM-identitetsbaserade policyer. När du har skapat indexet bör din Amazon Kendra-konsol se ut som följande skärmdump.
Utför följande steg för att lägga till din hemlighet:
- På Amazon Kendra-konsolen, navigera till Användaråtkomstkontroll fliken på din indexdetaljsida.
- Välja Ändra inställningar.
- Eftersom vi implementerar tokenbaserad åtkomstkontroll, välj Ja under Inställningar för åtkomstkontroll.
- Enligt Token-konfigurationväljer JWT med delad hemlighet för Token typ.
- För Typ av hemlighetväljer Nya.
- För Hemligt namn, stiga på
AmazonKendra-jwt-shared-secret
eller valfritt namn. - För Nyckel-ID, ange nyckel-ID för att matcha din JWT som du skapade i Java-exemplet.
- För Algoritm, välj HS256-algoritmen.
- För Delad hemlighet, ange din behållna base64 URL-kodade hemlighet som genererats från Java-koden tidigare.
- Välja Spara hemlighet.
Hemligheten kommer nu att lagras i Secrets Manager som en JSON Web Key Set (JWKS). Du kan hitta den på Secrets Manager-konsolen. För mer information, se Använda en JSON Web Token (JWT) med en delad hemlighet.
- Expandera Avancerad konfiguration sektion.
I det här steget ställer vi in användarnamnet och grupperna som kommer att extraheras från JWT-anspråk och matchas med ACL när signaturen är giltig.
- För AnvändarnamnSkriv in ditt användarnamn.
- För Grupper, ange grupper.
- Lämna de valfria fälten som standard.
- Välja NästaOch välj sedan Uppdatering.
Förbered din S3-hink som en datakälla
För att förbereda en S3-bucket som en datakälla, skapa en S3-bucket. I terminalen med AWS-kommandoradsgränssnitt (AWS CLI) eller AWS CloudShell, kör följande kommandon för att ladda upp dokumenten och metadata till datakällan:
Dokumenten som efterfrågas lagras i en S3-hink. Varje dokumenttyp har en separat mapp: bloggar, fallstudier, analytikerrapporter, användarguider och vitböcker. Denna mappstruktur finns i en mapp som heter Data. Metadatafiler inklusive ACL:erna finns i en mapp som heter Meta.
Vi använder Amazon Kendra S3-kontakten för att konfigurera denna S3-skopa som datakälla. När datakällan synkroniseras med Amazon Kendra-index, genomsöker och indexerar den alla dokument samt samlar in ACL och dokumentattribut från metadatafilerna. För att lära dig mer om ACL:er som använder metadatafiler, se Amazon S3-dokumentmetadata. För det här exemplet använder vi det anpassade attributet DocumentType
för att ange typen av dokument. Efter uppladdningen bör din S3-hinkstruktur se ut som följande skärmdump.
För att ställa in det anpassade attributet DocumentType
, slutför följande steg:
- Välj ditt Kendra-index och välj Facettdefinition i navigeringsfönstret.
- Välja Lägg till fält.
- För Fält namn, stiga på
DocumentType
. - För Data typväljer Sträng.
- Välja Lägg till.
Nu kan du mata in dokument från hinken du skapade till Amazon Kendra-index med S3-kontakten. För fullständiga instruktioner, se Mata in dokument genom Amazon Kendra S3 Connector.
- I Konfigurera synkroniseringsinställningar avsnitt, för Ange datakällans plats, skriv in din S3-hink (
s3://kendra-demo-bucket/
). - För Metadata filer prefix mapp plats, stiga på
Meta/
. - Bygga ut Ytterligare konfiguration.
- På Inkludera mönster flik, för Prefix, stiga på
Data/
.
För mer information om kontakter som stöds, se kontakter.
- Välja Nästaoch sedan Nästa igen då Uppdatering.
- Vänta tills datakällan skapas, välj sedan datakällan och välj Synkronisera nu.
Synkroniseringen av datakällan kan ta 10–15 minuter att slutföra. När din synkronisering är klar, Senaste synkroniseringsstatus ska visas som Framgångsrik.
Fråga ett Amazon Kendra-index
För att köra en testfråga på ditt index, utför följande steg:
- Välj på Amazon Kendra-konsolen Sök efter indexerat innehåll i navigeringsfönstret.
- Bygga ut Testfråga med en åtkomsttoken.
- Välja Använd token.
- Vi kan skapa en JWT för användaren och gruppen. I det här exemplet skapar vi en JWT för
AWS-SA
grupp. Vi ersätter användarnamn som Mary och grupper somAWS-SA
i JWT-generationssteget. - Ange den genererade token och välj Ansök.
Baserat på ACL bör vi vara resultat från alla mappar: bloggar, användarguider, fallstudier, analytikerrapporter och whitepapers.
På samma sätt, när du är inloggad som James från AWS-Sales
grupp och passerar motsvarande JWT har vi tillgång till endast bloggar, användarguider och fallstudier.
Vi kan också söka i indexet som gäst utan att skicka en token. Gästen kan bara komma åt innehållet i bloggmappen.
Experimentera med andra frågor du kan tänka på när du är inloggad som olika användare och grupper och observera resultaten.
Städa upp
För att undvika framtida kostnader, rensa upp de resurser du skapade som en del av denna lösning. För att ta bort Amazon Kendra-indexet och S3-hinken som skapades när lösningen testades, se Städa. För att ta bort Secrets Manager-hemligheten, se Ta bort en AWS Secrets Manager-hemlighet.
Slutsats
I det här inlägget såg vi hur Amazon Kendra kan utföra säkra sökningar som endast returnerar sökresultat baserat på användaråtkomst. Med tillägget av en JWT med en delad hemlig nyckel kan vi enkelt validera identiteten för såväl enskilda användare som användargrupper som utför sökningar. Detta liknande tillvägagångssätt kan utvidgas till en JWT med en publik nyckel. För att lära dig mer, se Använda en JSON Web Token (JWT) med en delad hemlighet.
Om författarna
Nitin Eusebius är Sr. Enterprise Solutions Architect på AWS med över 18 års erfarenhet av mjukvaruteknik och företagsarkitektur. Han arbetar med kunder för att hjälpa dem att bygga väldesignade applikationer på AWS-plattformen. Han brinner för att lösa tekniska utmaningar och hjälpa kunder med deras molnresa.
Kruthi Jayasimha Rao är Partner Solutions Architect med inriktning på AI och ML. Hon ger teknisk vägledning till AWS-partners i att följa bästa praxis för att bygga säkra, motståndskraftiga och högt tillgängliga lösningar i AWS-molnet.
Ishaan Berry är mjukvaruingenjör på Amazon Web Services och arbetar på Amazon Kendra, en sökmotor för företag. Han brinner för säkerhet och har arbetat med nyckelkomponenter i Kendras åtkomstkontrollfunktioner under de senaste två åren.
Akash Bhatia är en Principal Solutions-arkitekt med AWS. Hans nuvarande fokus är att hjälpa företagskunder att uppnå sina affärsresultat genom att utforma och implementera innovativa och motståndskraftiga lösningar i stor skala. Han har arbetat med teknik i över 15 år på företag som sträcker sig från Fortune 100 till nystartade företag inom tillverkning, flyg och detaljhandel.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. Tillgång här.
- Minting the Future med Adryenn Ashley. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/secure-your-amazon-kendra-indexes-with-the-acl-using-a-jwt-shared-secret-key/
- :är
- $UPP
- 10
- 100
- 11
- 15 år
- 420
- 7
- 8
- 9
- a
- Able
- Om oss
- tillgång
- åstadkomma
- exakt
- Uppnå
- tvärs
- Dessutom
- Aerospace
- Efter
- AI
- algoritm
- Alla
- tillåter
- amason
- Amazon Kendra
- Amazon Web Services
- bland
- analytiker
- och
- api
- Ansökan
- tillämpningar
- Ansök
- tillvägagångssätt
- arkitektur
- ÄR
- AS
- At
- attribut
- Autentisering
- tillstånd
- automatiskt
- tillgänglig
- AWS
- baserat
- BE
- därför att
- Där vi får lov att vara utan att konstant prestera,
- BÄST
- bästa praxis
- mellan
- Bit
- bloggar
- SLUTRESULTAT
- företag
- by
- Ring
- kallas
- KAN
- Vid
- Fallstudier
- utmanar
- utmaningar
- val
- Välja
- hävdar
- klass
- klient
- cloud
- koda
- Företag
- fullborda
- komponenter
- konfiguration
- Konsol
- innehålla
- innehåller
- innehåll
- innehåll
- kontroll
- kontroller
- Motsvarande
- Kostar
- skapa
- skapas
- Skapa
- skapande
- kritisk
- crypto
- kryptografisk
- Aktuella
- beställnings
- Kunder
- datum
- Datum
- Standard
- demonstrera
- demonstrerar
- utformade
- detalj
- detaljer
- olika
- svårt
- dispergerad
- dokumentera
- dokument
- ner
- under
- varje
- lätt
- möjliggör
- Motor
- ingenjör
- Teknik
- säkerställa
- ange
- Företag
- exempel
- utbyta
- erfarenhet
- Misslyckande
- Leverans
- Funktioner
- Fält
- Filer
- filtrering
- filter
- Fokus
- följer
- efter
- För
- Förmögenhet
- från
- full
- framtida
- Få
- generera
- genereras
- generering
- Grupp
- Gruppens
- Gäst
- vägleda
- Guider
- Har
- headers
- hjälpa
- höggradigt
- Hur ser din drömresa ut
- How To
- html
- http
- HTTPS
- ID
- identifierare
- Identitet
- genomföra
- importera
- in
- innefattar
- Inklusive
- index
- index
- individuellt
- informationen
- innovativa
- omedelbar
- istället
- instruktioner
- Intelligent
- ISS
- emission
- Utfärdad
- IT
- DESS
- java
- John
- resa
- json
- Jwt
- Nyckel
- nycklar
- Kid
- LÄRA SIG
- tycka om
- linje
- Lista
- se
- ser ut som
- UTSEENDE
- gjord
- göra
- Framställning
- chef
- sätt
- Produktion
- många
- Match
- matchas
- betyder
- meta
- metadata
- minuter
- ML
- mer
- namn
- Som heter
- Navigera
- Navigering
- Nya
- objekt
- observera
- of
- on
- öppet
- öppen källkod
- beställa
- organisationer
- Övriga
- konturer
- paket
- sida
- par
- panelen
- parametrar
- del
- partnern
- partner
- reservdelar till din klassiker
- passera
- Förbi
- brinner
- Tidigare
- Utföra
- utför
- plattform
- plato
- Platon Data Intelligence
- PlatonData
- Strategier
- Inlägg
- praxis
- Förbered
- tidigare
- Principal
- privat
- process
- Produktion
- ge
- leverantör
- ger
- allmän
- sökfrågor
- område
- som sträcker sig
- Läsa
- motta
- mottagna
- erhåller
- om
- ersätta
- Rapport
- Repository
- Krav
- elastisk
- Resurser
- respons
- ansvarig
- resultera
- Resultat
- detaljhandeln
- behålla
- avkastning
- avslöjar
- Roll
- rsa
- Körning
- Skala
- scenarier
- Sök
- sökmotor
- Secret
- §
- säkra
- Säkrad
- säkert
- säkerhet
- separat
- service
- Leverantör
- Tjänster
- in
- flera
- SHA256
- Dela
- delas
- skall
- show
- Visar
- signera
- signerad
- signifikant
- signering
- liknande
- förenklade
- Mjukvara
- Programvara ingenjör
- mjukvaruutveckling
- lösning
- Lösningar
- Lösa
- Källa
- specifik
- specificerade
- standard
- nystartade företag
- Steg
- Steg
- lagras
- strömlinjeformad
- Sträng
- struktur
- studier
- sådana
- Som stöds
- Stöder
- system
- bord
- Ta
- Teknisk
- Teknologi
- hyresgäst
- terminal
- testa
- Testning
- den där
- Smakämnen
- den information
- deras
- Dem
- Dessa
- tre
- Genom
- tid
- till
- token
- tokens
- typer
- enhetlig
- URL
- Användning
- användning
- användningsfall
- Användare
- användare
- BEKRÄFTA
- godkännande
- värde
- olika
- Verifiering
- verifiera
- vertikaler
- webb
- webbservice
- VÄL
- som
- medan
- Tekniska rapporter
- VEM
- bred
- Brett utbud
- kommer
- med
- inom
- utan
- arbetade
- arbetssätt
- fungerar
- Workshops
- år
- Om er
- Din
- zephyrnet
- Postnummer