

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.

# Choisir un type de balise
<a name="choosing-beacon-type"></a>


****  

|  | 
| --- |
| Notre bibliothèque de chiffrement côté client a été renommée SDK de chiffrement de AWS base de données. Ce guide du développeur fournit toujours des informations sur le client de [chiffrement DynamoDB](legacy-dynamodb-encryption-client.md). | 

*Grâce au chiffrement consultable, vous pouvez rechercher des enregistrements chiffrés en mappant les valeurs en texte brut dans un champ crypté à l'aide d'une balise.* Le type de balise que vous configurez détermine le type de requêtes que vous pouvez effectuer.

Nous vous recommandons vivement d'identifier et de planifier les types de requêtes que vous devez effectuer avant de configurer vos balises. Après avoir [configuré vos balises](configure-beacons.md), vous devez configurer un index secondaire pour chaque balise avant de pouvoir effectuer une recherche dans les champs chiffrés. Pour de plus amples informations, veuillez consulter [Configuration des index secondaires avec des balises](ddb-searchable-encryption.md#ddb-beacon-indexes).

Les balises créent une carte entre la valeur en texte brut écrite dans un champ et la valeur cryptée réellement stockée dans votre base de données. Vous ne pouvez pas comparer les valeurs de deux balises standard, même si elles contiennent le même texte brut sous-jacent. Les deux balises standard produiront deux balises HMAC différentes pour les mêmes valeurs en texte brut. Par conséquent, les balises standard ne peuvent pas effectuer les requêtes suivantes.
+ `beacon1 = beacon2`
+ `beacon1 IN (beacon2)`
+ `value IN (beacon1, beacon2, ...)`
+ `CONTAINS(beacon1, beacon2)`

Vous ne pouvez effectuer les requêtes ci-dessus que si vous comparez les [parties signées](configure-beacons.md#signed-parts) des balises composées, à l'exception de l'`CONTAINS`opérateur, que vous pouvez utiliser avec les balises composées pour identifier la valeur complète d'un champ chiffré ou signé que contient la balise assemblée. Lorsque vous comparez des parties signées, vous pouvez éventuellement inclure le préfixe d'une [partie chiffrée](configure-beacons.md#encrypted-parts), mais vous ne pouvez pas inclure la valeur cryptée d'un champ. Pour plus d'informations sur les types de requêtes que les balises standard et composées peuvent effectuer, consultez la section [Interrogation](using-beacons.md#querying-beacons) de balises.

Envisagez les solutions de chiffrement consultables suivantes lorsque vous examinez les modèles d'accès à votre base de données. Les exemples suivants définissent la balise à configurer pour répondre aux différentes exigences de chiffrement et d'interrogation.

## Balises standard
<a name="plan-standard-beacon"></a>

[Les balises standard](beacons.md#standard-beacon-overview) peuvent uniquement effectuer des recherches d'égalité. Vous pouvez utiliser des balises standard pour effectuer les requêtes suivantes.

### Interrogez un seul champ chiffré
<a name="se-example1"></a>

Si vous souhaitez identifier les enregistrements contenant une valeur spécifique pour un champ chiffré, créez une balise standard.

#### Exemples
<a name="example1"></a>

Dans l'exemple suivant, considérez une base de données nommée `UnitInspection` qui suit les données d'inspection d'une installation de production. Chaque enregistrement de la base de données contient des champs appelés `work_id``inspection_date`,`inspector_id_last4`, et`unit`. L'identifiant complet de l'inspecteur est un nombre compris entre 0 et 99 999 999. Toutefois, pour garantir une distribution uniforme de l'ensemble de données, `inspector_id_last4` seuls les quatre derniers chiffres de l'identifiant de l'inspecteur sont enregistrés. Chaque champ de la base de données est identifié par la clé primaire`work_id`. Les `unit` champs `inspector_id_last4` et sont marqués `ENCRYPT_AND_SIGN` dans les [actions cryptographiques](concepts.md#crypt-actions).

Voici un exemple d'entrée en texte brut dans la `UnitInspection` base de données.

```
{
    "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b",
    "inspection_date": 2023-06-07,
    "inspector_id_last4": 8744,
    "unit": 229304973450   
}
```

**Interroger un seul champ chiffré dans un enregistrement**  
Si le `inspector_id_last4` champ doit être chiffré, mais que vous devez tout de même l'interroger pour obtenir des correspondances exactes, créez une balise standard à partir du `inspector_id_last4` champ. Utilisez ensuite la balise standard pour créer un index secondaire. Vous pouvez utiliser cet index secondaire pour effectuer une requête sur le `inspector_id_last4` champ crypté.

Pour obtenir de l'aide sur la configuration des balises standard, consultez [la section Configuration des balises standard](configure-beacons.md#config-standard-beacons).

### Interroger un champ virtuel
<a name="se-example2"></a>

Un [champ virtuel](beacons.md#virtual-field) est un champ conceptuel construit à partir d'un ou de plusieurs champs sources. Si vous souhaitez effectuer des recherches d'égalité pour un segment spécifique d'un champ crypté, ou effectuer des recherches d'égalité sur la concaténation de plusieurs champs, créez une balise standard à partir d'un champ virtuel. Tous les champs virtuels doivent inclure au moins un champ source chiffré.

#### Exemples
<a name="example2"></a>

Les exemples suivants créent des champs virtuels pour la `Employees` base de données. Voici un exemple d'enregistrement en texte brut dans la `Employees` base de données.

```
{
    "EmployeeID": 101,
    "SSN": 000-00-0000,
    "LastName": "Jones",
    "FirstName": "Mary",
    "Address": {
                "Street": "123 Main",
                "City": "Anytown",
                "State": "OH",
                "ZIPCode": 12345
    }
}
```

**Interroger un segment d'un champ chiffré**  
Dans cet exemple, le `SSN` champ est crypté.  
Si vous souhaitez interroger le `SSN` champ à l'aide des quatre derniers chiffres d'un numéro de sécurité sociale, créez un champ virtuel qui identifie le segment que vous souhaitez interroger.  
Un `Last4SSN` champ virtuel, construit à partir de, vous `Suffix(4)` permet d'effectuer des requêtes`Last4SSN=0000`. Utilisez ce champ virtuel pour créer une balise standard. Utilisez ensuite la balise standard pour créer un index secondaire. Vous pouvez utiliser cet index secondaire pour effectuer des requêtes sur le champ virtuel. Cette requête renvoie tous les enregistrements dont `SSN` la valeur se termine par les quatre derniers chiffres que vous avez spécifiés.

**Interrogez la concaténation de plusieurs champs**  
L'exemple suivant montre les types de transformations et de requêtes que vous pouvez effectuer avec un champ virtuel. En application, les champs d'exemple utilisés dans cet exemple peuvent ne pas respecter les recommandations d'unicité de [distribution](searchable-encryption.md#searchable-encryption-distribution) et de [corrélation](searchable-encryption.md#searchable-encryption-correlated-values) pour les balises.
Si vous souhaitez effectuer des recherches d'égalité sur une concaténation de `LastName` champs `FirstName` et, vous pouvez créer un `NameTag` champ virtuel, construit à partir de la première lettre du `FirstName` champ, suivie du champ, le `LastName` tout en minuscules. Utilisez ce champ virtuel pour créer une balise standard. Utilisez ensuite la balise standard pour créer un index secondaire. Vous pouvez utiliser cet index secondaire pour effectuer des requêtes `NameTag=mjones` sur le champ virtuel.  
Au moins un des champs source doit être chiffré. L'`FirstName`un ou l'autre `LastName` pourrait être chiffré, ou les deux pourraient être chiffrés. Tous les champs source en texte brut doivent être marqués en tant que `SIGN_ONLY` ou `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` dans vos actions [cryptographiques](concepts.md#crypt-actions).

Pour obtenir de l'aide sur la configuration des champs virtuels et des balises qui les utilisent, consultez la section [Création d'un champ virtuel](configure-beacons.md#create-virtual-field).

## Balises composées
<a name="plan-compound-beacons"></a>

[Les balises composées](beacons.md#compound-beacon-overview) créent un index à partir de chaînes de texte brut littérales et de balises standard pour effectuer des opérations de base de données complexes. Vous pouvez utiliser des balises composées pour effectuer les requêtes suivantes.

### Interrogez une combinaison de champs chiffrés sur un seul index
<a name="se-example3"></a>

Si vous devez interroger une combinaison de champs chiffrés sur un seul index, créez une balise composée qui combine les balises standard individuelles construites pour chaque champ chiffré afin de former un index unique.

Après avoir configuré la balise composée, vous pouvez créer un index secondaire qui spécifie la balise composée comme clé de partition pour effectuer des requêtes de correspondance exacte ou avec une clé de tri pour effectuer des requêtes plus complexes. Les index secondaires qui spécifient la balise composée comme clé de tri peuvent effectuer des requêtes de correspondance exacte et des requêtes complexes plus personnalisées.

#### Exemples
<a name="example3"></a>

Pour les exemples suivants, considérez une base de données nommée `UnitInspection` qui suit les données d'inspection d'une installation de production. Chaque enregistrement de la base de données contient des champs appelés `work_id``inspection_date`,`inspector_id_last4`, et`unit`. L'identifiant complet de l'inspecteur est un nombre compris entre 0 et 99 999 999. Toutefois, pour garantir une distribution uniforme de l'ensemble de données, `inspector_id_last4` seuls les quatre derniers chiffres de l'identifiant de l'inspecteur sont enregistrés. Chaque champ de la base de données est identifié par la clé primaire`work_id`. Les `unit` champs `inspector_id_last4` et sont marqués `ENCRYPT_AND_SIGN` dans les [actions cryptographiques](concepts.md#crypt-actions).

Voici un exemple d'entrée en texte brut dans la `UnitInspection` base de données.

```
{
    "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b",
    "inspection_date": 2023-06-07,
    "inspector_id_last4": 8744,
    "unit": 229304973450
}
```

**Effectuez des recherches d'égalité sur une combinaison de champs cryptés**  
Si vous souhaitez interroger la `UnitInspection` base de données pour obtenir des correspondances exactes`inspector_id_last4.unit`, créez d'abord des balises standard distinctes pour les `unit` champs `inspector_id_last4` et. Créez ensuite une balise composée à partir des deux balises standard.  
Après avoir configuré la balise composée, créez un index secondaire qui spécifie la balise composée comme clé de partition. Utilisez cet index secondaire pour rechercher des correspondances exactes sur`inspector_id_last4.unit`. Par exemple, vous pouvez interroger cette balise pour trouver une liste des inspections effectuées par un inspecteur pour une unité donnée.

**Réaliser des requêtes complexes sur une combinaison de champs chiffrés**  
Si vous souhaitez interroger la `UnitInspection` base de données sur `inspector_id_last4` et`inspector_id_last4.unit`, créez d'abord des balises standard distinctes pour les `unit` champs `inspector_id_last4` et. Créez ensuite une balise composée à partir des deux balises standard.  
Après avoir configuré la balise composée, créez un index secondaire qui spécifie la balise composée comme clé de tri. Utilisez cet index secondaire pour rechercher dans la `UnitInspection` base de données les entrées commençant par un certain inspecteur ou pour demander à la base de données une liste de toutes les unités appartenant à une plage d'identifiants d'unités spécifique qui ont été inspectées par un certain inspecteur. Vous pouvez également effectuer des recherches de correspondance exacte sur`inspector_id_last4.unit`.

Pour obtenir de l'aide sur la configuration des balises composées, consultez [la section Configuration des balises composées](configure-beacons.md#config-compound-beacons).

### Interrogez une combinaison de champs chiffrés et de champs en texte brut sur un seul index
<a name="se-example4"></a>

Si vous devez interroger une combinaison de champs chiffrés et de champs en texte brut sur un seul index, créez une balise composée qui combine des balises standard individuelles et des champs de texte en clair pour former un index unique. Les champs de texte brut utilisés pour créer la balise composée doivent être marqués `SIGN_ONLY` ou figurer `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` dans vos actions [cryptographiques](concepts.md#crypt-actions).

Après avoir configuré la balise composée, vous pouvez créer un index secondaire qui spécifie la balise composée comme clé de partition pour effectuer des requêtes de correspondance exacte ou avec une clé de tri pour effectuer des requêtes plus complexes. Les index secondaires qui spécifient la balise composée comme clé de tri peuvent effectuer des requêtes de correspondance exacte et des requêtes complexes plus personnalisées.

#### Exemples
<a name="example4"></a>

Pour les exemples suivants, considérez une base de données nommée `UnitInspection` qui suit les données d'inspection d'une installation de production. Chaque enregistrement de la base de données contient des champs appelés `work_id``inspection_date`,`inspector_id_last4`, et`unit`. L'identifiant complet de l'inspecteur est un nombre compris entre 0 et 99 999 999. Toutefois, pour garantir une distribution uniforme de l'ensemble de données, `inspector_id_last4` seuls les quatre derniers chiffres de l'identifiant de l'inspecteur sont enregistrés. Chaque champ de la base de données est identifié par la clé primaire`work_id`. Les `unit` champs `inspector_id_last4` et sont marqués `ENCRYPT_AND_SIGN` dans les [actions cryptographiques](concepts.md#crypt-actions).

Voici un exemple d'entrée en texte brut dans la `UnitInspection` base de données.

```
{
    "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b",
    "inspection_date": 2023-06-07,
    "inspector_id_last4": 8744,
    "unit": 229304973450
}
```

**Effectuez des recherches d'égalité sur une combinaison de champs**  
Si vous souhaitez interroger la `UnitInspection` base de données pour les inspections effectuées par un inspecteur spécifique à une date précise, créez d'abord une balise standard pour le `inspector_id_last4` champ. Le `inspector_id_last4` champ est marqué `ENCRYPT_AND_SIGN` dans les [actions cryptographiques](concepts.md#crypt-actions). Toutes les parties cryptées nécessitent leur propre balise standard. Le `inspection_date` champ est marqué `SIGN_ONLY` et ne nécessite pas de balise standard. Créez ensuite une balise composée à partir du `inspection_date` champ et de la balise `inspector_id_last4` standard.  
Après avoir configuré la balise composée, créez un index secondaire qui spécifie la balise composée comme clé de partition. Utilisez cet index secondaire pour rechercher dans les bases de données des enregistrements correspondant exactement à un inspecteur et à une date d'inspection spécifiques. Par exemple, vous pouvez interroger la base de données pour obtenir la liste de toutes les inspections effectuées à une date précise par l'inspecteur dont l'identifiant se termine `8744` par un identifiant.

**Exécuter des requêtes complexes sur une combinaison de champs**  
Si vous souhaitez interroger la base de données pour les inspections effectuées dans une `inspection_date` plage, ou interroger la base de données pour les inspections effectuées sur une `inspection_date` contrainte particulière par `inspector_id_last4` ou`inspector_id_last4.unit`, créez d'abord des balises standard distinctes pour les champs `inspector_id_last4` et`unit`. Créez ensuite une balise composée à partir du `inspection_date` champ de texte brut et des deux balises standard.  
Après avoir configuré la balise composée, créez un index secondaire qui spécifie la balise composée comme clé de tri. Utilisez cet index secondaire pour effectuer des requêtes pour les inspections effectuées à des dates spécifiques par un inspecteur spécifique. Par exemple, vous pouvez interroger la base de données pour obtenir la liste de toutes les unités inspectées à la même date. Vous pouvez également interroger la base de données pour obtenir une liste de toutes les inspections effectuées sur une unité spécifique entre une plage de dates d'inspection donnée.

Pour obtenir de l'aide sur la configuration des balises composées, consultez [la section Configuration des balises composées](configure-beacons.md#config-compound-beacons).