Come salvaguardare uno schieramento sensibile per mitigare gli incidenti?


12

Recentemente l'Amazzonia S3 ha avuto un'interruzione grave nella regione us-east-1. Sembra che sia stato probabilmente causato da un errore di ortografia durante l'esecuzione di un playbook di manutenzione in Ansible o uno strumento simile. Puoi mettere un wrapper di script shell attorno a ansible-playbook per assomigliare a:

#!/bin/bash
/usr/bin/ansible-playbook "$@" --list-hosts --list-tasks
read -p "Are you sure? (y/n) " answer
test "$answer" = "y" || exit 0
exec /usr/bin/ansible-playbook "$@"

Ma quali sono alcuni altri modi che usi per migliorare la sicurezza e ridurre la possibilità di errori che causano un'interruzione grave della tua azienda.


1
Sto votando per chiudere questa domanda come off-topic perché sarà più adatta a unix.stackexchange.com o superuser.com
Romeo Ninov

4
Infrastruttura come codice, è uno dei componenti chiave per arrivare a centinaia di implementazioni al giorno. Essere in grado di proteggere gli strumenti che forniscono questa velocità dalla creazione di gravi interruzioni nelle operazioni mi sembra un argomento rilevante. Potrei sbagliarmi, ovviamente. Apprezzo tuttavia la tua opinione. Ti piacerebbe partecipare a questa discussione sulle domande su e fuori argomento in Meta?
Jiri Klouda

Ad esempio, questa domanda sembra essere accettata come sull'argomento: devops.stackexchange.com/questions/98/…
Jiri Klouda

Jiri, fai la differenza tra la tua e l'altra domanda che dici?
Romeo Ninov

5
Se questo tipo di domande fosse adatto a superutente, non ci sarebbe bisogno di devops.se. Questo è sicuramente in tema qui. Le operazioni e la mitigazione dell'errore umano sono al centro di DevOps.
Evgeny

Risposte:


6

Stiamo utilizzando i lavori in jenkins per attivare le distribuzioni. Assicura che, indipendentemente da chi esegue la distribuzione, il comando ansible eseguito sarà lo stesso. Un bel bonus è il registro dei log di build quando sono state attivate le distribuzioni, chi le ha attivate e cosa è successo esattamente durante la distribuzione.

Non è certo infallibile, ma è stato un bel miglioramento rispetto alla gestione manuale dei libri di testo.

Per modifiche più grandi / rischiose, ciò dovrebbe idealmente essere combinato con una qualche forma di gestione delle modifiche, in modo che le modifiche vengano apportate solo dopo che un'altra persona / squadra ha esaminato la modifica e l'approccio alla modifica per aiutare a identificare e risolvere tempestivamente potenziali problemi.

Inoltre, non fa mai male avere un compagno di squadra che capisca il cambiamento che stai facendo e che guardi mentre fai grandi cambiamenti in modo che possano cercare e aiutare a prevenire errori nell'esecuzione del cambiamento.


4

Categorie di errori

Esistono due modi per esaminare i fattori umani che portano a problemi e incidenti:

  1. Puoi vedere l'errore umano come la causa di un incidente. In questo caso "errore umano", sotto qualunque etichetta: perdita di consapevolezza della situazione, violazione procedurale, carenze normative, carenze gestionali è la conclusione della tua indagine.
  2. Puoi vedere l'errore umano come il sintomo di un problema più profondo. In questo caso, l'errore umano è il punto di partenza della tua indagine. Scoprirai come l'errore umano è sistematicamente collegato alle caratteristiche degli strumenti, delle attività e dell'ambiente operativo / organizzativo delle persone.

Il primo si chiama approccio umano e il secondo come approccio di sistema .

Per spiegare il fallimento usando l'approccio umano, dovresti cercare il fallimento e trovare valutazioni inaccurate della gente, decisioni sbagliate o giudizi errati.

Per spiegare l'errore usando l'approccio di sistema, non stai cercando di scoprire dove le persone hanno sbagliato. Invece, scopri come le valutazioni e le azioni delle persone avevano senso in quel momento, date le circostanze che le circondavano.

Ad esempio, Donald Berwick dell'Institute for Healthcare Improvement (IHI) sostiene che il miglioramento della sicurezza dei pazienti richiede cambiamenti nella progettazione dei sistemi :

... Siamo umani e gli umani sbagliano. Nonostante l'indignazione, nonostante il dolore, nonostante l'esperienza, nonostante i nostri migliori sforzi, nonostante i nostri desideri più profondi, siamo nati fallibili e rimarrà tale. Essere cauti aiuta, ma non ci porta da nessuna parte vicino alla perfezione ... Il rimedio sta nel cambiare i sistemi di lavoro. Il rimedio è nel design. L'obiettivo dovrebbe essere la massima sicurezza. Credo che dovremmo essere al sicuro nei nostri ospedali come nelle nostre case. Ma non possiamo raggiungere questo obiettivo attraverso l'esortazione, la censura, l'indignazione e la vergogna. Possiamo raggiungerlo solo con l'impegno di cambiare, in modo che gli errori umani normali possano essere resi irrilevanti per il risultato, continuamente trovati e mitigati abilmente.

Donald M Berwick. Non di nuovo! BMJ 2001


Rimozione di errori dal sistema

Un ottimo modo per trovare (e correggere) i vari modi in cui si verifica l'errore dopo il fatto, è cercare la causa principale senza incolpare le persone. Questo è spesso chiamato "post mortem senza colpa", e il codice Etsy come post sul blog Craft espande il concetto. Le persone di Etsy hanno presentato e scritto di più al riguardo su altri forum e blog.

Per prevenire errori in primo luogo, alcuni tratti della cultura sono indispensabili. Le procedure e i vari artefatti creati nel sistema devono verificare che il loro utilizzo da parte degli umani sia molto chiaro e autoesplicativo. Spesso quelli che creano non sono quelli che consumano, portando a una disconnessione e mancanza di chiarezza. Il sistema non è quindi sicuro da usare poiché l'unica persona che conosce tutti i presupposti è colui che l'ha creato (e nessun altro).

Misure di controllo efficaci

Attuare misure di controllo efficaci per arrestare il processo quando si verifica un errore. Questo è a prova di errore. Misure di controllo efficaci sono modifiche di progettazione che impediscono o impediscono il proseguimento dei processi quando si è verificato un errore introducendo un errore del processo

Esempio:

Nel 1896, Sakichi Toyoda inventò il primo telaio elettrico giapponese chiamato "telaio elettrico Toyoda Steam". Questo sviluppo ha aumentato la produttività di venti volte e la qualità dei tessuti è migliorata e ha causato una rivoluzione nel settore tessile in Giappone. Ma ecco la scoperta sottile e molto importante e il principio:

quando l'ago si è rotto, la macchina si è fermata

Sakichi Toyoda ha creato un'innovazione per il telaio che sarebbe poi diventato uno dei pilastri del Toyota Production System (Lean). Quel pilastro che ora chiamiamo Jidoka, a volte chiamato "automazione intelligente con un tocco umano" o "autonomia".

In gran parte, Andon (arresto al primo difetto) e Poka-Yoke (correzione degli errori) sono sviluppi successivi che trovano la loro influenza dal telaio.

Rimozione di punti deboli a punto singolo

Il termine debolezza a punto singolo si riferisce alla creazione di esuberi nel sistema come approccio per migliorare l'affidabilità del sistema. La ridondanza viene creata aumentando il numero di sistemi o individui coinvolti nel processo. Avere più sistemi di backup o più controlli (doppio, triplo o più) aumenta la probabilità che il processo proceda correttamente.

Un grande esempio di ciò è il "principio dei quattro occhi", il che significa che "tutte le decisioni e le transazioni aziendali devono essere approvate dal CEO e dal CFO. Poiché il CFO non riferisce all'amministratore delegato, esiste un meccanismo di controllo indipendente" .

fonte: https://en.wikipedia.org/wiki/Two-man_rule

Rendi evidenti i pericoli

Se i pericoli sono resi evidenti o impossibili da raggiungere, l'uomo non può creare errori. Ad esempio, il codice colore è un approccio comune per rendere più evidenti gli errori. O se pensi a vari socket per computer che possono essere inseriti solo in un modo e non nell'altro, ecc.


Alcuni grandi libri parlano dell'argomento e non sarebbe una buona risposta senza menzionarli:


1
Un metodo molto importante che non menzionate è il "principio dei quattro occhi" che viene utilizzato nella finanza - sia come obbligo regolamentare che come protezione. Nell'industria del software è implementato in vari modi, come ad esempio recensioni di codice, ma può anche essere utilizzato per convalidare i comandi che influenzano i sistemi live.
Michael Le Barbier Grünewald

Lo aggiungerò al principio SPW.
Evgeny

1
Ottima discussione sugli errori, ma non dice come proteggersi da implementazioni accidentali.
Alexandre

1
La domanda si pone specificamente su Ansible. Questa risposta è molto approfondita e ben studiata, ma è a un passo dal problema del mondo reale.
Woodland Hunter

1
@Evgeny Quando ho risposto alla tua domanda sulle prestazioni di AWS Lambda, all'inizio non ho detto come eseguire i test e tu l'hai sottolineato. Avevi ragione e ho modificato la mia risposta. Capisco le persone che stanno votando la tua risposta qui. La tua risposta sarebbe utile per una domanda su "Come affrontare e ridurre gli errori sul nostro posto di lavoro?". Qui, OP ha una domanda su Ansible e non ne hai nemmeno parlato. Peggio ancora, OP dà un'indicazione sul tipo di soluzione che sta cercando, e tu stai andando dall'altra parte. La tua risposta è ottima (davvero), ma non per questa domanda.
Alexandre

1

Come ha detto @bradim, utilizzare lo strumento CI / CD per avviare la distribuzione anziché i comandi basati sulla mano è di solito un buon passo avanti, così come aggiungere test nella pipeline che testano effettivamente gli script di distribuzione sull'ambiente di gestione temporanea (o un ambiente appena creato), dove puoi raccogliere i bug prima.

Vorrei anche aggiungere che invece di chiamare direttamente i tuoi script Ansible , puoi anche aggiungere strumenti come Ansible Tower nel tuo flusso, che ti consentiranno di tenere traccia delle modifiche che sono state eseguite più facilmente e ti daranno un ulteriore passaggio di sicurezza nel tuo flusso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.