Sommario:

Seroma: Server Room Manager: 20 passaggi
Seroma: Server Room Manager: 20 passaggi

Video: Seroma: Server Room Manager: 20 passaggi

Video: Seroma: Server Room Manager: 20 passaggi
Video: Лесли Морган Штайнер: Почему жертвы домашнего насилия не уходят от своих мучителей 2024, Novembre
Anonim
Seroma: Server Room Manager
Seroma: Server Room Manager

Seroma è un gestore di sale server all-in-one che consente agli utenti di controllare lo stato dei server (temperatura e umidità), i registri di accesso della sala server, nonché monitorare la sala server stessa per eventuali violazioni della sicurezza.

Passaggio 1: accedi al tuo account AWS

Accedi al tuo account AWS
Accedi al tuo account AWS
Accedi al tuo account AWS
Accedi al tuo account AWS
Accedi al tuo account AWS
Accedi al tuo account AWS
Accedi al tuo account AWS
Accedi al tuo account AWS
  1. Per il nostro, abbiamo effettuato l'accesso tramite il gateway AWS educate student poiché disponiamo di un account aws per studenti.
  2. Vai alla scheda "Account AWS" nel menu di navigazione in alto a destra.
  3. Fai clic su "Vai al tuo account AWS Educate Starter"
  4. Apri Console per accedere alla Console di gestione AWS.

Passaggio 2: iniziare con le "cose" di AWS IOT

Iniziare con AWS IOT
Iniziare con AWS IOT
Iniziare con AWS IOT
Iniziare con AWS IOT
  1. Cerca "AWS IoT" nella barra di ricerca dei servizi AWS.
  2. Fai clic su "Inizia" per passare alla dashboard della Console AWS IoT dove puoi visualizzare tutti i dispositivi IoT registrati nel tuo account AWS.

Passaggio 3: registrazione di una "cosa" AWS IOT

Registrazione di un AWS IOT
Registrazione di un AWS IOT
Registrazione di un AWS IOT
Registrazione di un AWS IOT
Registrazione di un AWS IOT
Registrazione di un AWS IOT
  1. Nella barra di navigazione, naviga per gestire le tue "Cose" IoT.
  2. Fai clic su "Registra una cosa" se non hai ancora una cosa. (Se hai già qualcosa, fai clic sul pulsante "Crea" in alto a destra dello schermo accanto alla scheda di ricerca.)
  3. Fare clic sul primo pulsante chiamato "Crea una singola cosa".
  4. Digita "RaspberryPi" come nome della cosa. Per questo passaggio, non è richiesto alcun input diverso dal "Nome". Dopo averlo fatto, fai clic su Avanti.

Passaggio 4: attivazione di un certificato

Attivazione di un certificato
Attivazione di un certificato
Attivazione di un certificato
Attivazione di un certificato
  1. Nel passaggio successivo, fai clic sul pulsante "crea certificato".
  2. Scarica e archivia i 4 link di download nella pagina successiva in una directory o cartella di lavoro. Per salvare il file CA root, fare clic con il pulsante destro del mouse e salvare con nome.
  3. Fare clic su "Attiva" e dovrebbe apparire un messaggio di successo.
  4. Utilizzare nomi descrittivi per i file rimuovendo i numeri davanti a ciascun nome file e rinominando il file CA radice in "rootca.pem".
  5. Fare clic su "Allega una politica" per procedere.

Passaggio 5: aggiunta di una politica al certificato

Aggiunta di una politica al tuo certificato
Aggiunta di una politica al tuo certificato
Aggiunta di una politica al tuo certificato
Aggiunta di una politica al tuo certificato
Aggiunta di una politica al tuo certificato
Aggiunta di una politica al tuo certificato
  1. Nella pagina successiva, se non hai una politica, ti chiederanno di crearne una sul pulsante "Crea una politica".
  2. Se disponi già di una politica esistente, fai clic sul pulsante "Crea nuova politica" di seguito.
  3. Inserire le seguenti informazioni nel modulo di creazione della politica.

    Nome: RaspberryPiSecurityPolicy

    Azione: iot:*

    ARN risorsa: *

    Effetto: Consenti

  4. La tua polizza dovrebbe quindi apparire nella scheda "Politica" sotto "Sicurezza".
  5. Quindi, vai alla scheda "Certificati" che si trova anche sotto "Sicurezza" e allega la tua politica al certificato che hai creato in precedenza.
  6. Nella pagina successiva, fai clic sulla tua politica e quindi su "Allega".
  7. Nella pagina Dettagli della cosa che hai creato, sotto la scheda "Interagisci", c'è un endpoint API REST che dovrebbe essere copiato e salvato.
  8. AWS dovrebbe ora avere una cosa collegata a una policy e dotata di un certificato.

Passaggio 6: configurazione iniziale per l'argomento AWS SNS

Configurazione iniziale per l'argomento AWS SNS
Configurazione iniziale per l'argomento AWS SNS
Configurazione iniziale dell'argomento AWS SNS
Configurazione iniziale dell'argomento AWS SNS

SSH in Raspberry Pi e installa AWS CLI utilizzando il seguente comando pip:

sudo pip install awscli

AWS CLI include la funzionalità di completamento dei comandi, ma non è installata per impostazione predefinita. Utilizzare il seguente comando per installare la funzione di completamento dei comandi sull'interfaccia CLI di Raspberry Pi:

complete -C aws_completer aws

Configura AWS CLI con Access Key ID, Secret Access Key, AWS Region Name e Command Output format utilizzando il seguente comando:

aws configurare

La console ti chiederà quindi di inserire le seguenti informazioni:

pi@raspberrypi:~ $ aws configure

AWS Access Key ID [Nessuno]: "Put your User's Access Key ID here" AWS Secret Access Key [Nessuno]: "Put your User's Secret Access Key here" Nome regione predefinito [Nessuno]: eu-central-1 Formato di output predefinito [Nessuno]: json pi@raspberrypi:~ $

Passaggio 7: creazione del file Iot-role.trust.json

Creazione del file Iot-role.trust.json
Creazione del file Iot-role.trust.json
Creazione del file Iot-role.trust.json
Creazione del file Iot-role.trust.json
  1. Crea un file JSON con la policy IAM precedente con il nome file iot-role.trust.json.
  2. Crea il ruolo utilizzando l'AWS CLI utilizzando il comando seguente

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

Passaggio 8: creazione del file Iot-policy.json

Creazione del file Iot-policy.json
Creazione del file Iot-policy.json
Creazione del file Iot-policy.json
Creazione del file Iot-policy.json
  1. Crea un file JSON con la policy di cui sopra con il nome file iot-policy.json.
  2. Crea la policy del ruolo utilizzando l'AWS CLI utilizzando il comando seguente:

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

Fase 9: creazione di un argomento AWS SNS (parte 1)

Creare un argomento AWS SNS (parte 1)
Creare un argomento AWS SNS (parte 1)
Creare un argomento AWS SNS (parte 1)
Creare un argomento AWS SNS (parte 1)
Creare un argomento AWS SNS (parte 1)
Creare un argomento AWS SNS (parte 1)
  1. Nella barra di ricerca dei servizi AWS, cerca il servizio "SNS" o vai a
  2. Poiché ora non hai argomenti, fai clic su "Crea nuovo argomento" per creare un argomento.
  3. Digita il nome del tuo argomento e il nome visualizzato e fai clic su "Crea argomento" e un nuovo argomento verrà visualizzato quando tutti i passaggi hanno esito positivo.
  4. Fare clic sul pulsante a discesa "Azioni" e "Modifica criterio argomento".

Passaggio 10: creazione di un argomento AWS SNS (parte 2)

Creare un argomento AWS SNS (parte 2)
Creare un argomento AWS SNS (parte 2)
Creare un argomento AWS SNS (parte 2)
Creare un argomento AWS SNS (parte 2)
Creare un argomento AWS SNS (parte 2)
Creare un argomento AWS SNS (parte 2)
  1. Imposta la policy per consentire a tutti di pubblicare e iscriversi, poiché si tratta di limitazioni di un account AWSEducate.
  2. Iscriviti a questo argomento per ricevere gli aggiornamenti pubblicati su questo argomento.
  3. Cambia il protocollo in "Email" e inserisci la tua email alla fine.

  4. Vai alla tua e-mail in cui hai digitato il tuo endpoint, fai clic sul link di conferma per confermare la tua iscrizione all'e-mail per iscriverti all'argomento.
  5. Passare ai servizi "AWS IoT", nel menu di navigazione a sinistra, fare clic su "Agisci". Questa pagina è dove vengono visualizzate le regole e sono disponibili per la visualizzazione e la modifica. Attualmente, non ci sono regole per la tua cosa IoT, fai clic su "Crea una regola".

Passaggio 11: creazione di un argomento AWS SNS (parte 3)

Creare un argomento AWS SNS (parte 3)
Creare un argomento AWS SNS (parte 3)
Creare un argomento AWS SNS (parte 3)
Creare un argomento AWS SNS (parte 3)
Creare un argomento AWS SNS (parte 3)
Creare un argomento AWS SNS (parte 3)
  1. Digita un nome nel campo Nome per la tua regola. Nel campo Descrizione, digita una descrizione per la tua regola. Continuando con la sezione Origine messaggio, sceglieremmo la versione SQL più aggiornata nella sezione "Utilizzo della versione SQL". Digita * nell'attributo per selezionare l'intero messaggio MQTT dall'argomento, nel nostro caso il nostro argomento è “TempHumid”.
  2. Quindi aggiungi un'azione di notifica "SNS" per la tua regola. Quindi, fai clic su "Configura azione".
  3. Nella pagina "Configura azione", scegli l'argomento SNS che hai appena creato e il formato del messaggio come RAW. Successivamente, scegli il ruolo appena creato utilizzando AWS CLI e fai clic su "Aggiungi azione".
  4. La tua azione sarà configurata e tornerà a "Crea una regola".
  5. Fare clic su Modifica se si desidera modificare la regola.

Passaggio 12: creare un bucket su Amazon S3

Crea un bucket su Amazon S3
Crea un bucket su Amazon S3
Crea un bucket su Amazon S3
Crea un bucket su Amazon S3
Crea un bucket su Amazon S3
Crea un bucket su Amazon S3
  1. Cerca S3 nella barra di ricerca di AWS.
  2. Nella pagina Amazon S3, fai clic sul pulsante "Crea bucket" per iniziare.
  3. Compila il modulo pop-up che appare con le seguenti informazioni:

    • Nome bucket: sieroma-bucket (deve essere univoco in tutti i bucket Amazon S3 esistenti)
    • Regione: Stati Uniti occidentali (Oregon)
    • Impostazioni di copia: (ignora)
  4. Per i passaggi da 2 a 3, salta semplicemente facendo clic su "Avanti" poiché non c'è nulla da modificare. Al passaggio 4, fai clic su "Crea bucket".
  5. Dopo la creazione, dovresti vedere il tuo bucket nella home page.

Passaggio 13: generazione di una policy AWS (parte 1)

Genera una policy AWS (Parte 1)
Genera una policy AWS (Parte 1)
Genera una policy AWS (Parte 1)
Genera una policy AWS (Parte 1)
Genera una policy AWS (Parte 1)
Genera una policy AWS (Parte 1)
  1. Fai clic sul bucket che hai creato per accedere alla pagina sopra, quindi passa a "Bucket Policy" nella scheda "Permissions".
  2. Quindi, fai clic sul collegamento "Generatore di criteri" nella parte inferiore della pagina per generare la tua policy AWS.
  3. Nel modulo, inserisci i seguenti valori:

    • Tipo di politica: politica del bucket S3
    • Effetto: Consenti
    • Principale: *
    • Servizio AWS: Amazon S3
    • Azioni: OttieniOggetto
    • Amazon Resource Name (ARN): arn:aws:s3:::seroma-bucket
  4. Dopo aver compilato le informazioni, fare clic su Aggiungi dichiarazione.
  5. Fare clic sul pulsante "Genera politica".

Passaggio 14: generazione di una policy AWS (parte 2)

Genera una policy AWS (Parte 2)
Genera una policy AWS (Parte 2)
Genera una policy AWS (Parte 2)
Genera una policy AWS (Parte 2)
Genera una policy AWS (Parte 2)
Genera una policy AWS (Parte 2)
Genera una policy AWS (Parte 2)
Genera una policy AWS (Parte 2)
  1. Copia i codici generati e clicca su chiudi.
  2. Torna all'editor delle policy bucket di Amazon S3 e incolla i codici copiati in precedenza.
  3. Aggiungi un "/*" nei codici subito dietro i codici delle risorse, come nell'immagine sopra, quindi fai clic su Salva.
  4. Dopo averlo fatto, il tuo secchio sarà impostato con successo e pronto per l'uso.

Passaggio 15: creazione di tabelle per DynamoDB

Creazione di tabelle per DynamoDB
Creazione di tabelle per DynamoDB
Creazione di tabelle per DynamoDB
Creazione di tabelle per DynamoDB
  1. Cerca DynamoDB nella barra di ricerca dei servizi AWS
  2. Fare clic su "Crea tabella" e creare 3 tabelle con le seguenti informazioni: (Solo il "nome tabella" e la "chiave primaria" vengono modificati)

    • accesslog, pk datetimevalue
    • roomstatus, pk datetimevalue
    • staffdata, pk username

Passaggio 16: Roomstatus.py

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

Questa sezione contiene il codice per roomsstatus.py, che ogni minuto scrive tutti i dati riguardanti la stessa stanza del server. Ciò include la temperatura, l'umidità, il movimento (immagini e video se veri) e i registri di accesso. Scrive anche dati su un foglio di calcolo di Google, dati su DynamoDB, immagini e video (se presenti) su S3, visualizza informazioni sullo schermo LCD, invia SMS ed e-mail quando si sospetta una violazione o quando la temperatura o l'umidità sono irregolari.

Per eseguire i file python, cambia la directory in cui si trova il file e digita in console: "sudo python"

Pic 2: Funzioni dichiarate per consentire avvisi SMS ed e-mail e caricamento su S3

Pic 3: Variabili dichiarate per il funzionamento di funzioni e RPi

Fig 4: Inizio del ciclo che ottiene i valori di temperatura e umidità dall'RPi. Scrive anche i dati su un foglio di calcolo di Google

Pic 5: La parte di sicurezza del ciclo. Si attiverà solo dalle 19:00 alle 7:00 (fuori orario). Verificherà il movimento nell'arco di un minuto. Se viene rilevato un movimento, acquisirà un'immagine e un video, li caricherà su S3, mentre scriverà anche informazioni su DynamoDB per riferimento successivo. Successivamente, invierà un SMS e un'e-mail se qualcosa è irregolare.

Foto 6: La fine del ciclo. Scrive anche dati su DynamoDB e invia avvisi di conseguenza. L'ultima riga del ciclo farà addormentare lo script fino al raggiungimento del minuto successivo.

Passaggio 17: Rfid.py

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

Questa sezione contiene il codice per rfid.py, che aggiunge la funzionalità per monitorare quando un membro dello staff accede alla sala server. Fa anche parte dell'aspetto della sicurezza di Seroma, dove un membro del personale non è autorizzato ad accedere alla sala server dopo l'orario di ufficio, per prevenire una violazione dei dati. Invia anche un'e-mail e un SMS a tutto il personale se si sospetta una violazione.

Pic 2: Inizio della logica del lettore RFID. Ogni volta che una carta viene scansionata contro il lettore, viene preso l'id univoco (uid) della carta. Successivamente, proviamo a trovare il valore uid della carta nella tabella staffdata per vedere se la carta appartiene a qualcuno dello staff. Pic 3: Se l'uid della carta esiste nel database, controllerà se è durante l'ufficio fuori orario. Se lo è, avviserà il resto dei dipendenti tramite SMS ed e-mail agli indirizzi e-mail sottoscritti. Se è ancora in orario d'ufficio, scriverà una riga nella tabella accesslog nel database con i relativi dati. Verrà inoltre visualizzato un messaggio di benvenuto sul display LCD.

Passaggio 18: Server.py

Server.py
Server.py
Server.py
Server.py
Server.py
Server.py

Questo è il file server.py. Useremo il framework Flask per il portale web. Sono allegati anche i file HTML da inserire in /templates.

Pic 1: Definito il primo percorso per Flask. Reindirizzerà l'utente alla pagina di accesso se non ha effettuato l'accesso e alla pagina della dashboard se lo è. Definisce anche una funzione da utilizzare nella funzione livestream

Foto 2, 3, 4: Percorsi per Flask. Ottiene i dati dalla tabella DynamoDB e quindi li restituisce ai file HTML in modo che possano essere utilizzati lì.

Pic 5: Ultimi 2 percorsi per Flask. Gestisce la funzione di logout e la funzione livestream. Specifica anche la porta su cui verrà eseguito il sito Web.

Passaggio 19: Telegram.py

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

Questa sezione include il codice per il bot telegram di Seroma. Utilizza la libreria di telepot per toccare l'API Bot di Telegram. Funziona accettando le query che ottiene e visualizzando le rispettive informazioni all'utente. L'utente può digitare "aiuto" per un elenco completo di comandi.

Pic 1, 2: Per configurare un bot di telegram, devi usare BotFather. Basta eseguire le istruzioni per ottenere l'API HTTP di cui abbiamo bisogno nel nostro codice.

Pic 4: Esempio di una funzione che prende un certo numero di righe di dati dal database in base alla richiesta dell'utente

Pic 5: Come prendiamo l'input dell'utente e decidiamo cosa eseguire di conseguenza.

Passaggio 20: live streaming (camera_pi.py)

Streaming live (camera_pi.py)
Streaming live (camera_pi.py)
Streaming live (camera_pi.py)
Streaming live (camera_pi.py)
Streaming live (camera_pi.py)
Streaming live (camera_pi.py)

Abbiamo implementato una nuova funzionalità per il nostro sistema di monitoraggio della sala server, un live streaming di ciò che sta accadendo nella sala server, a cui è possibile accedere in qualsiasi momento e ovunque. Come funziona questo live streaming: è una funzionalità che viene eseguita in Flask, insieme alla Pi Camera. I fotogrammi video vengono scaricati come accade nella vita reale, quindi puoi effettivamente vedere che c'è un leggero ritardo (1-2 secondi) mentre i fotogrammi video vengono scaricati e assemblati. Questa operazione non può essere eseguita senza il threading, poiché il thread in background legge i fotogrammi dalla fotocamera e memorizza il fotogramma corrente. Mettendo insieme tutti questi frame si produrrebbe quindi un live streaming.

Pic 2: Questo è un file separato in cui sono archiviati tutti i fotogrammi video e, come puoi vedere, stiamo utilizzando il modulo picamera per accedere alla nostra fotocamera Raspberry Pi poiché è ciò con cui abbiamo più familiarità. Abbiamo una fotocamera di classe in modo da poter importare la funzione come se fosse un livestream e non più immagini che mettono insieme, quindi nel file dell'applicazione principale lo prenderebbe come un live stream senza doversi preoccupare di ciò che sta accadendo dietro le quinte.

Pic 3: fa parte del nostro file server.py in cui è codificata la parte del live streaming. La classe principale che abbiamo importato per questo è la Camera dal nostro file camera_pi.py nella parte superiore del nostro file server.py. Abbiamo definito una funzione nella nostra directory principale, gen, tuttavia viene utilizzata solo quando andiamo su /video_feed dove si trova il nostro flusso live, dove eseguirà il ciclo attraverso questa funzione e restituirà il flusso live sulla pagina web.

Consigliato: