Como usar um JSON Web Token (JWT) com uma senha compartilhada - Amazon Kendra

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como usar um JSON Web Token (JWT) com uma senha compartilhada

Os exemplos a seguir mostram como usar o JSON Web Token (JWT) com um token de segredo compartilhado para controle de acesso do usuário ao criar um índice.

Console
  1. Escolha Criar índice para começar a criar um novo índice.

  2. Na página Especificar detalhes do índice, dê um nome e uma descrição ao índice.

  3. Para o perfil do IAM, selecione uma função ou selecione Criar uma nova função para e especifique um nome de função para criar uma nova função. A IAM função terá o prefixo "AmazonKendra-”.

  4. Deixe os outros campos nos padrões determinados. Escolha Próximo.

  5. Na página Configurar controle de acesso do usuário, em Configurações de controle de acesso, escolha Sim para usar tokens para controle de acesso.

  6. Em Configuração de token, selecione JWT com senha compartilhada como o Tipo de token.

  7. Em Parâmetros para entrar com senha compartilhada, escolha o Tipo de senha. Você pode usar uma senha compartilhada do AWS Secrets Manager existente ou criar uma nova senha compartilhada.

    Para criar uma nova senha compartilhada, escolha Novo e siga estas etapas:

    1. Em Novo AWS Secrets Manager segredo, especifique um nome secreto. O prefixo AmazonKendra- será adicionado ao salvar a chave pública.

    2. Especifique um ID de chave. O ID de chave é uma dica que indica qual foi a chave usada para proteger a JSON Web Signature (JWS) do token.

    3. Escolha o Algoritmo de assinatura para o token. Esse é o algoritmo criptográfico usado para proteger o token de ID. Para obter mais informações sobre o RSA, consulte a Criptografia RSA.

    4. Especifique uma senha compartilhada inserindo uma senha codificada em URL base64. Você também pode selecionar Gerar senha para que uma senha seja gerada para você. Você deve garantir que ela seja uma senha codificada em URL base64.

    5. (Opcional) Especifique quando a senha compartilhada for válida. Você pode especificar a data e a hora a partir da qual uma senha é válida, válido até ou os dois. A senha será válida no intervalo especificado.

    6. Selecione Salvar senha para salvar a nova senha.

  8. (Opcional) Em Configuração avançada:

    1. Especifique um Nome de usuário para usar na verificação da ACL.

    2. Especifique um ou mais Grupos para serem usados na verificação da ACL.

    3. Especifique o Emissor que validará o emissor do token.

    4. Especifique o(s) ID(s) da reclamação. Especifique uma expressão regular que corresponda ao público no JWT.

  9. Na página de Detalhes do provisionamento, escolha Developer Edition.

  10. Escolha Criar para criar seu índice.

  11. Aguarde até que seu índice seja criado. Amazon Kendra provisiona o hardware para seu índice. Essa operação pode levar algum tempo.

CLI

Você pode usar o token JWT com um segredo compartilhado dentro do AWS Secrets Manager. A senha deve ser um senha codificada com uma URL base64. Você precisa do Secrets Manager ARN e sua Amazon Kendra função deve ter acesso ao GetSecretValue Secrets Manager recurso. Se você estiver criptografando o Secrets Manager recurso com AWS KMS, a função também deverá ter acesso à ação de descriptografia.

Para criar um índice AWS CLI usando um arquivo de entrada JSON, primeiro crie um arquivo JSON com os parâmetros desejados:

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

Você pode substituir os nomes de campo padrão do usuário e do grupo. O valor padrão para UserNameAttributeField é "usuário". O valor padrão para GroupAttributeField é "grupos".

Em seguida, chame o create-index usando o arquivo de entrada. Por exemplo, se o nome do arquivo JSON for create-index-openid.json, use o seguinte:

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

O segredo deve ter o seguinte formato em 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 obter mais informações sobre o JWT, consulte jwt.io.

Python

Você pode usar o token JWT com um segredo compartilhado dentro do AWS Secrets Manager. A senha deve ser um senha codificada com uma URL base64. Você precisa do Secrets Manager ARN e sua Amazon Kendra função deve ter acesso ao GetSecretValue Secrets Manager recurso. Se você estiver criptografando o Secrets Manager recurso com AWS KMS, a função também deverá ter acesso à ação de descriptografia.

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