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

En los ejemplos siguientes se muestra cómo utilizar un token web JSON (JWT) con un token secreto compartido para el control de acceso de los usuarios cuando se crea un índice.

Console
  1. ElegirCrear índicepara empezar a crear un nuevo índice.

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

  3. ParaRol de IAM, seleccione un rol o seleccioneCreate a new role (Crear un nuevo rol)y especifique un nombre de rol para crear un nuevo rol. El rol de IAM tendrá el prefijo «AmazonKendra-».

  4. Deje todos los demás campos con sus valores predeterminados. Elija Next (Siguiente).

  5. En el navegadorConfiguración del control de acceso de usuariospágina, enConfiguración de control de acceso, eligepara utilizar tokens para el control de acceso.

  6. UNDERConfiguración de token, seleccioneJWT con secreto compartidocomo elTipo de token.

  7. UNDERParámetros para firmar clave pública, elige elTipo de secreto. Puede utilizar un existenteAWS Secrets Managersecreto compartido o crea un nuevo secreto compartido.

    Para crear un nuevo secreto compartido, elijaNuevoy siga estos pasos:

    1. UNDERNuevoAWS Secrets Managersecreta, especifique unNombre del secreto. El prefijoAmazonKendra-se agregará cuando guardes la clave pública.

    2. Especificar unID de clave. El identificador de clave es una sugerencia que indica qué clave se utilizó para proteger la firma web JSON del token.

    3. Elige la firmaAlgoritmopara el 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. Especificar unSecreto compartido. SelectGenerar secretopara tener un secreto generado para ti.

    5. OpcionalEspecifique cuándo es válido el secreto compartido. Puede especificar la fecha y la hora desde la que un secreto es válido, válido o ambos. El secreto será válido en el intervalo especificado.

    6. SelectGuardar secretopara salvar el nuevo secreto.

  8. OpcionalUNDERConfiguración avanzada:

    1. Especificar unUsername (Nombre de usuario):para usar en la comprobación de ACL.

    2. Especifique una o másGroupspara usar en la comprobación de ACL.

    3. Especifique elEmisorque validará el emisor del token.

    4. Especifique elID de cliente. Debe especificar una expresión regular que coincida con la audiencia del JWT.

  9. En el navegadorDetalles del aprovisionamientopágina, elijaDesarrollador Edition.

  10. ElegirCrearpara crear tu índice.

  11. Espere a que se cree el índice.Amazon Kendraaprovisiona el hardware de su índice. Esta operación puede tardar algún tiempo.

CLI

Puede utilizar JWT con un token de clave compartida dentro de unAWS Secrets Manager. Necesitará elSecrets ManagerARN y suAmazon Kendrarol debe tener acceso aGetSecretValueen elSecrets Managerrecurso. Si va a cifrar elSecrets Managerrecurso conAWS KMS, el rol de también debe tener acceso a la acción de descifrado.

Para crear un índice con elAWS CLIutilizando un archivo de entrada JSON, cree primero un archivo JSON con los parámetros deseados:

{ "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 invalidar los nombres predeterminados de los campos de grupo y usuarios. El valor predeterminado deUserNameAttributeFieldes «usuario». El valor predeterminado deGroupAttributeFieldes «grupos».

A continuación, llamecreate-indexutilizando el archivo de entrada. Por ejemplo, si el nombre del archivo JSON escreate-index-openid.json, puede utilizar las siguientes:

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

El secreto debe tener el siguiente formato enAWS 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, consultejwt.io.

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