Uso de un JSON Web Token (JWT) con una clave pública - Amazon Kendra

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de un JSON Web Token (JWT) con una clave pública

Los siguientes ejemplos muestran cómo usar el token web JSON (JWT) con una clave pública para controlar el acceso de los usuarios al crear un índice. Para obtener más información acerca de JWT, consulte jwt.io.

Console
  1. Elija Crear índice para empezar a crear un índice nuevo.

  2. En la página Especificar detalles de índice, proporcione a su índice un nombre y una descripción.

  3. Para el rol de IAM, seleccione un rol o seleccione Crear un nuevo rol y especifique un nombre para crear un nuevo rol. El IAM rol tendrá el prefijo "AmazonKendra-».

  4. No cambie los demás valores predeterminados. Elija Siguiente.

  5. En la página Configurar el control de acceso de los usuarios, en Configuración de control de acceso, seleccione para utilizar los tokens para el control de acceso.

  6. En Configuración de token, seleccione JWT con clave pública como Tipo de token.

  7. En Parámetros para firmar la clave pública, elija el Tipo de secreto. Puede usar un secreto existente de AWS Secrets Manager o crear uno nuevo.

    Para crear un secreto nuevo, seleccione Nuevo y, a continuación, siga estos pasos:

    1. En Nuevo AWS Secrets Manager secreto, especifique un nombre secreto. El prefijo AmazonKendra- se agregará al guardar la clave pública.

    2. Especifique un ID de clave. El ID de clave es una sugerencia que indica la clave que se ha utilizado para proteger la firma web JSON del token.

    3. Elija el Algoritmo de firma del token. Este es el algoritmo criptográfico que se utiliza para proteger el token de ID. Para obtener más información sobre RSA, consulte Criptografía de RSA.

    4. En Atributos del certificado, especifique una Cadena de certificados opcional. La cadena de certificados se compone de una lista de certificados. Comienza con el certificado de un servidor y termina con el certificado raíz.

    5. Opcional: especifique la Huella digital. Debe ser un hash de un certificado, calculado sobre todos los datos del certificado y su firma.

    6. Especifique el Exponente. Este es el valor del exponente de la clave pública RSA. Se representa como un valor codificado en Base64urlUInt.

    7. Especifique el Módulo. Este es el valor del exponente de la clave pública RSA. Se representa como un valor codificado en Base64urlUInt.

    8. Seleccione Guardar clave para guardar la nueva clave.

  8. Opcional En Configuración avanzada:

    1. Especifique un Nombre de usuario para usarlo en la verificación de la ACL.

    2. Especifique uno o más Grupos para usarlos en la verificación de la ACL.

    3. Especifique el Emisor que validará el emisor del token.

    4. Especifique el o los ID de cliente. Debe especificar una expresión regular que coincida con el público del JWT.

  9. En la página Detalles de aprovisionamiento, elija la Edición para desarrolladores.

  10. Elija Crear para crear el índice.

  11. Espere a que se cree el índice. Amazon Kendra aprovisiona el hardware para su índice. Esta operación puede llevar algún tiempo.

CLI

Puede usar JWT con una clave pública dentro de un AWS Secrets Manager. Necesita el Secrets Manager ARN y su Amazon Kendra rol debe tener acceso al GetSecretValue Secrets Manager recurso. Si va a cifrar el Secrets Manager recurso con AWS KMS, el rol también debe tener acceso a la acción de descifrado.

Para crear un índice con un archivo de AWS CLI entrada JSON, cree primero un archivo JSON con los parámetros que desee:

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

Puede anular los nombres de campo de usuario y grupo predeterminados. El valor predeterminado de UserNameAttributeField es “user”. El valor predeterminado de GroupAttributeField es “groups”.

A continuación, llame a create-index usando el archivo de entrada. Por ejemplo, si el nombre de su archivo JSON es create-index-openid.json, puede usar lo siguiente:

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

El secreto debe tener el siguiente formato 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" ] } ] }

Para obtener más información acerca de JWT, consulte 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' )