Utilizzo di un token Web JSON (JWT) con un segreto condiviso - 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 un segreto condiviso

Gli esempi seguenti mostrano come utilizzare JSON Web Token (JWT) con un token segreto condiviso per il controllo dell'accesso degli utenti quando si crea un indice.

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 segreto condiviso come tipo di token.

  7. In Parametri per la firma del segreto condiviso, scegli il Tipo di segreto. Puoi utilizzare un segreto AWS Secrets Manager condiviso esistente o crearne uno nuovo.

    Per creare un nuovo segreto condiviso, 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. Specificare un segreto condiviso inserendo un segreto con codifica URL base64. Puoi anche selezionare Genera segreto per generare un segreto per te. Devi assicurarti che il segreto sia un segreto con codifica URL base64.

    5. (Facoltativo) Specificate quando il segreto condiviso è valido. È possibile specificare la data e l'ora in cui un segreto è valido, valido fino a o entrambi. Il segreto sarà valido nell'intervallo specificato.

    6. Seleziona Salva segreto per salvare il nuovo segreto.

  8. (Facoltativo) In Configurazione avanzata:

    1. Specificate 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 del reclamo. È 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 il token JWT con un segreto condiviso all'interno di AWS Secrets Manager. Il segreto deve essere un segreto con codifica URL base64. È 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", "UserTokenConfigurations": [ { "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 AWS Secrets Manager:

{ "keys": [ { "kid": "key_id", "alg": "HS256|HS384|HS512", "kty": "OCT", "use": "sig", //this value can be sig only for now "k": "secret", "nbf":"ISO1806 date format" "exp":"ISO1806 date format" } ] }

Per ulteriori informazioni su JWT, vedere jwt.io.

Python

Puoi usare il token JWT con un segreto condiviso all'interno di. AWS Secrets Manager Il segreto deve essere un segreto con codifica URL base64. È 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.

response = kendra.create_index( Name='user-context', Edition='ENTERPRISE_EDITION', RoleArn='arn:aws:iam::account-id:role:/my-role', UserTokenConfigurations=[ { "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' )