Uso de un JSON Web Token (JWT) con un secreto compartido
Los siguientes ejemplos muestran cómo usar JSON Web Token (JWT) con un token de secreto compartido para el control de acceso de los usuarios al crear un índice.
- Console
-
-
Elija Crear índice para empezar a crear un índice nuevo.
-
En la página Especificar detalles de índice, proporcione a su índice un nombre y una descripción.
-
Para el rol de IAM, seleccione un rol o seleccione Crear un nuevo rol y especifique un nombre para crear un nuevo rol. El rol de IAM tendrá el prefijo “AmazonKendra-”.
-
No cambie los demás valores predeterminados. Elija Siguiente.
-
En la página Configurar el control de acceso de los usuarios, en Configuración de control de acceso, seleccione Sí para utilizar los tokens para el control de acceso.
-
En Configuración de token, seleccione JWT con secreto compartido como Tipo de token.
-
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:
-
En Nuevo secreto de AWS Secrets Manager, especifique un Nombre del secreto. El prefijo
AmazonKendra-se agregará al guardar la clave pública. -
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.
-
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
. -
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.
-
(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.
-
Seleccione Guardar secreto para guardar el nuevo secreto.
-
-
(Opcional) En Configuración avanzada:
-
Especifique un Nombre de usuario para usarlo en la verificación de la ACL.
-
Especifique uno o más Grupos para usarlos en la verificación de la ACL.
-
Especifique el Emisor que validará el emisor del token.
-
Especifique el o los ID de reclamación. Debe especificar una expresión regular que coincida con el público del JWT.
-
-
En la página Detalles de aprovisionamiento, elija la Edición para desarrolladores.
-
Elija Crear para crear el índice.
-
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 el token JWT con un secreto compartido dentro de AWS Secrets Manager. El secreto debe tener codificación de URL en base64. Necesita el ARN de Secrets Manager y su rol de Amazon Kendra debe tener acceso a
GetSecretValueen el recurso de Secrets Manager. Si va a cifrar el recurso de Secrets Manager con AWS KMS, el rol también debe tener acceso a la acción de descifrado.Para crear un índice con la AWS CLI utilizando un archivo de 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
UserNameAttributeFieldes “user”. El valor predeterminado deGroupAttributeFieldes “groups”.A continuación, llame a
create-indexusando el archivo de entrada. Por ejemplo, si el nombre de su archivo JSON escreate-index-openid.json, puede usar lo siguiente:aws kendra create-index --cli-input-json file://create-index-openid.jsonEl secreto debe tener el siguiente formato en 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
-
Puede usar el token JWT con un secreto compartido dentro de AWS Secrets Manager. El secreto debe tener codificación de URL en base64. Necesita el ARN de Secrets Manager y su rol de Amazon Kendra debe tener acceso a
GetSecretValueen el recurso de Secrets Manager. Si va a cifrar el recurso de Secrets Manager 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' )