Globalt har mange organisationer kritiske forretningsdata spredt mellem forskellige indholdslagre, hvilket gør det vanskeligt at få adgang til disse oplysninger på en strømlinet og sammenhængende måde. At skabe en samlet og sikker søgeoplevelse er en betydelig udfordring for organisationer, fordi hvert lager indeholder en bred vifte af dokumentformater og adgangskontrolmekanismer.
Amazon Kendra er en intelligent virksomhedssøgningstjeneste, der giver brugerne mulighed for at søge på tværs af forskellige indholdslagre. Kunder er ansvarlige for at godkende og autorisere brugere til at få adgang til deres søgeapplikation, og Amazon Kendra muliggør sikker søgning efter virksomhedsapplikationer og sikrer, at resultaterne af en brugers søgeforespørgsel kun omfatter dokumenter, som brugeren har tilladelse til at læse. Amazon Kendra kan nemt validere identiteten af individuelle brugere såvel som brugergrupper, der udfører søgninger med tilføjelsen af sikre søgetokens. Ved at tilføje brugertokens til sikker søgning er det forenklet og sikret at udføre adgangsbaserede filtrerede søgninger i Amazon Kendra. Du kan sikkert videregive brugeradgangsoplysninger i forespørgselsnyttelasten i stedet for at bruge attributfiltre til at opnå dette. Med denne funktion kan Amazon Kendra validere tokenoplysningerne og automatisk anvende dem på søgeresultaterne for nøjagtig og sikker adgangsbaseret filtrering.
Amazon Kendra understøtter token-baseret brugeradgangskontrol ved hjælp af følgende tokentyper:
- Open-ID
- JWT med en fælles hemmelighed
- JWT med en offentlig nøgle
- JSON
Tidligere så vi en demonstration af token-baseret brugeradgangskontrol i Amazon Kendra med Open ID. I dette indlæg demonstrerer vi token-baseret brugeradgangskontrol i Amazon Kendra med JWT med en delt hemmelighed. JWT, eller JSON Web Token, er en åben standard, der bruges til at dele sikkerhedsoplysninger mellem en klient og en server. Den indeholder kodede JSON-objekter, inklusive et sæt krav. JWT'er er underskrevet ved hjælp af en kryptografisk algoritme for at sikre, at kravene ikke kan ændres, efter tokenet er udstedt. JWT'er er nyttige i scenarier vedrørende autorisation og informationsudveksling.
JWT'er består af tre dele adskilt af prikker (.):
- Header – Den indeholder dele som typen af token, som er JWT, den signeringsalgoritme, der bruges, såsom HMAC SHA256 eller RSA, og en valgfri nøgleidentifikator.
- payload – Dette indeholder flere nøgleværdi-par, kaldet fordringer, som er udstedt af identitetsudbyderen. Ud over flere krav vedrørende udstedelse og udløb af brikken, kan brikken også indeholde oplysninger om den enkelte hovedstol og lejer.
- underskrift – For at oprette signaturdelen tager du den kodede header, den kodede nyttelast, en hemmelighed, algoritmen specificeret i headeren og underskriver det.
Derfor ser en JWT sådan ud:
Følgende er et eksempel på en header:
Følgende er prøvens nyttelast:
JWT er oprettet med en hemmelig nøgle, og den hemmelige nøgle er privat for dig, hvilket betyder, at du aldrig vil afsløre det for offentligheden eller injicere det i JWT. Når du modtager en JWT fra klienten, kan du verificere JWT med den hemmelige nøgle, der er gemt på serveren. Enhver ændring af JWT vil resultere i verifikationsfejl (JWT validering).
Dette indlæg demonstrerer eksempelbrugen af en JWT ved hjælp af en delt adgangsnøgle og dens brug til at sikre Amazon Kendra-indekser med adgangskontrol. I produktionen bruger du en sikker autentificeringstjenesteudbyder efter eget valg og baseret på dine krav til at generere JWT'er.
For at lære mere om JWT'er, se Introduktion til JSON Web Tokens.
Løsningsoversigt
Svarende til indlæg med Open ID er denne løsning designet til et sæt brugere og grupper, der kan foretage søgeforespørgsler til et dokumentlager, og resultater returneres kun fra de dokumenter, der er godkendt til adgang inden for denne gruppe. Følgende tabel viser, hvilke dokumenter hver bruger har tilladelse til at få adgang til for vores use case. De dokumenter, der bruges i dette eksempel, er en delmængde af AWS offentlige dokumenter.
Bruger | gruppe | Dokumenttype godkendt til adgang |
Gæst | . | blogs |
Patricia | Kunden | Blogs, brugervejledninger |
James | Salg | Blogs, brugervejledninger, casestudier |
John | Marketing | Blogs, brugervejledninger, casestudier, analytikerrapporter |
Mary | Løsningsarkitekt | Blogs, brugervejledninger, casestudier, analytikerrapporter, whitepapers |
Følgende diagram illustrerer oprettelsen af en JWT med en delt adgangsnøgle til at kontrollere adgangen til brugere til de specifikke dokumenter i Amazon Kendra-indekset.
Når et Amazon Kendra-indeks modtager et forespørgsels-API-kald med et brugeradgangstoken, validerer det tokenet ved hjælp af en delt hemmelig nøgle (gemt sikkert i AWS Secrets Manager) og får parametre som brugernavn og grupper i nyttelasten. Amazon Kendra-indekset filtrerer søgeresultaterne baseret på den lagrede adgangskontrolliste (ACL) og de oplysninger, der modtages i brugerens JWT. Disse filtrerede resultater returneres som svar på forespørgslens API-kald foretaget af applikationen.
Forudsætninger
For at følge trinene i dette indlæg skal du sørge for at have følgende:
Generer en JWT med en delt hemmelig nøgle
Følgende eksempel på Java-kode viser, hvordan man opretter en JWT med en delt hemmelig nøgle ved hjælp af open source jsonwebtoken pakke. I produktionen vil du bruge en sikker autentificeringstjenesteudbyder efter eget valg og baseret på dine krav til at generere JWT'er.
Vi videregiver brugernavnet og grupperer oplysningerne som påstande i nyttelasten, signerer JWT med den delte hemmelighed og genererer en JWT specifik for den bruger. Angiv en 256 bit streng som din hemmelighed og behold værdien af den base64 URL-kodede delte hemmelighed til brug i et senere trin.
Opret et Amazon Kendra-indeks med en delt JWT-hemmelighed
For instruktioner om oprettelse af et Amazon Kendra-indeks, se Oprettelse af et indeks. Noter ned AWS identitets- og adgangsstyring (IAM) rolle, som du oprettede under processen. Giv rollen adgang til S3-bøtten og Secrets Manager efter princippet om mindst privilegium. For eksempel politikker, se Eksempel på IAM-identitetsbaserede politikker. Når du har oprettet indekset, skal din Amazon Kendra-konsol se ud som følgende skærmbillede.
Udfør følgende trin for at tilføje din hemmelighed:
- På Amazon Kendra-konsollen skal du navigere til Brugeradgangskontrol fanen på din indeksdetaljeside.
- Vælg Rediger indstillinger.
- Fordi vi implementerer token-baseret adgangskontrol, skal du vælge Ja under Indstillinger for adgangskontrol.
- Under Token-konfiguration, vælg JWT med fælles hemmelighed forum Token type.
- Til Type hemmelighed, vælg Ny.
- Til Hemmeligt navn, gå ind
AmazonKendra-jwt-shared-secret
eller et hvilket som helst navn efter eget valg. - Til Nøgle-id, indtast nøgle-id'et, der matcher din JWT, som du oprettede i prøveeksemplet på Java-koden.
- Til Algoritme, vælg HS256-algoritmen.
- Til Delt hemmelighed, indtast din bevarede base64 URL-kodede hemmelighed genereret fra Java-koden tidligere.
- Vælg Gem hemmelighed.
Hemmeligheden vil nu blive gemt i Secrets Manager som et JSON Web Key Set (JWKS). Du kan finde den på Secrets Manager-konsollen. For flere detaljer, se Brug af et JSON Web Token (JWT) med en delt hemmelighed.
- Udvid Avanceret konfiguration sektion.
I dette trin opsætter vi brugernavnet og grupperne, der vil blive udtrukket fra JWT-krav og matchet med ACL, når signaturen er gyldig.
- Til Brugernavn¸ indtast brugernavn.
- Til Grupper, indtast grupper.
- Lad de valgfrie felter være standard.
- Vælg Næste, Og vælg derefter Opdatering.
Forbered din S3-bøtte som en datakilde
For at forberede en S3-bucket som datakilde skal du oprette en S3-bucket. I terminalen med AWS kommandolinjegrænseflade (AWS CLI) eller AWS CloudShell, kør følgende kommandoer for at uploade dokumenterne og metadataene til datakilden:
Dokumenterne, der forespørges, gemmes i en S3-bøtte. Hver dokumenttype har en separat mappe: blogs, casestudier, analytikerrapporter, brugervejledninger og hvidbøger. Denne mappestruktur er indeholdt i en mappe med navnet Data. Metadatafiler inklusive ACL'erne er i en mappe med navnet Meta.
Vi bruger Amazon Kendra S3-stikket til at konfigurere denne S3-bøtte som datakilden. Når datakilden er synkroniseret med Amazon Kendra-indekset, gennemgår og indekserer den alle dokumenter samt indsamler ACL'erne og dokumentattributterne fra metadatafilerne. For at lære mere om ACL'er ved hjælp af metadatafiler, se Amazon S3 dokumentmetadata. Til dette eksempel bruger vi den tilpassede attribut DocumentType
for at angive dokumentets type. Efter upload skal din S3-bøttestruktur se ud som følgende skærmbillede.
For at indstille den tilpassede attribut DocumentType
, udfør følgende trin:
- Vælg dit Kendra-indeks og vælg Facet definition i navigationsruden.
- Vælg Tilføj felt.
- Til Feltnavn, gå ind
DocumentType
. - Til Datatype, vælg String.
- Vælg Tilføj.
Nu kan du indlæse dokumenter fra den bøtte, du har oprettet, til Amazon Kendra-indekset ved hjælp af S3-stikket. For fuldstændige instruktioner, se Indtagelse af dokumenter gennem Amazon Kendra S3-stikket.
- I Konfigurer synkroniseringsindstillinger afsnit, for Indtast datakildens placering, indtast din S3-spand (
s3://kendra-demo-bucket/
). - Til Metadatafilers præfiks mappeplacering, gå ind
Meta/
. - Udvid Yderligere konfiguration.
- På Inkluder mønstre fane, for Præfiks, gå ind
Data/
.
For mere information om understøttede stik, se Stik.
- Vælg Næste, derefter Næste igen, derefter Opdatering.
- Vent på, at datakilden er oprettet, vælg derefter datakilden og vælg Synkroniser nu.
Synkroniseringen af datakilden kan tage 10-15 minutter at fuldføre. Når din synkronisering er fuldført, Sidste synkroniseringsstatus skal vise som Vellykket.
Forespørg et Amazon Kendra-indeks
For at køre en testforespørgsel på dit indeks skal du udføre følgende trin:
- Vælg på Amazon Kendra-konsollen Søg efter indekseret indhold i navigationsruden.
- Udvid Testforespørgsel med et adgangstoken.
- Vælg Anvend token.
- Vi kan generere en JWT for brugeren og gruppen. I dette eksempel opretter vi en JWT for
AWS-SA
gruppe. Vi erstatter brugernavn som Mary og grupper somAWS-SA
i JWT-generationstrinnet. - Indtast det genererede token og vælg Indløs.
Baseret på ACL bør vi være resultater fra alle mapper: blogs, brugervejledninger, casestudier, analytikerrapporter og whitepapers.
På samme måde, når du er logget ind som James fra AWS-Sales
gruppe og passerer den tilsvarende JWT, har vi kun adgang til blogs, brugervejledninger og casestudier.
Vi kan også søge i indekset som gæst uden at videregive et token. Gæsten har kun adgang til indholdet i blogs-mappen.
Eksperimenter med andre forespørgsler, du kan tænke på, mens du er logget ind som forskellige brugere og grupper, og observer resultaterne.
Ryd op
For at undgå fremtidige omkostninger skal du rydde op i de ressourcer, du har oprettet som en del af denne løsning. For at slette Amazon Kendra-indekset og S3-bøtten, der blev oprettet under test af løsningen, se Ryd op. For at slette Secrets Manager-hemmeligheden, se Slet en AWS Secrets Manager-hemmelighed.
Konklusion
I dette indlæg så vi, hvordan Amazon Kendra kan udføre sikre søgninger, der kun returnerer søgeresultater baseret på brugeradgang. Med tilføjelsen af en JWT med en delt hemmelig nøgle, kan vi nemt validere identiteten på individuelle brugere samt brugergrupper, der udfører søgninger. Denne lignende tilgang kan udvides til en JWT med en offentlig nøgle. For at lære mere, se Brug af et JSON Web Token (JWT) med en delt hemmelighed.
Om forfatterne
Nitin Eusebius er Sr. Enterprise Solutions Architect hos AWS med over 18 års erfaring inden for Software Engineering og Enterprise Architecture. Han arbejder sammen med kunder om at hjælpe dem med at bygge veldesignede applikationer på AWS-platformen. Han brænder for at løse teknologiske udfordringer og hjælpe kunder med deres cloud-rejse.
Kruthi Jayasimha Rao er Partner Solutions Architect med fokus i AI og ML. Hun giver teknisk vejledning til AWS-partnere i at følge bedste praksis for at bygge sikre, robuste og yderst tilgængelige løsninger i AWS Cloud.
Ishaan Berry er softwareingeniør hos Amazon Web Services og arbejder på Amazon Kendra, en virksomhedssøgemaskine. Han brænder for sikkerhed og har arbejdet på nøglekomponenter i Kendras adgangskontrolfunktioner i løbet af de sidste 2 år.
Akash Bhatia er Principal Solutions-arkitekt hos AWS. Hans nuværende fokus er at hjælpe virksomhedskunder med at opnå deres forretningsresultater gennem arkitektur og implementering af innovative og robuste løsninger i stor skala. Han har arbejdet med teknologi i over 15 år hos virksomheder lige fra Fortune 100 til nystartede virksomheder inden for fremstilling, rumfart og detailhandel.
- 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-your-amazon-kendra-indexes-with-the-acl-using-a-jwt-shared-secret-key/
- :er
- $OP
- 10
- 100
- 11
- 15 år
- 420
- 7
- 8
- 9
- a
- I stand
- Om
- adgang
- udrette
- præcis
- opnå
- tværs
- Desuden
- Luftfart
- Efter
- AI
- algoritme
- Alle
- tillader
- Amazon
- Amazon Kendra
- Amazon Web Services
- blandt
- analytiker
- ,
- api
- Anvendelse
- applikationer
- Indløs
- tilgang
- arkitektur
- ER
- AS
- At
- attributter
- Godkendelse
- tilladelse
- automatisk
- til rådighed
- AWS
- baseret
- BE
- fordi
- være
- BEDSTE
- bedste praksis
- mellem
- Bit
- blogs
- bygge
- virksomhed
- by
- ringe
- kaldet
- CAN
- tilfælde
- Casestudier
- udfordre
- udfordringer
- valg
- Vælg
- fordringer
- klasse
- kunde
- Cloud
- kode
- Virksomheder
- fuldføre
- komponenter
- Konfiguration
- Konsol
- indeholder
- indeholder
- indhold
- indhold
- kontrol
- kontrol
- Tilsvarende
- Omkostninger
- skabe
- oprettet
- Oprettelse af
- skabelse
- kritisk
- krypto
- kryptografisk
- Nuværende
- skik
- Kunder
- data
- Dato
- Standard
- demonstrere
- demonstrerer
- konstrueret
- detail
- detaljer
- forskellige
- svært
- spredte
- dokumentet
- dokumenter
- ned
- i løbet af
- hver
- nemt
- muliggør
- Engine (Motor)
- ingeniør
- Engineering
- sikre
- Indtast
- Enterprise
- eksempel
- udveksling
- erfaring
- Manglende
- Feature
- Funktionalitet
- Fields
- Filer
- filtrering
- Filtre
- Fokus
- følger
- efter
- Til
- rigdom
- fra
- fuld
- fremtiden
- Gevinst
- generere
- genereret
- generation
- gruppe
- Gruppens
- Gæst
- vejledning
- Guides
- Have
- headers
- hjælpe
- stærkt
- Hvordan
- How To
- HTML
- http
- HTTPS
- ID
- identifikator
- Identity
- gennemføre
- importere
- in
- omfatter
- Herunder
- indeks
- indekser
- individuel
- oplysninger
- innovativ
- øjeblikkelig
- i stedet
- anvisninger
- Intelligent
- ISS
- udstedelse
- Udstedt
- IT
- ITS
- Java
- John
- rejse
- json
- Jwt
- Nøgle
- nøgler
- Barn
- LÆR
- ligesom
- Line (linje)
- Liste
- Se
- ligner
- UDSEENDE
- lavet
- lave
- Making
- leder
- måde
- Produktion
- mange
- Match
- matchede
- midler
- Meta
- Metadata
- minutter
- ML
- mere
- navn
- Som hedder
- Naviger
- Navigation
- Ny
- objekter
- observere
- of
- on
- åbent
- open source
- ordrer
- organisationer
- Andet
- konturer
- pakke
- side
- par
- brød
- parametre
- del
- partner
- partnere
- dele
- passerer
- Passing
- lidenskabelige
- forbi
- Udfør
- udfører
- perron
- plato
- Platon Data Intelligence
- PlatoData
- politikker
- Indlæg
- praksis
- Forbered
- tidligere
- Main
- private
- behandle
- produktion
- give
- udbyder
- giver
- offentlige
- forespørgsler
- rækkevidde
- spænder
- Læs
- modtage
- modtaget
- modtager
- om
- erstatte
- Rapporter
- Repository
- Krav
- elastisk
- Ressourcer
- svar
- ansvarlige
- resultere
- Resultater
- detail
- tilbageholde
- afkast
- afsløre
- roller
- rsa
- Kør
- Scale
- scenarier
- Søg
- søgemaskine
- Secret
- Sektion
- sikker
- Sikret
- sikkert
- sikkerhed
- adskille
- tjeneste
- Tjenesteudbyder
- Tjenester
- sæt
- flere
- SHA256
- Del
- delt
- bør
- Vis
- Shows
- underskrive
- underskrevet
- signifikant
- signering
- lignende
- forenklet
- Software
- Software Engineer
- software Engineering
- løsninger
- Løsninger
- Løsning
- Kilde
- specifikke
- specificeret
- standard
- nystartede virksomheder
- Trin
- Steps
- opbevaret
- strømlinet
- String
- struktur
- undersøgelser
- sådan
- Understøttet
- Understøtter
- systemet
- bord
- Tag
- Teknisk
- Teknologier
- lejer
- terminal
- prøve
- Test
- at
- oplysninger
- deres
- Them
- Disse
- tre
- Gennem
- tid
- til
- token
- Tokens
- typer
- forenet
- URL
- Brug
- brug
- brug tilfælde
- Bruger
- brugere
- VALIDATE
- validering
- værdi
- forskellige
- Verifikation
- verificere
- vertikaler
- web
- webservices
- GODT
- som
- mens
- Hvidbøger
- WHO
- bred
- Bred rækkevidde
- vilje
- med
- inden for
- uden
- arbejdede
- arbejder
- virker
- workshops
- år
- Du
- Din
- zephyrnet
- Zip