Table des matières:

Seroma : Gestionnaire de salle de serveurs : 20 étapes
Seroma : Gestionnaire de salle de serveurs : 20 étapes

Vidéo: Seroma : Gestionnaire de salle de serveurs : 20 étapes

Vidéo: Seroma : Gestionnaire de salle de serveurs : 20 étapes
Vidéo: Votre serveur de fichiers vous fait des misères ? Pensez à Azure Files !!! 2024, Novembre
Anonim
Seroma: Gestionnaire de la salle des serveurs
Seroma: Gestionnaire de la salle des serveurs

Seroma est un gestionnaire de salle de serveurs tout-en-un qui permet aux utilisateurs de vérifier l'état des serveurs (température et humidité), les journaux d'accès de la salle des serveurs, ainsi que de surveiller la salle des serveurs elle-même pour détecter toute faille de sécurité.

Étape 1: Connectez-vous à votre compte AWS

Connectez-vous à votre compte AWS
Connectez-vous à votre compte AWS
Connectez-vous à votre compte AWS
Connectez-vous à votre compte AWS
Connectez-vous à votre compte AWS
Connectez-vous à votre compte AWS
Connectez-vous à votre compte AWS
Connectez-vous à votre compte AWS
  1. Pour le nôtre, nous nous sommes connectés via la passerelle AWS education student car nous avons un compte étudiant aws.
  2. Rendez-vous sur l'onglet « Compte AWS » dans le menu de navigation en haut à droite.
  3. Cliquez sur « Accéder à votre compte AWS Educate Starter »
  4. Ouvrez la console pour accéder à votre AWS Management Console.

Étape 2: Premiers pas avec les « choses » d'AWS IOT

Premiers pas avec AWS IOT
Premiers pas avec AWS IOT
Premiers pas avec AWS IOT
Premiers pas avec AWS IOT
  1. Recherchez « AWS IoT » dans la barre de recherche des services AWS.
  2. Cliquez sur « Commencer » pour accéder au tableau de bord de la console AWS IoT où vous pouvez afficher tous les appareils IoT enregistrés dans votre compte AWS.

Étape 3: enregistrement d'un "truc" AWS IOT

Enregistrement d'un AWS IOT
Enregistrement d'un AWS IOT
Enregistrement d'un AWS IOT
Enregistrement d'un AWS IOT
Enregistrement d'un AWS IOT
Enregistrement d'un AWS IOT
  1. Dans la barre de navigation, naviguez pour gérer vos « objets » IoT.
  2. Cliquez sur « Enregistrer une chose » si vous n'avez pas encore de chose. (Si vous avez déjà quelque chose, cliquez sur le bouton "Créer" en haut à droite de l'écran à côté de l'onglet de recherche.)
  3. Cliquez sur le premier bouton intitulé « Créer une seule chose ».
  4. Tapez "RaspberryPi" comme nom de la chose. Pour cette étape, aucune saisie autre que le « Nom » n'est requise. Après cela, cliquez sur suivant.

Étape 4: Activation d'un certificat

Activation d'un certificat
Activation d'un certificat
Activation d'un certificat
Activation d'un certificat
  1. À l'étape suivante, cliquez sur le bouton « créer un certificat ».
  2. Téléchargez et stockez les 4 liens de téléchargement de la page suivante dans un répertoire ou un dossier de travail. Pour enregistrer le fichier CA racine, faites un clic droit et enregistrez sous.
  3. Cliquez sur « Activer » et un message de réussite devrait apparaître.
  4. Utilisez des noms conviviaux pour les fichiers en supprimant les numéros devant chaque nom de fichier et en renommant le fichier CA racine en « rootca.pem ».
  5. Cliquez sur « Joindre une politique » pour continuer.

Étape 5: Ajout d'une stratégie à votre certificat

Ajout d'une stratégie à votre certificat
Ajout d'une stratégie à votre certificat
Ajout d'une stratégie à votre certificat
Ajout d'une stratégie à votre certificat
Ajout d'une stratégie à votre certificat
Ajout d'une stratégie à votre certificat
  1. Sur la page suivante, si vous n'avez pas de politique, ils vous inviteront à en créer une sur le bouton « Créer une politique ».
  2. Si vous avez déjà une politique existante, cliquez sur le bouton « Créer une nouvelle politique » ci-dessous.
  3. Insérez les informations suivantes dans le formulaire de création de stratégie.

    Nom: RaspberryPiSecurityPolicy

    Action: iot:*

    ARN de la ressource: *

    Effet: Autoriser

  4. Votre politique devrait alors apparaître dans l'onglet « Politique » sous « Sécurité ».
  5. Ensuite, allez dans l'onglet « Certificats » qui se trouve également sous « Sécurité » et attachez votre politique au certificat que vous avez créé précédemment.
  6. Sur la page suivante, cliquez sur votre politique, puis sur « Joindre ».
  7. Dans la page Détails de la chose que vous avez créée, sous l'onglet "Interagir", il y a un point de terminaison d'API REST qui doit être copié et enregistré.
  8. AWS devrait maintenant avoir une chose qui est attachée à une stratégie et a un certificat.

Étape 6: Configuration initiale pour le sujet AWS SNS

Configuration initiale pour AWS SNS Sujet
Configuration initiale pour AWS SNS Sujet
Configuration initiale pour AWS SNS Sujet
Configuration initiale pour AWS SNS Sujet

Connectez-vous en SSH à Raspberry Pi et installez l'AWS CLI à l'aide de la commande pip suivante:

sudo pip installer awscli

L'AWS CLI inclut la fonction d'achèvement de commande mais elle n'est pas installée par défaut. Utilisez la commande suivante pour installer la fonction d'achèvement de commande sur l'interface CLI de Raspberry Pi:

terminer -C aws_completer aws

Configurez l'AWS CLI avec l'ID de clé d'accès, la clé d'accès secrète, le nom de la région AWS et le format de sortie de la commande à l'aide de la commande suivante:

aws configurer

La console vous demandera alors de renseigner les informations suivantes:

pi@raspberrypi:~ $ aws configure

ID de clé d'accès AWS [Aucun]: "Put your User's Access Key ID here" Clé d'accès secrète AWS [Aucun]: "Put your User's Secret Access Key here" Nom de la région par défaut [Aucun]: eu-central-1 Format de sortie par défaut [Aucun]: json pi@raspberrypi:~ $

Étape 7: Création du fichier Iot-role.trust.json

Création du fichier Iot-role.trust.json
Création du fichier Iot-role.trust.json
Création du fichier Iot-role.trust.json
Création du fichier Iot-role.trust.json
  1. Créez un fichier JSON avec la stratégie IAM ci-dessus avec le nom de fichier iot-role.trust.json.
  2. Créez le rôle à l'aide de l'AWS CLI à l'aide de la commande suivante

aws iam create-role --role-name my-iot-role --assume-role-policy-document file://iot-role-trust.json

Étape 8: Création du fichier Iot-policy.json

Création du fichier Iot-policy.json
Création du fichier Iot-policy.json
Création du fichier Iot-policy.json
Création du fichier Iot-policy.json
  1. Créez un fichier JSON avec la stratégie ci-dessus avec le nom de fichier iot-policy.json.
  2. Créez la stratégie de rôle à l'aide de l'AWS CLI à l'aide de la commande suivante:

aws iam put-role-policy --role-name IoTRole --policy-name iot-policy --policy-document file://iot-policy.json

Étape 9: créer une rubrique AWS SNS (partie 1)

Créer une rubrique AWS SNS (partie 1)
Créer une rubrique AWS SNS (partie 1)
Créer une rubrique AWS SNS (partie 1)
Créer une rubrique AWS SNS (partie 1)
Créer une rubrique AWS SNS (partie 1)
Créer une rubrique AWS SNS (partie 1)
  1. Dans la barre de recherche des services AWS, recherchez le service « SNS » ou dirigez-vous vers
  2. Comme vous n'avez aucun sujet maintenant, cliquez sur « Créer un nouveau sujet » pour créer un sujet.
  3. Tapez le nom de votre sujet et votre nom d'affichage et cliquez sur « Créer un sujet » et un nouveau sujet apparaîtra lorsque toutes les étapes sont réussies.
  4. Cliquez sur le bouton déroulant « Actions » et « Modifier la politique du sujet ».

Étape 10: créer une rubrique AWS SNS (partie 2)

Créer une rubrique AWS SNS (partie 2)
Créer une rubrique AWS SNS (partie 2)
Créer une rubrique AWS SNS (partie 2)
Créer une rubrique AWS SNS (partie 2)
Créer une rubrique AWS SNS (partie 2)
Créer une rubrique AWS SNS (partie 2)
  1. Définissez la stratégie pour permettre à tout le monde de publier et de s'abonner, car il s'agit des limitations d'un compte AWSEducate.
  2. Abonnez-vous à ce sujet pour recevoir les mises à jour publiées sur ce sujet.
  3. Changez le protocole en "E-mail" et entrez votre e-mail au point final.

  4. Rendez-vous sur votre e-mail où vous avez tapé votre point de terminaison, cliquez sur le lien de confirmation pour confirmer votre abonnement par e-mail pour vous abonner au sujet.
  5. Accédez aux services « AWS IoT », dans le menu de navigation à gauche, cliquez sur « Agir ». Cette page est l'endroit où vos règles sont affichées et disponibles pour que vous puissiez les visualiser et les modifier. Actuellement, il n'y a pas de règles pour votre objet IoT, cliquez sur "Créer une règle".

Étape 11: créer une rubrique AWS SNS (partie 3)

Créer une rubrique AWS SNS (partie 3)
Créer une rubrique AWS SNS (partie 3)
Créer une rubrique AWS SNS (partie 3)
Créer une rubrique AWS SNS (partie 3)
Créer une rubrique AWS SNS (partie 3)
Créer une rubrique AWS SNS (partie 3)
  1. Saisissez un nom dans le champ Nom de votre règle. Dans le champ Description, saisissez une description pour votre règle. En continuant à la section Source du message, nous choisirions la version SQL la plus mise à jour dans la section "Utilisation de la version SQL". Tapez * dans l'attribut pour sélectionner l'intégralité du message MQTT du sujet, dans notre cas, notre sujet est « TempHumid ».
  2. Ajoutez ensuite une action de notification « SNS » pour votre règle. Ensuite, cliquez sur "Configurer l'action".
  3. Dans la page "Configurer l'action", choisissez le sujet SNS que vous venez de créer et le format du message en RAW. Après cela, choisissez le rôle que vous venez de créer à l'aide de l'AWS CLI et cliquez sur « Ajouter une action ».
  4. Votre action sera configurée et reviendra à « Créer une règle ».
  5. Cliquez sur modifier si vous souhaitez modifier la règle.

Étape 12: créer un compartiment sur Amazon S3

Créer un compartiment sur Amazon S3
Créer un compartiment sur Amazon S3
Créer un compartiment sur Amazon S3
Créer un compartiment sur Amazon S3
Créer un compartiment sur Amazon S3
Créer un compartiment sur Amazon S3
  1. Recherchez S3 dans la barre de recherche AWS.
  2. Dans la page Amazon S3, cliquez sur le bouton « Créer un seau » pour commencer.
  3. Remplissez le formulaire contextuel qui apparaît avec les informations suivantes:

    • Nom du compartiment: seroma-bucket (cela doit être unique dans tous les compartiments Amazon S3 existants)
    • Région: Ouest des États-Unis (Oregon)
    • Paramètres de copie: (Ignorer)
  4. Pour les étapes 2 à 3, ignorez-le simplement en cliquant sur « Suivant » car il n'y a rien à changer. À l'étape 4, cliquez sur « Créer un compartiment ».
  5. Après la création, vous devriez voir votre bucket sur la page d'accueil.

Étape 13: générer une stratégie AWS (partie 1)

Générer une stratégie AWS (partie 1)
Générer une stratégie AWS (partie 1)
Générer une stratégie AWS (partie 1)
Générer une stratégie AWS (partie 1)
Générer une stratégie AWS (partie 1)
Générer une stratégie AWS (partie 1)
  1. Cliquez sur le compartiment que vous avez créé pour accéder à la page ci-dessus, puis passez à « Politique du compartiment » sous l'onglet « Autorisations ».
  2. Ensuite, cliquez sur le lien « Policy Generator » en bas de la page pour générer votre stratégie AWS.
  3. Dans le formulaire, saisissez les valeurs suivantes:

    • Type de stratégie: stratégie de compartiment S3
    • Effet: Autoriser
    • Principal: *
    • Service AWS: Amazon S3
    • Actions: GetObject
    • Nom de ressource Amazon (ARN): arn:aws:s3:::seroma-bucket
  4. Après avoir rempli les informations, cliquez sur Ajouter un relevé.
  5. Cliquez sur le bouton « Générer une politique ».

Étape 14: générer une stratégie AWS (partie 2)

Générer une stratégie AWS (partie 2)
Générer une stratégie AWS (partie 2)
Générer une stratégie AWS (partie 2)
Générer une stratégie AWS (partie 2)
Générer une stratégie AWS (partie 2)
Générer une stratégie AWS (partie 2)
Générer une stratégie AWS (partie 2)
Générer une stratégie AWS (partie 2)
  1. Copiez les codes générés et cliquez sur Fermer.
  2. Revenez à votre éditeur de stratégie de compartiment Amazon S3 et collez les codes précédemment copiés.
  3. Ajoutez un "/*" dans les codes juste derrière les codes de ressources, comme dans l'image ci-dessus, puis cliquez sur Enregistrer.
  4. Après cela, votre seau sera correctement configuré et prêt à l'emploi.

Étape 15: Création de tables pour DynamoDB

Création de tables pour DynamoDB
Création de tables pour DynamoDB
Création de tables pour DynamoDB
Création de tables pour DynamoDB
  1. Recherchez DynamoDB dans la barre de recherche des services AWS
  2. Cliquez sur "Créer une table" et créez 3 tables avec les informations ci-dessous: (Seuls le "nom de la table" et la "clé primaire" sont modifiés)

    • accesslog, pk datetimevalue
    • roomstatus, pk datetimevalue
    • données du personnel, nom d'utilisateur pk

Étape 16: Roomstatus.py

Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py

Cette section contient le code de roomstatus.py, qui écrit toutes les données concernant la salle des serveurs elle-même chaque minute. Cela inclut la température, l'humidité, les mouvements (images et vidéos si elles sont vraies) et les journaux d'accès. Il écrit également des données dans une feuille de calcul Google, des données dans DynamoDB, des images et des vidéos (le cas échéant) sur S3, affiche des informations sur l'écran LCD, envoie un SMS et un e-mail en cas de violation présumée ou lorsque la température ou l'humidité est irrégulière..

Pour exécuter des fichiers python, changez de répertoire où se trouve le fichier et tapez dans la console: " sudo python"

Image 2: Fonctions déclarées pour autoriser les alertes SMS et e-mail, et téléchargement vers S3

Pic 3: Variables déclarées pour que les fonctions et RPi fonctionnent

Image 4: Début de la boucle qui obtient les valeurs de température et d'humidité du RPi. Il écrit également les données dans une feuille de calcul Google

Image 5: Partie de sécurité de la boucle. Il ne s'activera que de 19h à 7h (heures creuses). Il vérifiera le mouvement en une minute. Si un mouvement est détecté, il prendra une image et une vidéo, les téléchargera sur S3, tout en écrivant des informations sur DynamoDB pour référence ultérieure. Ensuite, il enverra un SMS et un e-mail si quelque chose est irrégulier.

Image 6: La fin de la boucle. Il écrit également des données dans DynamoDB et envoie des alertes en conséquence. La dernière ligne de la boucle mettra le script en veille jusqu'à la prochaine minute.

Étape 17: Rfid.py

Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py

Cette section contient le code de rfid.py, qui ajoute la fonctionnalité permettant de suivre lorsqu'un membre du personnel accède à la salle des serveurs. Cela fait également partie de l'aspect sécurité de Seroma, où un membre du personnel n'est pas autorisé à accéder à la salle des serveurs après les heures de bureau, pour éviter une violation de données. Il envoie également un e-mail et des SMS à tout le personnel si une violation est suspectée.

Image 2: Début de la logique du lecteur RFID. Chaque fois qu'une carte est scannée contre le lecteur, l'identifiant unique (uid) de la carte est pris. Ensuite, nous essayons de trouver la valeur uid de la carte dans la table staffdata pour voir si la carte appartient à l'un des membres du personnel. Pic 3: Si l'uid de la carte existe dans la base de données, il vérifiera si c'est pendant le bureau heures creuses. Si c'est le cas, il alertera le reste des employés par SMS et par e-mail aux adresses e-mail souscrites. Si c'est encore pendant les heures de bureau, il écrira une ligne dans la table accesslog de la base de données avec les données pertinentes. Il affichera également un message de bienvenue sur l'écran LCD.

Étape 18: Server.py

Serveur.py
Serveur.py
Serveur.py
Serveur.py
Serveur.py
Serveur.py

Il s'agit du fichier server.py. Nous utiliserons le framework Flask pour le portail Web. Les fichiers HTML à mettre dans /templates sont également joints.

Image 1: Première route pour Flask définie. Il redirigera l'utilisateur vers la page de connexion s'il n'est pas connecté, et la page du tableau de bord s'il l'est. Définit également une fonction à utiliser dans la fonction de diffusion en direct

Pic 2, 3, 4: Routes pour Flask. Il récupère les données de la table DynamoDB, puis les renvoie aux fichiers HTML afin qu'elles puissent y être utilisées.

Photo 5: Les 2 dernières routes pour Flask. Il gère la fonction de déconnexion et la fonction de diffusion en direct. Il spécifie également le port sur lequel le site Web s'exécutera.

Étape 19: Telegram.py

Telegram.py
Telegram.py
Telegram.py
Telegram.py
Telegram.py
Telegram.py

Cette section comprend le code du télégramme bot de Seroma. Il utilise la bibliothèque de télépot pour exploiter l'API Bot de Telegram. Il fonctionne en acceptant les requêtes qu'il reçoit et en affichant les informations respectives à l'utilisateur. L'utilisateur peut taper « help » pour obtenir une liste complète des commandes.

Image 1, 2: Pour configurer un bot de télégramme, vous devez utiliser BotFather. Il suffit de parcourir les instructions pour obtenir l'API HTTP dont nous avons besoin dans notre code.

Image 4: Exemple d'une fonction qui prend un certain nombre de lignes de données de la base de données en fonction de la demande de l'utilisateur

Image 5: Comment nous prenons l'entrée de l'utilisateur et décidons quoi exécuter en conséquence.

Étape 20: diffusion en direct (camera_pi.py)

Diffusion en direct (camera_pi.py)
Diffusion en direct (camera_pi.py)
Diffusion en direct (camera_pi.py)
Diffusion en direct (camera_pi.py)
Diffusion en direct (camera_pi.py)
Diffusion en direct (camera_pi.py)

Nous avons mis en place une nouvelle fonctionnalité pour notre système de surveillance de la salle des serveurs, un flux en direct de ce qui se passe dans la salle des serveurs, accessible à tout moment, n'importe où. Comment fonctionne ce flux en direct: c'est une fonctionnalité qui est effectuée dans Flask, avec la caméra Pi. Les images vidéo sont téléchargées comme cela se passe dans la vie réelle, vous pouvez donc voir qu'il y a un léger retard (1 à 2 secondes) lorsque les images vidéo sont téléchargées et reconstituées. Cela ne pourrait pas être fait sans thread, car le thread d'arrière-plan lit les images de la caméra et stocke l'image actuelle. Rassembler toutes ces images produirait alors un flux en direct.

Image 2: Il s'agit d'un fichier séparé où toutes les images vidéo sont stockées et comme vous pouvez le voir, nous utilisons le module picamera pour accéder à notre caméra raspberry pi car c'est ce que nous connaissons le mieux. Nous avons une classe Camera afin que nous puissions importer la fonction comme s'il s'agissait d'un flux en direct et non de plusieurs images assemblées.

Image 3: Cela fait partie de notre fichier server.py où la partie du flux en direct est codée. La classe principale que nous avons importée pour cela est la caméra de notre fichier camera_pi.py en haut de notre fichier server.py. Nous avons défini une fonction dans notre répertoire racine, gen, mais elle n'est utilisée que lorsque nous nous dirigeons vers /video_feed où se trouve notre flux en direct, où il bouclera cette fonction et renverra le flux en direct sur la page Web.

Conseillé: