MongoDB Sécurité, surveillance et sauvegarde (Mongodump)

L'un des concepts clés de MongoDB est la gestion de bases de données. Des aspects importants tels que la sécurité, la sauvegarde, l'accès aux bases de données sont autant de concepts importants en matière d'administration de bases de données.

MongoDB Aperçu de la sécurité

MongoDB a la capacité de définir des mécanismes de sécurité pour les bases de données. Par défaut, on ne voudrait pas que tout le monde ait un accès libre à chaque base de données MongoDB, d'où la nécessité d'avoir une sorte de mécanisme de sécurité dans MongoDB est important.

Voici les meilleures pratiques lors de la mise en œuvre de la sécurité dans les bases de données

  1. Activer le contrôle d'accès – Créez des utilisateurs afin que toutes les applications et tous les utilisateurs soient obligés de disposer d'une sorte de mécanisme d'authentification lors de l'accès aux bases de données sur MongoDB.
  2. Configurer le contrôle d'accès basé sur les rôles – Parfois, il peut y avoir un regroupement logique d'autorisations qui peuvent être requises, qui peuvent être regroupées en rôles. Les utilisateurs peuvent ensuite être affectés à ces rôles.
  3. Essayez de configurer MongoDB utiliser une sorte de protocole de cryptage tel que TLS ou SSL. Ces protocoles peuvent être utilisés pour chiffrer le trafic qui circule entre le client et l'environnement mongo DB.
  4. Configurer l'audit – Les administrateurs ont généralement besoin de savoir qui fait quoi, ce qui permet d'analyser les problèmes ultérieurement. La meilleure façon est d'activer l'audit dans MongoDB.
  5. Exécutez l'instance de serveur MongDB avec un identifiant utilisateur distinct qui a accès aux ressources requises sur l'environnement du serveur.

Procédures de sauvegarde Mongodb – mongodump

Lorsque vous travaillez avec MongDB, il est important de toujours vous assurer qu'une procédure de sauvegarde est en place au cas où les données contenues MongoDB est corrompu pour une raison quelconque.

Vous trouverez ci-dessous les mécanismes de sauvegarde disponibles depuis l'intérieur MongoDB

  1. Sauvegarde en copiant les fichiers de données sous-jacents – C’est probablement le mécanisme le plus simple, il suffit de copier les fichiers de données sur lesquels MongoDB réside et copiez-le vers un autre emplacement qui devrait idéalement être un autre serveur.
  2. Sauvegarder une base de données avec mongodump – L'outil mongodump lit les données d'un MongoDB base de données et crée des fichiers BSON haute fidélité. Ce qu'il faut prendre en compte, c'est que si l'ensemble de données est volumineux, mongodump peut être très gourmand en ressources. Pour atténuer ce problème, l'utilitaire doit donc être exécuté sur un serveur secondaire.
  3. MongoDB Sauvegarde du gestionnaire de cloud - MongoDB Cloud Manager sauvegarde continuellement MongoDB jeux de réplicas et clusters partitionnés en lisant les données oplog à partir du MongoDB sûr et sécurisé. MongoDB Cloud Manager peut créer une récupération à un moment précis en stockant les données oplog afin de pouvoir créer une restauration à tout moment pour un jeu de réplicas ou un cluster partitionné particulier.

Surveillance MongoDB

La surveillance est l'une des activités administratives les plus critiques dans MongoDB. En effet, vous pouvez être plus proactif en surveillant l’environnement pour détecter d’éventuels problèmes qui pourraient survenir.

Vous trouverez ci-dessous quelques exemples de mise en œuvre du suivi

  1. mongostat vous dira combien d'opérations de base de données telles que l'insertion, la requête, la mise à jour, la suppression, etc. se produisent réellement sur le serveur. Cela donnera une bonne idée de la charge gérée par le serveur et indiquera si vous avez besoin de ressources supplémentaires sur le serveur ou peut-être de serveurs supplémentaires pour répartir la charge.
  2. mongotop suit et rapporte l'activité de lecture et d'écriture actuelle d'un MongoDB par exemple, et rapporte ces statistiques par collection.
  3. MongoDB fournit une interface Web qui expose les informations de diagnostic et de surveillance dans une simple page Web. On peut accéder à l'URL ci-dessous sur votre serveur local pour ouvrir l'utilitaire d'administration Web. http://localhost:28017
  4. La commande serverStatus, ou db.serverStatus() depuis le shell, renvoie un aperçu de l'état de la base de données, avec des détails sur l'utilisation du disque, l'utilisation de la mémoire, les connexions établies avec le MongoDB environnement, etc...

MongoDB Considérations sur l’indexation et les performances

  1. Les index sont très importants dans toute base de données et peuvent être utilisés pour améliorer l'efficacité des requêtes de recherche dans MongoDB. Si vous effectuez continuellement des recherches dans votre document, il est alors préférable d'ajouter des index sur les champs du document qui sont utilisés dans les critères de recherche.
  2. Essayez de toujours limiter le nombre de résultats de requête renvoyés. Supposons que vous ayez 2 noms de champs dans un document, mais que vous souhaitiez simplement voir 2 champs du document. Assurez-vous ensuite que votre requête vise uniquement à afficher les 2 champs dont vous avez besoin et non tous les champs.
  3. Si vous souhaitez afficher certaines valeurs de champs, utilisez uniquement ces champs dans la requête. N'interrogez pas tous les champs de la collection s'ils ne sont pas obligatoires.

Configurez MongoDB avec authentification Kerberos

Alors que l'autorisation vise à garantir l'accès du client au système, l'authentification vérifie le type d'accès dont dispose le client. MongoDB, une fois qu'ils ont été autorisés dans le système.

Il existe différents mécanismes d’authentification, voici quelques-uns d’entre eux.

MongoDB Authentification à l'aide de certificats x.509

Utilisez des certificats x.509 pour authentifier le client – ​​Un certificat est essentiellement une signature de confiance entre le client et le client. MongoDB Server.

Ainsi, au lieu de saisir un nom d'utilisateur et un mot de passe pour se connecter au serveur, un certificat est transmis entre le client et le serveur. MongoDB Serveur. Le client disposera essentiellement d'un certificat client qui sera transmis au serveur pour s'authentifier sur le serveur. Chaque certificat client correspond à un seul MongoDB utilisateur. Ainsi, chaque utilisateur de MongoDB doit avoir son propre certificat afin d'être authentifié auprès du MongoDB serveur.

Pour garantir que cela fonctionne, les étapes suivantes doivent être suivies :

  1. Un certificat valide doit être acheté auprès d'une autorité tierce valide et installé sur le MongoDB Server.
  2. Le certificat client doit avoir les propriétés suivantes (une seule autorité de certification (CA) doit émettre les certificats pour le client et le serveur. Les certificats client doivent contenir les champs suivants : keyUsage et extendKeyUsage.
  3. Chaque utilisateur qui se connecte au serveur MongDB doit disposer d'un certificat distinct.

Comment configurer MongoDB avec authentification Kerberos

Voici les étapes à configurer MongoDB avec l'authentification Kerberos activée Windows:

Étape 1) Configurez MongoDB avec l'authentification Kerberos activée Windows
Kerberos est un mécanisme d'authentification utilisé dans les grands environnements client-serveur.

Il s'agit d'un mécanisme très sécurisé dans lequel le mot de passe n'est autorisé que s'il est crypté. Bien, MongoDB a la possibilité de s’authentifier auprès d’un système existant basé sur Kerberos.

Étape 2) Processus serveur mongod.exe
Ensuite, démarrez le processus du serveur mongod.exe.

Étape 3) processus client mongo.exe et connexion
Ensuite, démarrez le processus client mongo.exe et connectez-vous au MongoDB serveur.

Étape 4) Ajouter un utilisateur dans MongoDB
Il s'agit essentiellement du nom principal Kerberos de la base de données $external. La base de données $external est une base de données spéciale qui indique MongoDB pour authentifier cet utilisateur auprès d'un système Kerberos au lieu de son propre système interne.

Configurez MongoDB avec authentification Kerberos

use $external
db.createUser(
{
	user: "user1@example.NET",

	roles:[
	{
		role: "read" , db:"Marketing"}
		
	}
		  ]
}

Étape 5) Commencez à utiliser la commande
Démarrez mongod.exe avec la prise en charge de Kerberos à l'aide de la commande suivante

mongod.exe –auth –setParameter authenticationMechanisms=GSSAPI

Et puis vous pouvez maintenant vous connecter avec l'utilisateur Kerberos et l'authentification Kerberos à la base de données.

Résumé

  • Il est très important de mettre en œuvre la sécurité dans les bases de données pour garantir que les données de la base de données restent en sécurité.
  • Les utilisateurs peuvent être créés dans la base de données avec la commande createUser. Des rôles spécifiques peuvent être attribués aux utilisateurs pour leur donner des autorisations spécifiques sur la base de données elle-même.
  • Des administrateurs peuvent être ajoutés pour toutes les bases de données uniquement pour des bases de données spécifiques. Ceci est réalisé en attribuant le rôle userAdmin ou userAdminAnyDatabase.
  • Sauvegardez toujours votre MongoDB environnement afin qu'en cas de sinistre, les données soient facilement récupérables.
  • Surveillez toujours votre MongoDB environnement pour être plus proactif et détecter les problèmes avant qu’ils ne surviennent.
  • Il existe différents mécanismes d'authentification pour assurer une meilleure sécurité dans les bases de données. Un exemple est l'utilisation de certificats pour authentifier les utilisateurs au lieu d'utiliser des noms d'utilisateur et des mots de passe.