Na całym świecie wiele organizacji ma krytyczne dane biznesowe rozproszone w różnych repozytoriach treści, co utrudnia dostęp do tych informacji w usprawniony i spójny sposób. Stworzenie ujednoliconego i bezpiecznego środowiska wyszukiwania jest dużym wyzwaniem dla organizacji, ponieważ każde repozytorium zawiera szeroką gamę formatów dokumentów i mechanizmów kontroli dostępu.
Amazonka Kendra to inteligentna usługa wyszukiwania korporacyjnego, która umożliwia użytkownikom przeszukiwanie różnych repozytoriów treści. Klienci są odpowiedzialni za uwierzytelnianie i autoryzację użytkowników w celu uzyskania dostępu do ich aplikacji wyszukującej, a Amazon Kendra umożliwia bezpieczne wyszukiwanie aplikacji korporacyjnych, upewniając się, że wyniki wyszukiwania użytkownika obejmują tylko dokumenty, do których użytkownik jest upoważniony. Amazon Kendra może łatwo zweryfikować tożsamość poszczególnych użytkowników, jak również grup użytkowników, którzy przeprowadzają wyszukiwanie, dodając tokeny bezpiecznego wyszukiwania. Dodając tokeny użytkownika do bezpiecznego wyszukiwania, przeprowadzanie filtrowanych wyszukiwań opartych na dostępie w Amazon Kendra jest uproszczone i zabezpieczone. Możesz bezpiecznie przekazywać informacje o dostępie użytkownika w ładunku zapytania, zamiast używać do tego celu filtrów atrybutów. Dzięki tej funkcji Amazon Kendra może zweryfikować informacje o tokenie i automatycznie zastosować je do wyników wyszukiwania w celu dokładnego i bezpiecznego filtrowania opartego na dostępie.
Amazon Kendra obsługuje kontrolę dostępu użytkownika opartą na tokenach przy użyciu następujących typów tokenów:
- Open-ID
- JWT ze wspólnym sekretem
- JWT z kluczem publicznym
- JSON
Wcześniej widzieliśmy pokaz tzw kontrola dostępu użytkownika oparta na tokenach w Amazon Kendra z Open ID. W tym poście demonstrujemy opartą na tokenach kontrolę dostępu użytkownika w Amazon Kendra z JWT ze wspólnym sekretem. JWT lub JSON Web Token to otwarty standard używany do udostępniania informacji o bezpieczeństwie między klientem a serwerem. Zawiera zakodowane obiekty JSON, w tym zestaw oświadczeń. JWT są podpisywane przy użyciu algorytmu kryptograficznego, aby upewnić się, że po wystawieniu tokenu nie można zmienić oświadczeń. JWT są przydatne w scenariuszach dotyczących autoryzacji i wymiany informacji.
JWT składają się z trzech części oddzielonych kropkami (.):
- Nagłówek – Zawiera takie części jak typ tokena, którym jest JWT, używany algorytm podpisywania, taki jak HMAC SHA256 lub RSA oraz opcjonalny identyfikator klucza.
- Ładunek – Zawiera kilka par klucz-wartość, tzw roszczenia, które są wydawane przez dostawcę tożsamości. Oprócz kilku roszczeń związanych z wydawaniem i wygaśnięciem tokena, token może również zawierać informacje o indywidualnym zleceniodawcy i najemcy.
- podpis – Aby utworzyć część podpisu, bierzesz zakodowany nagłówek, zaszyfrowaną treść, sekret, algorytm określony w nagłówku i podpisujesz to.
Dlatego JWT wygląda następująco:
Poniżej znajduje się przykładowy nagłówek:
Poniżej znajduje się przykładowy ładunek:
JWT jest tworzony za pomocą tajnego klucza, a ten tajny klucz jest dla Ciebie prywatny, co oznacza, że nigdy nie ujawnisz go publicznie ani nie wstrzykniesz go do JWT. Po otrzymaniu tokenu JWT od klienta można zweryfikować token JWT za pomocą tajnego klucza przechowywanego na serwerze. Wszelkie modyfikacje tokenu JWT spowodują niepowodzenie weryfikacji (walidacji tokenu JWT).
W tym poście pokazano przykładowe użycie JWT przy użyciu współdzielonego klucza dostępu i jego użycie do zabezpieczenia indeksów Amazon Kendra za pomocą kontroli dostępu. W środowisku produkcyjnym korzystasz z wybranego przez siebie dostawcy usług bezpiecznego uwierzytelniania i na podstawie własnych wymagań w celu generowania tokenów JWT.
Aby dowiedzieć się więcej o JWT, zobacz Wprowadzenie do tokenów internetowych JSON.
Omówienie rozwiązania
Podobnego do pisać z Open ID rozwiązanie to jest przeznaczone dla zestawu użytkowników i grup do wyszukiwania w repozytorium dokumentów, a wyniki są zwracane tylko z tych dokumentów, do których dostęp jest autoryzowany w ramach tej grupy. W poniższej tabeli przedstawiono dokumenty, do których dostęp każdy użytkownik ma w naszym przypadku użycia. Dokumenty użyte w tym przykładzie są podzbiorem dokumentów publicznych AWS.
Użytkownik | Zarządzanie | Typ dokumentu z upoważnieniem do dostępu |
Gość | . | blogi |
Patricia | Klient | Blogi, przewodniki użytkownika |
James | Obroty | Blogi, podręczniki użytkownika, studia przypadków |
John | Marketing | Blogi, podręczniki użytkownika, studia przypadków, raporty analityków |
Mary | Architekt rozwiązań | Blogi, podręczniki użytkownika, studia przypadków, raporty analityków, oficjalne dokumenty |
Poniższy diagram ilustruje tworzenie JWT ze współdzielonym kluczem dostępu do kontrolowania dostępu użytkowników do określonych dokumentów w indeksie Amazon Kendra.
Kiedy indeks Amazon Kendra otrzymuje wywołanie API zapytania z tokenem dostępu użytkownika, sprawdza poprawność tokena przy użyciu współdzielonego tajnego klucza (przechowywanego bezpiecznie w Menedżer tajemnic AWS) i pobiera parametry, takie jak nazwa użytkownika i grupy w ładunku. Indeks Amazon Kendra filtruje wyniki wyszukiwania na podstawie zapisanej listy kontroli dostępu (ACL) oraz informacji otrzymanych w JWT użytkownika. Te przefiltrowane wyniki są zwracane w odpowiedzi na wywołanie interfejsu API zapytania wykonane przez aplikację.
Wymagania wstępne
Aby wykonać czynności opisane w tym poście, upewnij się, że masz:
Wygeneruj JWT ze wspólnym tajnym kluczem
Poniższy przykładowy kod Java pokazuje, jak utworzyć token JWT ze wspólnym tajnym kluczem przy użyciu oprogramowania typu open source jsonwebtoken pakiet. W środowisku produkcyjnym będziesz korzystać z wybranego przez siebie dostawcy usług bezpiecznego uwierzytelniania, w oparciu o Twoje wymagania dotyczące generowania tokenów JWT.
Przekazujemy nazwę użytkownika i informacje o grupach jako oświadczenia w ładunku, podpisujemy token JWT za pomocą wspólnego klucza tajnego i generujemy token JWT specyficzny dla tego użytkownika. Podaj ciąg 256-bitowy jako swój klucz tajny i zachowaj wartość wspólnego klucza tajnego zakodowanego w adresie URL base64 do użycia w późniejszym kroku.
Utwórz indeks Amazon Kendra ze wspólnym kluczem tajnym JWT
Aby uzyskać instrukcje dotyczące tworzenia indeksu Amazon Kendra, zobacz Tworzenie indeksu. Zanotuj AWS Zarządzanie tożsamością i dostępem (IAM), którą utworzyłeś podczas procesu. Zapewnij roli dostęp do zasobnika S3 i Menedżera sekretów zgodnie z zasada najmniejszego przywileju. Na przykład zasady, patrz Przykładowe zasady oparte na tożsamości IAM. Po utworzeniu indeksu konsola Amazon Kendra powinna wyglądać jak na poniższym zrzucie ekranu.
Wykonaj następujące kroki, aby dodać swój sekret:
- Na konsoli Amazon Kendra przejdź do Kontrola dostępu użytkownika na stronie szczegółów indeksu.
- Dodaj Edytuj ustawienia.
- Ponieważ wdrażamy kontrolę dostępu opartą na tokenach, wybierz Tak dla Ustawienia kontroli dostępu.
- Pod Konfiguracja tokenawybierz JWT ze wspólnym sekretem dla Typ tokena.
- W razie zamówieenia projektu Rodzaj tajemnicywybierz Nowości.
- W razie zamówieenia projektu Tajne imię, wchodzić
AmazonKendra-jwt-shared-secret
lub dowolne imię do wyboru. - W razie zamówieenia projektu Identyfikator klucza, wprowadź identyfikator klucza zgodny z tokenem JWT utworzonym w przykładowym kodzie Java.
- W razie zamówieenia projektu Algorytm, wybierz algorytm HS256.
- W razie zamówieenia projektu Wspólny sekret, wprowadź zachowany klucz tajny adresu URL zakodowany w formacie base64, wygenerowany wcześniej na podstawie kodu Java.
- Dodaj Zapisz sekret.
Sekret będzie teraz przechowywany w Menedżerze sekretów jako zestaw kluczy internetowych JSON (JWKS). Możesz go zlokalizować w konsoli Secrets Manager. Aby uzyskać więcej informacji, patrz Korzystanie z tokena internetowego JSON (JWT) ze wspólnym kluczem tajnym.
- rozwiń Zaawansowana konfiguracja
W tym kroku konfigurujemy nazwę użytkownika i grupy, które zostaną wyodrębnione z oświadczeń JWT i dopasowane do listy ACL, gdy podpis jest ważny.
- W razie zamówieenia projektu UżytkownikWpisz nazwę użytkownika.
- W razie zamówieenia projektu Grupy, wprowadź grupy.
- Pozostaw pola opcjonalne jako domyślne.
- Dodaj Następna, A następnie wybierz Aktualizacja.
Przygotuj zasobnik S3 jako źródło danych
Aby przygotować zasobnik S3 jako źródło danych, utwórz zasobnik S3. W terminalu z Interfejs wiersza poleceń AWS (AWS CLI) lub Chmura AWS, uruchom następujące polecenia, aby przesłać dokumenty i metadane do zasobnika źródła danych:
Dokumenty, których dotyczy zapytanie, są przechowywane w zasobniku S3. Każdy typ dokumentu ma oddzielny folder: blogi, studia przypadków, raporty analityków, przewodniki użytkownika i oficjalne dokumenty. Ta struktura folderów jest zawarta w folderze o nazwie Dane. Pliki metadanych, w tym listy ACL, znajdują się w folderze o nazwie Meta.
Używamy złącza Amazon Kendra S3, aby skonfigurować to wiadro S3 jako źródło danych. Gdy źródło danych jest synchronizowane z indeksem Amazon Kendra, przeszukuje i indeksuje wszystkie dokumenty, a także zbiera listy ACL i atrybuty dokumentów z plików metadanych. Aby dowiedzieć się więcej o listach ACL korzystających z plików metadanych, zobacz Metadane dokumentu Amazon S3. W tym przykładzie używamy atrybutu custom DocumentType
do określenia rodzaju dokumentu. Po przesłaniu struktura zasobnika S3 powinna wyglądać jak na poniższym zrzucie ekranu.
Aby ustawić atrybut niestandardowy DocumentType
wykonaj następujące czynności:
- Wybierz swój indeks Kendra i wybierz Definicja aspektu w okienku nawigacji.
- Dodaj Dodaj pole.
- W razie zamówieenia projektu Nazwa pola, wchodzić
DocumentType
. - W razie zamówieenia projektu Typ danychwybierz sznur.
- Dodaj Dodaj.
Teraz możesz pobierać dokumenty z utworzonego zasobnika do indeksu Amazon Kendra za pomocą łącznika S3. Aby uzyskać pełne instrukcje, patrz Pobieranie dokumentów przez złącze Amazon Kendra S3.
- W Skonfiguruj ustawienia synchronizacji sekcja dla Wprowadź lokalizację źródła danych, wprowadź swój segment S3 (
s3://kendra-demo-bucket/
). - W razie zamówieenia projektu Lokalizacja folderu z prefiksem plików metadanych, wchodzić
Meta/
. - Rozszerzać Dodatkowa konfiguracja.
- Na Uwzględnij wzory tab, dla Prefiks, wchodzić
Data/
.
Aby uzyskać więcej informacji na temat obsługiwanych łączników, zobacz Złącza.
- Dodaj Następna, następnie Następna jeszcze raz Aktualizacja.
- Poczekaj na utworzenie źródła danych, a następnie wybierz źródło danych i wybierz Synchronizuj teraz.
Synchronizacja źródła danych może potrwać 10–15 minut. Gdy synchronizacja zostanie zakończona, Stan ostatniej synchronizacji powinien pokazać się jako Udany.
Zapytanie o indeks Amazon Kendra
Aby uruchomić zapytanie testowe w swoim indeksie, wykonaj następujące kroki:
- Na konsoli Amazon Kendra wybierz Wyszukaj zindeksowaną treść w okienku nawigacji.
- Rozszerzać Przetestuj zapytanie za pomocą tokena dostępu.
- Dodaj Zastosuj token.
- Możemy wygenerować JWT dla użytkownika i grupy. W tym przykładzie tworzymy JWT dla
AWS-SA
Grupa. Zamieniamy nazwę użytkownika na Mary, a grupy naAWS-SA
w kroku generowania JWT. - Wprowadź wygenerowany token i wybierz Aplikuj.
Bazując na liście ACL, powinniśmy otrzymać wyniki ze wszystkich folderów: blogi, podręczniki użytkownika, studia przypadków, raporty analityków i oficjalne dokumenty.
Podobnie po zalogowaniu jako James z AWS-Sales
grupy i przechodząc odpowiedni JWT, mamy dostęp tylko do blogów, poradników i studiów przypadków.
Możemy również przeszukiwać indeks jako gość bez przekazywania tokena. Gość ma dostęp tylko do zawartości folderu blogs.
Eksperymentuj z innymi zapytaniami, o których możesz myśleć po zalogowaniu jako różni użytkownicy i grupy, i obserwuj wyniki.
Sprzątać
Aby uniknąć ponoszenia przyszłych kosztów, wyczyść zasoby utworzone w ramach tego rozwiązania. Aby usunąć indeks Amazon Kendra i wiadro S3 utworzone podczas testowania rozwiązania, patrz Oczyszczanie. Aby usunąć wpis tajny programu Secrets Manager, zapoznaj się z sekcją Usuń klucz tajny Menedżera tajemnic AWS.
Wnioski
W tym poście widzieliśmy, jak Amazon Kendra może przeprowadzać bezpieczne wyszukiwania, które zwracają wyniki wyszukiwania tylko na podstawie dostępu użytkownika. Dzięki dodaniu JWT ze wspólnym tajnym kluczem możemy łatwo zweryfikować tożsamość poszczególnych użytkowników, jak również grup użytkowników, którzy przeprowadzają wyszukiwanie. To podobne podejście można rozszerzyć na a JWT z kluczem publicznym. Aby dowiedzieć się więcej, patrz Korzystanie z tokena internetowego JSON (JWT) ze wspólnym kluczem tajnym.
O autorach
Nitin Euzebiusz jest starszym architektem rozwiązań korporacyjnych w AWS z ponad 18-letnim doświadczeniem w inżynierii oprogramowania i architekturze korporacyjnej. Współpracuje z klientami, pomagając im budować dobrze zaprojektowane aplikacje na platformie AWS. Pasjonuje się rozwiązywaniem problemów technologicznych i pomaganiem klientom w ich podróży do chmury.
Kruthi Jayasimha Rao jest architektem rozwiązań partnerskich ze specjalizacją w AI i ML. Udziela wskazówek technicznych Partnerom AWS w zakresie stosowania najlepszych praktyk w celu budowania bezpiecznych, odpornych i wysoce dostępnych rozwiązań w AWS Cloud.
Ishaana Berry’ego jest inżynierem oprogramowania w Amazon Web Services i pracuje nad Amazon Kendra, wyszukiwarką dla przedsiębiorstw. Pasjonuje się bezpieczeństwem i przez ostatnie 2 lata pracował nad kluczowymi komponentami funkcji kontroli dostępu Kendry.
Akash Bhatia jest głównym architektem rozwiązań w AWS. Obecnie koncentruje się na pomaganiu klientom korporacyjnym w osiąganiu wyników biznesowych poprzez projektowanie i wdrażanie innowacyjnych i odpornych rozwiązań na dużą skalę. Od ponad 15 lat pracuje w branży technologicznej w firmach od Fortune 100 po start-upy w branży produkcyjnej, lotniczej i detalicznej.
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- Platoblockchain. Web3 Inteligencja Metaverse. Wzmocniona wiedza. Dostęp tutaj.
- Wybijanie przyszłości w Adryenn Ashley. Dostęp tutaj.
- Źródło: https://aws.amazon.com/blogs/machine-learning/secure-your-amazon-kendra-indexes-with-the-acl-using-a-jwt-shared-secret-key/
- :Jest
- $W GÓRĘ
- 10
- 100
- 11
- 15 roku
- 420
- 7
- 8
- 9
- a
- Zdolny
- O nas
- dostęp
- wykonać
- dokładny
- Osiągać
- w poprzek
- dodatek
- Lotnictwo
- Po
- AI
- algorytm
- Wszystkie kategorie
- pozwala
- Amazonka
- Amazonka Kendra
- Amazon Web Services
- wśród
- analityk
- i
- api
- Zastosowanie
- aplikacje
- Aplikuj
- podejście
- architektura
- SĄ
- AS
- At
- atrybuty
- Uwierzytelnianie
- autoryzacja
- automatycznie
- dostępny
- AWS
- na podstawie
- BE
- bo
- jest
- BEST
- Najlepsze praktyki
- pomiędzy
- Bit
- blogi
- budować
- biznes
- by
- wezwanie
- nazywa
- CAN
- walizka
- Case Studies
- wyzwanie
- wyzwania
- wybór
- Dodaj
- roszczenia
- klasa
- klient
- Chmura
- kod
- Firmy
- kompletny
- składniki
- systemu
- Konsola
- zawierać
- zawiera
- zawartość
- treść
- kontrola
- kontroli
- Odpowiedni
- Koszty:
- Stwórz
- stworzony
- Tworzenie
- tworzenie
- krytyczny
- Crypto
- kryptograficzny
- Aktualny
- zwyczaj
- Klientów
- dane
- Data
- Domyślnie
- wykazać
- demonstruje
- zaprojektowany
- detal
- detale
- różne
- trudny
- rozproszone
- dokument
- dokumenty
- na dół
- podczas
- każdy
- z łatwością
- Umożliwia
- silnik
- inżynier
- Inżynieria
- zapewnić
- Wchodzę
- Enterprise
- przykład
- wymiana
- doświadczenie
- Brak
- Cecha
- Korzyści
- Łąka
- Akta
- filtracja
- filtry
- Skupiać
- obserwuj
- następujący
- W razie zamówieenia projektu
- Majątek
- od
- pełny
- przyszłość
- Wzrost
- Generować
- wygenerowane
- generacja
- Zarządzanie
- Grupy
- Gość
- poradnictwo
- Przewodniki
- Have
- headers
- pomoc
- wysoko
- W jaki sposób
- How To
- HTML
- http
- HTTPS
- ID
- identyfikator
- tożsamość
- wykonawczych
- importować
- in
- zawierać
- Włącznie z
- wskaźnik
- indeksy
- indywidualny
- Informacja
- Innowacyjny
- natychmiastowy
- zamiast
- instrukcje
- Inteligentny
- ISS
- wydanie
- Wydany
- IT
- JEGO
- Java
- John
- podróż
- json
- Jwt
- Klawisz
- Klawisze
- Dziecko
- UCZYĆ SIĘ
- lubić
- Linia
- Lista
- Popatrz
- wygląda jak
- WYGLĄD
- zrobiony
- robić
- Dokonywanie
- kierownik
- sposób
- produkcja
- wiele
- Mecz
- dopasowane
- znaczy
- Meta
- Metadane
- minut
- ML
- jeszcze
- Nazwa
- O imieniu
- Nawigacja
- Nawigacja
- Nowości
- obiekty
- obserwować
- of
- on
- koncepcja
- open source
- zamówienie
- organizacji
- Inne
- wytyczne
- pakiet
- strona
- par
- chleb
- parametry
- część
- partnerem
- wzmacniacz
- strony
- przechodzić
- Przechodzący
- namiętny
- Przeszłość
- wykonać
- wykonywania
- Platforma
- plato
- Analiza danych Platona
- PlatoDane
- polityka
- Post
- praktyki
- Przygotować
- poprzednio
- Główny
- prywatny
- wygląda tak
- Produkcja
- zapewniać
- dostawca
- zapewnia
- publiczny
- zapytania
- zasięg
- nośny
- Czytaj
- otrzymać
- Odebrane
- otrzymuje
- w sprawie
- obsługi produkcji rolnej, która zastąpiła
- Raporty
- składnica
- wymagania
- sprężysty
- Zasoby
- odpowiedź
- odpowiedzialny
- dalsze
- Efekt
- detaliczny
- zachować
- powrót
- ujawniać
- Rola
- RSA
- run
- Skala
- scenariusze
- Szukaj
- Wyszukiwarka
- Tajemnica
- Sekcja
- bezpieczne
- zabezpieczone
- bezpiecznie
- bezpieczeństwo
- oddzielny
- usługa
- Usługodawca
- Usługi
- zestaw
- kilka
- SHA256
- Share
- shared
- powinien
- pokazać
- Targi
- znak
- podpisana
- znaczący
- podpisywanie
- podobny
- uproszczony
- Tworzenie
- Software Engineer
- Inżynieria oprogramowania
- rozwiązanie
- Rozwiązania
- Rozwiązywanie
- Źródło
- specyficzny
- określony
- standard
- start-up
- Ewolucja krok po kroku
- Cel
- przechowywany
- usprawniony
- sznur
- Struktura
- badania naukowe
- taki
- Utrzymany
- podpory
- system
- stół
- Brać
- Techniczny
- Technologia
- najemca
- terminal
- test
- Testowanie
- że
- Połączenia
- Informacje
- ich
- Im
- Te
- trzy
- Przez
- czas
- do
- żeton
- Żetony
- typy
- Ujednolicony
- URL
- Stosowanie
- posługiwać się
- przypadek użycia
- Użytkownik
- Użytkownicy
- UPRAWOMOCNIĆ
- uprawomocnienie
- wartość
- różnorodny
- Weryfikacja
- zweryfikować
- pionowe
- sieć
- usługi internetowe
- DOBRZE
- który
- Podczas
- Oficjalne dokumenty
- KIM
- szeroki
- Szeroki zasięg
- będzie
- w
- w ciągu
- bez
- pracował
- pracujący
- działa
- warsztaty
- lat
- You
- Twój
- zefirnet
- Zamek błyskawiczny