Choisir un type de balise - AWS Chiffrement des bases SDK

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

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.

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, vous devez configurer un index secondaire pour chaque balise avant de pouvoir effectuer une recherche dans les champs chiffrés. Pour plus d’informations, consultez Configuration des index secondaires avec des balises.

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 des balises composées, à l'exception de l'CONTAINSopé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, 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 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

Les balises standard peuvent uniquement effectuer des recherches d'égalité. Vous pouvez utiliser des balises standard pour effectuer les requêtes suivantes.

Interrogez un seul champ chiffré

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

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_idinspection_date,inspector_id_last4, etunit. 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é primairework_id. Les unit champs inspector_id_last4 et sont marqués ENCRYPT_AND_SIGN dans les actions cryptographiques.

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.

Interroger un champ virtuel

Un champ virtuel 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é.

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êtesLast4SSN=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
Note

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 et de corrélation 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'FirstNameun 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.

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.

Balises composées

Les balises composées 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

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.

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_idinspection_date,inspector_id_last4, etunit. 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é primairework_id. Les unit champs inspector_id_last4 et sont marqués ENCRYPT_AND_SIGN dans les actions cryptographiques.

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 exactesinspector_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 surinspector_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 etinspector_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 surinspector_id_last4.unit.

Pour obtenir de l'aide sur la configuration des balises composées, consultez la section Configuration des balises composées.

Interrogez une combinaison de champs chiffrés et de champs en texte brut sur un seul index

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.

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.

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_idinspection_date,inspector_id_last4, etunit. 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é primairework_id. Les unit champs inspector_id_last4 et sont marqués ENCRYPT_AND_SIGN dans les actions cryptographiques.

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

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 ouinspector_id_last4.unit, créez d'abord des balises standard distinctes pour les champs inspector_id_last4 etunit. 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.