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

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

Os exemplos a seguir mostram como usar um JSON Web Token (JWT) com um token de senha compartilhada 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 função do IAM 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 Nova AWS Secrets Manager senha, especifique uma senha. 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 o índice seja criado. O Amazon Kendra provisiona o hardware para seu índice. Essa operação pode levar algum tempo.

CLI

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

Para criar um índice com o AWS CLI usando um arquivo de entrada JSON, crie primeiro 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

A senha 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 uma senha compartilhada dentro do AWS Secrets Manager. A senha deve ser um senha codificada com uma URL base64. Você precisa do ARN do Secrets Manager e a função do Amazon Kendra deve ter acesso ao GetSecretValue no recurso da Secrets Manager. Se você estiver criptografando o recurso do Secrets Manager 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' )