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'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, 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_id
inspection_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 duinspector_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 leinspector_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, vousSuffix(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 dontSSN
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
champsFirstName
et, vous pouvez créer unNameTag
champ virtuel, construit à partir de la première lettre duFirstName
champ, suivie du champ, leLastName
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êtesNameTag=mjones
sur le champ virtuel.Au moins un des champs source doit être chiffré. L'
FirstName
un ou l'autreLastName
pourrait être chiffré, ou les deux pourraient être chiffrés. Tous les champs source en texte brut doivent être marqués en tant queSIGN_ONLY
ouSIGN_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_id
inspection_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 lesunit
champsinspector_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 surinspector_id_last4
etinspector_id_last4.unit
, créez d'abord des balises standard distinctes pour lesunit
champsinspector_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_id
inspection_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 leinspector_id_last4
champ. Leinspector_id_last4
champ est marquéENCRYPT_AND_SIGN
dans les actions cryptographiques. Toutes les parties cryptées nécessitent leur propre balise standard. Leinspection_date
champ est marquéSIGN_ONLY
et ne nécessite pas de balise standard. Créez ensuite une balise composée à partir duinspection_date
champ et de la baliseinspector_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 uneinspection_date
contrainte particulière parinspector_id_last4
ouinspector_id_last4.unit
, créez d'abord des balises standard distinctes pour les champsinspector_id_last4
etunit
. Créez ensuite une balise composée à partir duinspection_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.