Je discutais avec quelqu'un des moyens d'empêcher la divulgation de données à partir d'un compte administrateur compromis sur un serveur de base de données. L'autre personne a proposé de chiffrer les données au repos dans la base de données. Cela semble être une bonne idée, mais je ne savais pas si cela protégerait les données dans ce scénario.
Ma pensée est que si l'attaquant a un compte administrateur, il aura également la possibilité d'accéder à la clé de cryptage. Dans une configuration typique, serait-ce le cas? Le système pourrait-il être conçu de manière à ne pas l'être, tout en étant pratique à administrer et à utiliser? Je pouvais voir que l'administrateur fournissait la clé lorsqu'il se connectait, mais j'ignore les implications de cette sécurité ...
Mon modèle de menace est le suivant: le nom d'utilisateur et le mot de passe d'un compte administrateur légitime sont compromis. Notre attaquant utilise ce compte pour se connecter à distance et télécharger la base de données. Je comprends que MFA et d'autres contrôles d'accès protégeraient ici, mais supposons qu'ils ont échoué ou ont été contournés. Je suis simplement curieux de voir l'effet du cryptage ici.
Maintenant, je me rends compte que cela se résumerait certainement aux détails spécifiques à l'implémentation, mais je ne suis pas très familier avec l'administration de la base de données, donc j'ai du mal à fournir une configuration détaillée pour un système hypothétique.
Oui, un tel système existe; cela s'appelle Cryptage au niveau de l'application . Dans ce système, les clés de chiffrement (ou au moins la clé de chiffrement par clé ou KEK) ne sont disponibles que pour l'application. Les données sont chiffrées par l'application avant d'être stockées dans la base de données, et les blobs chiffrés sont récupérés de la base de données pour être déchiffrés par l'application.
L'avantage de ceci est une sorte de double contrôle - les DBA, qui peuvent effectuer des actions en masse contre la base de données entière sans beaucoup de limitations - ne peuvent extraire que les données chiffrées. Les administrateurs d'application, qui détiennent la KEK, peuvent décrypter n'importe quoi dans la base de données, mais sont limités aux interfaces approuvées qui peuvent fonctionner au coup par coup mais pas en masse. Cela rend l'utilisation des données décryptées plus difficile à réaliser et plus facile à détecter.
Il existe également des inconvénients, principalement l'incapacité d'indexer ou de rechercher des caractéristiques en texte brut des données chiffrées dans la base de données. En outre, il nécessite que l'application et la base de données soient écrites pour la prendre en charge; contrairement au chiffrement de disque entier ou de base de données entière, ce n'est pas aussi simple que de basculer un commutateur.
Sur un serveur de base de données, deux comptes d'administrateur différents peuvent exister: le ou les comptes d'administrateur système et les comptes d'administrateur de base de données. réponse de @ gowenfawr traite déjà le cas de l'administrateur de la base de données, donc je me concentrerai sur celui de l'administrateur système.
Dans ce cas, vous avez perdu. Il n'est pas possible de protéger une machine de son administrateur, car ils ont un accès complet à n'importe quel fichier du système. Comme un serveur prend normalement en charge les redémarrages sans assistance, l'application devra être en mesure d'extraire la clé de déchiffrement de la base de données, et une personne disposant de privilèges d'administrateur devrait également pouvoir extraire cette clé, car elle pourrait usurper l'identité de l'utilisateur de l'application.
Il existe des moyens d'atténuation possibles. L'une est lorsque les données sont chiffrées côté client. Dans ce cas, l'application ne traite que les données chiffrées sans accès possible à celles en texte clair, donc même avec un accès complet à la machine et à la base de données, il n'est pas possible de déchiffrer quoi que ce soit. C'est une manière très sécurisée mais peu pratique: si les utilisateurs perdent leur clé, les données sont définitivement perdues. Pour cette raison, les administrateurs système sont généralement très réticents à l'égard d'un modèle de sécurité qui les ignore.
Toute autre voie ne peut être que de l'obscurcissement: la clé ou au moins la procédure de décryptage doit être accessible à la machine. Il peut être très complexe de le trouver afin que vous puissiez espérer pouvoir fermer la porte avant que l'attaquant puisse réellement extraire des données en texte clair, mais cela n'a de sens que si vous disposez d'un système de sécurité mondial qui analyse même les accès apparemment légitimes à déclencher un avertissement lorsqu'un compte est utilisé de manière inhabituelle. Vous vous retrouvez dans la question classique menace-risque/atténuation-coût ...
La meilleure façon serait de séparer les machines et les administrateurs pour le serveur de base de données et le serveur d'applications. De cette façon, la machine de la base de données ne connaît pas la clé de déchiffrement et l'administrateur de la base de données ne peut donc pas l'extraire. Et un administrateur d'application n'a aucun moyen d'extraire tout de la base de données. Mais il peut toujours accéder à toutes les données auxquelles l'application peut accéder. Le simple fait d'avoir différents groupes d'administrateurs a un coût et là encore la question menace-risque/atténuation-coût s'applique.
Mon modèle de menace est le suivant: le nom d'utilisateur et le mot de passe d'un compte administrateur légitime sont compromis. Notre attaquant utilise ce compte pour se connecter à distance et télécharger la base de données.
Toute connexion à distance à votre réseau doit être protégée par 2FA (en particulier toute connexion administrateur). Cela atténuerait votre menace ici. De plus, en fonction des besoins de l'entreprise, je voudrais interdire l'accès à partir du VPN VLAN à tout VLAN qui contient des données sensibles telles que la base de données en question .. .cela peut être impossible si vous êtes une entreprise virtuelle.
Mon modèle de menace est le suivant: le nom d'utilisateur et le mot de passe d'un compte administrateur légitime sont compromis. Notre attaquant utilise ce compte pour se connecter à distance et télécharger la base de données. Je comprends que MFA et d'autres contrôles d'accès protégeraient ici, mais supposons qu'ils ont échoué ou ont été contournés. Je suis simplement curieux de voir l'effet du cryptage ici.
En ce qui concerne l'utilisation du cryptage ... on pourrait stocker les clés de cryptage dans un coffre-fort sécurisé qui donne un accès basé sur les rôles selon le besoin de savoir. Cela atténuerait le risque pour la base de données spécifique en question si cet administrateur n'est pas l'administrateur de cette base de données.