

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á.

# Controle do acesso de usuários a documentos por token
<a name="create-index-access-control"></a>

**nota**  
A compatibilidade com os recursos varia de acordo com o tipo de índice e a API de pesquisa usada. Consulte se esse recurso é compatível com o tipo de índice e a API de pesquisa que você está usando em [Tipos de índice](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html).

**Importante**  
Os índices do Amazon Kendra GenAI Enterprise Edition não são compatíveis com o controle de acesso de usuários baseado em tokens.

Você pode controlar quais usuários ou grupos podem acessar determinados documentos no índice ou ver determinados documentos noa resultados de pesquisa. Isso é chamado de filtragem de contexto do usuário. É uma espécie de pesquisa personalizada com o benefício de controlar o acesso aos documentos. Por exemplo, nem todas as equipes que pesquisam informações no portal da empresa devem acessar documentos ultrassecretos da empresa, nem esses documentos são relevantes para todos os usuários. Somente usuários específicos ou grupos de equipes com acesso a documentos ultrassecretos devem ver esses documentos nos resultados de pesquisa.

Amazon Kendra Os índices Enterprise e Developer oferecem suporte ao controle de acesso do usuário baseado em tokens usando os seguintes tipos de token:
+ Open ID
+ JWT com senha compartilhada
+ JWT com chave pública
+ JSON

Amazon Kendra pode ser usado para fornecer pesquisa corporativa segura para seus aplicativos de recuperação e pesquisa. Durante a consulta e a recuperação, Amazon Kendra filtra os resultados da pesquisa com base `AttributeFilters` e `UserContext` fornecidos na solicitação. Amazon Kendra lê listas de controle de acesso a documentos (ACLs) coletadas por seus conectores durante o rastreamento e a ingestão. Os resultados da recuperação e da pesquisa retornam URLs apontando para os repositórios de documentos originais, além de pequenos trechos. O acesso ao documento completo ainda é imposto pelo repositório original.

**Topics**
+ [Usando o OpenID](create-index-access-control-tokens-openid.md)
+ [Como usar um JSON Web Token (JWT) com uma senha compartilhada](create-index-access-control-tokens-jwtshared.md)
+ [Usando um JSON Web Token (JWT) com uma chave pública](create-index-access-control-tokens-jwtpublic.md)
+ [Usar o JSON](create-index-access-control-tokens-json.md)

# Usando o OpenID
<a name="create-index-access-control-tokens-openid"></a>

Para configurar um índice do Amazon Kendra para usar um token OpenID para controle de acesso, você precisa da URL JWKS (JSON Web Key Set) do provedor OpenID. Na maioria dos casos, a URL do JWKS está no seguinte formato (se elas estiverem seguindo a descoberta do OpenID) `https://domain-name/.well_known/jwks.json`: 

Os exemplos a seguir mostram como usar um token do OpenID para controle de acesso do usuário ao criar um índice.

------
#### [ Console ]

1. Escolha **Criar índice** para criar um novo índice.

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

1. Para a **função do IAM**, selecione uma função ou **Criar uma nova função** para e especifique um nome de função para criar uma nova função. O perfil do IAM terá o prefixo “AmazonKendra-”. 

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

1. 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. 

1. Em **Configuração de token**, selecione **OpenID** como o **Tipo de token**. 

1. Especifique a **URL da chave de assinatura**. A URL deve apontar para um conjunto de chaves da web JSON. 

1. *Opcional* Em **Configuração avançada**: 

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

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

   1. Especifique o **Emissor** que validará o emissor do token. 

   1. Especifique o(s) **ID(s) do cliente**. Você deve especificar uma expressão regular que corresponda ao público no JWT.

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

1. Escolha **Criar** para criar seu índice.

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

------
#### [ CLI ]

Para criar um índice com a 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": "URL",
                "Issuer": "optional: specify the issuer url",
                "ClaimRegex": "optional: regex to validate claims in the token",
                "UserNameAttributeField": "optional: user",
                "GroupAttributeField": "optional: group",
                "URL": "https://example.com/.well-known/jwks.json"
            }
        }
    ],
    "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`, você poderá usar o seguinte: 

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

------
#### [ Python ]

```
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",
                "URL": "https://example.com/.well-known/jwks.json"
            }
        }
    ],
    UserContextPolicy='USER_TOKEN'
)
```

------

# Como usar um JSON Web Token (JWT) com uma senha compartilhada
<a name="create-index-access-control-tokens-jwtshared"></a>

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.

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

1. 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-”.

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

1. 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.

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

1. 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.

   1. 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.

   1. 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](https://tools.ietf.org/html/rfc3447).

   1. 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.

   1. (*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.

   1. Selecione **Salvar senha** para salvar a nova senha.

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

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

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

   1. Especifique o **Emissor** que validará o emissor do token.

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

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

1. Escolha **Criar** para criar seu índice.

1. Aguarde a criação do seu índice. 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](http://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'
)
```

------

# Usando um JSON Web Token (JWT) com uma chave pública
<a name="create-index-access-control-tokens-jwtpublic"></a>

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](http://jwt.io). 

------
#### [ Console ]

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

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

1. 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-”.

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

1. 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.

1. Em **Configuração de token**, selecione **JWT com chave pública** como o **Tipo de token**.

1. 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.

   1. 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.

   1. 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](https://tools.ietf.org/html/rfc3447).

   1. 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.

   1. *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.

   1. Especifique o **Expoente**. Esse é o valor expoente da chave pública RSA. Ele é representado como um valor codificado em Base64URLUInt.

   1. Especifique os **Módulos**. Esse é o valor expoente da chave pública RSA. Ele é representado como um valor codificado em Base64URLUInt.

   1. Selecione **Salvar chave** para salvar a nova chave.

1. *Opcional* Na **Configuração avançada**:

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

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

   1. Especifique o **Emissor** que validará o emissor do token.

   1. Especifique o(s) **ID(s) do cliente**. Você deve especificar uma expressão regular que corresponda ao público no JWT.

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

1. Escolha **Criar** para criar seu índice.

1. 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](http://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'
)
```

------

# Usar o JSON
<a name="create-index-access-control-tokens-json"></a>

Os exemplos a seguir mostram como usar o JSON para controle de acesso do usuário ao criar um índice.

**Atenção**  
O token JSON é uma carga não validada. Ele só deve ser usado quando as solicitações de Amazon Kendra vêm de um servidor confiável e nunca de um navegador. 

------
#### [ Console ]

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

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

1. Para a **função 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 IAM terá o prefixo "AmazonKendra-". 

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

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

1. Em **Configuração de token**, selecione **JSON** como o **Tipo de token**. 

1. Especifique um **Nome de usuário** a ser usado na verificação da ACL.

1. Especifique um ou mais **Grupos** a serem usados na verificação da ACL.

1. Escolha **Próximo**.

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

1. Escolha **Criar** para criar seu índice.

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

------
#### [ CLI ]

Para criar um índice da 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": [
        {
            "JsonTokenTypeConfiguration": {
                "UserNameAttributeField": "user",
                "GroupAttributeField": "group"
            }
        }
    ],
    "UserContextPolicy": "USER_TOKEN"
}
```

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

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

Se você não estiver usando o Open ID para Centro de Identidade do AWS IAM, poderá nos enviar o token no formato JSON. Se você fizer isso, deverá especificar qual campo no token JSON contém o nome do usuário e os grupos. Os valores do campo de grupos devem ser uma matriz de sequências de caracteres JSON. Por exemplo, se estiver usando SAML, o token será semelhante ao seguinte:

```
{
     "username" : "user1", 
     "groups": [
        "group1", 
        "group2"
     ]
}
```

O `TokenConfiguration` especificaria o nome do usuário e os nomes dos campos do grupo:

```
{
    "UserNameAttributeField":"username",
    "GroupAttributeField":"groups"
}
```

------
#### [ Python ]

```
response = kendra.create_index(
    Name='user-context',
    Edition='ENTERPRISE_EDITION',
    RoleArn='arn:aws:iam::account-id:role:/my-role',
    UserTokenConfigurations=[
        {
            "JwtTokenTypeConfiguration": {
                "UserNameAttributeField": "user",
                "GroupAttributeField": "group",
            }
        }
    ],
    UserContextPolicy='USER_TOKEN'
)
```

------