Globalt har mange organisasjoner kritiske forretningsdata spredt mellom ulike innholdslagre, noe som gjør det vanskelig å få tilgang til denne informasjonen på en strømlinjeformet og sammenhengende måte. Å skape en enhetlig og sikker søkeopplevelse er en betydelig utfordring for organisasjoner fordi hvert depot inneholder et bredt spekter av dokumentformater og tilgangskontrollmekanismer.
Amazon Kendra er en intelligent bedriftssøketjeneste som lar brukere søke på tvers av forskjellige innholdslagre. Kunder er ansvarlige for å autentisere og autorisere brukere til å få tilgang til søkeapplikasjonen deres, og Amazon Kendra muliggjør sikkert søk for bedriftsapplikasjoner, og sørger for at resultatene av en brukers søk kun inkluderer dokumenter brukeren er autorisert til å lese. Amazon Kendra kan enkelt validere identiteten til individuelle brukere så vel som brukergrupper som utfører søk med tillegg av sikre søketokens. Ved å legge til brukertokens for sikkert søk, blir det forenklet og sikret å utføre tilgangsbaserte filtrerte søk i Amazon Kendra. Du kan sikkert sende brukertilgangsinformasjon i spørringsnyttelasten i stedet for å bruke attributtfiltre for å oppnå dette. Med denne funksjonen kan Amazon Kendra validere tokeninformasjonen og automatisk bruke den på søkeresultatene for nøyaktig og sikker tilgangsbasert filtrering.
Amazon Kendra støtter tokenbasert brukertilgangskontroll ved å bruke følgende tokentyper:
- Åpen ID
- JWT med en felles hemmelighet
- JWT med en offentlig nøkkel
- JSON
Tidligere så vi en demonstrasjon av token-basert brukertilgangskontroll i Amazon Kendra med Open ID. I dette innlegget demonstrerer vi token-basert brukertilgangskontroll i Amazon Kendra med JWT med en delt hemmelighet. JWT, eller JSON Web Token, er en åpen standard som brukes til å dele sikkerhetsinformasjon mellom en klient og en server. Den inneholder kodede JSON-objekter, inkludert et sett med krav. JWT-er er signert ved hjelp av en kryptografisk algoritme for å sikre at kravene ikke kan endres etter at tokenet er utstedt. JWT-er er nyttige i scenarier angående autorisasjon og informasjonsutveksling.
JWT-er består av tre deler atskilt med prikker (.):
- Header – Den inneholder deler som type token, som er JWT, signeringsalgoritmen som brukes, for eksempel HMAC SHA256 eller RSA, og en valgfri nøkkelidentifikator.
- nyttelast – Denne inneholder flere nøkkelverdi-par, kalt krav, som er utstedt av identitetsleverandøren. I tillegg til flere krav knyttet til utstedelse og utløp av brikke, kan brikken også inneholde opplysninger om den enkelte oppdragsgiver og leietaker.
- Signatur – For å lage signaturdelen tar du den kodede overskriften, den kodede nyttelasten, en hemmelighet, algoritmen spesifisert i overskriften, og signerer det.
Derfor ser en JWT slik ut:
Følgende er en eksempeloverskrift:
Følgende er prøvens nyttelast:
JWT er opprettet med en hemmelig nøkkel, og den hemmelige nøkkelen er privat for deg, noe som betyr at du aldri vil avsløre den for offentligheten eller injisere den inne i JWT. Når du mottar en JWT fra klienten, kan du verifisere JWT med den hemmelige nøkkelen som er lagret på serveren. Enhver endring av JWT vil resultere i verifikasjonsfeil (JWT-validering).
Dette innlegget demonstrerer eksempelbruken av en JWT ved bruk av en delt tilgangsnøkkel og bruken av den for å sikre Amazon Kendra-indekser med tilgangskontroller. I produksjon bruker du en sikker autentiseringstjenesteleverandør etter eget valg og basert på dine krav for å generere JWT-er.
For å lære mer om JWT-er, se Introduksjon til JSON Web Tokens.
Løsningsoversikt
Ligner på poste med Open ID er denne løsningen designet for et sett med brukere og grupper for å gjøre søk til et dokumentlager, og resultater returneres kun fra de dokumentene som er autorisert for tilgang innenfor den gruppen. Følgende tabell viser hvilke dokumenter hver bruker har tilgang til for vår brukssituasjon. Dokumentene som brukes i dette eksemplet er et undersett av offentlige AWS-dokumenter.
Bruker | Gruppe | Dokumenttype autorisert for tilgang |
Gjest | . | blogger |
Patricia | Kunde- | Blogger, brukerveiledninger |
James | Salg | Blogger, brukerveiledninger, casestudier |
John | Marketing | Blogger, brukerveiledninger, casestudier, analytikerrapporter |
Mary | Løsningsarkitekt | Blogger, brukerveiledninger, casestudier, analytikerrapporter, whitepapers |
Følgende diagram illustrerer opprettelsen av en JWT med en delt tilgangsnøkkel for å kontrollere tilgang til brukere til de spesifikke dokumentene i Amazon Kendra-indeksen.
Når en Amazon Kendra-indeks mottar et spørrings-API-kall med et brukertilgangstoken, validerer den tokenet ved hjelp av en delt hemmelig nøkkel (lagret sikkert i AWS Secrets Manager) og får parametere som brukernavn og grupper i nyttelasten. Amazon Kendra-indeksen filtrerer søkeresultatene basert på den lagrede tilgangskontrolllisten (ACL) og informasjonen mottatt i brukerens JWT. Disse filtrerte resultatene returneres som svar på spørrings-API-kallet foretatt av applikasjonen.
Forutsetninger
For å følge trinnene i dette innlegget, sørg for at du har følgende:
Generer en JWT med en delt hemmelig nøkkel
Følgende eksempel på Java-kode viser hvordan du oppretter en JWT med en delt hemmelig nøkkel ved å bruke åpen kildekode jsonwebtoken pakke. I produksjonen vil du bruke en sikker autentiseringstjenesteleverandør etter eget valg og basert på dine krav for å generere JWT-er.
Vi sender brukernavnet og grupperer informasjonen som påstander i nyttelasten, signerer JWT med den delte hemmeligheten og genererer en JWT spesifikt for den brukeren. Oppgi en 256-biters streng som hemmeligheten din og behold verdien av den base64 URL-kodede delte hemmeligheten for å bruke i et senere trinn.
Lag en Amazon Kendra-indeks med en delt JWT-hemmelighet
For instruksjoner om hvordan du oppretter en Amazon Kendra-indeks, se Opprette en indeks. Noter ned AWS identitets- og tilgangsadministrasjon (IAM) rolle som du opprettet under prosessen. Gi rollen tilgang til S3-bøtten og Secrets Manager etter prinsippet om minst privilegium. For eksempel retningslinjer, se Eksempel på IAM-identitetsbaserte retningslinjer. Etter at du har opprettet indeksen, skal Amazon Kendra-konsollen se ut som følgende skjermbilde.
Fullfør følgende trinn for å legge til hemmeligheten din:
- På Amazon Kendra-konsollen, naviger til Brukertilgangskontroll fanen på indeksens detaljside.
- Velg Endre innstillinger.
- Fordi vi implementerer token-basert tilgangskontroll, velg Ja etter Innstillinger for tilgangskontroll.
- Under Token-konfigurasjon, velg JWT med delt hemmelighet forum Token type.
- Til Type hemmelighet, velg Ny.
- Til Hemmelig navn, Tast inn
AmazonKendra-jwt-shared-secret
eller hvilket som helst navn du ønsker. - Til Nøkkel-ID, skriv inn nøkkel-ID-en som samsvarer med JWT-en du opprettet i eksempel-Java-koden.
- Til Algoritme, velg HS256-algoritmen.
- Til Delt hemmelighet, skriv inn din beholdte base64 URL-kodede hemmelighet generert fra Java-koden tidligere.
- Velg Lagre hemmeligheten.
Hemmeligheten vil nå bli lagret i Secrets Manager som et JSON Web Key Set (JWKS). Du kan finne den på Secrets Manager-konsollen. For flere detaljer, se Bruke et JSON Web Token (JWT) med en delt hemmelighet.
- Utvid Avansert konfigurasjon seksjon.
I dette trinnet setter vi opp brukernavnet og gruppene som skal trekkes ut fra JWT-krav og matches med ACL når signaturen er gyldig.
- Til BrukernavnSkriv inn brukernavn.
- Til Grupper, angi grupper.
- La de valgfrie feltene være standard.
- Velg neste, velg deretter Oppdater.
Klargjør S3-bøtten som en datakilde
For å klargjøre en S3-bøtte som en datakilde, opprette en S3-bøtte. I terminalen med AWS kommandolinjegrensesnitt (AWS CLI) eller AWS CloudShell, kjør følgende kommandoer for å laste opp dokumentene og metadataene til datakilden:
Dokumentene som forespørres lagres i en S3-bøtte. Hver dokumenttype har en egen mappe: blogger, case-studier, analytiker-rapporter, brukerveiledninger og white-papers. Denne mappestrukturen ligger i en mappe som heter Data. Metadatafiler inkludert ACL-ene er i en mappe som heter Meta.
Vi bruker Amazon Kendra S3-kontakten til å konfigurere denne S3-bøtten som datakilden. Når datakilden er synkronisert med Amazon Kendra-indeksen, gjennomsøker og indekserer den alle dokumenter, samt samler inn ACL-ene og dokumentattributtene fra metadatafilene. For å lære mer om tilgangskontrollister ved bruk av metadatafiler, se Amazon S3 dokumentmetadata. For dette eksempelet bruker vi det tilpassede attributtet DocumentType
for å angi dokumenttypen. Etter opplastingen skal S3-bøttestrukturen din se ut som følgende skjermbilde.
For å angi det egendefinerte attributtet DocumentType
, fullfør følgende trinn:
- Velg din Kendra-indeks og velg Fasetdefinisjon i navigasjonsruten.
- Velg Legg til felt.
- Til Feltnavn, Tast inn
DocumentType
. - Til Data-type, velg String.
- Velg Legg til.
Nå kan du innta dokumenter fra bøtta du opprettet til Amazon Kendra-indeksen ved å bruke S3-kontakten. For fullstendige instruksjoner, se Inntak av dokumenter gjennom Amazon Kendra S3-kontakten.
- på Konfigurer synkroniseringsinnstillinger seksjon, for Angi datakildeplasseringen, skriv inn S3-bøtten din (
s3://kendra-demo-bucket/
). - Til Metadata filer prefiks mappeplassering, Tast inn
Meta/
. - Expand Ekstra konfigurasjon.
- På Inkluder mønstre fanen, for Prefix, Tast inn
Data/
.
For mer informasjon om støttede kontakter, se Kontakter.
- Velg neste, deretter neste igjen da Oppdater.
- Vent til datakilden er opprettet, velg deretter datakilden og velg Synkroniser nå.
Synkroniseringen av datakilden kan ta 10–15 minutter å fullføre. Når synkroniseringen er fullført, Siste synkroniseringsstatus skal vises som Vellykket.
Spørr en Amazon Kendra-indeks
For å kjøre en testspørring på indeksen din, fullfør følgende trinn:
- Velg på Amazon Kendra-konsollen Søk etter indeksert innhold i navigasjonsruten.
- Expand Testsøk med et tilgangstoken.
- Velg Bruk token.
- Vi kan generere en JWT for brukeren og gruppen. I dette eksemplet lager vi en JWT for
AWS-SA
gruppe. Vi erstatter brukernavn som Mary og grupper somAWS-SA
i JWT-generasjonstrinnet. - Skriv inn det genererte tokenet og velg Påfør.
Basert på ACL bør vi være resultater fra alle mappene: blogger, brukerveiledninger, casestudier, analytikerrapporter og whitepapers.
På samme måte når du er logget på som James fra AWS-Sales
gruppe og passerer den tilsvarende JWT, har vi tilgang til bare blogger, brukerveiledninger og casestudier.
Vi kan også søke i indeksen som gjest uten å sende et token. Gjesten har kun tilgang til innholdet i bloggmappen.
Eksperimenter med andre søk du kan tenke på mens du er pålogget som forskjellige brukere og grupper, og observer resultatene.
Rydd opp
For å unngå å pådra deg fremtidige kostnader, ryd opp i ressursene du opprettet som en del av denne løsningen. For å slette Amazon Kendra-indeksen og S3-bøtten som ble opprettet mens du testet løsningen, se Opprydding. For å slette Secrets Manager-hemmeligheten, se Slett en AWS Secrets Manager-hemmelighet.
konklusjonen
I dette innlegget så vi hvordan Amazon Kendra kan utføre sikre søk som kun returnerer søkeresultater basert på brukertilgang. Med tillegg av en JWT med en delt hemmelig nøkkel, kan vi enkelt validere identiteten til individuelle brukere samt brukergrupper som utfører søk. Denne lignende tilnærmingen kan utvides til en JWT med en offentlig nøkkel. For å lære mer, se Bruke et JSON Web Token (JWT) med en delt hemmelighet.
Om forfatterne
Nitin Eusebius er Sr. Enterprise Solutions Architect hos AWS med over 18 års erfaring innen programvareteknikk og bedriftsarkitektur. Han jobber med kunder for å hjelpe dem med å bygge godt utformede applikasjoner på AWS-plattformen. Han brenner for å løse teknologiske utfordringer og hjelpe kunder med deres skyreise.
Kruthi Jayasimha Rao er en Partner Solutions Architect med fokus på AI og ML. Hun gir teknisk veiledning til AWS-partnere i å følge beste praksis for å bygge sikre, spenstige og svært tilgjengelige løsninger i AWS Cloud.
Ishaan Berry er programvareingeniør hos Amazon Web Services, og jobber med Amazon Kendra, en bedriftssøkemotor. Han er lidenskapelig opptatt av sikkerhet og har jobbet med nøkkelkomponenter i Kendras tilgangskontrollfunksjoner de siste 2 årene.
Akash Bhatia er en Principal Solutions-arkitekt med AWS. Hans nåværende fokus er å hjelpe bedriftskunder med å oppnå sine forretningsresultater gjennom å bygge og implementere innovative og robuste løsninger i stor skala. Han har jobbet med teknologi i over 15 år i selskaper som strekker seg fra Fortune 100 til oppstartsbedrifter innen produksjon, romfart og detaljhandel.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- Platoblokkkjede. Web3 Metaverse Intelligence. Kunnskap forsterket. Tilgang her.
- Minting the Future med Adryenn Ashley. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/secure-your-amazon-kendra-indexes-with-the-acl-using-a-jwt-shared-secret-key/
- :er
- $OPP
- 10
- 100
- 11
- 15 år
- 420
- 7
- 8
- 9
- a
- I stand
- Om oss
- adgang
- utrette
- nøyaktig
- Oppnå
- tvers
- tillegg
- Aerospace
- Etter
- AI
- algoritme
- Alle
- tillater
- Amazon
- Amazon Kendra
- Amazon Web Services
- blant
- analytiker
- og
- api
- Søknad
- søknader
- Påfør
- tilnærming
- arkitektur
- ER
- AS
- At
- attributter
- Autentisering
- autorisasjon
- automatisk
- tilgjengelig
- AWS
- basert
- BE
- fordi
- være
- BEST
- beste praksis
- mellom
- Bit
- blogger
- bygge
- virksomhet
- by
- ring
- som heter
- CAN
- saken
- Casestudier
- utfordre
- utfordringer
- valg
- Velg
- krav
- klasse
- kunde
- Cloud
- kode
- Selskaper
- fullføre
- komponenter
- Konfigurasjon
- Konsoll
- inneholde
- inneholder
- innhold
- innhold
- kontroll
- kontroller
- Tilsvarende
- Kostnader
- skape
- opprettet
- Opprette
- skaperverket
- kritisk
- krypto
- kryptografisk
- Gjeldende
- skikk
- Kunder
- dato
- Dato
- Misligholde
- demonstrere
- demonstrerer
- designet
- detalj
- detaljer
- forskjellig
- vanskelig
- fordelt
- dokument
- dokumenter
- ned
- under
- hver enkelt
- lett
- muliggjør
- Motor
- ingeniør
- Ingeniørarbeid
- sikre
- Enter
- Enterprise
- eksempel
- utveksling
- erfaring
- Failure
- Trekk
- Egenskaper
- Felt
- Filer
- filtrering
- filtre
- Fokus
- følge
- etter
- Til
- Fortune
- fra
- fullt
- framtid
- Gevinst
- generere
- generert
- generasjonen
- Gruppe
- Gruppens
- Gjest
- veiledning
- Guider
- Ha
- overskrifter
- hjelpe
- svært
- Hvordan
- Hvordan
- HTML
- http
- HTTPS
- ID
- identifikator
- Identitet
- implementere
- importere
- in
- inkludere
- Inkludert
- indeks
- indekser
- individuelt
- informasjon
- innovative
- instant
- i stedet
- instruksjoner
- Intelligent
- ISS
- utstedelse
- Utstedt
- IT
- DET ER
- Java
- John
- reise
- JSON
- Jwt
- nøkkel
- nøkler
- Kid
- LÆRE
- i likhet med
- linje
- Liste
- Se
- ser ut som
- UTSEENDE
- laget
- gjøre
- Making
- leder
- måte
- produksjon
- mange
- Match
- matchet
- midler
- Meta
- metadata
- minutter
- ML
- mer
- navn
- oppkalt
- Naviger
- Navigasjon
- Ny
- gjenstander
- observere
- of
- on
- åpen
- åpen kildekode
- rekkefølge
- organisasjoner
- Annen
- skisserer
- pakke
- side
- par
- brød
- parametere
- del
- partner
- partnere
- deler
- passere
- Passerer
- lidenskapelig
- Past
- Utfør
- utfører
- plattform
- plato
- Platon Data Intelligence
- PlatonData
- Politikk
- Post
- praksis
- Forbered
- tidligere
- Principal
- privat
- prosess
- Produksjon
- gi
- leverandør
- gir
- offentlig
- spørsmål
- område
- spenner
- Lese
- motta
- mottatt
- mottar
- om
- erstatte
- Rapporter
- Repository
- Krav
- spenstig
- Ressurser
- svar
- ansvarlig
- resultere
- Resultater
- detaljhandel
- beholde
- retur
- avsløre
- Rolle
- rsa
- Kjør
- Skala
- scenarier
- Søk
- søkemotor
- Secret
- Seksjon
- sikre
- sikret
- sikkert
- sikkerhet
- separat
- tjeneste
- Tjenesteyter
- Tjenester
- sett
- flere
- SHA256
- Del
- delt
- bør
- Vis
- Viser
- undertegne
- signert
- signifikant
- signering
- lignende
- forenklet
- Software
- Software Engineer
- software engineering
- løsning
- Solutions
- løse
- kilde
- spesifikk
- spesifisert
- Standard
- start-ups
- Trinn
- Steps
- lagret
- strømlinjeformet
- String
- struktur
- studier
- slik
- Støttes
- Støtter
- system
- bord
- Ta
- Teknisk
- Teknologi
- leietaker
- terminal
- test
- Testing
- Det
- De
- informasjonen
- deres
- Dem
- Disse
- tre
- Gjennom
- tid
- til
- token
- tokens
- typer
- enhetlig
- URL
- bruk
- bruke
- bruk sak
- Bruker
- Brukere
- VALIDERE
- validering
- verdi
- ulike
- Verifisering
- verifisere
- vertikaler
- web
- webtjenester
- VI VIL
- hvilken
- mens
- Whitepapers
- HVEM
- bred
- Bred rekkevidde
- vil
- med
- innenfor
- uten
- arbeidet
- arbeid
- virker
- Verksteder
- år
- Du
- Din
- zephyrnet
- Zip