Usando um JSON Web Token (JWT) com uma chave pública - 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á.

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

Os exemplos a seguir mostram como usar o 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 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 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 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. 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 seu índice seja criado. 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 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", "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

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