Utilisation d'un jeton Web JSON (JWT) avec une clé publique - Amazon Kendra

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'un jeton Web JSON (JWT) avec une clé publique

Les exemples suivants montrent comment utiliser le jeton Web JSON (JWT) avec une clé publique pour le contrôle d'accès des utilisateurs lorsque vous créez un index. Pour plus d'informations sur JWT, consultez jwt.io.

Console
  1. Choisissez Create index pour commencer à créer un nouvel index.

  2. Sur la page Spécifier les détails de l'index, donnez un nom et une description à votre index.

  3. Pour le rôle IAM, sélectionnez un rôle ou sélectionnez Créer un nouveau rôle pour et spécifiez un nom de rôle pour créer un nouveau rôle. Le IAM rôle aura le préfixe « AmazonKendra - ».

  4. Conservez les valeurs par défaut de tous les autres champs. Choisissez Suivant.

  5. Sur la page Configurer le contrôle d'accès utilisateur, sous Paramètres de contrôle d'accès, choisissez Oui pour utiliser des jetons pour le contrôle d'accès.

  6. Sous Configuration du jeton, sélectionnez JWT avec clé publique comme type de jeton.

  7. Sous Paramètres de signature de la clé publique, choisissez le type de secret. Vous pouvez utiliser un AWS Secrets Manager secret existant ou en créer un nouveau.

    Pour créer un nouveau secret, choisissez Nouveau, puis procédez comme suit :

    1. Sous Nouveau AWS Secrets Manager secret, spécifiez un nom secret. Le préfixe AmazonKendra- sera ajouté lorsque vous enregistrerez la clé publique.

    2. Spécifiez un ID de clé. L'identifiant de clé est un indice qui indique quelle clé a été utilisée pour sécuriser la signature Web JSON du jeton.

    3. Choisissez l'algorithme de signature pour le jeton. Il s'agit de l'algorithme cryptographique utilisé pour sécuriser le jeton d'identification. Pour plus d'informations sur la norme RSA, consultez Chiffrement RSA.

    4. Sous Attributs de certificat, spécifiez une chaîne de certificats facultative. La chaîne de certificats est composée d'une liste de certificats. Il commence par le certificat d'un serveur et se termine par le certificat racine.

    5. Facultatif Spécifiez l'empreinte numérique ou l'empreinte digitale. Il doit s'agir du hachage d'un certificat, calculé sur toutes les données du certificat et sur sa signature.

    6. Spécifiez l'exposant. Il s'agit de la valeur de l'exposant pour la clé publique RSA. Il est représenté sous la forme d'une valeur encodée en Base64urlUInt.

    7. Spécifiez le module. Il s'agit de la valeur de l'exposant pour la clé publique RSA. Il est représenté sous la forme d'une valeur encodée en Base64urlUInt.

    8. Sélectionnez Enregistrer la clé pour enregistrer la nouvelle clé.

  8. Facultatif sous Configuration avancée :

    1. Spécifiez un nom d'utilisateur à utiliser lors de la vérification de l'ACL.

    2. Spécifiez un ou plusieurs groupes à utiliser lors de la vérification de l'ACL.

    3. Spécifiez l'émetteur qui validera l'émetteur du jeton.

    4. Spécifiez le (s) identifiant (s) client (s). Vous devez spécifier une expression régulière correspondant à l'audience du JWT.

  9. Sur la page des détails du provisionnement, choisissez Developer Edition.

  10. Choisissez Créer pour créer votre index.

  11. Attendez que votre index soit créé. Amazon Kendra fournit le matériel nécessaire à votre index. Cette opération peut prendre un certain temps.

CLI

Vous pouvez utiliser JWT avec une clé publique à l'intérieur d'un AWS Secrets Manager. Vous avez besoin de l' Secrets Manager ARN, et votre Amazon Kendra rôle doit avoir accès GetSecretValue à la Secrets Manager ressource. Si vous chiffrez la Secrets Manager ressource avec AWS KMS, le rôle doit également avoir accès à l'action de déchiffrement.

Pour créer un index à l' AWS CLI aide d'un fichier d'entrée JSON, créez d'abord un fichier JSON avec les paramètres souhaités :

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

Vous pouvez remplacer les noms de champs d'utilisateur et de groupe par défaut. La valeur par défaut pour UserNameAttributeField est « user ». La valeur par défaut pour GroupAttributeField est « groups ».

Ensuite, appelez create-index en utilisant le fichier d'entrée. Par exemple, si le nom de votre fichier JSON estcreate-index-openid.json, vous pouvez utiliser ce qui suit :

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

Le secret doit avoir le format suivant 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" ] } ] }

Pour plus d'informations sur JWT, consultez 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' )