Sécurité et SGBD : ce qu'il faut retenir lors du choix des outils de sécurité

Sécurité et SGBD : ce qu'il faut retenir lors du choix des outils de sécurité

Je m'appelle Denis Rozhkov, je suis responsable du développement logiciel chez Gazinformservice, dans l'équipe produit Jatoba. La législation et les réglementations des entreprises imposent certaines exigences en matiÚre de sécurité du stockage des données. Personne ne souhaite que des tiers aient accÚs à des informations confidentielles, c'est pourquoi les questions suivantes sont importantes pour tout projet : identification et authentification, gestion de l'accÚs aux données, garantie de l'intégrité des informations dans le systÚme, journalisation des événements de sécurité. Par conséquent, je souhaite parler de quelques points intéressants concernant la sécurité du SGBD.

L'article a été préparé sur la base d'un discours prononcé à @DatabasesMeetup, organisé Solutions Cloud Mail.ru. Si vous ne voulez pas lire, vous pouvez regarder :

Voir la vidéo

L'article comportera trois parties :
  • Comment sĂ©curiser les connexions.
  • Qu'est-ce qu'un audit des actions et comment enregistrer ce qui se passe cĂŽtĂ© base de donnĂ©es et s'y connecter.
  • Comment protĂ©ger les donnĂ©es dans la base de donnĂ©es elle-mĂȘme et quelles technologies sont disponibles pour cela.

Sécurité et SGBD : ce qu'il faut retenir lors du choix des outils de sécurité
Trois composants de sécurité du SGBD : protection des connexions, audit des activités et protection des données

Sécuriser vos connexions

Vous pouvez vous connecter à la base de données directement ou indirectement via des applications Web. En rÚgle générale, l'utilisateur professionnel, c'est-à-dire la personne qui travaille avec le SGBD, interagit indirectement avec celui-ci.

Avant de parler de protection des connexions, vous devez rĂ©pondre Ă  des questions importantes qui dĂ©terminent la maniĂšre dont les mesures de sĂ©curitĂ© seront structurĂ©es :

  • Un utilisateur professionnel Ă©quivaut-il Ă  un utilisateur de SGBD ?
  • si l'accĂšs aux donnĂ©es du SGBD est fourni uniquement via une API que vous contrĂŽlez, ou si les tables sont accessibles directement ;
  • si le SGBD est attribuĂ© Ă  un segment protĂ©gĂ© distinct, qui interagit avec lui et comment ;
  • si les couches de pooling/proxy et intermĂ©diaires sont utilisĂ©es, ce qui peut modifier les informations sur la façon dont la connexion est Ă©tablie et qui utilise la base de donnĂ©es.

Voyons maintenant quels outils peuvent ĂȘtre utilisĂ©s pour sĂ©curiser les connexions :

  1. Utilisez des solutions de classe de pare-feu de base de données. Une couche de protection supplémentaire augmentera, au minimum, la transparence de ce qui se passe dans le SGBD et, au maximum, vous pourrez fournir une protection supplémentaire des données.
  2. Utilisez des politiques de mot de passe. Leur utilisation dépend de la maniÚre dont votre architecture est construite. Dans tous les cas, un mot de passe dans le fichier de configuration d'une application web qui se connecte au SGBD ne suffit pas pour la protection. Il existe un certain nombre d'outils SGBD qui vous permettent de contrÎler que l'utilisateur et le mot de passe nécessitent une mise à jour.

    Vous pouvez en savoir plus sur les fonctions d'évaluation des utilisateurs ici, vous pouvez également vous renseigner sur les évaluateurs de vulnérabilités MS SQL ici

  3. Enrichissez le contexte de la séance avec les informations nécessaires. Si la session est opaque, vous ne comprenez pas qui travaille dans le SGBD dans son cadre, vous pouvez, dans le cadre de l'opération en cours, ajouter des informations sur qui fait quoi et pourquoi. Ces informations sont visibles dans l'audit.
  4. Configurez SSL si vous n'avez pas de sĂ©paration rĂ©seau entre le SGBD et les utilisateurs finaux ; il ne se trouve pas dans un VLAN distinct. Dans de tels cas, il est impĂ©ratif de protĂ©ger le canal entre le consommateur et le SGBD lui-mĂȘme. Des outils de sĂ©curitĂ© sont Ă©galement disponibles en open source.

Comment cela affectera-t-il les performances du SGBD ?

Regardons l'exemple de PostgreSQL pour voir comment SSL affecte la charge du processeur, augmente les timings et diminue le TPS, et s'il consommera trop de ressources si vous l'activez.

Charger PostgreSQL à l'aide de pgbench est un programme simple permettant d'exécuter des tests de performances. Il exécute une seule séquence de commandes de maniÚre répétée, éventuellement lors de sessions de base de données parallÚles, puis calcule le taux de transaction moyen.

Test 1 sans SSL et en utilisant SSL — la connexion est Ă©tablie pour chaque transaction :

pgbench.exe --connect -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres sslmode=require 
sslrootcert=rootCA.crt sslcert=client.crt sslkey=client.key"

vs

pgbench.exe --connect -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres"

Test 2 sans SSL et en utilisant SSL — toutes les transactions sont effectuĂ©es en une seule connexion :

pgbench.exe -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres sslmode=require
sslrootcert=rootCA.crt sslcert=client.crt sslkey=client.key"

vs

pgbench.exe -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres"

Autres réglages:

scaling factor: 1
query mode: simple
number of clients: 10
number of threads: 1
number of transactions per client: 5000
number of transactions actually processed: 50000/50000

Résultats de test:

 
PAS DE SSL
SSL

Une connexion est établie pour chaque transaction

latence moyenne
171.915 ms
187.695 ms

tps incluant l'établissement des connexions
58.168112
53.278062

tps hors établissement de connexions
64.084546
58.725846

Processeur
24 %
28 %

Toutes les transactions sont effectuées en une seule connexion

latence moyenne
6.722 ms
6.342 ms

tps incluant l'établissement des connexions
1587.657278
1576.792883

tps hors établissement de connexions
1588.380574
1577.694766

Processeur
17 %
21 %

À faibles charges, l'influence du SSL est comparable Ă  l'erreur de mesure. Si la quantitĂ© de donnĂ©es transfĂ©rĂ©es est trĂšs importante, la situation peut ĂȘtre diffĂ©rente. Si on Ă©tablit une connexion par transaction (c'est rare, gĂ©nĂ©ralement la connexion est partagĂ©e entre utilisateurs), vous avez un grand nombre de connexions/dĂ©connexions, l'impact peut ĂȘtre un peu plus important. Autrement dit, il peut y avoir des risques de diminution des performances, mais la diffĂ©rence n'est pas si grande que de ne pas utiliser de protection.

Attention, il y a une forte diffĂ©rence si vous comparez les modes de fonctionnement : vous travaillez au sein de la mĂȘme session ou dans des sessions diffĂ©rentes. C'est comprĂ©hensible : des ressources sont dĂ©pensĂ©es pour crĂ©er chaque connexion.

Nous avons eu un cas oĂč nous avons connectĂ© Zabbix en mode confiance, c'est-Ă -dire que md5 n'a pas Ă©tĂ© vĂ©rifiĂ©, il n'y avait pas besoin d'authentification. Ensuite, le client a demandĂ© d'activer le mode d'authentification md5. Cela mettait une lourde charge sur le processeur et les performances diminuaient. Nous avons commencĂ© Ă  chercher des moyens d'optimiser. L'une des solutions possibles au problĂšme consiste Ă  implĂ©menter des restrictions de rĂ©seau, Ă  crĂ©er des VLAN sĂ©parĂ©s pour le SGBD, Ă  ajouter des paramĂštres pour indiquer clairement qui se connecte d'oĂč et Ă  supprimer l'authentification. Vous pouvez Ă©galement optimiser les paramĂštres d'authentification pour rĂ©duire les coĂ»ts lors de l'activation de l'authentification, mais en gĂ©nĂ©ral, l'utilisation de diffĂ©rentes mĂ©thodes d'authentification affecte les performances et nĂ©cessite de prendre en compte ces facteurs lors de la conception de la puissance de calcul des serveurs (matĂ©riel) pour le SGBD.

Conclusion : dans un certain nombre de solutions, mĂȘme de petites nuances d'authentification peuvent grandement affecter le projet et c'est mauvais lorsque cela ne devient clair qu'une fois mis en Ɠuvre en production.

Audit des actions

L'audit ne peut pas ĂȘtre seulement un SGBD. Un audit consiste Ă  obtenir des informations sur ce qui se passe dans diffĂ©rents segments. Il peut s'agir soit d'un pare-feu de base de donnĂ©es, soit du systĂšme d'exploitation sur lequel le SGBD est construit.

Dans les SGBD commerciaux au niveau de l'entreprise, tout va bien avec l'audit, mais en open source - pas toujours. Voici ce que PostgreSQL propose :

  • journal par dĂ©faut - journalisation intĂ©grĂ©e ;
  • extensions : pgaudit - si la journalisation par dĂ©faut ne vous suffit pas, vous pouvez utiliser des paramĂštres distincts qui rĂ©solvent certains problĂšmes.

Ajout au reportage dans la vidéo :

"La journalisation des instructions de base peut ĂȘtre fournie par une fonction de journalisation standard avec log_statement = all.

Ceci est acceptable pour la surveillance et d’autres utilisations, mais ne fournit pas le niveau de dĂ©tail gĂ©nĂ©ralement requis pour l’audit.

Il ne suffit pas d'avoir une liste de toutes les opérations effectuées sur la base de données.

Il devrait Ă©galement ĂȘtre possible de trouver des dĂ©clarations spĂ©cifiques qui intĂ©ressent l'auditeur.

La journalisation standard montre ce que l'utilisateur a demandĂ©, tandis que pgAudit se concentre sur les dĂ©tails de ce qui s'est passĂ© lorsque la base de donnĂ©es a exĂ©cutĂ© la requĂȘte.

Par exemple, l'auditeur peut vouloir vĂ©rifier qu'une table particuliĂšre a Ă©tĂ© créée dans une fenĂȘtre de maintenance documentĂ©e.

Cela peut sembler une tĂąche simple avec un audit et grep de base, mais que se passerait-il si on vous prĂ©sentait quelque chose comme cet exemple (intentionnellement dĂ©routant) :

FAIRE$$
COMMENCER
EXÉCUTER 'CRÉER une importation de TABLE' || 'ant_table(id int)';
FIN$$ ;

La journalisation standard vous donnera ceci :

LOG : instruction : FAIRE $$
COMMENCER
EXÉCUTER 'CRÉER une importation de TABLE' || 'ant_table(id int)';
FIN$$ ;

Il semble que trouver la table qui vous intĂ©resse peut nĂ©cessiter certaines connaissances en code dans les cas oĂč les tables sont créées dynamiquement.

Ce n’est pas idĂ©al, car il serait prĂ©fĂ©rable d’effectuer simplement une recherche par nom de table.

C'est lĂ  que pgAudit s'avĂšre utile.

Pour la mĂȘme entrĂ©e, il produira cette sortie dans le journal :

AUDIT : SESSION,33,1,FONCTION,DO,,,"DO $$
COMMENCER
EXÉCUTER 'CRÉER une importation de TABLE' || 'ant_table(id int)';
FIN$$;"
AUDIT : SESSION,33,2,DDL,CREATE TABLE,TABLE,public.important_table,CREATE TABLE important_table (id INT)

Non seulement le bloc DO est enregistré, mais également le texte intégral de CREATE TABLE avec le type d'instruction, le type d'objet et le nom complet, ce qui facilite la recherche.

Lors de la journalisation des instructions SELECT et DML, pgAudit peut ĂȘtre configurĂ© pour enregistrer une entrĂ©e distincte pour chaque relation rĂ©fĂ©rencĂ©e dans l'instruction.

Aucune analyse n'est requise pour trouver toutes les instructions qui touchent une table particuliĂšre (*). "

Comment cela affectera-t-il les performances du SGBD ?

Exécutons des tests avec l'audit complet activé et voyons ce qui arrive aux performances de PostgreSQL. Activons la journalisation maximale de la base de données pour tous les paramÚtres.

On ne change quasiment rien dans le fichier de configuration, le plus important est d'activer le mode debug5 pour obtenir un maximum d'informations.

postgresql.conf

log_destination = 'stderr'
logging_collector = activé
log_truncate_on_rotation = activé
log_rotation_age = 1j
log_rotation_size = 10 Mo
log_min_messages = débogage5
log_min_error_statement = débogage5
log_min_duration_statement = 0
debug_print_parse = activé
debug_print_rewrite = activé
debug_print_plan = activé
debug_pretty_print = activé
log_checkpoints = activé
log_connections = activé
log_disconnections = activé
log_duration = activé
log_hostname = activé
log_lock_waits = activé
log_replication_commands = activé
log_temp_files = 0
log_timezone = 'Europe/Moscou'

Sur un SGBD PostgreSQL avec des paramĂštres de 1 CPU, 2,8 GHz, 2 Go de RAM, 40 Go de disque dur, nous effectuons trois tests de charge Ă  l'aide des commandes :

$ pgbench -p 3389 -U postgres -i -s 150 benchmark
$ pgbench -p 3389 -U postgres -c 50 -j 2 -P 60 -T 600 benchmark
$ pgbench -p 3389 -U postgres -c 150 -j 2 -P 60 -T 600 benchmark

Résultats de test:

Pas de journalisation
Avec journalisation

Temps total de remplissage de la base de données
43,74 sec
53,23 sec

vol
24 %
40 %

Processeur
72 %
91 %

Test 1 (50 connexions)

Nombre de transactions en 10 minutes
74169
32445

Transactions/s
123
54

Latence moyenne
405 ms
925 ms

Test 2 (150 connexions dont 100 possibles)

Nombre de transactions en 10 minutes
81727
31429

Transactions/s
136
52

Latence moyenne
550 ms
1432 ms

À propos des tailles

Taille de la base de données
2251 MB
2262 MB

Taille du journal de base de données
0 MB
4587 MB

En rĂ©sumĂ© : un audit complet n’est pas trĂšs bon. Les donnĂ©es de l'audit seront aussi volumineuses que les donnĂ©es de la base de donnĂ©es elle-mĂȘme, voire plus. La quantitĂ© de journalisation gĂ©nĂ©rĂ©e lorsque vous travaillez avec un SGBD est un problĂšme courant en production.

Regardons d'autres paramĂštres :

  • La vitesse ne change pas beaucoup : sans journalisation - 43,74 secondes, avec journalisation - 53,23 secondes.
  • Les performances de la RAM et du processeur en souffriront, car vous devrez gĂ©nĂ©rer un fichier d'audit. Cela se remarque Ă©galement en termes de productivitĂ©.

À mesure que le nombre de connexions augmente, les performances se dĂ©tĂ©rioreront naturellement lĂ©gĂšrement.

Dans les entreprises avec audit, c'est encore plus difficile :

  • il y a beaucoup de donnĂ©es ;
  • l'audit est nĂ©cessaire non seulement via syslog dans SIEM, mais Ă©galement dans les fichiers : si quelque chose arrive Ă  syslog, il doit y avoir un fichier proche de la base de donnĂ©es dans laquelle les donnĂ©es sont enregistrĂ©es ;
  • une Ă©tagĂšre sĂ©parĂ©e est nĂ©cessaire pour l'audit afin de ne pas gaspiller de disques d'E/S, car cela prend beaucoup de place ;
  • Il arrive que les employĂ©s chargĂ©s de la sĂ©curitĂ© de l'information aient besoin des normes GOST partout, ils ont besoin d'une identification par l'État.

Restreindre l'accÚs aux données

Examinons les technologies utilisées pour protéger les données et y accéder dans les SGBD commerciaux et open source.

Que pouvez-vous gĂ©nĂ©ralement utiliser :

  1. Cryptage et obscurcissement des procĂ©dures et des fonctions (Wrapping) - c'est-Ă -dire des outils et utilitaires distincts qui rendent illisible le code lisible. C'est vrai, alors il ne peut ĂȘtre ni modifiĂ© ni refactorisĂ©. Cette approche est parfois requise au moins du cĂŽtĂ© du SGBD - la logique des restrictions de licence ou la logique d'autorisation est cryptĂ©e prĂ©cisĂ©ment au niveau de la procĂ©dure et de la fonction.
  2. La limitation de la visibilitĂ© des donnĂ©es par lignes (RLS) se produit lorsque diffĂ©rents utilisateurs voient une table, mais une composition diffĂ©rente de lignes, c'est-Ă -dire que quelque chose ne peut pas ĂȘtre montrĂ© Ă  quelqu'un au niveau de la ligne.
  3. La modification des données affichées (masquage) se produit lorsque les utilisateurs d'une colonne du tableau voient soit des données, soit uniquement des astérisques, c'est-à-dire que pour certains utilisateurs, les informations seront fermées. La technologie détermine quel utilisateur voit quoi en fonction de son niveau d'accÚs.
  4. Le contrĂŽle d'accĂšs de sĂ©curitĂ© DBA/Application DBA/DBA consiste plutĂŽt Ă  restreindre l'accĂšs au SGBD lui-mĂȘme, c'est-Ă -dire que les employĂ©s chargĂ©s de la sĂ©curitĂ© des informations peuvent ĂȘtre sĂ©parĂ©s des administrateurs de bases de donnĂ©es et des administrateurs d'applications. Il existe peu de technologies de ce type en open source, mais elles sont nombreuses dans les SGBD commerciaux. Ils sont nĂ©cessaires lorsque de nombreux utilisateurs ont accĂšs aux serveurs eux-mĂȘmes.
  5. Restreindre l'accÚs aux fichiers au niveau du systÚme de fichiers. Vous pouvez accorder des droits et privilÚges d'accÚs aux répertoires afin que chaque administrateur ait accÚs uniquement aux données nécessaires.
  6. AccÚs obligatoire et effacement de la mémoire - ces technologies sont rarement utilisées.
  7. Le chiffrement de bout en bout directement à partir du SGBD est un chiffrement cÎté client avec gestion des clés cÎté serveur.
  8. Cryptage des données. Par exemple, le chiffrement en colonnes consiste à utiliser un mécanisme qui chiffre une seule colonne de la base de données.

Comment cela affecte-t-il les performances du SGBD ?

Regardons l'exemple du chiffrement en colonnes dans PostgreSQL. Il existe un module pgcrypto, il permet de stocker les champs sélectionnés sous forme cryptée. Ceci est utile lorsque seules certaines données sont utiles. Pour lire les champs chiffrés, le client transmet une clé de déchiffrement, le serveur décrypte les données et les renvoie au client. Sans la clé, personne ne peut rien faire avec vos données.

Testons avec pgcrypto. CrĂ©ons une table avec des donnĂ©es cryptĂ©es et des donnĂ©es rĂ©guliĂšres. Vous trouverez ci-dessous les commandes pour crĂ©er des tables, dans la toute premiĂšre ligne se trouve une commande utile - crĂ©er l'extension elle-mĂȘme avec l'enregistrement du SGBD :

CREATE EXTENSION pgcrypto;
CREATE TABLE t1 (id integer, text1 text, text2 text);
CREATE TABLE t2 (id integer, text1 bytea, text2 bytea);
INSERT INTO t1 (id, text1, text2)
VALUES (generate_series(1,10000000), generate_series(1,10000000)::text, generate_series(1,10000000)::text);
INSERT INTO t2 (id, text1, text2) VALUES (
generate_series(1,10000000),
encrypt(cast(generate_series(1,10000000) AS text)::bytea, 'key'::bytea, 'bf'),
encrypt(cast(generate_series(1,10000000) AS text)::bytea, 'key'::bytea, 'bf'));

Essayons ensuite de créer un échantillon de données de chaque table et d'examiner les délais d'exécution.

Sélection dans un tableau sans fonction de cryptage:

psql -c "timing" -c "select * from t1 limit 1000;" "host=192.168.220.129 dbname=taskdb
user=postgres sslmode=disable" > 1.txt

Le chronomÚtre est allumé.

  identifiant | texte1 | texte2
——+——-+——-
1 | 1 | 1
2 | 2 | 2
3 | 3 | 3
...
997 | 997 | 997
998 | 998 | 998
999 | 999 | 999
1000 | 1000 | 1000
(1000 lignes)

Temps : 1,386 ms

SĂ©lection dans un tableau avec fonction de cryptage :

psql -c "timing" -c "select id, decrypt(text1, 'key'::bytea, 'bf'),
decrypt(text2, 'key'::bytea, 'bf') from t2 limit 1000;"
"host=192.168.220.129 dbname=taskdb user=postgres sslmode=disable" > 2.txt

Le chronomÚtre est allumé.

  identifiant | dĂ©crypter | dĂ©crypter
——+—————+————
1 | x31 | x31
2 | x32 | x32
3 | x33 | x33
...
999 | x393939 | x393939
1000 | x31303030 | x31303030
(1000 lignes)

Temps : 50,203 ms

Résultats de test:

 
Sans cryptage
Pgcrypto (décrypter)

Échantillon de 1000 XNUMX lignes
1,386 ms
50,203 ms

Processeur
15 %
35 %

vol
 
+ 5%

Le chiffrement a un impact important sur les performances. On peut constater que le délai a augmenté, car les opérations de décryptage des données cryptées (et le décryptage est généralement encore intégré dans votre logique) nécessitent des ressources importantes. Autrement dit, l'idée de chiffrer toutes les colonnes contenant certaines données entraßne une diminution des performances.

Cependant, le chiffrement n’est pas une solution miracle qui rĂ©soudra tous les problĂšmes. Les donnĂ©es dĂ©cryptĂ©es et la clĂ© de dĂ©cryptage pendant le processus de dĂ©cryptage et de transmission des donnĂ©es se trouvent sur le serveur. Par consĂ©quent, les clĂ©s peuvent ĂȘtre interceptĂ©es par une personne disposant d'un accĂšs complet au serveur de base de donnĂ©es, comme un administrateur systĂšme.

Lorsqu'il existe une clĂ© pour toute la colonne pour tous les utilisateurs (mĂȘme si ce n'est pas pour tous, mais pour les clients d'un ensemble limitĂ©), ce n'est pas toujours bon et correct. C'est pourquoi ils ont commencĂ© Ă  effectuer un chiffrement de bout en bout, dans le SGBD, ils ont commencĂ© Ă  envisager des options de chiffrement des donnĂ©es cĂŽtĂ© client et serveur, et ces mĂȘmes stockages de coffre-fort de clĂ©s sont apparus - des produits distincts qui assurent la gestion des clĂ©s sur le SGBD. cĂŽtĂ©.

Sécurité et SGBD : ce qu'il faut retenir lors du choix des outils de sécurité
Un exemple d'un tel cryptage dans MongoDB

Fonctionnalités de sécurité dans les SGBD commerciaux et open source

fonctions
type
Politique de mot de passe
Audit
Protéger le code source des procédures et fonctions
RLS
Chiffrement

Oracle
commercial
+
+
+
+
+

MsSQL
commercial
+
+
+
+
+

Jatoba
commercial
+
+
+
+
extensions

PostgreSQL
Gratuit
extensions
extensions
-
+
extensions

MongoDB
Gratuit
-
+
-
-
Disponible uniquement dans MongoDB Enterprise

Le tableau est loin d'ĂȘtre complet, mais la situation est la suivante : dans les produits commerciaux, les problĂšmes de sĂ©curitĂ© sont rĂ©solus depuis longtemps, dans l'open source, en rĂšgle gĂ©nĂ©rale, certains modules complĂ©mentaires sont utilisĂ©s pour la sĂ©curitĂ©, de nombreuses fonctions manquent , il faut parfois ajouter quelque chose. Par exemple, les politiques de mot de passe - PostgreSQL a de nombreuses extensions diffĂ©rentes (1, 2, 3, 4, 5), qui mettent en Ɠuvre des politiques de mots de passe, mais, Ă  mon avis, aucune d'entre elles ne couvre tous les besoins du segment des entreprises nationales.

Que faire si vous n’avez ce dont vous avez besoin nulle part? Par exemple, vous souhaitez utiliser un SGBD spĂ©cifique qui ne possĂšde pas les fonctions requises par le client.

Vous pouvez ensuite utiliser des solutions tierces qui fonctionnent avec différents SGBD, par exemple Crypto DB ou Garda DB. Si nous parlons de solutions du segment national, ils connaissent mieux les GOST que l'open source.

La deuxiĂšme option consiste Ă  Ă©crire vous-mĂȘme ce dont vous avez besoin, Ă  mettre en Ɠuvre l'accĂšs aux donnĂ©es et le cryptage dans l'application au niveau de la procĂ©dure. Certes, ce sera plus difficile avec GOST. Mais en gĂ©nĂ©ral, vous pouvez masquer les donnĂ©es selon vos besoins, les mettre dans un SGBD, puis les rĂ©cupĂ©rer et les dĂ©chiffrer selon vos besoins, directement au niveau de l'application. Dans le mĂȘme temps, rĂ©flĂ©chissez immĂ©diatement Ă  la maniĂšre dont vous protĂ©gerez ces algorithmes dans l'application. À notre avis, cela devrait ĂȘtre fait au niveau du SGBD, car cela fonctionnera plus rapidement.

Ce rapport a été présenté pour la premiÚre fois à Meetup @Bases de données par Mail.ru Cloud Solutions. Regarder vidéo d'autres performances et abonnez-vous aux annonces d'événements sur Telegram Autour de Kubernetes chez Mail.ru Group.

Quoi d'autre Ă  lire sur le sujet:

  1. Plus que Ceph : stockage en bloc cloud MCS.
  2. Comment choisir une base de données pour un projet afin de ne pas avoir à choisir à nouveau.

Source: habr.com

Achetez un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Achetez un hĂ©bergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster