Wereldwijd hebben veel organisaties kritieke bedrijfsgegevens verspreid over verschillende inhoudsbronnen, waardoor het moeilijk is om op een gestroomlijnde en samenhangende manier toegang te krijgen tot deze informatie. Het creëren van een uniforme en veilige zoekervaring is een grote uitdaging voor organisaties, omdat elke repository een breed scala aan documentindelingen en toegangscontrolemechanismen bevat.
Amazon Kendra is een intelligente enterprise search-service waarmee gebruikers kunnen zoeken in verschillende contentrepository's. Klanten zijn verantwoordelijk voor het authenticeren en autoriseren van gebruikers om toegang te krijgen tot hun zoekapplicatie, en Amazon Kendra maakt veilig zoeken voor bedrijfsapplicaties mogelijk, waarbij ervoor wordt gezorgd dat de resultaten van de zoekopdracht van een gebruiker alleen documenten bevatten die de gebruiker mag lezen. Amazon Kendra kan eenvoudig de identiteit van individuele gebruikers valideren, evenals gebruikersgroepen die zoekopdrachten uitvoeren met de toevoeging van beveiligde zoektokens. Door gebruikerstokens toe te voegen voor veilig zoeken, wordt het uitvoeren van op toegang gebaseerde gefilterde zoekopdrachten in Amazon Kendra vereenvoudigd en beveiligd. U kunt gebruikerstoegangsgegevens veilig doorgeven in de querypayload in plaats van attribuutfilters te gebruiken om dit te bereiken. Met deze functie kan Amazon Kendra de tokeninformatie valideren en automatisch toepassen op de zoekresultaten voor nauwkeurige en veilige op toegang gebaseerde filtering.
Amazon Kendra ondersteunt op tokens gebaseerde gebruikerstoegangscontrole met behulp van de volgende tokentypen:
- Open-ID
- JWT met een gedeeld geheim
- JWT met een openbare sleutel
- JSON
Eerder zagen we een demonstratie van op tokens gebaseerde gebruikerstoegangscontrole in Amazon Kendra met Open ID. In dit bericht demonstreren we op tokens gebaseerde gebruikerstoegangscontrole in Amazon Kendra met JWT met een gedeeld geheim. JWT, of JSON Web Token, is een open standaard die wordt gebruikt om beveiligingsinformatie tussen een client en een server te delen. Het bevat gecodeerde JSON-objecten, inclusief een reeks claims. JWT's worden ondertekend met behulp van een cryptografisch algoritme om ervoor te zorgen dat de claims niet kunnen worden gewijzigd nadat het token is uitgegeven. JWT's zijn nuttig in scenario's met betrekking tot autorisatie en informatie-uitwisseling.
JWT's bestaan uit drie delen gescheiden door punten (.):
- Voorvoegsel - Het bevat onderdelen zoals het type token, dat is JWT, het ondertekeningsalgoritme dat wordt gebruikt, zoals HMAC SHA256 of RSA, en een optionele sleutel-ID.
- payload – Dit bevat verschillende sleutel-waardeparen, genaamd vorderingen, die worden uitgegeven door de identiteitsprovider. Naast verschillende claims met betrekking tot de uitgifte en het verlopen van het token, kan het token ook informatie bevatten over de individuele opdrachtgever en huurder.
- Signatuur – Om het handtekeninggedeelte te maken, neemt u de gecodeerde header, de gecodeerde payload, een geheim, het algoritme gespecificeerd in de header, en ondertekent u dat.
Daarom ziet een JWT er als volgt uit:
Het volgende is een voorbeeldkoptekst:
Het volgende is de voorbeeldlading:
De JWT is gemaakt met een geheime sleutel en die geheime sleutel is privé voor jou, wat betekent dat je die nooit openbaar zult maken of in de JWT zult injecteren. Wanneer u een JWT van de client ontvangt, kunt u de JWT verifiëren met de geheime sleutel die op de server is opgeslagen. Elke wijziging aan de JWT leidt tot een mislukte verificatie (JWT-validatie).
Dit bericht demonstreert het voorbeeldgebruik van een JWT met behulp van een gedeelde toegangssleutel en het gebruik ervan om Amazon Kendra-indexen te beveiligen met toegangscontroles. In productie gebruikt u een veilige authenticatieserviceprovider van uw keuze en op basis van uw vereisten om JWT's te genereren.
Raadpleeg voor meer informatie over JWT's Inleiding tot JSON-webtokens.
Overzicht oplossingen
Vergelijkbaar met de post met Open ID is deze oplossing ontworpen voor een reeks gebruikers en groepen om zoekopdrachten uit te voeren naar een documentrepository, en resultaten worden alleen geretourneerd van die documenten die geautoriseerd zijn voor toegang binnen die groep. De volgende tabel geeft aan tot welke documenten elke gebruiker toegang heeft voor onze use case. De documenten die in dit voorbeeld worden gebruikt, zijn een subset van openbare AWS-documenten.
Gebruiker | Groep | Documenttype geautoriseerd voor toegang |
Gast | . | Blogs |
Patricia | Blogs, gebruikershandleidingen | |
James | Verkoop | Blogs, gebruikershandleidingen, casestudy's |
John | Marketing | Blogs, gebruikershandleidingen, casestudy's, analistenrapporten |
Maria | Solutions Architect | Blogs, gebruikershandleidingen, casestudy's, analistenrapporten, whitepapers |
Het volgende diagram illustreert het maken van een JWT met een gedeelde toegangssleutel om de toegang van gebruikers tot de specifieke documenten in de Amazon Kendra-index te regelen.
Wanneer een Amazon Kendra-index een query-API-aanroep ontvangt met een token voor gebruikerstoegang, wordt het token gevalideerd met behulp van een gedeelde geheime sleutel (beveiligd opgeslagen in AWS-geheimenmanager) en krijgt parameters zoals gebruikersnaam en groepen in de payload. De Amazon Kendra-index filtert de zoekresultaten op basis van de opgeslagen Access Control List (ACL) en de informatie die is ontvangen in de JWT van de gebruiker. Deze gefilterde resultaten worden geretourneerd als reactie op de query-API-aanroep van de toepassing.
Voorwaarden
Om de stappen in dit bericht te volgen, moet je ervoor zorgen dat je het volgende hebt:
Genereer een JWT met een gedeelde geheime sleutel
De volgende Java-voorbeeldcode laat zien hoe u een JWT maakt met een gedeelde geheime sleutel met behulp van de open-source jsonwebtoken pakket. In productie gebruikt u een veilige authenticatieserviceprovider van uw keuze en op basis van uw vereisten om JWT's te genereren.
We geven de gebruikersnaam en groepsinformatie door als claims in de payload, ondertekenen de JWT met het gedeelde geheim en genereren een JWT die specifiek is voor die gebruiker. Geef een 256-bits tekenreeks op als uw geheim en behoud de waarde van het base64 URL-gecodeerde gedeelde geheim om in een latere stap te gebruiken.
Maak een Amazon Kendra-index met een gedeeld JWT-geheim
Raadpleeg voor instructies voor het maken van een Amazon Kendra-index Een index maken. Noteer de AWS Identiteits- en toegangsbeheer (IAM) rol die u tijdens het proces hebt gemaakt. Geef de rol toegang tot de S3-bucket en Secrets Manager volgens de principe van het minste voorrecht. Zie bijvoorbeeld beleid Voorbeeld IAM-identiteitsgebaseerd beleid. Nadat u de index hebt gemaakt, zou uw Amazon Kendra-console eruit moeten zien als de volgende schermafbeelding.
Voer de volgende stappen uit om uw geheim toe te voegen:
- Navigeer op de Amazon Kendra-console naar de Gebruikerstoegangsbeheer tabblad op uw indexdetailpagina.
- Kies Instellingen bewerken.
- Omdat we toegangscontrole op basis van tokens implementeren, selecteert u Ja voor Instellingen voor toegangscontrole.
- Onder Tokenconfiguratie, kiezen JWT met gedeeld geheim For Tokentype.
- Voor Soort geheim, kiezen New.
- Voor Geheime naam, ga naar binnen
AmazonKendra-jwt-shared-secret
of een naam naar keuze. - Voor Sleutel-ID, voert u de sleutel-ID in die overeenkomt met uw JWT die u in de voorbeeld-Java-code hebt gemaakt.
- Voor Algoritme, kies het HS256-algoritme.
- Voor Gedeeld geheim, voer uw bewaarde base64 URL-gecodeerde geheim in dat eerder is gegenereerd op basis van de Java-code.
- Kies Bewaar geheim.
Het geheim wordt nu opgeslagen in Secrets Manager als een JSON Web Key Set (JWKS). Je kunt het vinden op de Secrets Manager-console. Voor meer details, zie Een JSON Web Token (JWT) gebruiken met een gedeeld geheim.
- Vouw de Geavanceerde configuratie pagina.
In deze stap stellen we de gebruikersnaam en groepen in die worden geëxtraheerd uit JWT-claims en worden gekoppeld aan de ACL wanneer de handtekening geldig is.
- Voor GebruikersnaamVul je gebruikersnaam in.
- Voor Groepen, voer groepen in.
- Laat de optionele velden standaard staan.
- Kies Volgende, kies dan bijwerken.
Bereid uw S3-bucket voor als gegevensbron
Maak een S3-bucket om een S3-bucket als gegevensbron voor te bereiden. In de terminal met de AWS-opdrachtregelinterface (AWS CLI) of AWS-cloudshell, voert u de volgende opdrachten uit om de documenten en metagegevens naar de gegevensbronbucket te uploaden:
De opgevraagde documenten worden opgeslagen in een S3-bucket. Elk documenttype heeft een aparte map: blogs, case-studies, analistenrapporten, gebruikershandleidingen en whitepapers. Deze mappenstructuur bevindt zich in een map met de naam Data. Metagegevensbestanden inclusief de ACL's bevinden zich in een map met de naam Meta.
We gebruiken de Amazon Kendra S3-connector om deze S3-bucket als gegevensbron te configureren. Wanneer de gegevensbron wordt gesynchroniseerd met de Amazon Kendra-index, worden alle documenten gecrawld en geïndexeerd en worden de ACL's en documentkenmerken uit de metadatabestanden verzameld. Raadpleeg voor meer informatie over ACL's die metagegevensbestanden gebruiken Metadata van Amazon S3-documenten. Voor dit voorbeeld gebruiken we het kenmerk custom DocumentType
om het type document aan te geven. Na het uploaden zou uw S3-bucketstructuur eruit moeten zien als de volgende schermafbeelding.
Om het aangepaste kenmerk in te stellen DocumentType
, voert u de volgende stappen uit:
- Kies uw Kendra-index en kies Facet-definitie in het navigatievenster.
- Kies Voeg veld toe.
- Voor Veldnaam, ga naar binnen
DocumentType
. - Voor Data type, kiezen Draad.
- Kies Toevoegen.
Nu kunt u documenten uit de door u gemaakte bucket opnemen in de Amazon Kendra-index met behulp van de S3-connector. Raadpleeg voor volledige instructies Documenten opnemen via de Amazon Kendra S3 Connector.
- In het Synchronisatie-instellingen configureren sectie, voor Voer de gegevensbronlocatie in, voer uw S3-bucket in (
s3://kendra-demo-bucket/
). - Voor Metadata-bestanden prefix maplocatie, ga naar binnen
Meta/
. - Uitvouwen Aanvullende configuratie.
- Op de Voeg patronen toe tabblad, voor Voorvoegsel, ga naar binnen
Data/
.
Zie voor meer informatie over ondersteunde connectoren Connectoren.
- Kies Volgendedan Volgende opnieuw, dan bijwerken.
- Wacht tot de gegevensbron is gemaakt, selecteer vervolgens de gegevensbron en kies Synchroniseer nu.
De synchronisatie van de gegevensbron kan 10 tot 15 minuten duren. Wanneer uw synchronisatie is voltooid, Laatste synchronisatiestatus moet worden weergegeven als Succesvolle.
Vraag een Amazon Kendra-index op
Voer de volgende stappen uit om een testquery op uw index uit te voeren:
- Kies op de Amazon Kendra-console Doorzoek geïndexeerde inhoud in het navigatievenster.
- Uitvouwen Testquery met een toegangstoken.
- Kies Token toepassen.
- We kunnen een JWT genereren voor de gebruiker en groep. In dit voorbeeld maken we een JWT voor de
AWS-SA
groep. We vervangen gebruikersnaam door Mary en groepen doorAWS-SA
in de JWT-generatiestap. - Voer het gegenereerde token in en kies Solliciteer.
Op basis van de ACL zouden we resultaten moeten zijn van alle mappen: blogs, gebruikershandleidingen, casestudy's, analistenrapporten en whitepapers.
Evenzo, wanneer ingelogd als James van de AWS-Sales
groep en het passeren van de bijbehorende JWT, hebben we alleen toegang tot blogs, gebruikershandleidingen en casestudy's.
We kunnen ook als gast de index doorzoeken zonder een token door te geven. De gast heeft alleen toegang tot de inhoud in de map blogs.
Experimenteer met andere zoekopdrachten die u kunt bedenken terwijl u bent ingelogd als verschillende gebruikers en groepen en bekijk de resultaten.
Opruimen
Om toekomstige kosten te voorkomen, ruimt u de resources op die u als onderdeel van deze oplossing hebt gemaakt. Raadpleeg voor het verwijderen van de Amazon Kendra-index en S3-bucket die zijn gemaakt tijdens het testen van de oplossing Opruimen. Raadpleeg voor het verwijderen van het Secrets Manager-geheim Een AWS Secrets Manager-geheim verwijderen.
Conclusie
In dit bericht hebben we gezien hoe Amazon Kendra veilige zoekopdrachten kan uitvoeren die alleen zoekresultaten opleveren op basis van gebruikerstoegang. Met de toevoeging van een JWT met een gedeelde geheime sleutel kunnen we eenvoudig de identiteit valideren van zowel individuele gebruikers als gebruikersgroepen die zoekopdrachten uitvoeren. Deze vergelijkbare benadering kan worden uitgebreid tot a JWT met een openbare sleutel. Raadpleeg voor meer informatie Een JSON Web Token (JWT) gebruiken met een gedeeld geheim.
Over de auteurs
Nitin Eusebius is een Sr. Enterprise Solutions Architect bij AWS met meer dan 18 jaar ervaring in Software Engineering en Enterprise Architecture. Hij werkt samen met klanten om hen te helpen bij het bouwen van goed ontworpen applicaties op het AWS-platform. Hij is gepassioneerd door het oplossen van technologische uitdagingen en het helpen van klanten met hun cloudreis.
Kruthi Jayasimha Rao is een Partner Solutions Architect met een focus op AI en ML. Ze biedt technische begeleiding aan AWS-partners bij het volgen van best practices om veilige, veerkrachtige en zeer beschikbare oplossingen in de AWS Cloud te bouwen.
Ishan Berry is Software Engineer bij Amazon Web Services en werkt aan Amazon Kendra, een zoekmachine voor bedrijven. Hij heeft een passie voor beveiliging en heeft de afgelopen 2 jaar gewerkt aan belangrijke onderdelen van Kendra's toegangscontrolefuncties.
Akasha Bhatia is een Principal Solutions-architect bij AWS. Zijn huidige focus ligt op het helpen van zakelijke klanten bij het behalen van hun bedrijfsresultaten door het ontwerpen en implementeren van innovatieve en veerkrachtige oplossingen op schaal. Hij werkt al meer dan 15 jaar in de technologie bij bedrijven variërend van Fortune 100 tot start-ups in de sectoren productie, ruimtevaart en detailhandel.
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- Platoblockchain. Web3 Metaverse Intelligentie. Kennis versterkt. Toegang hier.
- De toekomst slaan met Adryenn Ashley. Toegang hier.
- Bron: https://aws.amazon.com/blogs/machine-learning/secure-your-amazon-kendra-indexes-with-the-acl-using-a-jwt-shared-secret-key/
- :is
- $UP
- 10
- 100
- 11
- 15 jaar
- 420
- 7
- 8
- 9
- a
- in staat
- Over
- toegang
- bereiken
- accuraat
- Bereiken
- over
- toevoeging
- LUCHT- EN RUIMTEVAART
- Na
- AI
- algoritme
- Alles
- toestaat
- Amazone
- Amazon Kendra
- Amazon Web Services
- onder
- analist
- en
- api
- Aanvraag
- toepassingen
- Solliciteer
- nadering
- architectuur
- ZIJN
- AS
- At
- attributen
- authenticatie
- machtiging
- webmaster.
- Beschikbaar
- AWS
- gebaseerde
- BE
- omdat
- wezen
- BEST
- 'best practices'
- tussen
- Beetje
- blogs
- bouw
- bedrijfsdeskundigen
- by
- Bellen
- Dit betekent dat we onszelf en onze geliefden praktisch vergiftigen.
- CAN
- geval
- Casestudies
- uitdagen
- uitdagingen
- keuze
- Kies
- vorderingen
- klasse
- klant
- Cloud
- code
- Bedrijven
- compleet
- componenten
- Configuratie
- troosten
- bevatten
- bevat
- content
- inhoud
- onder controle te houden
- controles
- Overeenkomend
- Kosten
- en je merk te creëren
- aangemaakt
- Wij creëren
- het aanmaken
- kritisch
- crypto
- cryptografische
- Actueel
- gewoonte
- Klanten
- gegevens
- Datum
- Standaard
- tonen
- demonstreert
- ontworpen
- detail
- gegevens
- anders
- moeilijk
- verspreid
- document
- documenten
- beneden
- gedurende
- elk
- gemakkelijk
- maakt
- Motor
- ingenieur
- Engineering
- verzekeren
- Enter
- Enterprise
- voorbeeld
- uitwisseling
- ervaring
- Storing
- Kenmerk
- Voordelen
- Velden
- Bestanden
- filtering
- filters
- Focus
- volgen
- volgend
- Voor
- Fortuin
- oppompen van
- vol
- toekomst
- Krijgen
- voortbrengen
- gegenereerde
- generatie
- Groep
- Groep
- Gast
- leiding
- Guides
- Hebben
- headers
- het helpen van
- zeer
- Hoe
- How To
- HTML
- http
- HTTPS
- ID
- identificatie
- Identiteit
- uitvoering
- importeren
- in
- omvatten
- Inclusief
- index
- indexen
- individueel
- informatie
- innovatieve
- moment
- verkrijgen in plaats daarvan
- instructies
- Intelligent
- ISS
- uitgifte
- Uitgegeven
- IT
- HAAR
- Java
- John
- json
- Jwt
- sleutel
- toetsen
- Kind
- LEARN
- als
- Lijn
- Lijst
- Kijk
- ziet eruit als
- LOOKS
- gemaakt
- maken
- maken
- manager
- manier
- productie
- veel
- Match
- op elkaar afgestemd
- middel
- meta
- Metadata
- minuten
- ML
- meer
- naam
- Genoemd
- OP DEZE WEBSITE VIND JE
- Navigatie
- New
- objecten
- waarnemen
- of
- on
- open
- open source
- bestellen
- organisaties
- Overige
- outlines
- pakket
- pagina
- paren
- brood
- parameters
- deel
- partner
- partners
- onderdelen
- passeren
- Voorbijgaand
- hartstochtelijk
- verleden
- Uitvoeren
- uitvoerend
- platform
- Plato
- Plato gegevensintelligentie
- PlatoData
- beleidsmaatregelen door te lezen.
- Post
- praktijken
- Voorbereiden
- die eerder
- Principal
- privaat
- productie
- zorgen voor
- leverancier
- biedt
- publiek
- queries
- reeks
- variërend
- Lees
- ontvangen
- ontvangen
- ontvangt
- met betrekking tot
- vervangen
- Rapporten
- bewaarplaats
- Voorwaarden
- veerkrachtig
- Resources
- antwoord
- verantwoordelijk
- resultaat
- Resultaten
- <HR>Retail
- behouden
- terugkeer
- onthullen
- Rol
- rsa
- lopen
- Scale
- scenario's
- Ontdek
- zoekmachine
- Geheim
- sectie
- beveiligen
- Beveiligde
- vast
- veiligheid
- apart
- service
- Service Provider
- Diensten
- reeks
- verscheidene
- SHA256
- Delen
- gedeeld
- moet
- tonen
- Shows
- teken
- Gesigneerd
- aanzienlijke
- het ondertekenen van
- gelijk
- vereenvoudigd
- Software
- Software Engineer
- software engineering
- oplossing
- Oplossingen
- Het oplossen van
- bron
- specifiek
- gespecificeerd
- standaard
- start-ups
- Stap voor
- Stappen
- opgeslagen
- gestroomlijnd
- Draad
- structuur
- studies
- dergelijk
- ondersteunde
- steunen
- system
- tafel
- Nemen
- Technisch
- Technologie
- huurder
- terminal
- proef
- Testen
- dat
- De
- de informatie
- hun
- Ze
- Deze
- drie
- Door
- niet de tijd of
- naar
- teken
- tokens
- types
- unified
- URL
- Gebruik
- .
- use case
- Gebruiker
- gebruikers
- BEVESTIG
- bevestiging
- waarde
- divers
- Verificatie
- controleren
- verticals
- web
- webservices
- GOED
- welke
- en
- Whitepapers
- WIE
- breed
- Grote range
- wil
- Met
- binnen
- zonder
- werkte
- werkzaam
- Bedrijven
- Workshops
- jaar
- You
- Your
- zephyrnet
- Postcode