Weltweit haben viele Organisationen kritische Geschäftsdaten, die auf verschiedene Content-Repositorys verteilt sind, was es schwierig macht, auf diese Informationen auf optimierte und zusammenhängende Weise zuzugreifen. Die Schaffung eines einheitlichen und sicheren Sucherlebnisses ist eine große Herausforderung für Unternehmen, da jedes Repository eine Vielzahl von Dokumentformaten und Zugriffskontrollmechanismen enthält.
Amazon Kendra ist ein intelligenter Unternehmenssuchdienst, der es Benutzern ermöglicht, in verschiedenen Inhaltsrepositorys zu suchen. Kunden sind dafür verantwortlich, Benutzer für den Zugriff auf ihre Suchanwendung zu authentifizieren und zu autorisieren, und Amazon Kendra ermöglicht eine sichere Suche nach Unternehmensanwendungen und stellt sicher, dass die Ergebnisse der Suchabfrage eines Benutzers nur Dokumente enthalten, zu deren Lesen der Benutzer berechtigt ist. Amazon Kendra kann die Identität einzelner Benutzer sowie Benutzergruppen, die Suchen durchführen, mit dem Hinzufügen von sicheren Suchtokens einfach validieren. Durch das Hinzufügen von Benutzer-Tokens für die sichere Suche wird die Durchführung von zugriffsbasierten gefilterten Suchen in Amazon Kendra vereinfacht und gesichert. Sie können Benutzerzugriffsinformationen sicher in der Abfragenutzlast übergeben, anstatt dafür Attributfilter zu verwenden. Mit dieser Funktion kann Amazon Kendra die Token-Informationen validieren und sie automatisch auf die Suchergebnisse anwenden, um eine genaue und sichere zugriffsbasierte Filterung zu ermöglichen.
Amazon Kendra unterstützt die tokenbasierte Benutzerzugriffskontrolle mit den folgenden Tokentypen:
- Offene ID
- JWT mit einem gemeinsamen Geheimnis
- JWT mit einem öffentlichen Schlüssel
- JSON
Zuvor sahen wir eine Demonstration von tokenbasierte Benutzerzugriffskontrolle in Amazon Kendra mit Open ID. In diesem Beitrag demonstrieren wir die tokenbasierte Benutzerzugriffskontrolle in Amazon Kendra mit JWT mit einem gemeinsamen Geheimnis. JWT oder JSON Web Token ist ein offener Standard, der verwendet wird, um Sicherheitsinformationen zwischen einem Client und einem Server auszutauschen. Es enthält codierte JSON-Objekte, einschließlich einer Reihe von Ansprüchen. JWTs werden mit einem kryptografischen Algorithmus signiert, um sicherzustellen, dass die Ansprüche nach der Ausgabe des Tokens nicht mehr geändert werden können. JWTs sind in Szenarien bezüglich Autorisierung und Informationsaustausch nützlich.
JWTs bestehen aus drei durch Punkte (.) getrennten Teilen:
- Kopfzeile – Es enthält Teile wie den Typ des Tokens, der JWT ist, den verwendeten Signaturalgorithmus, z. B. HMAC SHA256 oder RSA, und eine optionale Schlüsselkennung.
- Nutzlast: XNUMX Kg – Diese enthält mehrere Schlüssel-Wert-Paare, genannt aus aller Welt, die vom Identitätsanbieter ausgestellt werden. Neben mehreren Ansprüchen bezüglich der Ausgabe und des Ablaufs des Tokens kann der Token auch Informationen über den einzelnen Auftraggeber und Mieter enthalten.
- Signature – Um den Signaturteil zu erstellen, nehmen Sie den verschlüsselten Header, die verschlüsselte Nutzlast, ein Geheimnis, den im Header angegebenen Algorithmus und signieren das.
Daher sieht ein JWT wie folgt aus:
Das Folgende ist ein Musterkopf:
Das Folgende ist die Beispielnutzlast:
Das JWT wird mit einem geheimen Schlüssel erstellt, und dieser geheime Schlüssel ist für Sie privat, was bedeutet, dass Sie ihn niemals der Öffentlichkeit offenbaren oder in das JWT einfügen werden. Wenn Sie ein JWT vom Client erhalten, können Sie das JWT mit dem auf dem Server gespeicherten geheimen Schlüssel verifizieren. Jede Änderung am JWT führt zu einem Fehler bei der Überprüfung (JWT-Validierung).
Dieser Beitrag demonstriert die beispielhafte Verwendung eines JWT mit einem gemeinsamen Zugriffsschlüssel und seine Verwendung zum Sichern von Amazon Kendra-Indizes mit Zugriffskontrollen. In der Produktion verwenden Sie einen sicheren Authentifizierungsdienstanbieter Ihrer Wahl und basierend auf Ihren Anforderungen zum Generieren von JWTs.
Weitere Informationen zu JWTs finden Sie unter Einführung in JSON-Webtoken.
Lösungsüberblick
Ähnlich wie bei der Post Mit Open ID wurde diese Lösung für eine Reihe von Benutzern und Gruppen entwickelt, um Suchanfragen an ein Dokumenten-Repository zu stellen, und Ergebnisse werden nur von den Dokumenten zurückgegeben, die für den Zugriff innerhalb dieser Gruppe autorisiert sind. Die folgende Tabelle zeigt, auf welche Dokumente jeder Benutzer für unseren Anwendungsfall zugreifen darf. Die in diesem Beispiel verwendeten Dokumente sind eine Teilmenge der öffentlichen AWS-Dokumente.
Mitglied | Gruppe an | Für den Zugriff autorisierter Dokumenttyp |
GUEST | . | Blogs |
Patricia | Kundenfälle | Blogs, Benutzerhandbücher |
Hans | Sales | Blogs, Benutzerhandbücher, Fallstudien |
Peter | Marketing | Blogs, Benutzerhandbücher, Fallstudien, Analystenberichte |
Maria | Lösungsarchitekt | Blogs, Benutzerhandbücher, Fallstudien, Analystenberichte, Whitepaper |
Das folgende Diagramm veranschaulicht die Erstellung eines JWT mit einem gemeinsamen Zugriffsschlüssel, um den Zugriff von Benutzern auf die spezifischen Dokumente im Amazon Kendra-Index zu steuern.
Wenn ein Amazon Kendra-Index einen Abfrage-API-Aufruf mit einem Benutzerzugriffstoken empfängt, validiert er das Token mit einem gemeinsamen geheimen Schlüssel (sicher gespeichert in AWS Secrets Manager) und erhält Parameter wie Benutzername und Gruppen in der Nutzlast. Der Amazon Kendra-Index filtert die Suchergebnisse basierend auf der gespeicherten Access Control List (ACL) und den im JWT des Benutzers empfangenen Informationen. Diese gefilterten Ergebnisse werden als Antwort auf den Abfrage-API-Aufruf der Anwendung zurückgegeben.
Voraussetzungen:
Um die Schritte in diesem Beitrag auszuführen, stellen Sie sicher, dass Sie über Folgendes verfügen:
Generieren Sie ein JWT mit einem gemeinsamen geheimen Schlüssel
Der folgende Beispiel-Java-Code zeigt, wie Sie ein JWT mit einem gemeinsamen geheimen Schlüssel mithilfe von Open Source erstellen jsonwebtoken Paket. In der Produktion verwenden Sie einen sicheren Authentifizierungsdienstanbieter Ihrer Wahl und basierend auf Ihren Anforderungen zum Generieren von JWTs.
Wir übergeben den Benutzernamen und die Gruppeninformationen als Ansprüche in der Nutzlast, signieren das JWT mit dem gemeinsamen Geheimnis und generieren ein für diesen Benutzer spezifisches JWT. Geben Sie eine 256-Bit-Zeichenfolge als Ihr Geheimnis an und behalten Sie den Wert des base64-URL-codierten gemeinsamen Geheimnisses bei, um es in einem späteren Schritt zu verwenden.
Erstellen Sie einen Amazon Kendra-Index mit einem gemeinsamen JWT-Geheimnis
Anweisungen zum Erstellen eines Amazon Kendra-Index finden Sie unter Index erstellen. Notieren Sie sich die AWS Identity and Access Management and (IAM)-Rolle, die Sie während des Prozesses erstellt haben. Geben Sie den Rollenzugriff auf den S3-Bucket und den Secrets Manager im Anschluss an die Prinzip des geringsten Privilegs. Beispiele für Richtlinien finden Sie unter Beispiele für identitätsbasierte IAM-Richtlinien. Nachdem Sie den Index erstellt haben, sollte Ihre Amazon Kendra-Konsole wie im folgenden Screenshot aussehen.
Führen Sie die folgenden Schritte aus, um Ihr Geheimnis hinzuzufügen:
- Navigieren Sie auf der Amazon Kendra-Konsole zu der Benutzerzugriffssteuerung Registerkarte auf Ihrer Index-Detailseite.
- Auswählen Einstellungen bearbeiten.
- Da wir eine tokenbasierte Zugriffssteuerung implementieren, wählen Sie Ja für Zugriffskontrolleinstellungen.
- Der Token-Konfiguration, wählen JWT mit gemeinsamem Geheimnis für Token-Typ.
- Aussichten für Art des Geheimnisses, wählen Neu.
- Aussichten für Geheimer Name, eingeben
AmazonKendra-jwt-shared-secret
oder einen beliebigen Namen Ihrer Wahl. - Aussichten für Schlüssel-ID, geben Sie die Schlüssel-ID ein, die Ihrem JWT entspricht, das Sie im Beispiel-Java-Code erstellt haben.
- Aussichten für Algorithmus, wählen Sie den HS256-Algorithmus.
- Aussichten für Geteiltes Geheimnis, geben Sie Ihr gespeichertes base64-URL-codiertes Geheimnis ein, das zuvor aus dem Java-Code generiert wurde.
- Auswählen Geheimnis bewahren.
Das Geheimnis wird nun in Secrets Manager als JSON Web Key Set (JWKS) gespeichert. Sie finden es in der Secrets Manager-Konsole. Weitere Einzelheiten finden Sie unter Verwenden eines JSON Web Token (JWT) mit einem gemeinsamen Geheimnis.
- Erweitern Sie die Erweiterte Konfiguration .
In diesem Schritt richten wir den Benutzernamen und die Gruppen ein, die aus JWT-Ansprüchen extrahiert und mit der ACL abgeglichen werden, wenn die Signatur gültig ist.
- Aussichten für Benutzername¸ Benutzernamen eingeben.
- Aussichten für Groups, Gruppen eingeben.
- Belassen Sie die optionalen Felder als Standard.
- Auswählen Weiter, Dann wählen Aktualisierung.
Bereiten Sie Ihren S3-Bucket als Datenquelle vor
Um einen S3-Bucket als Datenquelle vorzubereiten, erstellen Sie einen S3-Bucket. Im Terminal mit der AWS-Befehlszeilenschnittstelle (AWS CLI) oder AWS CloudShell, führen Sie die folgenden Befehle aus, um die Dokumente und Metadaten in den Datenquellen-Bucket hochzuladen:
Die abgefragten Dokumente werden in einem S3-Bucket gespeichert. Jeder Dokumenttyp hat einen separaten Ordner: Blogs, Fallstudien, Analystenberichte, Benutzerhandbücher und Whitepaper. Diese Ordnerstruktur ist in einem Ordner namens Data enthalten. Metadatendateien einschließlich der ACLs befinden sich in einem Ordner namens Meta.
Wir verwenden den Amazon Kendra S3-Konnektor, um diesen S3-Bucket als Datenquelle zu konfigurieren. Wenn die Datenquelle mit dem Amazon Kendra-Index synchronisiert wird, durchsucht und indiziert sie alle Dokumente und sammelt die ACLs und Dokumentattribute aus den Metadatendateien. Weitere Informationen zu ACLs mit Metadatendateien finden Sie unter Metadaten von Amazon S3-Dokumenten. Für dieses Beispiel verwenden wir das benutzerdefinierte Attribut DocumentType
um die Art des Dokuments anzugeben. Nach dem Hochladen sollte Ihre S3-Bucket-Struktur wie im folgenden Screenshot aussehen.
Zum Festlegen des benutzerdefinierten Attributs DocumentType
Führen Sie die folgenden Schritte aus:
- Wählen Sie Ihren Kendra-Index und wählen Sie Facettendefinition im Navigationsbereich.
- Auswählen Feld hinzufügen.
- Aussichten für Feldname, eingeben
DocumentType
. - Aussichten für Datentyp, wählen Schnur.
- Auswählen Speichern.
Jetzt können Sie Dokumente aus dem von Ihnen erstellten Bucket mithilfe des S3-Konnektors in den Amazon Kendra-Index aufnehmen. Vollständige Anweisungen finden Sie unter Einlesen von Dokumenten über den Amazon Kendra S3 Connector.
- Im Konfigurieren Sie die Synchronisierungseinstellungen Abschnitt, für Geben Sie den Speicherort der Datenquelle ein, geben Sie Ihren S3-Bucket ein (
s3://kendra-demo-bucket/
). - Aussichten für Speicherort des Präfixordners für Metadatendateien, eingeben
Meta/
. - Erweitern Sie die Funktionalität der Zusätzliche Konfiguration.
- Auf dem Muster einschließen Registerkarte, für Vorsilbe, eingeben
Data/
.
Weitere Informationen zu unterstützten Konnektoren finden Sie unter Anschluss.
- Auswählen Weiter und dann Weiter dann wieder Aktualisierung.
- Warten Sie, bis die Datenquelle erstellt wurde, wählen Sie dann die Datenquelle aus und wählen Sie Jetzt synchronisieren.
Die Synchronisierung der Datenquelle kann 10 bis 15 Minuten dauern. Wenn Ihre Synchronisierung abgeschlossen ist, Letzter Synchronisierungsstatus sollte zeigen als Erfolgreich.
Fragen Sie einen Amazon Kendra-Index ab
Führen Sie die folgenden Schritte aus, um eine Testabfrage für Ihren Index auszuführen:
- Wählen Sie in der Amazon Kendra-Konsole aus Suche nach indizierten Inhalten im Navigationsbereich.
- Erweitern Sie die Funktionalität der Testabfrage mit einem Zugriffstoken.
- Auswählen Token anwenden.
- Wir können ein JWT für den Benutzer und die Gruppe generieren. In diesem Beispiel erstellen wir ein JWT für die
AWS-SA
Gruppe. Wir ersetzen den Benutzernamen durch Mary und Gruppen durchAWS-SA
im Schritt der JWT-Generierung. - Geben Sie das generierte Token ein und wählen Sie aus Bewerben.
Basierend auf der ACL sollten wir Ergebnisse aus allen Ordnern erhalten: Blogs, Benutzerhandbücher, Fallstudien, Analystenberichte und Whitepaper.
Ebenso, wenn Sie als James von der eingeloggt sind AWS-Sales
Gruppe und Bestehen des entsprechenden JWT haben wir nur Zugriff auf Blogs, Benutzerhandbücher und Fallstudien.
Wir können den Index auch als Gast durchsuchen, ohne ein Token zu übergeben. Der Gast kann nur auf Inhalte im Blogordner zugreifen.
Experimentieren Sie mit anderen Abfragen, die Ihnen einfallen, während Sie als verschiedene Benutzer und Gruppen angemeldet sind, und beobachten Sie die Ergebnisse.
Aufräumen
Um zukünftige Kosten zu vermeiden, bereinigen Sie die Ressourcen, die Sie als Teil dieser Lösung erstellt haben. Informationen zum Löschen des Amazon Kendra-Index und des S3-Buckets, die beim Testen der Lösung erstellt wurden, finden Sie unter Aufräumen. Informationen zum Löschen des Secrets Manager-Geheimnisses finden Sie unter Löschen Sie ein AWS Secrets Manager-Secret.
Zusammenfassung
In diesem Beitrag haben wir gesehen, wie Amazon Kendra sichere Suchen durchführen kann, die nur Suchergebnisse basierend auf dem Benutzerzugriff zurückgeben. Durch das Hinzufügen eines JWT mit einem gemeinsamen geheimen Schlüssel können wir die Identität einzelner Benutzer sowie Benutzergruppen, die Suchen durchführen, einfach validieren. Dieser ähnliche Ansatz kann auf a erweitert werden JWT mit einem öffentlichen Schlüssel. Weitere Informationen finden Sie unter Verwenden eines JSON Web Token (JWT) mit einem gemeinsamen Geheimnis.
Über die Autoren
Nitin Eusebius ist Senior Enterprise Solutions Architect bei AWS mit über 18 Jahren Erfahrung in Softwareentwicklung und Unternehmensarchitektur. Er arbeitet mit Kunden zusammen, um ihnen dabei zu helfen, gut strukturierte Anwendungen auf der AWS-Plattform zu erstellen. Er ist leidenschaftlich daran interessiert, technologische Herausforderungen zu lösen und Kunden bei ihrer Cloud-Reise zu unterstützen.
Kruthi Jayasimha Rao ist Partner Solutions Architect mit den Schwerpunkten KI und ML. Sie bietet AWS-Partnern technische Anleitungen zur Befolgung von Best Practices zum Aufbau sicherer, robuster und hochverfügbarer Lösungen in der AWS Cloud.
Ishaan-Beere ist Software Engineer bei Amazon Web Services und arbeitet an Amazon Kendra, einer Suchmaschine für Unternehmen. Er hat eine Leidenschaft für Sicherheit und hat in den letzten 2 Jahren an Schlüsselkomponenten der Zugangskontrollfunktionen von Kendra gearbeitet.
Akash Bhatia ist Principal Solutions Architect bei AWS. Sein derzeitiger Fokus liegt darauf, Unternehmenskunden dabei zu helfen, ihre Geschäftsergebnisse durch die Entwicklung und Implementierung innovativer und robuster Lösungen in großem Umfang zu erzielen. Er ist seit über 15 Jahren im Technologiebereich in Unternehmen tätig, die von Fortune 100 bis hin zu Start-ups in den Branchen Fertigung, Luft- und Raumfahrt und Einzelhandel reichen.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- Platoblockkette. Web3-Metaverse-Intelligenz. Wissen verstärkt. Hier zugreifen.
- Die Zukunft prägen mit Adryenn Ashley. Hier zugreifen.
- Quelle: https://aws.amazon.com/blogs/machine-learning/secure-your-amazon-kendra-indexes-with-the-acl-using-a-jwt-shared-secret-key/
- :Ist
- $UP
- 10
- 100
- 11
- 15 Jahre
- 420
- 7
- 8
- 9
- a
- Fähig
- Über Uns
- Zugang
- erreichen
- genau
- Erreichen
- über
- Zusatz
- Luft- und Raumfahrt
- Nach der
- AI
- Algorithmus
- Alle
- erlaubt
- Amazon
- Amazon Kendra
- Amazon Web Services
- unter
- Analytiker
- und
- Bienen
- Anwendung
- Anwendungen
- Bewerben
- Ansatz
- Architektur
- SIND
- AS
- At
- Attribute
- Authentifizierung
- Genehmigung
- Im Prinzip so, wie Sie es von Google Maps kennen.
- verfügbar
- AWS
- basierend
- BE
- weil
- Sein
- BESTE
- Best Practices
- zwischen
- Bit
- Blogs
- bauen
- Geschäft
- by
- rufen Sie uns an!
- namens
- CAN
- Häuser
- Case Studies
- challenges
- Herausforderungen
- Wahl
- Auswählen
- aus aller Welt
- Klasse
- Auftraggeber
- Cloud
- Code
- Unternehmen
- abschließen
- Komponenten
- Konfiguration
- Konsul (Console)
- enthalten
- enthält
- Inhalt
- Inhalt
- Smartgeräte App
- Steuerung
- Dazugehörigen
- Kosten
- erstellen
- erstellt
- Erstellen
- Schaffung
- kritischem
- Krypto
- kryptographisch
- Strom
- Original
- Kunden
- technische Daten
- Datum
- Standard
- zeigen
- zeigt
- entworfen
- Detail
- Details
- anders
- schwer
- verteilt
- Dokument
- Unterlagen
- nach unten
- im
- jeder
- leicht
- ermöglicht
- Motor
- Ingenieur
- Entwicklung
- gewährleisten
- Enter
- Unternehmen
- Beispiel
- Austausch-
- ERFAHRUNGEN
- Scheitern
- Merkmal
- Eigenschaften
- Felder
- Mappen
- Filterung
- Filter
- Setzen Sie mit Achtsamkeit
- folgen
- Folgende
- Aussichten für
- Vermögen
- für
- voller
- Zukunft
- Gewinnen
- erzeugen
- erzeugt
- Generation
- Gruppe an
- Gruppen
- GUEST
- die Vermittlung von Kompetenzen,
- Anleitungen
- Haben
- Überschriften
- Unternehmen
- hoch
- Ultraschall
- Hilfe
- HTML
- http
- HTTPS
- ID
- Kennzeichnung
- Identitätsschutz
- Umsetzung
- importieren
- in
- das
- Einschließlich
- Index
- Indizes
- Krankengymnastik
- Information
- innovativ
- sofortig
- beantragen müssen
- Anleitung
- Intelligent
- ISS
- Ausgabe
- Herausgegeben
- IT
- SEINE
- Javac
- Peter
- Reise
- JSON
- Jwt
- Wesentliche
- Tasten
- Kind
- LERNEN
- Gefällt mir
- Line
- Liste
- aussehen
- aussehen wie
- SIEHT AUS
- gemacht
- um
- Making
- Manager
- Weise
- Herstellung
- viele
- Spiel
- abgestimmt
- Mittel
- Meta
- Metadaten
- Minuten
- ML
- mehr
- Name
- Namens
- Navigieren
- Menü
- Neu
- Objekte
- beobachten
- of
- on
- XNUMXh geöffnet
- Open-Source-
- Auftrag
- Organisationen
- Andere
- Umrissen
- Paket
- Seite
- Paare
- Brot
- Parameter
- Teil
- Partner
- Teile
- passieren
- Bestehen
- leidenschaftlich
- passt
- Ausführen
- Durchführung
- Plattform
- Plato
- Datenintelligenz von Plato
- PlatoData
- Politik durchzulesen
- Post
- Praktiken
- Danach
- vorher
- Principal
- privat
- Prozessdefinierung
- Produktion
- die
- Versorger
- bietet
- Öffentlichkeit
- Abfragen
- Angebot
- Bereich
- Lesen Sie mehr
- erhalten
- Received
- erhält
- in Bezug auf
- ersetzen
- Meldungen
- Quelle
- Voraussetzungen:
- federnde
- Downloads
- Antwort
- für ihren Verlust verantwortlich.
- Folge
- Die Ergebnisse
- Einzelhandel
- behalten
- Rückkehr
- zeigen
- Rollen
- rsa
- Führen Sie
- Skalieren
- Szenarien
- Suche
- Suchmaschine
- Die Geheime
- Abschnitt
- Verbindung
- Gesicherte
- sicher
- Sicherheitdienst
- getrennte
- Dienstanbieter
- Lösungen
- kompensieren
- mehrere
- SHA256
- Teilen
- von Locals geführtes
- sollte
- erklären
- Konzerte
- Schild
- unterzeichnet
- signifikant
- Unterzeichnung
- ähnlich
- vereinfachte
- Software
- Software IngenieurIn
- Softwareentwicklung
- Lösung
- Lösungen
- Auflösung
- Quelle
- spezifisch
- angegeben
- Standard
- Start-ups
- Schritt
- Shritte
- gelagert
- gestrafft
- Schnur
- Struktur
- Es wurden Studien
- so
- Unterstützte
- Unterstützt
- System
- Tabelle
- Nehmen
- Technische
- Technologie
- Mieter
- Terminal
- Test
- Testen
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- die Informationen
- ihr
- Sie
- Diese
- nach drei
- Durch
- Zeit
- zu
- Zeichen
- Tokens
- Typen
- einheitlich
- URL
- Anwendungsbereich
- -
- Anwendungsfall
- Mitglied
- Nutzer
- BESTÄTIGEN
- Bestätigung
- Wert
- verschiedene
- Verification
- überprüfen
- Vertikalen
- Netz
- Web-Services
- GUT
- welche
- während
- Whitepapers
- WHO
- breit
- Große Auswahl
- werden wir
- mit
- .
- ohne
- gearbeitet
- arbeiten,
- Werk
- Workshops
- Jahr
- Du
- Ihr
- Zephyrnet
- PLZ