Πώς να χρησιμοποιήσετε το Ansible Vault σε Playbooks για την προστασία ευαίσθητων δεδομένων - Μέρος 10


Καθώς χρησιμοποιείτε το Ansible, ενδέχεται να σας ζητηθεί να πληκτρολογήσετε ορισμένες εμπιστευτικές ή απόρρητες πληροφορίες στα βιβλία παιχνιδιού. Αυτό περιλαμβάνει ιδιωτικά και δημόσια κλειδιά SSH, κωδικούς πρόσβασης και πιστοποιητικά SSL για να αναφέρουμε μόνο μερικά. Όπως ήδη γνωρίζουμε, η κακή πρακτική είναι να αποθηκεύουμε αυτές τις ευαίσθητες πληροφορίες σε απλό κείμενο για προφανείς λόγους. Αυτές οι πληροφορίες πρέπει να φυλάσσονται κλειδωμένες γιατί μπορούμε μόνο να φανταστούμε τι θα συνέβαινε εάν οι χάκερ ή οι μη εξουσιοδοτημένοι χρήστες τις καταλάβουν.

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

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

Πώς να δημιουργήσετε ένα κρυπτογραφημένο αρχείο στο Ansible

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

ansible-vault create filename

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

ansible-vault create mysecrets.yml

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

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

Για να επαληθεύσετε την κρυπτογράφηση του αρχείου, χρησιμοποιήστε την εντολή cat όπως φαίνεται.

cat mysecrets.yml

Πώς να προβάλετε ένα κρυπτογραφημένο αρχείο στο Ansible

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

ansible-vault view mysecrets.yml

Για άλλη μια φορά, θα σας ζητηθεί κωδικός πρόσβασης. Για άλλη μια φορά, θα έχετε πρόσβαση στις πληροφορίες σας.

Πώς να επεξεργαστείτε ένα κρυπτογραφημένο αρχείο στο Ansible

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

ansible-vault edit mysecrets.yml

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

Αφού ολοκληρώσετε την επεξεργασία, αποθηκεύστε και βγείτε από το πρόγραμμα επεξεργασίας vim.

Πώς να αλλάξετε τον κωδικό πρόσβασης Ansible Vault

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

ansible-vault rekey mysecrets.yml

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

Πώς να κρυπτογραφήσετε ένα μη κρυπτογραφημένο αρχείο στο Ansible

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

ansible-vault encrypt classified.txt

Μπορείτε αργότερα να προβάλετε το αρχείο χρησιμοποιώντας την εντολή cat όπως υποδεικνύεται παρακάτω.

Πώς να αποκρυπτογραφήσετε ένα κρυπτογραφημένο αρχείο

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

ansible-vault decrypt classified.txt

Πώς να κρυπτογραφήσετε συγκεκριμένες μεταβλητές στο Ansible

Επιπλέον, το Ansible vault σάς παρέχει τη δυνατότητα να κρυπτογραφήσετε ορισμένες μεταβλητές. Αυτό γίνεται χρησιμοποιώντας την εντολή ansible-vault encrypt_string όπως φαίνεται.

ansible-vault encrypt_string 

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

Αυτό μπορεί να επιτευχθεί σε μία μόνο γραμμή όπως φαίνεται παρακάτω.

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

Πώς να αποκρυπτογραφήσετε ένα αρχείο Playbook κατά τη διάρκεια του χρόνου εκτέλεσης

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

ansible-playbook deploy.yml --ask-vault-pass

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

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

ansible-playbook deploy.yml --vault-password-file  /home/tecmint/vault_pass.txt

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