Secara global, banyak organisasi memiliki data bisnis penting yang tersebar di antara berbagai repositori konten, sehingga sulit untuk mengakses informasi ini secara efisien dan kohesif. Menciptakan pengalaman pencarian yang terpadu dan aman merupakan tantangan yang signifikan bagi organisasi karena setiap repositori berisi berbagai format dokumen dan mekanisme kontrol akses.
AmazonKendra adalah layanan pencarian perusahaan cerdas yang memungkinkan pengguna untuk mencari di berbagai repositori konten. Pelanggan bertanggung jawab untuk mengautentikasi dan memberi otorisasi kepada pengguna untuk mendapatkan akses ke aplikasi pencarian mereka, dan Amazon Kendra memungkinkan pencarian yang aman untuk aplikasi perusahaan, memastikan bahwa hasil permintaan pencarian pengguna hanya mencakup dokumen yang diizinkan untuk dibaca oleh pengguna. Amazon Kendra dapat dengan mudah memvalidasi identitas pengguna individual maupun grup pengguna yang melakukan pencarian dengan penambahan token pencarian aman. Dengan menambahkan token pengguna untuk pencarian aman, melakukan pencarian terfilter berbasis akses di Amazon Kendra disederhanakan dan diamankan. Anda dapat meneruskan informasi akses pengguna dengan aman dalam payload kueri alih-alih menggunakan filter atribut untuk melakukannya. Dengan fitur ini, Amazon Kendra dapat memvalidasi informasi token dan menerapkannya secara otomatis ke hasil pencarian untuk pemfilteran berbasis akses yang akurat dan aman.
Amazon Kendra mendukung kontrol akses pengguna berbasis token menggunakan jenis token berikut:
- ID Terbuka
- JWT dengan rahasia bersama
- JWT dengan kunci publik
- JSON
Sebelumnya, kami melihat demonstrasi kontrol akses pengguna berbasis token di Amazon Kendra dengan Open ID. Dalam posting ini, kami mendemonstrasikan kontrol akses pengguna berbasis token di Amazon Kendra dengan JWT dengan rahasia bersama. JWT, atau JSON Web Token, adalah standar terbuka yang digunakan untuk berbagi informasi keamanan antara klien dan server. Ini berisi objek JSON yang disandikan, termasuk sekumpulan klaim. JWT ditandatangani menggunakan algoritme kriptografi untuk memastikan bahwa klaim tidak dapat diubah setelah token dikeluarkan. JWT berguna dalam skenario mengenai otorisasi dan pertukaran informasi.
JWT terdiri dari tiga bagian yang dipisahkan oleh titik (.):
- Header โ Ini berisi bagian seperti jenis token, yaitu JWT, algoritme penandatanganan yang digunakan, seperti HMAC SHA256 atau RSA, dan pengidentifikasi kunci opsional.
- Muatan โ Ini berisi beberapa pasangan kunci-nilai, yang disebut klaim, yang dikeluarkan oleh penyedia identitas. Selain beberapa klaim yang berkaitan dengan penerbitan dan kedaluwarsa token, token juga dapat berisi informasi tentang prinsipal dan penyewa individu.
- Tanda tangan โ Untuk membuat bagian tanda tangan, Anda mengambil header yang dikodekan, payload yang dikodekan, rahasia, algoritme yang ditentukan di header, dan menandatanganinya.
Oleh karena itu, JWT terlihat seperti berikut:
Berikut ini adalah contoh tajuk:
Berikut ini adalah contoh muatannya:
JWT dibuat dengan kunci rahasia, dan kunci rahasia itu bersifat pribadi untuk Anda, yang berarti Anda tidak akan pernah mengungkapkannya kepada publik atau memasukkannya ke dalam JWT. Saat Anda menerima JWT dari klien, Anda dapat memverifikasi JWT dengan kunci rahasia yang disimpan di server. Setiap modifikasi pada JWT akan mengakibatkan kegagalan verifikasi (validasi JWT).
Posting ini menunjukkan contoh penggunaan JWT menggunakan kunci akses bersama dan penggunaannya untuk mengamankan indeks Amazon Kendra dengan kontrol akses. Dalam produksi, Anda menggunakan penyedia layanan autentikasi aman pilihan Anda dan berdasarkan kebutuhan Anda untuk menghasilkan JWT.
Untuk mempelajari lebih lanjut tentang JWT, lihat Pengantar Token Web JSON.
Ikhtisar solusi
Serupa dengan pos dengan Open ID, solusi ini dirancang untuk sekumpulan pengguna dan grup untuk membuat kueri penelusuran ke penyimpanan dokumen, dan hasilnya dikembalikan hanya dari dokumen yang diberi otorisasi untuk akses dalam grup tersebut. Tabel berikut menguraikan dokumen mana yang boleh diakses oleh setiap pengguna untuk kasus penggunaan kami. Dokumen yang digunakan dalam contoh ini adalah subset dari dokumen publik AWS.
Pengguna | Kelompok | Jenis Dokumen Diotorisasi untuk Akses |
Tamu | . | blog |
patricia | Pelanggan | Blog, panduan pengguna |
James | Penjualan | Blog, panduan pengguna, studi kasus |
John | Marketing | Blog, panduan pengguna, studi kasus, laporan analis |
Maria | Solusi Arsitek | Blog, panduan pengguna, studi kasus, laporan analis, whitepaper |
Diagram berikut mengilustrasikan pembuatan JWT dengan kunci akses bersama untuk mengontrol akses pengguna ke dokumen tertentu dalam indeks Amazon Kendra.
Saat indeks Amazon Kendra menerima panggilan API kueri dengan token akses pengguna, itu memvalidasi token menggunakan kunci rahasia bersama (disimpan dengan aman di Manajer Rahasia AWS) dan mendapatkan parameter seperti nama pengguna dan grup di payload. Indeks Amazon Kendra memfilter hasil pencarian berdasarkan Access Control List (ACL) yang disimpan dan informasi yang diterima di JWT pengguna. Hasil yang difilter ini dikembalikan sebagai tanggapan atas permintaan panggilan API yang dibuat oleh aplikasi.
Prasyarat
Untuk mengikuti langkah-langkah dalam posting ini, pastikan Anda memiliki yang berikut:
Hasilkan JWT dengan kunci rahasia bersama
Contoh kode Java berikut menunjukkan cara membuat JWT dengan kunci rahasia bersama menggunakan sumber terbuka jsonwebtoken kemasan. Dalam produksi, Anda akan menggunakan penyedia layanan autentikasi aman pilihan Anda dan berdasarkan kebutuhan Anda untuk membuat JWT.
Kami meneruskan informasi nama pengguna dan grup sebagai klaim dalam payload, menandatangani JWT dengan rahasia bersama, dan membuat JWT khusus untuk pengguna tersebut. Berikan string 256 bit sebagai rahasia Anda dan pertahankan nilai rahasia bersama yang disandikan URL base64 untuk digunakan di langkah berikutnya.
Buat indeks Amazon Kendra dengan rahasia bersama JWT
Untuk instruksi pembuatan indeks Amazon Kendra, lihat Membuat indeks. Catat Identitas AWS dan Manajemen Akses (IAM) yang Anda buat selama proses. Berikan akses peran ke bucket S3 dan Secrets Manager mengikuti prinsip hak istimewa. Misalnya kebijakan, lihat Contoh kebijakan berbasis identitas IAM. Setelah Anda membuat indeks, konsol Amazon Kendra Anda akan terlihat seperti tangkapan layar berikut.
Selesaikan langkah-langkah berikut untuk menambahkan rahasia Anda:
- Di konsol Amazon Kendra, navigasikan ke Kontrol akses pengguna tab di halaman detail indeks Anda.
- Pilih Edit pengaturan.
- Karena kami menerapkan kontrol akses berbasis token, pilih Yes bawah Pengaturan kontrol akses.
- Bawah Konfigurasi token, pilih JWT dengan rahasia bersama untuk Jenis token.
- Untuk Jenis rahasia, pilih New.
- Untuk Nama rahasia, Masuk
AmazonKendra-jwt-shared-secret
atau nama pilihan Anda. - Untuk ID kunci, masukkan ID kunci untuk mencocokkan JWT yang Anda buat dalam contoh kode Java.
- Untuk Algoritma, pilih algoritma HS256.
- Untuk Rahasia bersama, masukkan rahasia yang disandikan URL base64 Anda yang dihasilkan dari kode Java sebelumnya.
- Pilih Simpan rahasia.
Rahasianya sekarang akan disimpan di Secrets Manager sebagai JSON Web Key Set (JWKS). Anda dapat menemukannya di konsol Secrets Manager. Untuk detail lebih lanjut, lihat Menggunakan Token Web JSON (JWT) dengan rahasia bersama.
- Pilih Konfigurasi lanjutan bagian.
Pada langkah ini, kami menyiapkan nama pengguna dan grup yang akan diekstraksi dari klaim JWT dan dicocokkan dengan ACL saat tanda tangan valid.
- Untuk Nama PenggunaMasukkan nama pengguna.
- Untuk Grup, masukkan grup.
- Biarkan kolom opsional sebagai default.
- Pilih Selanjutnya, Lalu pilih Memperbarui.
Siapkan bucket S3 Anda sebagai sumber data
Untuk menyiapkan bucket S3 sebagai sumber data, buat bucket S3. Di terminal dengan Antarmuka Baris Perintah AWS (AWS CLI) atau AWS CloudShell, jalankan perintah berikut untuk mengupload dokumen dan metadata ke bucket sumber data:
Dokumen yang ditanyakan disimpan dalam bucket S3. Setiap jenis dokumen memiliki folder terpisah: blog, studi kasus, laporan analis, panduan pengguna, dan kertas putih. Struktur folder ini terdapat dalam folder bernama Data. File metadata termasuk ACL ada di folder bernama Meta.
Kami menggunakan konektor Amazon Kendra S3 untuk mengonfigurasi bucket S3 ini sebagai sumber data. Saat sumber data disinkronkan dengan indeks Amazon Kendra, sumber data akan merayapi dan mengindeks semua dokumen serta mengumpulkan ACL dan atribut dokumen dari file metadata. Untuk mempelajari lebih lanjut tentang ACL menggunakan file metadata, lihat Metadata dokumen Amazon S3. Untuk contoh ini, kami menggunakan atribut khusus DocumentType
untuk menunjukkan jenis dokumen. Setelah diunggah, struktur bucket S3 Anda akan terlihat seperti tangkapan layar berikut.
Untuk mengatur atribut khusus DocumentType
, selesaikan langkah-langkah berikut:
- Pilih indeks Kendra Anda dan pilih Definisi segi di panel navigasi.
- Pilih Tambahkan bidang.
- Untuk Nama bidang, Masuk
DocumentType
. - Untuk Tipe data, pilih Tali.
- Pilih Add.
Sekarang Anda dapat menyerap dokumen dari keranjang yang Anda buat ke indeks Amazon Kendra menggunakan konektor S3. Untuk instruksi lengkap, lihat Menyerap Dokumen melalui Amazon Kendra S3 Connector.
- Dalam majalah Konfigurasikan pengaturan sinkronisasi bagian, untuk Masukkan lokasi sumber data, masukkan bucket S3 Anda (
s3://kendra-demo-bucket/
). - Untuk File metadata lokasi folder awalan, Masuk
Meta/
. - Lihat lebih lanjut Konfigurasi tambahan.
- pada Sertakan pola tab, untuk Awalan, Masuk
Data/
.
Untuk informasi selengkapnya tentang konektor yang didukung, lihat konektor.
- Pilih Selanjutnya, kemudian Selanjutnya lagi, kalau begitu Memperbarui.
- Tunggu hingga sumber data dibuat, lalu pilih sumber data dan pilih Sync sekarang.
Sinkronisasi sumber data dapat memakan waktu 10โ15 menit untuk diselesaikan. Saat sinkronisasi Anda selesai, Status sinkronisasi terakhir harus ditampilkan sebagai Sukses.
Meminta indeks Amazon Kendra
Untuk menjalankan kueri pengujian pada indeks Anda, selesaikan langkah-langkah berikut:
- Di konsol Amazon Kendra, pilih Cari konten yang diindeks di panel navigasi.
- Lihat lebih lanjut Uji kueri dengan token akses.
- Pilih Terapkan token.
- Kami dapat membuat JWT untuk pengguna dan grup. Dalam contoh ini, kami membuat JWT untuk
AWS-SA
kelompok. Kami mengganti nama pengguna sebagai Mary dan grup sebagaiAWS-SA
dalam langkah generasi JWT. - Masukkan token yang dihasilkan dan pilih Mendaftar.
Berdasarkan ACL, kita harus mendapatkan hasil dari semua folder: blog, panduan pengguna, studi kasus, laporan analis, dan whitepaper.
Begitu pula saat masuk sebagai James dari AWS-Sales
grup dan meneruskan JWT yang sesuai, kami hanya memiliki akses ke blog, panduan pengguna, dan studi kasus.
Kami juga dapat mencari indeks sebagai tamu tanpa memberikan token. Tamu hanya dapat mengakses konten di folder blog.
Eksperimen menggunakan kueri lain yang dapat Anda pikirkan saat masuk sebagai pengguna dan grup yang berbeda dan amati hasilnya.
Membersihkan
Untuk menghindari timbulnya biaya di masa mendatang, bersihkan sumber daya yang Anda buat sebagai bagian dari solusi ini. Untuk menghapus indeks Amazon Kendra dan bucket S3 yang dibuat saat menguji solusi, lihat Membersihkan. Untuk menghapus rahasia Manajer Rahasia, lihat Hapus rahasia AWS Secrets Manager.
Kesimpulan
Dalam postingan ini, kami melihat bagaimana Amazon Kendra dapat melakukan pencarian aman yang hanya mengembalikan hasil pencarian berdasarkan akses pengguna. Dengan penambahan JWT dengan kunci rahasia bersama, kami dapat dengan mudah memvalidasi identitas pengguna individu maupun grup pengguna yang melakukan pencarian. Pendekatan serupa ini dapat diperluas ke a JWT dengan kunci publik. Untuk mempelajari lebih lanjut, lihat Menggunakan Token Web JSON (JWT) dengan rahasia bersama.
Tentang Penulis
Nitin Eusebius adalah Sr. Enterprise Solutions Architect di AWS dengan pengalaman lebih dari 18 tahun dalam Rekayasa Perangkat Lunak dan Arsitektur Perusahaan. Dia bekerja dengan pelanggan untuk membantu mereka membangun aplikasi yang dirancang dengan baik di platform AWS. Dia bersemangat untuk memecahkan tantangan teknologi dan membantu pelanggan dalam perjalanan cloud mereka.
Kruthi Jayasimha Rao adalah Arsitek Solusi Mitra dengan fokus pada AI dan ML. Dia memberikan panduan teknis kepada Mitra AWS dalam mengikuti praktik terbaik untuk membangun solusi yang aman, tangguh, dan sangat tersedia di AWS Cloud.
Ishaan Berry adalah Insinyur Perangkat Lunak di Amazon Web Services, mengerjakan Amazon Kendra, mesin pencari perusahaan. Dia sangat menyukai keamanan dan telah mengerjakan komponen utama fitur Kontrol Akses Kendra selama 2 tahun terakhir.
Akash Bhatia adalah arsitek Solusi Utama dengan AWS. Fokusnya saat ini adalah membantu pelanggan perusahaan mencapai hasil bisnis mereka melalui perancangan dan penerapan solusi inovatif dan tangguh dalam skala besar. Dia telah bekerja di bidang teknologi selama lebih dari 15 tahun di berbagai perusahaan mulai dari Fortune 100 hingga start-up di vertikal Manufaktur, Dirgantara, dan Ritel.
- Konten Bertenaga SEO & Distribusi PR. Dapatkan Amplifikasi Hari Ini.
- Platoblockchain. Intelijen Metaverse Web3. Pengetahuan Diperkuat. Akses Di Sini.
- Mencetak Masa Depan bersama Adryenn Ashley. Akses Di Sini.
- Sumber: https://aws.amazon.com/blogs/machine-learning/secure-your-amazon-kendra-indexes-with-the-acl-using-a-jwt-shared-secret-key/
- :adalah
- $NAIK
- 10
- 100
- 11
- 15 tahun
- 420
- 7
- 8
- 9
- a
- Sanggup
- Tentang Kami
- mengakses
- menyelesaikan
- tepat
- Mencapai
- di seluruh
- tambahan
- Aerospace
- Setelah
- AI
- algoritma
- Semua
- memungkinkan
- Amazon
- AmazonKendra
- Amazon Web Services
- antara
- analis
- dan
- api
- Aplikasi
- aplikasi
- Mendaftar
- pendekatan
- arsitektur
- ADALAH
- AS
- At
- atribut
- Otentikasi
- otorisasi
- secara otomatis
- tersedia
- AWS
- berdasarkan
- BE
- karena
- makhluk
- TERBAIK
- Praktik Terbaik
- antara
- Bit
- blog
- membangun
- bisnis
- by
- panggilan
- bernama
- CAN
- kasus
- Studi Kasus
- menantang
- tantangan
- pilihan
- Pilih
- klaim
- kelas
- klien
- awan
- kode
- Perusahaan
- lengkap
- komponen
- konfigurasi
- konsul
- mengandung
- mengandung
- Konten
- isi
- kontrol
- kontrol
- Sesuai
- Biaya
- membuat
- dibuat
- membuat
- penciptaan
- kritis
- kripto
- kriptografi
- terbaru
- adat
- pelanggan
- data
- Tanggal
- Default
- mendemonstrasikan
- menunjukkan
- dirancang
- rinci
- rincian
- berbeda
- sulit
- tersebar
- dokumen
- dokumen
- turun
- selama
- setiap
- mudah
- memungkinkan
- Mesin
- insinyur
- Teknik
- memastikan
- Enter
- Enterprise
- contoh
- Pasar Valas
- pengalaman
- Kegagalan
- Fitur
- Fitur
- Fields
- File
- penyaringan
- filter
- Fokus
- mengikuti
- berikut
- Untuk
- Nasib
- dari
- penuh
- masa depan
- Mendapatkan
- menghasilkan
- dihasilkan
- generasi
- Kelompok
- Grup
- Tamu
- bimbingan
- Panduan
- Memiliki
- header
- membantu
- sangat
- Seterpercayaapakah Olymp Trade? Kesimpulan
- How To
- HTML
- http
- HTTPS
- ID
- identifier
- identitas
- mengimplementasikan
- mengimpor
- in
- memasukkan
- Termasuk
- indeks
- indeks
- sendiri-sendiri
- informasi
- inovatif
- saat
- sebagai gantinya
- instruksi
- Cerdas
- ISS
- penerbitan
- Ditempatkan
- IT
- NYA
- Jawa
- John
- perjalanan
- json
- Jwt
- kunci
- kunci-kunci
- Anak
- BELAJAR
- 'like'
- baris
- Daftar
- melihat
- terlihat seperti
- TERLIHAT
- terbuat
- membuat
- Membuat
- manajer
- cara
- pabrik
- banyak
- Cocok
- cocok
- cara
- meta
- Metadata
- menit
- ML
- lebih
- nama
- Bernama
- Arahkan
- Navigasi
- New
- objek
- mengamati
- of
- on
- Buka
- open source
- urutan
- organisasi
- Lainnya
- menguraikan
- paket
- halaman
- pasang
- pane
- parameter
- bagian
- pasangan
- rekan
- bagian
- lulus
- Lewat
- bergairah
- lalu
- Melakukan
- melakukan
- Platform
- plato
- Kecerdasan Data Plato
- Data Plato
- Kebijakan
- Pos
- praktek
- Mempersiapkan
- sebelumnya
- Utama
- swasta
- proses
- Produksi
- memberikan
- pemberi
- menyediakan
- publik
- query
- jarak
- mulai
- Baca
- menerima
- diterima
- menerima
- mengenai
- menggantikan
- laporan
- gudang
- Persyaratan
- tabah
- Sumber
- tanggapan
- tanggung jawab
- mengakibatkan
- Hasil
- eceran
- menahan
- kembali
- mengungkapkan
- Peran
- RSA
- Run
- Skala
- skenario
- Pencarian
- mesin pencari
- Rahasia
- Bagian
- aman
- Dijamin
- aman
- keamanan
- terpisah
- layanan
- Service Provider
- Layanan
- set
- beberapa
- SHA256
- Share
- berbagi
- harus
- Menunjukkan
- Pertunjukkan
- menandatangani
- tertanda
- penting
- penandatanganan
- mirip
- disederhanakan
- Perangkat lunak
- Software Engineer
- rekayasa Perangkat Lunak
- larutan
- Solusi
- Memecahkan
- sumber
- tertentu
- ditentukan
- standar
- start-up
- Langkah
- Tangga
- tersimpan
- efisien
- Tali
- struktur
- studi
- seperti itu
- Didukung
- Mendukung
- sistem
- tabel
- Mengambil
- Teknis
- Teknologi
- penyewa
- terminal
- uji
- pengujian
- bahwa
- Grafik
- informasi
- mereka
- Mereka
- Ini
- tiga
- Melalui
- waktu
- untuk
- token
- Token
- jenis
- terpadu
- URL
- penggunaan
- menggunakan
- gunakan case
- Pengguna
- Pengguna
- MENGESAHKAN
- pengesahan
- nilai
- berbagai
- Verifikasi
- memeriksa
- vertikal
- jaringan
- layanan web
- BAIK
- yang
- sementara
- Kertas putih
- SIAPA
- lebar
- Rentang luas
- akan
- dengan
- dalam
- tanpa
- bekerja
- kerja
- bekerja
- Lokakarya
- tahun
- Kamu
- Anda
- zephyrnet.dll
- Zip