La nivel global, multe organizații au date critice de afaceri dispersate între diferite depozite de conținut, ceea ce face dificilă accesarea acestor informații într-un mod eficient și coeziv. Crearea unei experiențe de căutare unificate și sigure este o provocare semnificativă pentru organizații, deoarece fiecare depozit conține o gamă largă de formate de documente și mecanisme de control al accesului.
Amazon Kendra este un serviciu inteligent de căutare pentru întreprinderi care permite utilizatorilor să caute în diferite depozite de conținut. Clienții sunt responsabili pentru autentificarea și autorizarea utilizatorilor să obțină acces la aplicația lor de căutare, iar Amazon Kendra permite căutarea securizată pentru aplicațiile de întreprindere, asigurându-se că rezultatele interogării de căutare a unui utilizator includ doar documente pe care utilizatorul este autorizat să le citească. Amazon Kendra poate valida cu ușurință identitatea utilizatorilor individuali, precum și a grupurilor de utilizatori care efectuează căutări adăugând jetoane de căutare securizate. Prin adăugarea de jetoane de utilizator pentru căutarea sigură, efectuarea de căutări filtrate bazate pe acces în Amazon Kendra este simplificată și securizată. Puteți transmite în siguranță informațiile de acces ale utilizatorilor în sarcina utilă de interogare, în loc să utilizați filtre de atribute pentru a realiza acest lucru. Cu această caracteristică, Amazon Kendra poate valida informațiile despre simbol și le poate aplica automat rezultatelor căutării pentru o filtrare precisă și sigură bazată pe acces.
Amazon Kendra acceptă controlul accesului utilizatorilor pe bază de simboluri folosind următoarele tipuri de simboluri:
- Open-ID
- JWT cu un secret comun
- JWT cu o cheie publică
- JSON
Anterior, am văzut o demonstrație a controlul accesului utilizatorilor pe bază de token în Amazon Kendra cu Open ID. În această postare, demonstrăm controlul accesului utilizatorilor bazat pe token în Amazon Kendra cu JWT cu un secret partajat. JWT, sau JSON Web Token, este un standard deschis folosit pentru a partaja informații de securitate între un client și un server. Conține obiecte JSON codificate, inclusiv un set de revendicări. JWT-urile sunt semnate folosind un algoritm criptografic pentru a se asigura că revendicările nu pot fi modificate după emiterea simbolului. JWT-urile sunt utile în scenarii privind autorizarea și schimbul de informații.
JWT-urile constau din trei părți separate prin puncte (.):
- Antet – Conține părți precum tipul jetonului, care este JWT, algoritmul de semnare utilizat, cum ar fi HMAC SHA256 sau RSA, și un identificator de cheie opțional.
- Încărcătură utilă – Acesta conține mai multe perechi cheie-valoare, numite creanțe, care sunt emise de furnizorul de identitate. Pe lângă mai multe revendicări legate de emiterea și expirarea simbolului, simbolul poate conține și informații despre principalul și locatarul individual.
- Semnătură – Pentru a crea partea de semnătură, luați antetul codificat, sarcina utilă codificată, un secret, algoritmul specificat în antet și semnați asta.
Prin urmare, un JWT arată astfel:
Următorul este un exemplu de antet:
Următorul este exemplul de încărcare utilă:
JWT este creat cu o cheie secretă, iar acea cheie secretă este privată pentru dvs., ceea ce înseamnă că nu o veți dezvălui niciodată publicului sau nu o veți injecta în interiorul JWT. Când primiți un JWT de la client, puteți verifica JWT cu cheia secretă stocată pe server. Orice modificare a JWT va duce la eșecul verificării (validarea JWT).
Această postare demonstrează exemplul de utilizare a unui JWT care folosește o cheie de acces partajată și utilizarea acesteia pentru a securiza indexurile Amazon Kendra cu controale de acces. În producție, utilizați un furnizor de servicii de autentificare securizat la alegere și pe baza cerințelor dvs. pentru a genera JWT.
Pentru a afla mai multe despre JWT, consultați Introducere în jetoanele web JSON.
Prezentare generală a soluțiilor
În mod similar cu post cu Open ID, această soluție este concepută pentru un set de utilizatori și grupuri pentru a efectua interogări de căutare într-un depozit de documente, iar rezultatele sunt returnate numai din acele documente care sunt autorizate pentru acces în cadrul acelui grup. Următorul tabel prezintă ce documente este autorizat să acceseze fiecare utilizator pentru cazul nostru de utilizare. Documentele utilizate în acest exemplu sunt un subset de documente publice AWS.
Utilizator | grup | Tip document autorizat pentru acces |
Oaspete | . | bloguri |
Patricia | Client | Bloguri, ghiduri de utilizare |
James | Vânzări | Bloguri, ghiduri de utilizare, studii de caz |
Ioan | Marketing | Bloguri, ghiduri de utilizare, studii de caz, rapoarte analiștilor |
Maria | Solutii arhitect | Bloguri, ghiduri de utilizare, studii de caz, rapoarte analiștilor, documente albe |
Următoarea diagramă ilustrează crearea unui JWT cu o cheie de acces partajată pentru a controla accesul utilizatorilor la documentele specifice din indexul Amazon Kendra.
Când un index Amazon Kendra primește un apel API de interogare cu un jeton de acces utilizator, validează jetonul folosind o cheie secretă partajată (stocată în siguranță în Manager de secrete AWS) și primește parametri precum numele de utilizator și grupurile din sarcina utilă. Indexul Amazon Kendra filtrează rezultatele căutării pe baza listei de control al accesului (ACL) stocată și a informațiilor primite în JWT-ul utilizatorului. Aceste rezultate filtrate sunt returnate ca răspuns la apelul API de interogare făcut de aplicație.
Cerințe preliminare
Pentru a urma pașii din această postare, asigurați-vă că aveți următoarele:
Generați un JWT cu o cheie secretă partajată
Următorul exemplu de cod Java arată cum să creați un JWT cu o cheie secretă partajată folosind open-source jsonwebtoken pachet. În producție, veți folosi un furnizor de servicii de autentificare securizat la alegere și pe baza cerințelor dvs. de a genera JWT.
Transmitem numele de utilizator și informațiile grupurilor ca revendicări în sarcina utilă, semnăm JWT cu secretul partajat și generăm un JWT specific pentru acel utilizator. Furnizați un șir de 256 de biți ca secret și păstrați valoarea secretului partajat codificat URL-ul base64 pentru a o utiliza într-un pas ulterior.
Creați un index Amazon Kendra cu un secret partajat JWT
Pentru instrucțiuni despre crearea unui index Amazon Kendra, consultați Crearea unui index. Notați Gestionarea identității și accesului AWS (IAM) pe care l-ați creat în timpul procesului. Furnizați accesul la rol la compartimentul S3 și la Managerul de secrete după principiul celui mai mic privilegiu. De exemplu politici, consultați Exemple de politici IAM bazate pe identitate. După ce creați indexul, consola dvs. Amazon Kendra ar trebui să arate ca următoarea captură de ecran.
Parcurgeți următorii pași pentru a vă adăuga secretul:
- Pe consola Amazon Kendra, navigați la Control acces utilizator fila de pe pagina cu detalii de index.
- Alege Editeaza setarile.
- Pentru că implementăm controlul accesului pe bază de simboluri, selectați Da în Setări de control acces.
- În Configurare token, alege JWT cu secret partajat pentru Token de tip.
- Pentru Tip de secret, alege Nou.
- Pentru Numele secret, introduce
AmazonKendra-jwt-shared-secret
sau orice nume la alegere. - Pentru ID-ul cheii, introduceți ID-ul cheii pentru a se potrivi cu JWT pe care l-ați creat în exemplul de cod Java.
- Pentru Algoritm, alegeți algoritmul HS256.
- Pentru Secret împărtășit, introduceți secretul codificat URL-ul base64 reținut, generat anterior din codul Java.
- Alege Salvați secretul.
Secretul va fi acum stocat în Secrets Manager ca set de chei web JSON (JWKS). Îl puteți găsi pe consola Secrets Manager. Pentru mai multe detalii, consultați Utilizarea unui JSON Web Token (JWT) cu un secret partajat.
- extinde Configurare avansată secţiune.
În acest pas, setăm numele de utilizator și grupurile care vor fi extrase din revendicările JWT și potriviți cu ACL atunci când semnătura este validă.
- Pentru Nume de utilizatorIntroduceti numele de utilizator.
- Pentru grupuri, introduceți grupuri.
- Lăsați câmpurile opționale ca implicite.
- Alege Pagina Următoare →, Apoi alegeți Actualizează.
Pregătiți-vă bucket-ul S3 ca sursă de date
Pentru a pregăti un compartiment S3 ca sursă de date, creați un compartiment S3. În terminalul cu Interfața liniei de comandă AWS (AWS CLI) sau AWS CloudShell, rulați următoarele comenzi pentru a încărca documentele și metadatele în compartimentul sursei de date:
Documentele interogate sunt stocate într-o găleată S3. Fiecare tip de document are un folder separat: bloguri, studii de caz, rapoarte analiștilor, ghiduri de utilizare și documente albe. Această structură de foldere este conținută într-un folder numit Data. Fișierele de metadate, inclusiv ACL-urile sunt într-un folder numit Meta.
Folosim conectorul Amazon Kendra S3 pentru a configura această găleată S3 ca sursă de date. Când sursa de date este sincronizată cu indexul Amazon Kendra, aceasta accesează cu crawlere și indexează toate documentele, precum și colectează ACL-urile și atributele documentului din fișierele de metadate. Pentru a afla mai multe despre ACL-uri care utilizează fișiere de metadate, consultați Metadatele documentului Amazon S3. Pentru acest exemplu, folosim atributul personalizat DocumentType
pentru a indica tipul documentului. După încărcare, structura compartimentului S3 ar trebui să arate ca următoarea captură de ecran.
Pentru a seta atributul personalizat DocumentType
, parcurgeți următorii pași:
- Alegeți-vă indexul Kendra și alegeți Definiția fațetei în panoul de navigare.
- Alege Adăugați câmp.
- Pentru Numele domeniului, introduce
DocumentType
. - Pentru Tip de date, alege Şir.
- Alege Adăuga.
Acum puteți ingera documente din găleata creată de dvs. în indexul Amazon Kendra folosind conectorul S3. Pentru instrucțiuni complete, consultați Ingerarea documentelor prin conectorul Amazon Kendra S3.
- În Configurați setările de sincronizare secțiune, pt Introduceți locația sursei de date, introduceți găleata S3 (
s3://kendra-demo-bucket/
). - Pentru Fișierele metadate prefix locația folderului, introduce
Meta/
. - Extinde Configurație suplimentară.
- Pe Includeți modele filă, pentru Prefix, introduce
Data/
.
Pentru mai multe informații despre conectorii acceptați, consultați conectori.
- Alege Pagina Următoare →, Apoi Pagina Următoare → din nou, atunci Actualizează.
- Așteptați ca sursa de date să fie creată, apoi selectați sursa de date și alegeți Sincronizează acum.
Sincronizarea sursei de date poate dura între 10 și 15 minute. Când sincronizarea este finalizată, Ultima stare de sincronizare ar trebui să arate ca De succes.
Interogați un index Amazon Kendra
Pentru a rula o interogare de testare pe index, parcurgeți următorii pași:
- Pe consola Amazon Kendra, alegeți Căutați conținut indexat în panoul de navigare.
- Extinde Testați interogarea cu un token de acces.
- Alege Aplicați token.
- Putem genera un JWT pentru utilizator și grup. În acest exemplu, creăm un JWT pentru
AWS-SA
grup. Înlocuim numele de utilizator ca Mary și grupurile caAWS-SA
în pasul de generare JWT. - Introduceți simbolul generat și alegeți Aplică.
Pe baza ACL, ar trebui să fim rezultate din toate folderele: bloguri, ghiduri de utilizare, studii de caz, rapoarte de analist și documente albe.
În mod similar, atunci când sunteți autentificat ca James de la AWS-Sales
grup și trecând JWT corespunzător, avem acces doar la bloguri, ghiduri de utilizare și studii de caz.
De asemenea, putem căuta în index ca oaspeți, fără a transmite un simbol. Invitatul poate accesa numai conținutul din folderul bloguri.
Experimentați folosind alte interogări la care vă puteți gândi când sunteți conectat ca utilizatori și grupuri diferiți și observați rezultatele.
A curăța
Pentru a evita costurile viitoare, curățați resursele pe care le-ați creat ca parte a acestei soluții. Pentru a șterge indexul Amazon Kendra și compartimentul S3 creat în timpul testării soluției, consultați A curăța. Pentru a șterge secretul Secrets Manager, consultați Ștergeți un secret AWS Secrets Manager.
Concluzie
În această postare, am văzut cum Amazon Kendra poate efectua căutări sigure care returnează numai rezultate de căutare bazate pe accesul utilizatorului. Prin adăugarea unui JWT cu o cheie secretă partajată, putem valida cu ușurință identitatea utilizatorilor individuali, precum și a grupurilor de utilizatori care efectuează căutări. Această abordare similară poate fi extinsă la a JWT cu o cheie publică. Pentru a afla mai multe, consultați Utilizarea unui JSON Web Token (JWT) cu un secret partajat.
Despre Autori
Nitin Eusebiu este un arhitect senior de soluții de întreprindere la AWS cu peste 18 ani de experiență în inginerie software și arhitectură întreprindere. El lucrează cu clienții pentru a-i ajuta să creeze aplicații bine arhitecturate pe platforma AWS. Este pasionat de rezolvarea provocărilor tehnologice și de a ajuta clienții în călătoria lor în cloud.
Kruthi Jayasimha Rao este un arhitect de soluții pentru parteneri, cu accent pe AI și ML. Ea oferă îndrumări tehnice partenerilor AWS în urma celor mai bune practici pentru a construi soluții sigure, rezistente și foarte disponibile în AWS Cloud.
Ishaan Berry este inginer software la Amazon Web Services, lucrând pe Amazon Kendra, un motor de căutare pentru întreprinderi. Este pasionat de securitate și a lucrat la componentele cheie ale funcțiilor Kendra Access Control în ultimii 2 ani.
Akash Bhatia este arhitect principal de soluții cu AWS. Obiectivul său actual este de a ajuta clienții întreprinderilor să-și atingă rezultatele de afaceri prin arhitectura și implementarea unor soluții inovatoare și rezistente la scară. Lucrează în tehnologie de peste 15 ani la companii, de la Fortune 100 până la start-up-uri din sectoarele de producție, aerospațial și retail.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- Platoblockchain. Web3 Metaverse Intelligence. Cunoștințe amplificate. Accesați Aici.
- Mintând viitorul cu Adryenn Ashley. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/machine-learning/secure-your-amazon-kendra-indexes-with-the-acl-using-a-jwt-shared-secret-key/
- :este
- $UP
- 10
- 100
- 11
- ani 15
- 420
- 7
- 8
- 9
- a
- Capabil
- Despre Noi
- acces
- realiza
- precis
- Obține
- peste
- plus
- Industria aerospațială
- După
- AI
- Algoritmul
- TOATE
- permite
- Amazon
- Amazon Kendra
- Amazon Web Services
- printre
- analist
- și
- api
- aplicație
- aplicatii
- Aplică
- abordare
- arhitectură
- SUNT
- AS
- At
- atribute
- Autentificare
- autorizare
- în mod automat
- disponibil
- AWS
- bazat
- BE
- deoarece
- fiind
- CEL MAI BUN
- Cele mai bune practici
- între
- Pic
- bloguri
- construi
- afaceri
- by
- apel
- denumit
- CAN
- caz
- Studii De Caz
- contesta
- provocări
- alegere
- Alege
- creanțe
- clasă
- client
- Cloud
- cod
- Companii
- Completă
- componente
- Configuraţie
- Consoleze
- conţine
- conține
- conţinut
- conținut
- Control
- controale
- Corespunzător
- Cheltuieli
- crea
- a creat
- Crearea
- creaţie
- critic
- cripto
- criptografic
- Curent
- personalizat
- clienţii care
- de date
- Data
- Mod implicit
- demonstra
- demonstrează
- proiectat
- detaliu
- detalii
- diferit
- dificil
- dispersat
- document
- documente
- jos
- în timpul
- fiecare
- cu ușurință
- permite
- Motor
- inginer
- Inginerie
- asigura
- Intrați
- Afacere
- exemplu
- schimb
- experienţă
- Eșec
- Caracteristică
- DESCRIERE
- Domenii
- Fişiere
- filtrare
- Filtre
- Concentra
- urma
- următor
- Pentru
- Avere
- din
- Complet
- viitor
- Câştig
- genera
- generată
- generaţie
- grup
- Grupului
- Oaspete
- îndrumare
- Ghiduri
- Avea
- anteturile
- ajutor
- extrem de
- Cum
- Cum Pentru a
- HTML
- http
- HTTPS
- ID
- identificator
- Identitate
- Punere în aplicare a
- import
- in
- include
- Inclusiv
- index
- indexurile
- individ
- informații
- inovatoare
- clipă
- in schimb
- instrucțiuni
- Inteligent
- ISS
- emitere
- Emis
- IT
- ESTE
- Java
- Ioan
- călătorie
- JSON
- Jwt
- Cheie
- chei
- Copil
- AFLAȚI
- ca
- Linie
- Listă
- Uite
- arată ca
- Se pare
- făcut
- face
- Efectuarea
- manager
- manieră
- de fabricaţie
- multe
- Meci
- potrivire
- mijloace
- meta
- Metadata
- minute
- ML
- mai mult
- nume
- Numit
- Navigaţi
- Navigare
- Nou
- obiecte
- observa
- of
- on
- deschide
- open-source
- comandă
- organizații
- Altele
- contururi
- pachet
- pagină
- perechi
- pâine
- parametrii
- parte
- partener
- parteneri
- piese
- trece
- Care trece
- pasionat
- trecut
- Efectua
- efectuarea
- platformă
- Plato
- Informații despre date Platon
- PlatoData
- Politicile
- Post
- practicile
- Pregăti
- în prealabil
- Principal
- privat
- proces
- producere
- furniza
- furnizorul
- furnizează
- public
- interogări
- gamă
- variind
- Citeste
- a primi
- primit
- primește
- cu privire la
- înlocui
- Rapoarte
- depozit
- Cerinţe
- elastic
- Resurse
- răspuns
- responsabil
- rezultat
- REZULTATE
- cu amănuntul
- reține
- reveni
- dezvălui
- Rol
- rsa
- Alerga
- Scară
- scenarii
- Caută
- motor de cautare
- Secret
- Secțiune
- sigur
- securizat
- în siguranță,
- securitate
- distinct
- serviciu
- Furnizor de servicii
- Servicii
- set
- câteva
- SHA256
- Distribuie
- comun
- să
- Arăta
- Emisiuni
- semna
- semnat
- semnificativ
- semnare
- asemănător
- simplificată
- Software
- Inginer Software
- Inginerie software
- soluţie
- soluţii
- Rezolvarea
- Sursă
- specific
- specificată
- standard
- start-up-uri
- Pas
- paşi
- stocate
- raționalizate
- Şir
- structura
- studiu
- astfel de
- Suportat
- Sprijină
- sistem
- tabel
- Lua
- Tehnic
- Tehnologia
- chiriaş
- Terminal
- test
- Testarea
- acea
- informațiile
- lor
- Lor
- Acestea
- trei
- Prin
- timp
- la
- semn
- indicativele
- Tipuri
- unificat
- URL-ul
- Folosire
- utilizare
- carcasa de utilizare
- Utilizator
- utilizatorii
- VALIDA
- validare
- valoare
- diverse
- Verificare
- verifica
- verticalele
- web
- servicii web
- BINE
- care
- în timp ce
- Hartii albe
- OMS
- larg
- Gamă largă
- voi
- cu
- în
- fără
- a lucrat
- de lucru
- fabrică
- Ateliere
- ani
- Tu
- Ta
- zephyrnet
- Zip