A livello globale, molte organizzazioni hanno dati aziendali critici dispersi tra vari repository di contenuti, rendendo difficile l'accesso a queste informazioni in modo semplificato e coerente. La creazione di un'esperienza di ricerca unificata e sicura è una sfida significativa per le organizzazioni perché ogni repository contiene un'ampia gamma di formati di documenti e meccanismi di controllo degli accessi.
Amazon Kendra è un servizio di ricerca aziendale intelligente che consente agli utenti di effettuare ricerche in diversi repository di contenuti. I clienti sono responsabili dell'autenticazione e dell'autorizzazione degli utenti ad accedere alla loro applicazione di ricerca e Amazon Kendra consente la ricerca sicura per le applicazioni aziendali, assicurandosi che i risultati della query di ricerca di un utente includano solo documenti che l'utente è autorizzato a leggere. Amazon Kendra può facilmente convalidare l'identità di singoli utenti e gruppi di utenti che eseguono ricerche con l'aggiunta di token di ricerca sicuri. Aggiungendo i token utente per la ricerca sicura, l'esecuzione di ricerche filtrate basate sull'accesso in Amazon Kendra è semplificata e protetta. Puoi passare in modo sicuro le informazioni di accesso utente nel payload della query invece di utilizzare i filtri degli attributi per eseguire questa operazione. Con questa funzione, Amazon Kendra può convalidare le informazioni del token e applicarle automaticamente ai risultati della ricerca per un filtraggio accurato e sicuro basato sull'accesso.
Amazon Kendra supporta il controllo dell'accesso utente basato su token utilizzando i seguenti tipi di token:
- Apri ID
- JWT con un segreto condiviso
- JWT con una chiave pubblica
- JSON
In precedenza, abbiamo visto una dimostrazione di controllo dell'accesso utente basato su token in Amazon Kendra con Open ID. In questo post dimostriamo il controllo dell'accesso utente basato su token in Amazon Kendra con JWT con un segreto condiviso. JWT, o JSON Web Token, è uno standard aperto utilizzato per condividere le informazioni di sicurezza tra un client e un server. Contiene oggetti JSON codificati, incluso un set di attestazioni. I JWT vengono firmati utilizzando un algoritmo crittografico per garantire che le attestazioni non possano essere modificate dopo l'emissione del token. I JWT sono utili in scenari riguardanti l'autorizzazione e lo scambio di informazioni.
I JWT sono costituiti da tre parti separate da punti (.):
- testata – Contiene parti come il tipo di token, che è JWT, l'algoritmo di firma utilizzato, come HMAC SHA256 o RSA, e un identificatore di chiave facoltativo.
- Carico utile – Questo contiene diverse coppie chiave-valore, chiamate , emesse dal provider di identità. Oltre a diversi reclami relativi all'emissione e alla scadenza del token, il token può contenere anche informazioni sul singolo principale e tenant.
- Firma – Per creare la parte della firma, prendi l'intestazione codificata, il payload codificato, un segreto, l'algoritmo specificato nell'intestazione e firmalo.
Pertanto, un JWT ha il seguente aspetto:
Di seguito è riportato un esempio di intestazione:
Di seguito è riportato il payload di esempio:
Il JWT viene creato con una chiave segreta e quella chiave segreta è privata per te, il che significa che non la rivelerai mai al pubblico né la inserirai all'interno del JWT. Quando ricevi un JWT dal client, puoi verificare il JWT con la chiave segreta memorizzata sul server. Qualsiasi modifica al JWT comporterà un errore di verifica (convalida JWT).
Questo post dimostra l'uso di esempio di un JWT utilizzando una chiave di accesso condivisa e il suo utilizzo per proteggere gli indici Amazon Kendra con controlli di accesso. In produzione, utilizzi un provider di servizi di autenticazione sicuro di tua scelta e in base ai tuoi requisiti per generare JWT.
Per ulteriori informazioni sui JWT, fare riferimento a Introduzione ai token Web JSON.
Panoramica della soluzione
Simile al settimana con Open ID, questa soluzione è progettata per consentire a un insieme di utenti e gruppi di eseguire query di ricerca in un repository di documenti e i risultati vengono restituiti solo da quei documenti che sono autorizzati ad accedere all'interno di quel gruppo. La tabella seguente delinea i documenti a cui ogni utente è autorizzato ad accedere per il nostro caso d'uso. I documenti utilizzati in questo esempio sono un sottoinsieme di documenti pubblici AWS.
Utente | Gruppo | Tipo di documento Autorizzato all'accesso |
GUEST | . | Blog |
Patricia | Blog, guide per l'utente | |
James | Vendite | Blog, guide per l'utente, case study |
John | Marketing | Blog, guide per l'utente, case study, report di analisti |
Maria | Architetto di soluzioni | Blog, guide per l'utente, case study, report di analisti, white paper |
Il seguente diagramma illustra la creazione di un JWT con una chiave di accesso condivisa per controllare l'accesso degli utenti ai documenti specifici nell'indice Amazon Kendra.
Quando un indice Amazon Kendra riceve una chiamata API di query con un token di accesso utente, convalida il token utilizzando una chiave segreta condivisa (archiviata in modo sicuro in AWS Secrets Manager) e ottiene parametri come nome utente e gruppi nel payload. L'indice Amazon Kendra filtra i risultati della ricerca in base all'elenco di controllo di accesso (ACL) archiviato e alle informazioni ricevute nel JWT dell'utente. Questi risultati filtrati vengono restituiti in risposta alla chiamata API di query effettuata dall'applicazione.
Prerequisiti
Per seguire i passaggi in questo post, assicurati di avere quanto segue:
Genera un JWT con una chiave segreta condivisa
Il seguente codice Java di esempio mostra come creare un JWT con una chiave segreta condivisa utilizzando il file open-source jsonwebtoken pacchetto. In produzione, utilizzerai un provider di servizi di autenticazione sicuro di tua scelta e in base ai tuoi requisiti per generare JWT.
Passiamo le informazioni sul nome utente e sui gruppi come attestazioni nel payload, firmiamo il JWT con il segreto condiviso e generiamo un JWT specifico per quell'utente. Fornisci una stringa a 256 bit come segreto e mantieni il valore del segreto condiviso con codifica URL Base64 da utilizzare in un passaggio successivo.
Crea un indice Amazon Kendra con un segreto condiviso JWT
Per istruzioni sulla creazione di un indice Amazon Kendra, fare riferimento a Creare un indice. Annotare il Gestione dell'identità e dell'accesso di AWS (IAM) che hai creato durante il processo. Fornisci al ruolo l'accesso al bucket S3 e a Secrets Manager seguendo il principio di minimo privilegio. Ad esempio le politiche, fare riferimento a Esempio di policy IAM basate sull'identità. Dopo aver creato l'indice, la tua console Amazon Kendra dovrebbe essere simile allo screenshot seguente.
Completa i seguenti passaggi per aggiungere il tuo segreto:
- Sulla console Amazon Kendra, vai al file Controllo di accesso dell'utente scheda nella pagina dei dettagli dell'indice.
- Scegli Modificare le impostazioni.
- Poiché stiamo implementando il controllo degli accessi basato su token, select Sì per Impostazioni di controllo accessi.
- Sotto Configurazione tokenscegli JWT con segreto condiviso per Tipo di token.
- Nel Tipo di segretoscegli New.
- Nel Nome segreto, accedere
AmazonKendra-jwt-shared-secret
o qualsiasi nome di tua scelta. - Nel ID chiave, immetti l'ID chiave corrispondente al JWT che hai creato nel codice Java di esempio.
- Nel Algoritmo, scegli l'algoritmo HS256.
- Nel Segreto condiviso, inserisci il segreto codificato dell'URL Base64 conservato generato in precedenza dal codice Java.
- Scegli Salva segreto.
Il segreto verrà ora archiviato in Secrets Manager come JSON Web Key Set (JWKS). Puoi trovarlo sulla console di Secrets Manager. Per maggiori dettagli, fare riferimento a Utilizzo di un JSON Web Token (JWT) con un segreto condiviso.
- espandere la Configurazione avanzata .
In questo passaggio, impostiamo il nome utente e i gruppi che verranno estratti dalle attestazioni JWT e abbinati all'ACL quando la firma è valida.
- Nel Nome utenteinserire username.
- Nel ATTIVITA' E GRUPPI, inserisci i gruppi.
- Lasciare i campi facoltativi come predefiniti.
- Scegli Avanti, Quindi scegliere Aggiornanento.
Prepara il tuo bucket S3 come origine dati
Per preparare un bucket S3 come origine dati, crea un bucket S3. Nel terminale con il Interfaccia della riga di comando di AWS (AWS CLI) o AWS CloudShell, esegui i seguenti comandi per caricare i documenti e i metadati nel bucket dell'origine dati:
I documenti interrogati vengono archiviati in un bucket S3. Ogni tipo di documento ha una cartella separata: blog, case study, report degli analisti, guide per l'utente e white paper. Questa struttura di cartelle è contenuta in una cartella denominata Data. I file di metadati che includono gli ACL si trovano in una cartella denominata Meta.
Utilizziamo il connettore Amazon Kendra S3 per configurare questo bucket S3 come origine dati. Quando l'origine dati viene sincronizzata con l'indice Amazon Kendra, esegue la scansione e l'indicizzazione di tutti i documenti, oltre a raccogliere gli ACL e gli attributi del documento dai file di metadati. Per ulteriori informazioni sugli ACL che utilizzano file di metadati, fare riferimento a Metadati del documento Amazon S3. Per questo esempio, utilizziamo l'attributo personalizzato DocumentType
per indicare il tipo di documento. Dopo il caricamento, la struttura del bucket S3 dovrebbe essere simile allo screenshot seguente.
Per impostare l'attributo personalizzato DocumentType
, completare i seguenti passi:
- Scegli il tuo indice Kendra e scegli Definizione delle faccette nel pannello di navigazione.
- Scegli Aggiungi campo.
- Nel nome campo, accedere
DocumentType
. - Nel Tipo di datiscegli Corda.
- Scegli Aggiungi.
Ora puoi inserire i documenti dal bucket che hai creato nell'indice Amazon Kendra utilizzando il connettore S3. Per le istruzioni complete, fare riferimento a Acquisizione di documenti tramite Amazon Kendra S3 Connector.
- Nel Configura le impostazioni di sincronizzazione sezione, per Immettere la posizione dell'origine dati, inserisci il tuo bucket S3 (
s3://kendra-demo-bucket/
). - Nel Posizione della cartella del prefisso dei file di metadati, accedere
Meta/
. - Espandere Configurazione aggiuntiva.
- Sulla Includi modelli scheda, per Prefisso, accedere
Data/
.
Per ulteriori informazioni sui connettori supportati, vedere Connettori RF.
- Scegli Avanti, poi Avanti di nuovo, allora Aggiornanento.
- Attendi la creazione dell'origine dati, quindi seleziona l'origine dati e scegli Sincronizza ora.
Il completamento della sincronizzazione dell'origine dati può richiedere 10-15 minuti. Al termine della sincronizzazione, Stato dell'ultima sincronizzazione dovrebbe mostrare come di risposte positive.
Interroga un indice Amazon Kendra
Per eseguire una query di prova sul tuo indice, completa i seguenti passaggi:
- Sulla console Amazon Kendra, scegli Cerca contenuto indicizzato nel pannello di navigazione.
- Espandere Testare la query con un token di accesso.
- Scegli Applica token.
- Possiamo generare un JWT per l'utente e il gruppo. In questo esempio, creiamo un JWT per il
AWS-SA
gruppo. Sostituiamo il nome utente come Mary e i gruppi comeAWS-SA
nella fase di generazione del JWT. - Inserisci il token generato e scegli APPLICA.
Sulla base dell'ACL, dovremmo essere i risultati di tutte le cartelle: blog, guide per l'utente, case study, rapporti degli analisti e white paper.
Allo stesso modo, quando si accede come James dal file AWS-Sales
gruppo e passando il corrispondente JWT, abbiamo accesso solo a blog, guide per l'utente e case study.
Possiamo anche cercare l'indice come ospite senza passare un token. L'ospite può accedere solo ai contenuti nella cartella blog.
Sperimenta utilizzando altre query a cui puoi pensare mentre sei connesso come utenti e gruppi diversi e osserva i risultati.
ripulire
Per evitare di incorrere in costi futuri, ripulisci le risorse create come parte di questa soluzione. Per eliminare l'indice Amazon Kendra e il bucket S3 creati durante il test della soluzione, fare riferimento a Pulire. Per eliminare il segreto di Secrets Manager, fare riferimento a Elimina un segreto AWS Secrets Manager.
Conclusione
In questo post, abbiamo visto come Amazon Kendra può eseguire ricerche sicure che restituiscono solo risultati di ricerca basati sull'accesso dell'utente. Con l'aggiunta di un JWT con una chiave segreta condivisa, possiamo facilmente convalidare l'identità dei singoli utenti e dei gruppi di utenti che eseguono ricerche. Questo approccio simile può essere esteso a a JWT con una chiave pubblica. Per saperne di più, fare riferimento a Utilizzo di un JSON Web Token (JWT) con un segreto condiviso.
Informazioni sugli autori
Nitin Eusebio è Sr. Enterprise Solutions Architect presso AWS con oltre 18 anni di esperienza nell'ingegneria del software e nell'architettura aziendale. Lavora con i clienti per aiutarli a creare applicazioni ben architettate sulla piattaforma AWS. È appassionato di risolvere le sfide tecnologiche e aiutare i clienti nel loro viaggio verso il cloud.
Kruthi Jayasimha Rao è un Partner Solutions Architect specializzato in AI e ML. Fornisce assistenza tecnica ai partner AWS nel seguire le best practice per creare soluzioni sicure, resilienti e altamente disponibili nel cloud AWS.
Ishaan Berry è un ingegnere del software presso Amazon Web Services e lavora su Amazon Kendra, un motore di ricerca aziendale. È appassionato di sicurezza e ha lavorato sui componenti chiave delle funzionalità di controllo degli accessi di Kendra negli ultimi 2 anni.
Akasha Bhatia è un architetto Principal Solutions con AWS. Il suo obiettivo attuale è aiutare i clienti aziendali a raggiungere i loro risultati di business attraverso l'architettura e l'implementazione di soluzioni innovative e resilienti su larga scala. Ha lavorato nella tecnologia per oltre 15 anni in aziende che vanno da Fortune 100 alle start-up nei verticali di produzione, aerospaziale e vendita al dettaglio.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- Platoblockchain. Web3 Metaverse Intelligence. Conoscenza amplificata. Accedi qui.
- Coniare il futuro con Adryenn Ashley. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/secure-your-amazon-kendra-indexes-with-the-acl-using-a-jwt-shared-secret-key/
- :È
- $ SU
- 10
- 100
- 11
- 15 anni
- 420
- 7
- 8
- 9
- a
- capace
- WRI
- accesso
- realizzare
- preciso
- Raggiungere
- operanti in
- aggiunta
- Aeronautico
- Dopo shavasana, sedersi in silenzio; saluti;
- AI
- algoritmo
- Tutti
- consente
- Amazon
- Amazon Kendra
- Amazon Web Services
- tra
- analista
- ed
- api
- Applicazioni
- applicazioni
- APPLICA
- approccio
- architettura
- SONO
- AS
- At
- gli attributi
- Autenticazione
- autorizzazione
- automaticamente
- disponibile
- AWS
- basato
- BE
- perché
- essendo
- MIGLIORE
- best practice
- fra
- Po
- blog
- costruire
- affari
- by
- chiamata
- detto
- Materiale
- Custodie
- Casi Studio
- Challenge
- sfide
- scegliere
- Scegli
- classe
- cliente
- Cloud
- codice
- Aziende
- completamento di una
- componenti
- Configurazione
- consolle
- contenere
- contiene
- contenuto
- testuali
- di controllo
- controlli
- Corrispondente
- Costi
- creare
- creato
- Creazione
- creazione
- critico
- crypto
- crittografico
- Corrente
- costume
- Clienti
- dati
- Data
- Predefinito
- dimostrare
- dimostra
- progettato
- dettaglio
- dettagli
- diverso
- difficile
- dispersi
- documento
- documenti
- giù
- durante
- ogni
- facilmente
- Abilita
- motore
- ingegnere
- Ingegneria
- garantire
- entrare
- Impresa
- esempio
- exchange
- esperienza
- Fallimento
- caratteristica
- Caratteristiche
- campi
- File
- filtraggio
- filtri
- Focus
- seguire
- i seguenti
- Nel
- Fortune
- da
- pieno
- futuro
- Guadagno
- generare
- generato
- ELETTRICA
- Gruppo
- Gruppo
- GUEST
- guida
- Guide
- Avere
- intestazioni
- aiutare
- vivamente
- Come
- Tutorial
- HTML
- http
- HTTPS
- ID
- identificatore
- Identità
- Implementazione
- importare
- in
- includere
- Compreso
- Index
- indici
- individuale
- informazioni
- creativi e originali
- immediato
- invece
- istruzioni
- Intelligente
- ISS
- emissione
- Rilasciato
- IT
- SUO
- Java
- John
- viaggio
- json
- Beh
- Le
- Tasti
- Ragazzo
- IMPARARE
- piace
- linea
- Lista
- Guarda
- una
- SEMBRA
- fatto
- make
- Fare
- direttore
- modo
- consigliato per la
- molti
- partita
- abbinato
- si intende
- Meta
- Metadati
- Minuti
- ML
- Scopri di più
- Nome
- Detto
- Navigare
- Navigazione
- New
- oggetti
- osservare
- of
- on
- aprire
- open source
- minimo
- organizzazioni
- Altro
- lineamenti
- pacchetto
- pagina
- coppie
- vetro
- parametri
- parte
- partner
- partner
- Ricambi
- passare
- Di passaggio
- appassionato
- passato
- Eseguire
- esecuzione
- piattaforma
- Platone
- Platone Data Intelligence
- PlatoneDati
- Termini e Condizioni
- Post
- pratiche
- Preparare
- in precedenza
- Direttore
- un bagno
- processi
- Produzione
- fornire
- fornitore
- fornisce
- la percezione
- query
- gamma
- che vanno
- Leggi
- ricevere
- ricevuto
- riceve
- per quanto riguarda
- sostituire
- Report
- deposito
- Requisiti
- elastico
- Risorse
- risposta
- responsabile
- colpevole
- Risultati
- nello specifico retail
- conservare
- ritorno
- rivelare
- Ruolo
- rsa
- Correre
- Scala
- Scenari
- Cerca
- motore di ricerca
- Segreto
- Sezione
- sicuro
- assicurato
- in modo sicuro
- problemi di
- separato
- servizio
- Provider di servizi
- Servizi
- set
- alcuni
- SHA256
- Condividi
- condiviso
- dovrebbero
- mostrare attraverso le sue creazioni
- Spettacoli
- segno
- firmato
- significativa
- firma
- simile
- semplificata
- Software
- Software Engineer
- Ingegneria del software
- soluzione
- Soluzioni
- Soluzione
- Fonte
- specifico
- specificato
- Standard
- start-up
- step
- Passi
- memorizzati
- aerodinamico
- Corda
- La struttura
- studi
- tale
- supportato
- supporti
- sistema
- tavolo
- Fai
- Consulenza
- Tecnologia
- inquilino
- terminal
- test
- Testing
- che
- Il
- le informazioni
- loro
- Li
- Strumenti Bowman per analizzare le seguenti finiture:
- tre
- Attraverso
- tempo
- a
- token
- Tokens
- Tipi di
- unificato
- URL
- Impiego
- uso
- caso d'uso
- Utente
- utenti
- CONVALIDARE
- convalida
- APPREZZIAMO
- vario
- Convalida
- verificare
- verticali
- sito web
- servizi web
- WELL
- quale
- while
- Fogli bianchi
- OMS
- largo
- Vasta gamma
- volere
- con
- entro
- senza
- lavorato
- lavoro
- lavori
- Corsi
- anni
- Tu
- Trasferimento da aeroporto a Sharm
- zefiro
- Codice postale