Ασφαλίστε τα μυστικά σας με το Ansible Vault



Αυτό το blog Ansible vault εξηγεί πώς τα ευαίσθητα δεδομένα (κωδικοί πρόσβασης / μυστικό κλειδί / αρχεία πιστοποιητικού) αποθηκεύονται σε κρυπτογραφημένα αρχεία και ενσωματώνονται σε Ansible Playbooks.

Όσο υψηλότερη είναι η χρήση της τεχνολογίας, τόσο μεγαλύτερη είναι η πιθανή απειλή για την ασφάλεια. Μια τυπική οργάνωση Ansible απαιτεί από εσάς να τροφοδοτείτε το 'Secrets'. Αυτά τα μυστικά θα μπορούσαν να είναι κυριολεκτικά οτιδήποτε, κωδικοί πρόσβασης, διακριτικά API, SSH δημόσια ή ιδιωτικά κλειδιά, πιστοποιητικά SSL κ.λπ. Πώς διατηρούμε αυτά τα μυστικά ασφαλή; Το Ansible παρέχει μια δυνατότητα που ονομάζεται Ansible Vault.

Σε αυτό το ιστολόγιο, θα δείξω πώς να χρησιμοποιώ το Ansible Vault και να εξερευνήσω μερικές από τις βέλτιστες πρακτικές για τη διατήρηση της ασφάλειας των δεδομένων.





Θέματα που καλύπτονται σε αυτό το ιστολόγιο:

Εάν θέλετε να μάθετε τον DevOps, ' φυσικά θα ήταν η επιλογή σας.



Τι είναι το Ansible Vault;

Η ύπαρξη υποδομής ως κωδικός μπορεί να αποτελέσει την απειλή έκθεσης των ευαίσθητων δεδομένων σας στον κόσμο, οδηγώντας σε ανεπιθύμητα ζητήματα ασφάλειας. Το Ansible Vault είναι μια δυνατότητα που σας επιτρέπει να διατηρείτε όλα τα μυστικά σας ασφαλή. Μπορεί να κρυπτογραφήσει ολόκληρα αρχεία, ολόκληρα βιβλία παιχνιδιού YAML ή ακόμα και μερικές μεταβλητές. Παρέχει μια δυνατότητα όπου δεν μπορείτε μόνο να κρυπτογραφήσετε ευαίσθητα δεδομένα αλλά και να τα ενσωματώσετε στα βιβλία σας.

Το Vault υλοποιείται με λεπτομέρεια σε επίπεδο αρχείου όπου τα αρχεία είτε είναι πλήρως κρυπτογραφημένα είτε εντελώς μη κρυπτογραφημένα. Χρησιμοποιεί τον ίδιο κωδικό πρόσβασης για την κρυπτογράφηση καθώς και για την αποκρυπτογράφηση αρχείων που καθιστά τη χρήση του Ansible Vault πολύ φιλική προς το χρήστη.

Γιατί να χρησιμοποιήσετε το Ansible Vault;

Καθώς το Ansible χρησιμοποιείται για αυτοματοποίηση, υπάρχει μεγάλη πιθανότητα τα βιβλία αναπαραγωγής να περιέχουν ορισμένα διαπιστευτήρια, πιστοποιητικά SSL ή άλλα ευαίσθητα δεδομένα. Η αποθήκευση τόσο ευαίσθητων δεδομένων ως απλού κειμένου είναι κακή ιδέα. Μια λάθος δέσμευση για κλοπή GitHub ή φορητού υπολογιστή μπορεί να προκαλέσει τεράστια απώλεια σε έναν οργανισμό. Εδώ έρχεται η εικόνα το Ansible θησαυροφυλάκιο. Είναι ένας πολύ καλός τρόπος για την υποδομή ως κώδικα, χωρίς συμβιβασμούς στην ασφάλεια.



Ας υποθέσουμε ότι διαθέτουμε ένα playbook που παρέχει την παρουσία σας EC2 στο AWS. Πρέπει να δώσετε το αναγνωριστικό κλειδιού πρόσβασης AWS και το μυστικό κλειδί AWS στο βιβλίο αναπαραγωγής. Δεν μοιράζεστε αυτά τα κλειδιά με άλλους για προφανείς λόγους. Πώς τα κρατάτε χωρίς έκθεση; Υπάρχουν δύο τρόποι - είτε κρυπτογραφήστε αυτές τις δύο μεταβλητές και ενσωματώστε τις στο βιβλίο αναπαραγωγής ή κρυπτογραφήστε ολόκληρο το βιβλίο αναπαραγωγής.

Αυτό ήταν μόνο ένα από τα σενάρια όπου μπορεί να χρησιμοποιηθεί ένα ασαφές θησαυροφυλάκιο. Μπορούμε είτε να κρυπτογραφήσουμε ολόκληρα αρχεία είτε απλά να κρυπτογραφήσουμε μερικές μεταβλητές που ενδέχεται να κρατούν ευαίσθητα δεδομένα και στη συνέχεια το Ansible να τα αποκρυπτογραφεί αυτόματα κατά τη διάρκεια του χρόνου εκτέλεσης. Τώρα μπορούμε να δεσμεύσουμε με ασφάλεια αυτές τις τιμές στο GitHub.

Δημιουργία κρυπτογραφημένου αρχείου

Για να δημιουργήσετε ένα κρυπτογραφημένο αρχείο, χρησιμοποιήστε το ansible-θησαυροφυλάκιο δημιουργία εντολή και περάστε το όνομα αρχείου.

$ ansible-vault create filename.yaml

Θα σας ζητηθεί να δημιουργήσετε έναν κωδικό πρόσβασης και, στη συνέχεια, να τον επιβεβαιώσετε πληκτρολογώντας τον ξανά.

ansible θησαυροφυλάκιο δημιουργία - Ansible Vault - Edureka

Μόλις επιβεβαιωθεί ο κωδικός πρόσβασής σας, θα δημιουργηθεί ένα νέο αρχείο και θα ανοίξει ένα παράθυρο επεξεργασίας. Από προεπιλογή, ο συντάκτης του Ansible Vault είναι vi. Μπορείτε να προσθέσετε δεδομένα, να αποθηκεύσετε και να βγείτε.

Και το αρχείο σας είναι κρυπτογραφημένο.

Επεξεργασία κρυπτογραφημένων αρχείων

Εάν θέλετε να επεξεργαστείτε ένα κρυπτογραφημένο αρχείο, μπορείτε να το επεξεργαστείτε χρησιμοποιώντας επεξεργασία ansible-vault εντολή.

$ ansible-vault επεξεργασία secret.txt

Όπου το secret.txt είναι ένα ήδη δημιουργημένο, κρυπτογραφημένο αρχείο.

Θα σας ζητηθεί να εισαγάγετε τον κωδικό πρόσβασης θησαυροφυλακίου. Το αρχείο (αποκρυπτογραφημένη έκδοση) θα ανοίξει σε έναν επεξεργαστή vi και στη συνέχεια μπορείτε να κάνετε τις απαιτούμενες αλλαγές.

Εάν ελέγξετε την έξοδο, θα δείτε ότι το κείμενό σας θα κρυπτογραφείται αυτόματα όταν αποθηκεύετε και κλείνετε.

πιστοποιημένος προγραμματιστής cloudera για apache hadoop

Προβολή κρυπτογραφημένου αρχείου

Εάν θέλετε να δείτε απλώς ένα κρυπτογραφημένο αρχείο, μπορείτε να χρησιμοποιήσετε το θέα στο δωμάτιο εντολή.

$ ansible-vault προβολή filename.yml

Και πάλι θα σας ζητηθεί κωδικός πρόσβασης.

και θα δείτε παρόμοια έξοδο.

Κωδικός πρόσβασης Vaey Receying

Φυσικά, υπάρχουν στιγμές που θα θέλατε να αλλάξετε τον κωδικό πρόσβασης του θησαυρού. Μπορείτε να χρησιμοποιήσετε το aneyible-θησαυροφυλάκιο εντολή.

$ ansible-vault rekey secret.txt

Θα σας ζητηθεί ο τρέχων κωδικός πρόσβασης του θησαυρού και, στη συνέχεια, ο νέος κωδικός πρόσβασης και τελικά θα επιβεβαιώσετε τον νέο κωδικό πρόσβασης.

Κρυπτογράφηση μη κρυπτογραφημένων αρχείων

Ας υποθέσουμε ότι έχετε ένα αρχείο που θέλετε να κρυπτογραφήσετε, μπορείτε να χρησιμοποιήσετε το κρυπτογράφηση ansible-θησαυροφυλακίου εντολή.

$ ansible-vault encrypt filename.txt

Θα σας ζητηθεί να εισαγάγετε και να επιβεβαιώσετε τον κωδικό πρόσβασης και το αρχείο σας είναι κρυπτογραφημένο.

Τώρα που εξετάζετε τα περιεχόμενα των αρχείων, όλα κρυπτογραφημένα.

Αποκρυπτογράφηση κρυπτογραφημένων αρχείων

Εάν θέλετε να αποκρυπτογραφήσετε ένα κρυπτογραφημένο αρχείο, μπορείτε να το χρησιμοποιήσετε αποκρυπτογράφηση ansible-θησαυροφυλακίου εντολή.

$ ansible-vault αποκρυπτογράφηση filename.txt

Ως συνήθως, θα σας ζητηθεί να εισαγάγετε και να επιβεβαιώσετε τον κωδικό πρόσβασης του θησαυρού.

Κρυπτογράφηση συγκεκριμένων μεταβλητών

Η βέλτιστη πρακτική κατά τη χρήση του Ansible Vault είναι η κρυπτογράφηση μόνο των ευαίσθητων δεδομένων. Στο παράδειγμα που εξηγήθηκε παραπάνω, η ομάδα ανάπτυξης δεν θέλει να μοιραστεί τον κωδικό πρόσβασής τους με την ομάδα παραγωγής και τη σκηνική, αλλά μπορεί να χρειαστεί πρόσβαση σε ορισμένα δεδομένα για να εκτελέσει τη δική τους εργασία. Σε τέτοιες περιπτώσεις θα πρέπει να κρυπτογραφείτε μόνο τα δεδομένα που δεν θέλετε να μοιραστείτε με άλλους, αφήνοντας τα υπόλοιπα ως έχουν.

Το Ansible Vault σάς επιτρέπει να κρυπτογραφείτε μόνο συγκεκριμένες μεταβλητές. Μπορείτε να χρησιμοποιήσετε το ansible-vault encrypt_string εντολή για αυτό.

$ ansible-vault encrypt_string

Θα σας ζητηθεί να εισαγάγετε και, στη συνέχεια, να επιβεβαιώσετε τον κωδικό πρόσβασης του θησαυρού. Στη συνέχεια, μπορείτε να εισαγάγετε την τιμή συμβολοσειράς που θέλετε να κρυπτογραφήσετε. Πατήστε ctrl-d για να τερματίσετε την είσοδο. Τώρα μπορείτε να αντιστοιχίσετε αυτό το κρυπτογραφημένοαξίασε μια συμβολοσειρά στο playbook.

Μπορείτε επίσης να επιτύχετε το ίδιο πράγμα σε μία γραμμή.

$ ansible-vault encrypt_string 'string' --name 'variable_name'

Αποκρυπτογράφηση κρυπτογραφημένων αρχείων κατά τη διάρκεια του χρόνου εκτέλεσης

Εάν θέλετε να αποκρυπτογραφήσετε ένα αρχείο κατά τη διάρκεια του χρόνου εκτέλεσης, μπορείτε να το χρησιμοποιήσετε -Σάσο-θησαυροφυλάκιο σημαία.

$ ansible-playbook launch.yml --ask-vault-pass

Αυτό θα αποκρυπτογραφήσει όλα τα κρυπτογραφημένα αρχεία που χρησιμοποιούνται για την εκτέλεση αυτού του playbook launch.yml. Επίσης, αυτό είναι δυνατό μόνο εάν όλα τα αρχεία είναι κρυπτογραφημένα με τον ίδιο κωδικό πρόσβασης.

Οι προτροπές για τον κωδικό πρόσβασης μπορεί να είναι ενοχλητικές. Ο σκοπός του αυτοματισμού γίνεται άσκοπος. Πώς το κάνουμε καλύτερο; Το Ansible έχει μια δυνατότητα που ονομάζεται 'αρχείο κωδικού πρόσβασης' που αναφέρεται σε ένα αρχείο που περιέχει τον κωδικό πρόσβασης. Στη συνέχεια, μπορείτε να μεταβιβάσετε αυτό το αρχείο κωδικού πρόσβασης κατά τη διάρκεια του χρόνου εκτέλεσης για να αυτοματοποιήσετε.

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.txt

Είναι επίσης δυνατή μια ξεχωριστή δέσμη ενεργειών που καθορίζει τους κωδικούς πρόσβασης. Πρέπει να βεβαιωθείτε ότι το αρχείο σεναρίου είναι εκτελέσιμο και ο κωδικός πρόσβασης είναι τυπωμένος στην τυπική έξοδο για να λειτουργήσει χωρίς ενοχλητικά σφάλματα.

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.py

Χρήση αναγνωριστικού Vault

Το Vault Id είναι ένας τρόπος παροχής ενός αναγνωριστικού σε έναν συγκεκριμένο κωδικό πρόσβασης. Το Vault ID βοηθά στην κρυπτογράφηση διαφορετικών αρχείων με διαφορετικούς κωδικούς πρόσβασης για αναφορά σε ένα βιβλίο αναπαραγωγής. Αυτό το χαρακτηριστικό του Ansible κυκλοφόρησε με την κυκλοφορία του Ansible 2.4. Πριν από αυτήν την κυκλοφορία, μόνο ένας κωδικός πρόσβασης θησαυροφυλακίου θα μπορούσε να χρησιμοποιηθεί σε κάθε εκτέλεση του βιβλίου παιχνιδιού.

Τώρα λοιπόν εάν θέλετε να εκτελέσετε ένα βιβλίο αναπαραγωγής Ansible που χρησιμοποιεί πολλά αρχεία κρυπτογραφημένα με διαφορετικούς κωδικούς πρόσβασης, μπορείτε να χρησιμοποιήσετε το Vault Id.

$ ansible-playbook --vault-id vault-pass1 --vault-id vault-pass2 filename.yml

Με αυτό, φτάνουμε στο τέλος αυτού του ιστολογίου Ansible Vault. Είναι εκπληκτικό να συμβαδίζεις με την τεχνολογία και να τα αξιοποιείς στο έπακρο αλλά όχι με συμβιβασμούς στην ασφάλεια. Αυτός είναι ένας από τους καλύτερους τρόπους για να έχετε την Υποδομή ως κώδικα (IaC).

Εάν θεωρείτε χρήσιμο αυτό το άρθρο, ρίξτε μια ματιά στο ' προσφέρεται από την Edureka. Καλύπτει όλα τα εργαλεία που έχουν κάνει τον κλάδο της πληροφορικής πιο έξυπνο.

Έχετε μια ερώτηση για εμάς; Παρακαλώ δημοσιεύστε το και θα επικοινωνήσουμε μαζί σας.