Utilizzo di un token Web JSON (JWT) con una chiave pubblica - Amazon Kendra

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di un token Web JSON (JWT) con una chiave pubblica

Gli esempi seguenti mostrano come utilizzare JSON Web Token (JWT) con una chiave pubblica per il controllo dell'accesso degli utenti quando si crea un indice. Per ulteriori informazioni su JWT, consulta jwt.io.

Console
  1. Scegli Crea indice per iniziare a creare un nuovo indice.

  2. Nella pagina Specificare i dettagli dell'indice, assegna un nome e una descrizione all'indice.

  3. Per il ruolo IAM, seleziona un ruolo o seleziona Crea un nuovo ruolo e specifica un nome di ruolo per creare un nuovo ruolo. Il IAM ruolo avrà il prefisso "AmazonKendra-».

  4. Lascia tutti gli altri campi ai valori predefiniti. Seleziona Successivo.

  5. Nella pagina Configura il controllo dell'accesso utente, in Impostazioni di controllo degli accessi, scegli per utilizzare i token per il controllo degli accessi.

  6. In Configurazione del token, seleziona JWT con chiave pubblica come tipo di token.

  7. In Parametri per la firma della chiave pubblica, scegli il tipo di segreto. Puoi usare un AWS Secrets Manager segreto esistente o crearne uno nuovo.

    Per creare un nuovo segreto, scegli Nuovo e segui questi passaggi:

    1. In Nuovo AWS Secrets Manager segreto, specifica un nome segreto. Il prefisso AmazonKendra- verrà aggiunto quando si salva la chiave pubblica.

    2. Specificate un ID chiave. L'ID della chiave è un suggerimento che indica quale chiave è stata utilizzata per proteggere la firma web JSON del token.

    3. Scegli l'algoritmo di firma per il token. Questo è l'algoritmo crittografico utilizzato per proteggere il token ID. Per ulteriori informazioni su RSA, consulta Crittografia RSA.

    4. In Attributi del certificato, specifica una catena di certificati opzionale. La catena di certificati è composta da un elenco di certificati. Inizia con il certificato di un server e termina con il certificato radice.

    5. Facoltativo Specificare l'impronta digitale o l'impronta digitale. Dovrebbe essere l'hash di un certificato, calcolato su tutti i dati del certificato e sulla sua firma.

    6. Specificare l'esponente. Questo è il valore esponenziale per la chiave pubblica RSA. È rappresentato come valore con codifica Base64urlUInt.

    7. Specificare il modulo. Questo è il valore esponenziale per la chiave pubblica RSA. È rappresentato come valore con codifica Base64urlUInt.

    8. Seleziona Salva chiave per salvare la nuova chiave.

  8. Facoltativo In configurazione avanzata:

    1. Specificare un nome utente da utilizzare nel controllo ACL.

    2. Specificare uno o più gruppi da utilizzare nel controllo ACL.

    3. Specificare l'emittente che convaliderà l'emittente del token.

    4. Specificare gli ID client. È necessario specificare un'espressione regolare che corrisponda al pubblico nel JWT.

  9. Nella pagina dei dettagli del provisioning, scegli Developer edition.

  10. Scegli Crea per creare il tuo indice.

  11. Attendi la creazione dell'indice. Amazon Kendra fornisce l'hardware per l'indice. Questa operazione può richiedere del tempo.

CLI

Puoi usare JWT con una chiave pubblica all'interno di un AWS Secrets Manager. È necessario l' Secrets Manager ARN e il Amazon Kendra ruolo deve avere accesso alla GetSecretValue Secrets Manager risorsa. Se stai crittografando la Secrets Manager risorsa con AWS KMS, il ruolo deve avere accesso anche all'azione di decrittografia.

Per creare un indice AWS CLI utilizzando un file di input JSON, create innanzitutto un file JSON con i parametri desiderati:

{ "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" }

È possibile sovrascrivere i nomi dei campi utente e gruppo predefiniti. Il valore predefinito per UserNameAttributeField è «user». Il valore predefinito per GroupAttributeField è «groups».

Quindi, chiama create-index utilizzando il file di input. Ad esempio, se il nome del file JSON ècreate-index-openid.json, puoi utilizzare quanto segue:

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

Il segreto deve avere il seguente formato in 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" ] } ] }

Per ulteriori informazioni su JWT, vedere 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' )