Uso de un JSON Web Token (JWT) con un secreto compartido - 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 un secreto compartido

Los siguientes ejemplos muestran cómo usar el token web JSON (JWT) con un token secreto compartido para controlar el acceso de los usuarios al crear un índice.

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 secreto compartido como Tipo de token.

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

    Para crear un secreto compartido 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. Especifique un Secreto compartido introduciendo un secreto con codificación de URL en base64. También puede seleccionar Generar secreto para que se genere un secreto automáticamente. Debe asegurarse de que el secreto tenga codificación de URL en base64.

    5. (Opcional) Especifique cuándo es válido el secreto compartido. Puede especificar la fecha y la hora desde o hasta las que un secreto es válido o ambas. El secreto será válido en el intervalo especificado.

    6. Seleccione Guardar secreto para guardar el nuevo secreto.

  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 reclamación. 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

Puedes usar el token JWT con un secreto compartido en su interior. AWS Secrets Manager El secreto debe tener codificación de URL en base64. 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", "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" }

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

Para obtener más información acerca de JWT, consulte jwt.io.

Python

Puedes usar el token JWT con un secreto compartido en su interior. AWS Secrets Manager El secreto debe tener codificación de URL en base64. 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.

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' )