Passer au contenu principal
pdf?stylesheet=default
Blackboard Help

Notions de base sur le cache Redis pour les administrateurs

Le Building Block Cache Redis permet à l'infrastructure de cache de Blackboard Learn d'utiliser Redis comme base mémoire additionnelle, en plus du tas JVM. Redis est un système de gestion de base de données clef-valeur distribué très hautes performances en open source. D'autres sociétés l'utilisent, parmi lesquelles Twitter, Craigslist, Github, Stackoverflow et Instagram.

Le Building Block Cache Redis est pris en charge par les versions Blackboard Learn 9.1 SP 11 et ultérieures.

Conditions requises

Le Building Block Cache Redis permet à l'infrastructure de cache de Blackboard Learn d'utiliser Redis comme base mémoire additionnelle, en plus du tas. Redis est un magasin clé-valeur open source avancé en réseau aux performances élevées. D'autres sociétés l'utilisent, parmi lesquelles Twitter, Craigslist, Github, Stackoverflow et Instagram.

Avantages en termes de performances, d'évolutivité et de disponibilité

  • Augmente le débit de requête et les temps de réponse

  • Aucun risque de perte de performances

  • Le cache est partagé sur tous les serveurs d'application et le sous-ensemble de données le plus récent est conservé en local

  • Le cache est disponible lorsqu'une pression s'exerce sur le tas de la machine virtuelle Java

  • Procure une certaine évolutivité au système grâce à la flexibilité de la taille du tas de la machine virtuelle Java

  • Un cache plus important et un stockage plus rapide en cas de dépassement des capacités

  • Sérialisation rapide et efficace des graph objets

  • Mises à jour et entrées asynchrones via une stratégie de cache

  • Un plus grand nombre d'opportunités de cache en plus du tas

  • Réduit les surcharges d'invalidation de cluster dans le tas

  • Caches survivant aux redémarrages et plantages d'application

  • Fonctionnalités de contrôle enrichies pour la maintenance préventive et le dépannage

Gérer et surveiller le cache du serveur Redis

B2 version 1.2 et ultérieur : le contrôle du serveur de cache Redis est accessible via le lien "Cache Redis" dans "Outils et utilitaires" sur la page principale d'administration du système.

B2 version 1.1 et antérieur : le contrôle du serveur de cache Redis est accessible via la console d'administration. Recherchez le lien "Cache Redis" dans le menu principal. Si vous n'avez pas installé la console d'administration, vous pouvez toujours accéder au contrôle du serveur de Redis en saisissant l’URL /webapps/bb-redis-cache-BBLEARN/execute/redisStats dans votre navigateur.

Quand en avez-vous besoin ?

Le Building Block Cache Redis est recommandé en cas de :

  • Fort taux d'éviction de cache
  • Pression sur les ressources système du serveur de base de données
  • Pression lors de l'utilisation du tas de la machine virtuelle Java
  • Forte utilisation du débordement dans le disque Ehcache
  • Déploiements horizontaux de Blackboard Learn à grande échelle avec fort trafic d’invalidation du cache (étape supplémentaire pour réduire la taille Ehcache et ainsi, le volume du trafic)

Comment installer et activer le Building Block Cache Redis ?

Vous pouvez utiliser la fonctionnalité Mises à jour logicielles pour installer directement le Building Block Cache Redis à partir du panneau Administrateur système. Vous pouvez également visiter la page Téléchargements des Coulisses de Blackboard pour télécharger et installer manuellement le Building Block Cache Redis.

Mises à jour logicielles

Les Mises à jour logicielles se trouvent dans le panneau Administrateur système. Lorsqu'un nouveau Building Block est disponible ou a été mis à jour, vous êtes averti par un changement d'icônes. Il vous suffit de cliquer sur l'icône des Building Blocks recommandés disponibles pour localiser le Building Block Cache Redis. Cliquez sur Installer. Une fois installé, vous devez rendre le Building Block disponible.

Téléchargements des Coulisses de Blackboard

Téléchargez le Building Block Cache Redis à partir de l'accueil des Téléchargements des Coulisses de Blackboard dans la section Building Blocks recommandés dans Learn. Enregistrez le fichier sur votre disque local. Décompressez le paquet pour accéder au fichier .war.

  1. Accédez aux Building Blocks du panneau Administrateur système.
  2. Cliquez sur  Outils installés.
  3. Dans la barre d'outils, cliquez sur Télécharger des Building Blocks.
  4. Localisez le fichier .war du Building Block Cache Redis.
  5. Cliquez sur  Soumettre.
  6. Une fois le Building Block installé vous recevez un message vous indiquant que tout s'est bien déroulé. Configurez le Building Block comme  actif  et cliquez sur  Approuver .

Comment activer Cache Redis ?

  1. Installez un serveur Redis. Pour suivre la procédure, consultez la rubrique Comment installer un serveur Redis.
  2. Rendez-vous sur la page de configuration du Building Block Cache Redis dans le panneau Administrateur système.
  3. Sélectionnez la liste des caches pour activer Redis.
  4. Indiquez les paramètres de connexion Redis dans les champs Hôte, Port et Mot de passe.
  5. Cliquez sur Soumettre.
  6. Assurez-vous que le port du serveur Redis et les ports RMI soient ouverts à la fois sur le serveur Redis ou sur les serveurs d'application Learn.
  7. Redémarrez tous les serveurs d'application Learn (le redémarrage est recommandé pour la production).
  8. Rendez-vous sur la page de l'état de la connexion Redis dans le panneau Administrateur système.
  9. Vérifiez que tous les serveurs d'application sont connectés à Redis.

Comment installer un serveur Redis

Ces étapes impliquent que vous installiez Redis sur Linux 6 Red Hat Enterprise.

  1. Préparez un serveur Linux. Nous vous recommandons fortement d'utiliser une machine ou une instance VM dédiée. N'exécutez pas Redis sous Windows ou Solaris. Blackboard Learn sous Windows et Solaris peut utiliser Redis sous Linux.
    1. Définissez le paramètre de mémoire overcommit pour le noyau Linux sur 1 en ajoutant vm.overcommit_memory=1 à /etc/sysctl.conf. Redémarrez le serveur et exécutez la commande sysctl.vm.overcommit_memory=1 pour que la modification prenne effet. Consultez le document FAQ Redis pour en savoir plus.

      Redis est un serveur de thread unique. Il avantage les processeurs rapides avec de gros caches plutôt que les multicores. Actuellement, les processeurs Intel sont les plus appropriés. La documentation Redis indique qu'il n'est pas rare de n'obtenir que la moitié des performances avec un processeur AMD Opteron par rapport à un processeur Intel Nehalem EP, Westmere EP, ou Sandy bridge similaire.

    2. Redis est limité par les performances réseau bien avant celles du processeur. Utilisez des NIC rapides et/ou multiples.
    3. (Facultatif) Redis est plus lent sur une VM, il est donc recommandé de l'exécuter sur une machine physique.
  2. Téléchargez et montez la dernière version stable de Redis.

    wget http://redis.googlecode.com/files/redis-x.x.xx.tar.gz
    tar xzf redis-x.x.xx.tar.gz
    mv redis-x.x.xx /usr/local/redis
    cd /usr/local/redis
    make

  3. Préparez le fichier de configuration serveur Redis en copiant $REDIS_HOME/redis.conf. Définissez les propriétés suivantes :

    daemonize yes # Use "no" when run under daemontools.
    pidfile /var/run/redis/redis_6379.pid
    port 6379
    timeout 300 # Reclaim inactive connections (seconds).
    tcp-keepalive 0 # Keep connections live from network tools likefirewall.
    loglevel notice # Keep it moderately verbose.
    logfile /var/log/redis/redis_6379.log
    databases 1
    #save 900 1 # Disable snapshotting.
    #save 300 10 # Disable snapshotting.
    #save 60 10000 # Disable snapshotting.
    requirepass xxxx # Use at least 16 characters with mix lowercase and uppercase
    # characters, numbers, and symbols. Try not to use words or
    # phrases in your password.
    maxclients 100000
    maxmemory xxxx # Make sure Redis doesn't use swap (bytes).
    maxmemory-policy volatile-lru # We use expire.
    maxmemory-samples 3
    appendonly no
    slowlog-log-slower-than 50000 # Execution time threshold (microseconds).
    slowlog-max-len 128 # Length of the slow log.

  4. Ajoutez un répertoire d'origine à la racine.

    # Redis
    export REDIS_HOME=/usr/local/redis

  5. Créez un utilisateur Redis.

    useradd -d /home/redis -s /bin/sh redis
    chown -R redis:redis $REDIS_HOME
    chmod 700 $REDIS_HOME

  6. Préparez le script d'initialisation Redis.

    cp utils/redis_init_script /etc/init.d/redis_6379

  7. Configurez le script d'initialisation Redis.

    # chkconfig: - 85 15
    # description: Redis is a persistent key-value database
    # processname: redis
    REDISUSER="redis"
    REDISPORT=6379
    EXEC=/usr/local/redis/src/redis-server
    CLIEXEC=/usr/local/redis/src/redis-cli
    PIDFILE=/var/run/redis/redis_6379.pid
    CONF="/usr/local/redis/6379.conf"
    $EXEC $CONF ==change to==> /bin/su - $REDISUSER -c "$EXEC $CONF"

  8. Activez le service Redis.

    mkdir /var/run/redis/var/log/redis
    chown redis:adm /var/run/redis /var/log/redis
    sudo chmod 750 /var/log/redis
    cd /etc/init.d
    chkconfig --add redis_6379

  9. Démarrez le serveur Redis.

    service redis start

Sécurité

Comment renforcer le serveur Redis ?

La sécurité du serveur Redis est assurée à travers :

  • L'ajout des configurations de sécurité adéquates pour l'application Redis.
  • L'ajout de configurations de sécurité pour le serveur d'exécution de Redis.

L'ajout de paramètres de sécurité Redis implique que l'application soit aussi sécurisée que possible en interne. Les configurations de sécurité sur le serveur sont des paramètres et configurations de serveur qui peuvent être utilisés pour sécuriser le serveur et l'application Redis sans impliquer l'application Redis elle-même. Les sections suivantes décrivent deux types de configurations.

Paramètres de sécurité Redis

Les deux paramètres importants pour le serveur Redis sont :

  • L'utilisation d'un mot de passe sécurisé.
  • Le blocage de l'accès à certaines commandes.

Pour en savoir plus sur la configuration de sécurité recommandée pour Redis, consultez la rubrique Sécurité Redis.

Mot de passe Redis

Le serveur Redis est très efficace pour rechercher des chaînes en série, et c'est justement ce que fait la requête de recherche de mot de passe Redis. De plus, seule l'application Blackboard demande le mot de passe Redis. Les utilisateurs n'ont pas besoin de l'avoir, c'est pourquoi vous pouvez choisir un mot de passe beaucoup plus fort que d'habitude. Vous pouvez ignorer les consignes OWASP sur la complexité et les restrictions du nombre de caractères utilisés lors de la création de mots de passe  comme aucun utilisateur n'aura besoin de s'en souvenir.

Consigne Cause
Utilisez au moins 16 caractères au lieu de 8 Une attaque de force brute prendrait n x 8 plus de temps que pour le decryptage d'un mot de passe ne contenant que 8 caractères (8 caractères étant le minimum requis)
Mélangez les minuscules, majuscules, chiffres et symboles Tout comme pour les mots de passe normaux, en combinant les différents types de caractères, des chiffres et des symboles, vous réduisez les risques de piratage par attaque par dictionnaire et vous compliquez le travail pour les attaques par force brute en augmentant le nombre de caractères à tester
Évitez d'utiliser des mots ou des phrases pour votre mot de passe Dans la mesure où vous n'avez pas besoin de vous rappeler de ce mot de passe, anéantissez toute possibilité d'attaque par dictionnaire en n'utilisant aucun mot ou phrase

Le paramètre de mot de passe lui-même peut être ajouté au fichier de configuration Redis à l'aide d'une directive requirepass comme :

requirepass ^a@$4J0|-|k!4P+f%

Blocage des commandes Redis

Dans la mesure où Blackboard n'utilise Redis que comme cache, un certain nombre de commandes ne seront jamais utiles. Parmi elles, certaines pourraient être utilisées par des utilisateurs malveillants afin d'engendrer un Déni de Service (DoS) par défaut de cache, un déni de service par épuisement d'espace serveur, mais aussi une violation des informations en permettant aux pirates d'obtenir l'ensemble des données du cache. Redis fournit une interface pour modifier ou supprimer complètement ces commandes, et Blackboard vous recommence de l'utiliser pour certaines commandes :

Clé Raison de la recommandation de retrait
APPEND Autorise la modification des clés pour forcer les défauts de cache
BGSAVE Commande qui enregistre l'ensemble des données sur le disque, elle pourrait permettre d'accéder aux informations si un utilisateur mettait la main sur le fichier
RENAME Renomme une clé, ce qui forcerait des défauts de cache
SAVE Voir BGSAVE
SPOP "Supprime un membre de l'ensemble, au hasard"
SREM "Supprime un ou plusieurs membres de l'ensemble"

Pour bloquer ces commandes, modifiez le fichier de configuration Redis pour y ajouter :

rename-command APPEND ""
rename-command BGSAVE ""
rename-command RENAME ""
rename-command SAVE ""
rename-command SPOP ""
rename-command SREM ""

En renommant la commande en chaîne vide, vous empêchez quiconque d'y accéder. De plus, vous devriez aussi bloquer de la même façon toutes les nouvelles commandes Redis créées, car le Building Block ne les utilisera pas.

Configuration du serveur sécurisé

La sécurisation du serveur exécutant Redis implique de prendre des précautions pour s'assurer que seuls les utilisateurs qui ont besoin d'accéder au serveur Redis y accèdent, tout en empêchant les accès non autorisés à l'application Redis par des autorisations réseau ou sur fichier.

Exécuter Redis sans contexte racine

La racine utilisateur, sur les machines Linux, a un accès total à tout fichier du système, quels que soient les autorisations ou les contrôles d'accès. C'est pour cela qu'il est dangereux d'utiliser l'utilisateur racine pour exécuter des applications, car les attaques bien conçues pourraient autoriser un utilisateur malveillant à contrôler le compte qui exécute l'application. Dans la mesure où Redis ne nécessite pas ce niveau d'accès au système, pour installer et exécuter l'application nous vous recommandons d'utiliser un compte utilisateur ne disposant que des autorisations nécessaires pour l'exécution de Redis.

Blackboard vous recommande même de n'utiliser ce compte que pour exécuter le serveur Redis et rien d'autre. Il ne devrait disposer d'aucune autorisation sur le système d'exploitation ou autres applications ou daemons qui s'exécutent sur ce serveur.

Sécuriser le fichier de configuration Redis

Le mot de passe utilisé par le serveur Redis dont nous avons parlé un peu plus haut est stocké dans un fichier de configuration en clair. Blackboard n'a aucune influence sur ce fait, car le stockage du mot de passe dépend des fonctionnalités de Redis actuellement disponibles. Vous devez limiter les accès à ce fichier. Seuls les utilisateurs en charge de l'application Redis devraient y avoir accès.

Pour cela, vous pouvez utiliser la commande suivante, redis.conf étant le fichier de configuration de Redis :

chown 600 redis.conf

Bloquer le trafic inutile vers le serveur Redis

La seule application exécutée par le serveur Redis est Redis. Par conséquent, l'accès direct à Internet devrait être bloqué. Le serveur ne doit pouvoir être contacté que dans les cas suivants :

  • Lorsqu'un administrateur travaille sur le serveur Redis
  • Lorsque des communications s'effectuent de Blackboard vers le port Redis

Cela empêchera les tentatives de mise à mal du serveur Redis, d'exécution des commandes non autorisées, etc. de la part d'utilisateurs non autorisés. Dans la mesure où le port Redis 6379 est utilisé par défaut, ajoutez les types de règles suivantes au pare-feu du serveur :

Règle Explication
Bloquer tout trafic vers/depuis le serveur Comportement à adopter par défaut, sauf pour les exceptions ci-dessous.
Créer une exception pour des requêtes de bouclage Le serveur doit pouvoir accéder à lui-même, ne serait-ce que pour contrôler les requêtes entrantes sur Redis à l'aide de redis-cli commandmonitor.
Créer une exception de trafic à partir ou vers les serveurs Blackboard, uniquement sur le port Redis Le serveur Blackboard doit pouvoir communiquer avec Redis sur le port 6379 et Blackboard doit être en mesure d'obtenir des réponses du serveur Redis.
Créer une exception permettant une administration à distance depuis une machine spécifique. Les administrateurs doivent pouvoir accéder au serveur pour mettre à niveau Redis, vérifier les journaux, assurer le suivi des performances, etc. À moins d'avoir directement accès à la machine, les administrateurs doivent pouvoir accéder au serveur à distance. Le trafic SSH doit se limiter à une seule machine, ou un petit ensemble de machines, pour que les utilisateurs normaux ne puissent pas communiquer avec le serveur sur le port 22.

Les administrateurs doivent aussi créer des exceptions pour des éléments spécifiques à l'environnement, comme les ressources partagées nécessaires. Elles sont spécifiques à chaque établissement.

Mettre en place le suivi de trafic

Vous devriez mettre en place certaines formes de détection d'intrusion en cas d'attaque du serveur Redis par une source extérieure. Voici quelques éléments à contrôler pour marquer le trafic potentiellement malveillant, ou le stopper complètement :

  1. Tout élément autre que le serveur d'application Blackboard ou le serveur d'administration système qui tente d'accéder au serveur Redis, doit être marqué.
  2. Il faut également mettre en évidence toute saisie de mot de passe erroné.
  3. En cas de nombre excessif de demandes adressées au serveur Redis à partir d’un même lieu, marquez ce trafic réseau. La gestion des tendances typiques d'utilisation et la spéculation sur les cas limites (disons, pendant la semaine d'examens) peut vous aider à déterminer le nombre de requêtes par minute attendues.

La mise en place de ces règles de détection d'intrusion aide à déterminer si quelqu'un essaie de pénétrer dans le serveur ou l'application Redis.

Autorisations du Building Block

Type Java Nom Actions Pourquoi cette autorisation est-elle nécessaire ?
persist * *
  • La page des paramètres doit assurer le chargement et la persistance des données de configuration dans la table SYSTEM_REGISTRY.
  • Assure la persistance et le chargement du serveur Redis et des statistiques de cache pour la durée spécifiée dans la base de données des Stats pour l'analyse de tendance.
java.io.FilePermission 1. BB_HOME/-

2. BB_CONTENT/-

3. "${java.home}/-

1. lire, écrire, supprimer

2. lire, écrire, supprimer

3. lire

  • Lit les fichiers de propriétés dans le dossier d'origine de Blackboard Learn.
  • Enregistre une valeur dièse unique pour l'instance Learn, partagée par tous les serveurs d'application dans un cluster. Elle est utilisée dans la clé de cache Redis pour éviter la collision d'une autre utilisation de cache Redis avec une autre instance Learn ou d'autres applications.
  • Fonctionnalité Ehcache diskoverflow
java.lang.reflect.
ReflectPermission
suppressAccessChecks * Utilisée par l'infrastructure Spring et une infrastructure de sérialisation des graph objets, Kryo.
java.lang.
RuntimePermission
* * Utilisée par plusieurs composants Blackboard Learn et notamment les services de journalisation et les gestionnaires de service.
java.net.
SocketPermission
* connecter, accepter, résoudre, écouter Connexion au serveur Redis et aux nœuds d'application Blackboard Learn pairs.
javax.management.
MBeanServerPermission
* * Pour exposer les statistiques de cache à MBean.
javax.management.
MBeanPermission
* * Pour exposer les statistiques de cache à MBean.
attribute user.authinfo récupérer Récupère les fonctions utilisateur pour les opérations.