Menggunakan JSON Web Token (JWT) dengan kunci publik - Amazon Kendra

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan JSON Web Token (JWT) dengan kunci publik

Contoh berikut menunjukkan cara menggunakan JSON Web Token (JWT) dengan kunci publik untuk kontrol akses pengguna saat Anda membuat indeks. Untuk informasi selengkapnya tentang JWT, lihat jwt.io.

Console
  1. Pilih Buat indeks untuk mulai membuat indeks baru.

  2. Pada Tentukan detail indeks, beri indeks Anda nama dan deskripsi.

  3. Untuk IAM role, pilih peran atau pilih Buat peran baru dan tentukan nama peran untuk membuat peran baru. IAM Peran akan memiliki awalan "AmazonKendra-”.

  4. Biarkan bidang lain dengan defaultnya. Pilih Berikutnya.

  5. Di halaman Konfigurasikan kontrol akses pengguna, di bawah Pengaturan kontrol akses, pilih Ya untuk menggunakan token untuk kontrol akses.

  6. Pada Konfigurasi token, pilih JWT dengan kunci publik sebagai Jenis token.

  7. Di bawah Parameter untuk menandatangani kunci publik, pilih Jenis rahasia. Anda dapat menggunakan rahasia AWS Secrets Manager yang ada atau membuat rahasia bersama baru.

    Untuk membuat rahasia baru, pilih Baru, lalu ikuti langkah-langkah ini:

    1. Di bawah AWS Secrets Manager Rahasia baru, tentukan nama Rahasia. Awalan AmazonKendra- akan ditambahkan saat Anda menyimpan kunci publik.

    2. Tentukan ID kunci. Kunci tersebut adalah petunjuk yang menunjukkan kunci yang digunakan untuk mengamankan tanda tangan web JSON (JWS) token.

    3. Pilih Algoritme penandatanganan untuk token. Ini adalah algoritme kriptografi yang digunakan untuk mengamankan token ID. Untuk informasi selengkapnya tentang RSA, lihat Kriptografi RSA.

    4. Pada Atribut sertifikat, tentukan Rangkaian sertifikat opsional. Rangkaian sertifikat terdiri dari daftar beberapa sertifikat. Rangkaian ini dimulai dengan sertifikat server dan berakhir dengan sertifikat akar.

    5. Opsional Tentukan Sidik jari jempol atau sidik jari. Ini harus berupa hash sertifikat, dikomputasi atas semua data sertifikat dan tanda tangannya.

    6. Tentukan Eksponen. Ini adalah nilai eksponen untuk kunci publik RSA. Hal ini direpresentasikan sebagai nilai yang dikodekan dengan Base64urlUInt.

    7. Tentukan Modulus. Ini adalah nilai eksponen untuk kunci publik RSA. Hal ini direpresentasikan sebagai nilai yang dikodekan dengan Base64urlUInt.

    8. Pilih Simpan kunci untuk menyimpan kunci baru.

  8. Opsional Pada Konfigurasi lanjutan:

    1. Tentukan Nama pengguna untuk digunakan dalam pemeriksaan ACL.

    2. Tentukan satu atau lebih Grup untuk digunakan dalam pemeriksaan ACL.

    3. Tentukan Penerbit yang akan memvalidasi penerbit token.

    4. Tentukan Id Klien. Anda harus menentukan ekspresi reguler yang sesuai dengan audiens di JWT.

  9. Di halaman Detail penyediaan, pilih Edisi Developer.

  10. Pilih Buat untuk membuat indeks Anda.

  11. Tunggu indeks Anda dibuat. Amazon Kendra menyediakan perangkat keras untuk indeks Anda. Operasi ini dapat memakan waktu lama.

CLI

Anda dapat menggunakan JWT dengan kunci publik di dalam AWS Secrets Manager. Anda memerlukan Secrets Manager ARN, dan Amazon Kendra peran Anda harus memiliki akses ke sumber GetSecretValue daya. Secrets Manager Jika Anda mengenkripsi Secrets Manager sumber daya dengan AWS KMS, peran juga harus memiliki akses ke tindakan dekripsi.

Untuk membuat indeks dengan AWS CLI menggunakan file input JSON, pertama buat file JSON dengan parameter yang Anda inginkan:

{ "Name": "user-context", "Edition": "ENTERPRISE_EDITION", "RoleArn": "arn:aws:iam::account id:role:/my-role", "UserTokenConfigurationList": [ { "JwtTokenTypeConfiguration": { "KeyLocation": "SECRET_MANAGER", "Issuer": "optional: specify the issuer url", "ClaimRegex": "optional: regex to validate claims in the token", "UserNameAttributeField": "optional: user", "GroupAttributeField": "optional: group", "SecretManagerArn": "arn:aws:secretsmanager:us-west-2:account id:secret:/my-user-context-secret } } ], "UserContextPolicy": "USER_TOKEN" }

Anda dapat mengganti nama bidang pengguna dan grup default. Nilai default untuk UserNameAttributeField adalah "user". Nilai default untuk GroupAttributeField adalah "groups".

Selanjutnya, panggil create-index menggunakan file input. Misalnya, jika nama file JSON Anda adalah create-index-openid.json, Anda dapat menggunakan yang berikut ini:

aws kendra create-index --cli-input-json file://create-index-openid.json

Rahasianya harus memiliki format berikut di Secrets Manager:

{ "keys": [ { "alg": "RS256|RS384|RS512", "kty": "RSA", //this can be RSA only for now "use": "sig", //this value can be sig only for now "n": "modulus of standard pem", "e": "exponent of standard pem", "kid": "key_id", "x5t": "certificate thumprint for x.509 cert", "x5c": [ "certificate chain" ] } ] }

Untuk informasi selengkapnya tentang JWT, lihat jwt.io.

Python
response = kendra.create_index( Name='user-context', Edition='ENTERPRISE_EDITION', RoleArn='arn:aws:iam::account id:role:/my-role', UserTokenConfigurationList=[ { "JwtTokenTypeConfiguration": { "KeyLocation": "URL", "Issuer": "optional: specify the issuer url", "ClaimRegex": "optional: regex to validate claims in the token", "UserNameAttributeField": "optional: user", "GroupAttributeField": "optional: group", "SecretManagerArn": "arn:aws:secretsmanager:us-west-2:account id:secret:/my-user-context-secret" } } ], UserContextPolicy='USER_TOKEN' )