Usando um JSON Web Token (JWT) com uma chave pública - Amazon Kendra

Usando um JSON Web Token (JWT) com uma chave pública

Os exemplos a seguir mostram como usar um JSON Web Token (JWT) com uma chave pública para controle de acesso do usuário ao criar um índice. Para obter mais informações sobre o JWT, consulte jwt.io.

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 chave pública como o Tipo de token.

  7. Em Parâmetros para assinar a chave pública, escolha o Tipo de senha. Você pode usar uma senha existente do AWS Secrets Manager ou criar outra.

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

    1. Em Nova senha do AWS Secrets Manager, 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. Em Atributos do certificado, especifique uma Cadeia de certificados opcional. A cadeia de certificados é composta por uma lista de certificados. Ele começa com o certificado do servidor e termina com o certificado raiz.

    5. Opcional Especifique a impressão digital ou do polegar. Ele deve ser uma confirmação de certificado, uma verificação além de todos os dados do certificado e sua assinatura.

    6. Especifique o Expoente. Esse é o valor expoente da chave pública RSA. Ele é representado como um valor codificado como Base64urlUInt.

    7. Especifique os Módulos. Esse é o valor expoente da chave pública RSA. Ele é representado como um valor codificado como Base64urlUInt.

    8. Selecione Salvar chave para salvar a nova chave.

  8. Opcional Na 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) do cliente. Você deve especificar 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

Use o JWT com uma chave pública dentro de um AWS Secrets Manager. Você precisa do ARN do Secrets Manager e a função Amazon Kendra deve ter acesso ao GetSecretValue no recurso 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", "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" }

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

Para obter mais informações sobre o JWT, consulte 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' )