

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Contrôle de l'accès des utilisateurs aux documents à l'aide de jetons
<a name="create-index-access-control"></a>

**Note**  
La prise en charge des fonctionnalités varie en fonction du type d'index et de l'API de recherche utilisés. Pour savoir si cette fonctionnalité est prise en charge pour le type d'index et l'API de recherche que vous utilisez, consultez la section [Types d'index](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html).

**Important**  
Les indices Amazon Kendra GenAI Enterprise Edition ne prennent pas en charge le contrôle d'accès utilisateur basé sur des jetons.

Vous pouvez contrôler quels utilisateurs ou groupes peuvent accéder à certains documents de votre index ou voir certains documents dans leurs résultats de recherche. C'est ce que l'on appelle le filtrage du contexte utilisateur. Il s'agit d'une sorte de recherche personnalisée qui a l'avantage de contrôler l'accès aux documents. Par exemple, les équipes qui recherchent des informations sur le portail de l'entreprise ne doivent pas toutes accéder aux documents top secrets de l'entreprise, et ces documents ne sont pas pertinents pour tous les utilisateurs. Seuls des utilisateurs ou des groupes d'équipes spécifiques ayant accès à des documents top secrets devraient voir ces documents dans leurs résultats de recherche.

Amazon Kendra Les indices Enterprise et Developer prennent en charge le contrôle d'accès des utilisateurs basé sur des jetons à l'aide des types de jetons suivants :
+ Identifiant ouvert
+ JWT avec un secret partagé
+ JWT avec une clé publique
+ JSON

Amazon Kendra peut être utilisé pour fournir une recherche d'entreprise sécurisée pour vos applications de récupération et de recherche. Au cours de la requête et de la récupération, Amazon Kendra filtre les résultats de recherche en fonction de la demande `AttributeFilters` et `UserContext` des informations fournies dans celle-ci. Amazon Kendra lit les listes de contrôle d'accès aux documents (ACLs) collectées par ses connecteurs lors de l'exploration et de l'ingestion. Les résultats de récupération et de recherche renvoient URLs vers les référentiels de documents originaux et de courts extraits. L'accès au document complet est toujours imposé par le référentiel d'origine.

**Topics**
+ [Utilisation d'OpenID](create-index-access-control-tokens-openid.md)
+ [Utilisation d'un jeton Web JSON (JWT) avec un secret partagé](create-index-access-control-tokens-jwtshared.md)
+ [Utilisation d'un jeton Web JSON (JWT) avec une clé publique](create-index-access-control-tokens-jwtpublic.md)
+ [Utilisation de JSON](create-index-access-control-tokens-json.md)

# Utilisation d'OpenID
<a name="create-index-access-control-tokens-openid"></a>

Pour configurer un Amazon Kendra index afin d'utiliser un jeton OpenID pour le contrôle d'accès, vous avez besoin de l'URL JWKS (JSON Web Key Set) du fournisseur OpenID. Dans la plupart des cas, l'URL JWKS est au format suivant (s'ils suivent la découverte d'OpenID). `https://domain-name/.well_known/jwks.json` 

Les exemples suivants montrent comment utiliser un jeton OpenID pour le contrôle d'accès des utilisateurs lorsque vous créez un index.

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

1. Choisissez **Create index** pour commencer à créer un nouvel index.

1. Sur la page **Spécifier les détails** de l'index, donnez un nom et une description à votre index. 

1. Pour **IAM le rôle**, sélectionnez un rôle ou sélectionnez **Créer un nouveau rôle** pour et spécifiez un nom de rôle pour créer un nouveau rôle. Le rôle IAM aura le préfixe « AmazonKendra - ». 

1. Conservez les valeurs par défaut de tous les autres champs. Choisissez **Suivant**.

1. Sur la page **Configurer le contrôle d'accès utilisateur**, sous **Paramètres de contrôle d'accès**, choisissez **Oui** pour utiliser des jetons pour le contrôle d'accès. 

1. Sous **Configuration du jeton**, sélectionnez **OpenID comme type** de **jeton**. 

1. Spécifiez une **URL de clé de signature**. L'URL doit pointer vers un ensemble de clés Web JSON. 

1. *Facultatif* sous **Configuration avancée** : 

   1. Spécifiez un **nom d'utilisateur** à utiliser lors de la vérification de l'ACL. 

   1. Spécifiez un ou plusieurs **groupes** à utiliser lors de la vérification de l'ACL. 

   1. Spécifiez l'**émetteur** qui validera l'émetteur du jeton. 

   1. Spécifiez le (s) **identifiant (s) client (s)**. Vous devez spécifier une expression régulière correspondant à l'audience du JWT.

1. Sur la page des **détails du provisionnement**, choisissez **Developer Edition**.

1. Choisissez **Créer** pour créer votre index.

1. Attendez que votre index soit créé. Amazon Kendra fournit le matériel nécessaire à votre index. Cette opération peut prendre un certain temps.

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

Pour créer un index à l' AWS CLI aide d'un fichier d'entrée JSON, créez d'abord un fichier JSON avec les paramètres souhaités :

```
{
    "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"
}
```

Vous pouvez remplacer les noms de champs d'utilisateur et de groupe par défaut. La valeur par défaut pour `UserNameAttributeField` est « user ». La valeur par défaut pour `GroupAttributeField` est « groups ». 

Ensuite, appelez `create-index` en utilisant le fichier d'entrée. Par exemple, si le nom de votre fichier JSON est`create-index-openid.json`, vous pouvez utiliser ce qui suit : 

```
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'
)
```

------

# Utilisation d'un jeton Web JSON (JWT) avec un secret partagé
<a name="create-index-access-control-tokens-jwtshared"></a>

Les exemples suivants montrent comment utiliser le jeton Web JSON (JWT) avec un jeton secret partagé pour le contrôle d'accès des utilisateurs lorsque vous créez un index. 

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

1. Choisissez **Create index** pour commencer à créer un nouvel index.

1. Sur la page **Spécifier les détails** de l'index, donnez un nom et une description à votre index.

1. Pour **le rôle IAM**, sélectionnez un rôle ou sélectionnez **Créer un nouveau rôle** pour et spécifiez un nom de rôle pour créer un nouveau rôle. Le IAM rôle aura le préfixe « AmazonKendra - ».

1. Conservez les valeurs par défaut de tous les autres champs. Choisissez **Suivant**.

1. Sur la page **Configurer le contrôle d'accès utilisateur**, sous **Paramètres de contrôle d'accès**, choisissez **Oui** pour utiliser des jetons pour le contrôle d'accès.

1. Sous **Configuration du jeton**, sélectionnez **JWT avec secret partagé** comme **type de jeton**.

1. Sous **Paramètres de signature du secret partagé**, choisissez le **type de secret**. Vous pouvez utiliser un secret AWS Secrets Manager partagé existant ou en créer un nouveau.

   Pour créer un nouveau secret partagé, choisissez **Nouveau**, puis procédez comme suit :

   1. Sous **Nouveau AWS Secrets Manager secret**, spécifiez un **nom secret**. Le préfixe `AmazonKendra-` sera ajouté lorsque vous enregistrerez la clé publique.

   1. Spécifiez un **ID de clé**. L'identifiant de clé est un indice qui indique quelle clé a été utilisée pour sécuriser la signature Web JSON du jeton.

   1. Choisissez l'**algorithme** de signature pour le jeton. Il s'agit de l'algorithme cryptographique utilisé pour sécuriser le jeton d'identification. Pour plus d'informations sur la norme RSA, consultez [Chiffrement RSA](https://tools.ietf.org/html/rfc3447).

   1. Spécifiez un **secret partagé** en saisissant un secret codé en URL base64. Vous pouvez également sélectionner **Générer un secret** pour qu'un secret soit généré pour vous. Vous devez vous assurer que le secret est un code secret codé en URL base64.

   1. (*Facultatif*) Spécifiez à quel moment le secret partagé est valide. Vous pouvez spécifier la date et l'heure de validité d'un secret, ou les deux. Le secret sera valide dans l'intervalle spécifié.

   1. Sélectionnez **Enregistrer le secret** pour enregistrer le nouveau secret.

1. (*Facultatif*) Sous **Configuration avancée** :

   1. Spécifiez un **nom d'utilisateur** à utiliser lors de la vérification de l'ACL.

   1. Spécifiez un ou plusieurs **groupes** à utiliser lors de la vérification de l'ACL.

   1. Spécifiez l'**émetteur** qui validera l'émetteur du jeton.

   1. Spécifiez le **ou les numéros de réclamation**. Vous devez spécifier une expression régulière correspondant à l'audience du JWT.

1. Sur la page des **détails du provisionnement**, choisissez **Developer Edition**.

1. Choisissez **Créer** pour créer votre index.

1. Attendez que votre index soit créé. Amazon Kendra fournit le matériel pour votre index. Cette opération peut prendre un certain temps.

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

Vous pouvez utiliser un jeton JWT avec un secret partagé à l'intérieur de AWS Secrets Manager. Le secret doit être un secret codé en URL base64. Vous avez besoin de l' Secrets Manager ARN, et votre Amazon Kendra rôle doit avoir accès `GetSecretValue` à la Secrets Manager ressource. Si vous chiffrez la Secrets Manager ressource avec AWS KMS, le rôle doit également avoir accès à l'action de déchiffrement.

Pour créer un index à l' AWS CLI aide d'un fichier d'entrée JSON, créez d'abord un fichier JSON avec les paramètres souhaités : 

```
{
    "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"
}
```

Vous pouvez remplacer les noms de champs d'utilisateur et de groupe par défaut. La valeur par défaut pour `UserNameAttributeField` est « user ». La valeur par défaut pour `GroupAttributeField` est « groups ». 

Ensuite, appelez `create-index` en utilisant le fichier d'entrée. Par exemple, si le nom de votre fichier JSON est`create-index-openid.json`, vous pouvez utiliser ce qui suit : 

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

Le secret doit avoir le format suivant 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"
    }
  ]
}
```

Pour plus d'informations sur JWT, consultez [jwt.io](http://jwt.io).

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

Vous pouvez utiliser un jeton JWT avec un secret partagé à l'intérieur de AWS Secrets Manager. Le secret doit être un secret codé en URL base64. Vous avez besoin de l' Secrets Manager ARN, et votre Amazon Kendra rôle doit avoir accès `GetSecretValue` à la Secrets Manager ressource. Si vous chiffrez la Secrets Manager ressource avec AWS KMS, le rôle doit également avoir accès à l'action de déchiffrement.

```
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'
)
```

------

# Utilisation d'un jeton Web JSON (JWT) avec une clé publique
<a name="create-index-access-control-tokens-jwtpublic"></a>

Les exemples suivants montrent comment utiliser le jeton Web JSON (JWT) avec une clé publique pour le contrôle d'accès des utilisateurs lorsque vous créez un index. Pour plus d'informations sur JWT, consultez [jwt.io](http://jwt.io).

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

1. Choisissez **Create index** pour commencer à créer un nouvel index.

1. Sur la page **Spécifier les détails** de l'index, donnez un nom et une description à votre index. 

1. Pour **le rôle IAM**, sélectionnez un rôle ou sélectionnez **Créer un nouveau rôle** pour et spécifiez un nom de rôle pour créer un nouveau rôle. Le IAM rôle aura le préfixe « AmazonKendra - ».

1. Conservez les valeurs par défaut de tous les autres champs. Choisissez **Suivant**.

1. Sur la page **Configurer le contrôle d'accès utilisateur**, sous **Paramètres de contrôle d'accès**, choisissez **Oui** pour utiliser des jetons pour le contrôle d'accès.

1. Sous **Configuration du jeton**, sélectionnez **JWT avec clé publique** comme **type de jeton**.

1. Sous **Paramètres de signature de la clé publique**, choisissez le **type de secret**. Vous pouvez utiliser un AWS Secrets Manager secret existant ou en créer un nouveau.

   Pour créer un nouveau secret, choisissez **Nouveau**, puis procédez comme suit :

   1. Sous **Nouveau AWS Secrets Manager secret**, spécifiez un **nom secret**. Le préfixe `AmazonKendra-` sera ajouté lorsque vous enregistrerez la clé publique.

   1. Spécifiez un **ID de clé**. L'identifiant de clé est un indice qui indique quelle clé a été utilisée pour sécuriser la signature Web JSON du jeton.

   1. Choisissez l'**algorithme** de signature pour le jeton. Il s'agit de l'algorithme cryptographique utilisé pour sécuriser le jeton d'identification. Pour plus d'informations sur la norme RSA, consultez [Chiffrement RSA](https://tools.ietf.org/html/rfc3447).

   1. Sous **Attributs de certificat**, spécifiez une **chaîne de certificats** *facultative*. La chaîne de certificats est composée d'une liste de certificats. Il commence par le certificat d'un serveur et se termine par le certificat racine.

   1. *Facultatif* Spécifiez l'**empreinte numérique ou l'empreinte digitale**. Il doit s'agir du hachage d'un certificat, calculé sur toutes les données du certificat et sur sa signature.

   1. Spécifiez l'**exposant.** Il s'agit de la valeur de l'exposant pour la clé publique RSA. Elle est représentée sous la forme d'une valeur codée en base64URLUInt.

   1. Spécifiez le **module.** Il s'agit de la valeur de l'exposant pour la clé publique RSA. Elle est représentée sous la forme d'une valeur codée en base64URLUInt.

   1. Sélectionnez **Enregistrer la clé** pour enregistrer la nouvelle clé.

1. *Facultatif* sous **Configuration avancée** :

   1. Spécifiez un **nom d'utilisateur** à utiliser lors de la vérification de l'ACL.

   1. Spécifiez un ou plusieurs **groupes** à utiliser lors de la vérification de l'ACL.

   1. Spécifiez l'**émetteur** qui validera l'émetteur du jeton.

   1. Spécifiez le (s) **identifiant (s) client (s)**. Vous devez spécifier une expression régulière correspondant à l'audience du JWT.

1. Sur la page des **détails du provisionnement**, choisissez **Developer Edition**.

1. Choisissez **Créer** pour créer votre index.

1. Attendez que votre index soit créé. Amazon Kendra fournit le matériel nécessaire à votre index. Cette opération peut prendre un certain temps.

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

Vous pouvez utiliser JWT avec une clé publique à l'intérieur d'un AWS Secrets Manager. Vous avez besoin de l' Secrets Manager ARN, et votre Amazon Kendra rôle doit avoir accès `GetSecretValue` à la Secrets Manager ressource. Si vous chiffrez la Secrets Manager ressource avec AWS KMS, le rôle doit également avoir accès à l'action de déchiffrement.

Pour créer un index à l' AWS CLI aide d'un fichier d'entrée JSON, créez d'abord un fichier JSON avec les paramètres souhaités :

```
{
    "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"
}
```

Vous pouvez remplacer les noms de champs d'utilisateur et de groupe par défaut. La valeur par défaut pour `UserNameAttributeField` est « user ». La valeur par défaut pour `GroupAttributeField` est « groups ».

Ensuite, appelez `create-index` en utilisant le fichier d'entrée. Par exemple, si le nom de votre fichier JSON est`create-index-openid.json`, vous pouvez utiliser ce qui suit :

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

Le secret doit avoir le format suivant 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"
      ]
    }
  ]
}
```

Pour plus d'informations sur JWT, consultez [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'
)
```

------

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

Les exemples suivants montrent comment utiliser le JSON pour le contrôle d'accès des utilisateurs lorsque vous créez un index.

**Avertissement**  
Le jeton JSON est une charge utile non validée. Cela ne doit être utilisé que lorsque les demandes Amazon Kendra proviennent d'un serveur fiable et jamais d'un navigateur. 

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

1. Choisissez **Create index** pour commencer à créer un nouvel index.

1. Sur la page **Spécifier les détails** de l'index, donnez un nom et une description à votre index. 

1. Pour **IAM le rôle**, sélectionnez un rôle ou sélectionnez **Créer un nouveau rôle** pour et spécifiez un nom de rôle pour créer un nouveau rôle. Le IAM rôle aura le préfixe « AmazonKendra - ». 

1. Conservez les valeurs par défaut de tous les autres champs. Choisissez **Suivant**.

1. Sur la page **Configurer le contrôle d'accès utilisateur**, sous **Paramètres de contrôle d'accès**, choisissez **Oui** pour utiliser des jetons pour le contrôle d'accès. 

1. Sous **Configuration du jeton**, sélectionnez **JSON** comme **type de jeton**. 

1. Spécifiez un **nom d'utilisateur** à utiliser lors de la vérification de l'ACL.

1. Spécifiez un ou plusieurs **groupes** à utiliser lors de la vérification de l'ACL.

1. Choisissez **Suivant**.

1. Sur la page des **détails du provisionnement**, choisissez **Developer Edition**.

1. Choisissez **Créer** pour créer votre index.

1. Attendez que votre index soit créé. Amazon Kendra fournit le matériel nécessaire à votre index. Cette opération peut prendre un certain temps.

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

Pour créer un index à l' AWS CLI aide d'un fichier d'entrée JSON, créez d'abord un fichier JSON avec les paramètres souhaités :

```
{
    "Name": "user-context",
    "Edition": "ENTERPRISE_EDITION",
    "RoleArn": "arn:aws:iam::account-id:role:/my-role",
    "UserTokenConfigurations": [
        {
            "JsonTokenTypeConfiguration": {
                "UserNameAttributeField": "user",
                "GroupAttributeField": "group"
            }
        }
    ],
    "UserContextPolicy": "USER_TOKEN"
}
```

Ensuite, appelez `create-index` en utilisant le fichier d'entrée. Par exemple, si le nom de votre fichier JSON est`create-index-openid.json`, vous pouvez utiliser ce qui suit : 

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

Si vous n'utilisez pas Open ID pour AWS IAM Identity Center, vous pouvez nous envoyer le jeton au format JSON. Dans ce cas, vous devez spécifier quel champ du jeton JSON contient le nom d'utilisateur et quel champ contient les groupes. Les valeurs des champs de groupe doivent être un tableau de chaînes JSON. Par exemple, si vous utilisez le protocole SAML, votre jeton sera similaire au suivant :

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

Cela `TokenConfiguration` indiquerait le nom d'utilisateur et les noms des champs de groupe :

```
{
    "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'
)
```

------