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
-
-
Escolha Criar índice para começar a criar um novo índice.
-
Na página Especificar detalhes do índice, dê um nome e uma descrição ao índice.
-
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-".
-
Deixe os outros campos nos padrões determinados. Escolha Próximo.
-
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.
-
Em Configuração de token, selecione JWT com chave pública como o Tipo de token.
-
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:
-
Em Nova senha do AWS Secrets Manager, especifique uma senha. O prefixo
AmazonKendra-será adicionado ao salvar a chave pública. -
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.
-
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
. -
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.
-
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.
-
Especifique o Expoente. Esse é o valor expoente da chave pública RSA. Ele é representado como um valor codificado como Base64urlUInt.
-
Especifique os Módulos. Esse é o valor expoente da chave pública RSA. Ele é representado como um valor codificado como Base64urlUInt.
-
Selecione Salvar chave para salvar a nova chave.
-
-
Opcional Na Configuração avançada:
-
Especifique um Nome de usuário para usar na verificação da ACL.
-
Especifique um ou mais Grupos para serem usados na verificação da ACL.
-
Especifique o Emissor que validará o emissor do token.
-
Especifique o(s) ID(s) do cliente. Você deve especificar uma expressão regular que corresponda ao público no JWT.
-
-
Na página de Detalhes do provisionamento, escolha Developer Edition.
-
Escolha Criar para criar seu índice.
-
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
GetSecretValueno 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 paraGroupAttributeFieldé "grupos".Em seguida, chame o
create-indexusando o arquivo de entrada. Por exemplo, se o nome do arquivo JSON forcreate-index-openid.json, use o seguinte:aws kendra create-index --cli-input-json file://create-index-openid.jsonA 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' )