Κάθε ομάδα φτάνει κάποια στιγμή στο σημείο όπου τα διαπιστευτήρια βρίσκονται σε υπερβολικά πολλά σημεία: ένα .env σε κάθε laptop, ένα καρφιτσωμένο μήνυμα στο Slack, ένα υπολογιστικό φύλλο με όνομα «logins», μια μεταβλητή CI που όρισε κάποιος πριν από δύο χρόνια. Ένας διαχειριστής μυστικών στο cloud (cloud secret manager) υπάρχει για να τα συγκεντρώσει όλα αυτά σε ένα σημείο, κρυπτογραφημένο, με έλεγχο πρόσβασης και καταγραφή.
Αυτός ο οδηγός εξηγεί τι κάνει ένας διαχειριστής μυστικών στο cloud, πώς επιλέγετε ανάμεσα στις βασικές επιλογές, πώς τον εγκαθιστάτε χωρίς μακροχρόνια μετάβαση και ποια είναι η μία δουλειά που δεν κάνει: να φτάσει ένα μυστικό σε έναν άνθρωπο που δεν βρίσκεται μέσα στον λογαριασμό σας στο cloud.
Τι κάνει ένας διαχειριστής μυστικών στο cloud
Ένας διαχειριστής μυστικών αποθηκεύει ευαίσθητες τιμές και τις δίνει, όταν του ζητηθούν, σε εξουσιοδοτημένες ταυτότητες. Οι βασικές λειτουργίες είναι ίδιες σε όλους τους παρόχους:
- Κρυπτογραφημένη αποθήκευση για τα αποθηκευμένα δεδομένα, με κλειδιά που φυλάσσονται στην υπηρεσία διαχείρισης κλειδιών του παρόχου, και TLS κατά τη μεταφορά.
- Πρόσβαση με βάση την ταυτότητα: κάθε μυστικό έχει μια πολιτική που ορίζει ποιοι χρήστες, ρόλοι ή φόρτοι εργασίας μπορούν να το διαβάσουν, να το γράψουν ή να το αλλάξουν. Μια εφαρμογή ταυτοποιείται με τη δική της ταυτότητα, όχι με έναν κύριο κωδικό πρόσβασης.
- Καταγραφή ενεργειών για κάθε ανάγνωση, εγγραφή και εναλλαγή, με το ποιος, τι και πότε.
- Εκδόσεις και εναλλαγή (rotation): μια νέα τιμή μπορεί να προετοιμαστεί, οι εφαρμογές να περάσουν σε αυτή και η παλιά έκδοση να αποσυρθεί. Πολλοί διαχειριστές αλλάζουν αυτόματα τα διαπιστευτήρια των βάσεων δεδομένων.
- Ανάκτηση κατά την εκτέλεση: η εφαρμογή παίρνει το μυστικό όταν ξεκινά ή όταν το χρειάζεται, οπότε η τιμή δεν γράφεται ποτέ σε κώδικα, images ή αρχεία ρυθμίσεων.
Μυστικό είναι οτιδήποτε δίνει πρόσβαση. Οι ρυθμίσεις που απλώς περιγράφουν μια συμπεριφορά, όπως ένας αριθμός θύρας ή ένα feature flag, ανήκουν στις συνηθισμένες ρυθμίσεις. Αν τα ανακατέψετε, ο χώρος των μυστικών γεμίζει θόρυβο και οι ρυθμίσεις γίνονται επικίνδυνες.
Πώς επιλέγετε
Η απόφαση συνήθως εξαρτάται από το πού τρέχουν οι φόρτοι εργασίας σας και σε πόσα cloud βρίσκεστε.
| Επιλογή | Ταιριάζει σε | Προσοχή σε |
|---|---|---|
| AWS Secrets Manager / Parameter Store | Φόρτους εργασίας που είναι ήδη στο AWS, με ταυτότητες IAM παντού | Χρέωση ανά μυστικό στο Secrets Manager. Το Parameter Store είναι φθηνότερο για απλές τιμές |
| Google Secret Manager | Έργα GCP, φόρτους εργασίας σε Cloud Run και GKE | Επιλογές περιφερειακής αναπαραγωγής |
| Azure Key Vault | Φόρτους εργασίας στο Azure, ανάγκες κύκλου ζωής πιστοποιητικών | Ξεχωριστά vault ανά περιβάλλον, για να μένουν απλές οι πολιτικές |
| HashiCorp Vault | Πολλά cloud ή εγκατάσταση on-prem, δυναμικά διαπιστευτήρια μικρής διάρκειας | Ότι το λειτουργείτε εσείς, εκτός αν χρησιμοποιείτε τη φιλοξενούμενη έκδοση |
| Doppler, Infisical, 1Password Secrets Automation | Μικρές ομάδες που θέλουν εύχρηστο για προγραμματιστές συγχρονισμό με πολλές πλατφόρμες | Έναν ακόμη πάροχο στην αλυσίδα εμπιστοσύνης |
Τέσσερις ερωτήσεις κρίνουν τις περισσότερες επιλογές. Συνδέεται με τα εργαλεία ανάπτυξης και το περιβάλλον εκτέλεσης χωρίς ειδικό κώδικα σύνδεσης; Μπορούν οι φόρτοι εργασίας να ταυτοποιηθούν σε αυτόν με την ταυτότητα που ήδη έχουν; Κάνει εναλλαγή στους τύπους διαπιστευτηρίων που πραγματικά έχετε; Και τα αρχεία καταγραφής του καταλήγουν εκεί όπου ήδη κοιτάζει η ομάδα ασφάλειας; Οι τιμές, οι περιοχές και οι πιστοποιήσεις συμμόρφωσης έρχονται μετά από αυτές τις τέσσερις.
Εγκατάσταση χωρίς έργο έξι μηνών
- Κάντε απογραφή και ορίστε υπεύθυνους. Καταγράψτε κάθε μυστικό, πού βρίσκεται, τι το χρησιμοποιεί και ποιος είναι υπεύθυνος. Ο υπεύθυνος αποφασίζει την πολιτική εναλλαγής και τη λίστα πρόσβασης.
- Ορίστε πρώτα τις ταυτότητες. Δημιουργήστε τους ρόλους ή τους λογαριασμούς υπηρεσίας για κάθε φόρτο εργασίας και περιβάλλον πριν μεταφέρετε έστω και μία τιμή. Όλο το νόημα βρίσκεται στις πολιτικές πρόσβασης που λένε «αυτή η υπηρεσία, αυτό το περιβάλλον, μόνο ανάγνωση».
- Μεταφέρετε με σειρά κινδύνου. Πρώτα τους κωδικούς πρόσβασης των βάσεων δεδομένων παραγωγής και τα κλειδιά πληρωμών, μετά τα κλειδιά API τρίτων και στο τέλος όλα τα υπόλοιπα. Αφαιρέστε κάθε τιμή από τον κώδικα, τις μεταβλητές CI και τα αρχεία ρυθμίσεων καθώς τη μεταφέρετε, και αλλάξτε την κατά τη μεταφορά, γιατί η παλιά τιμή έχει ήδη αντιγραφεί εδώ και εκεί.
- Αλλάξτε τον τρόπο που οι εφαρμογές διαβάζουν τα μυστικά. Αντικαταστήστε τις τιμές γραμμένες μέσα στον κώδικα και τα αρχεία περιβάλλοντος με μια κλήση στο SDK του διαχειριστή κατά την εκκίνηση, ή περάστε τις μέσω της εγγενούς ενσωμάτωσης της πλατφόρμας.
- Ενεργοποιήστε την εναλλαγή για ό,τι μπορεί ο διαχειριστής να αλλάξει μόνος του, και γράψτε μια συνάρτηση εναλλαγής ή ένα runbook για τα υπόλοιπα.
- Ορίστε ειδοποιήσεις για το ασυνήθιστο. Μια ανάγνωση μυστικού από νέα ταυτότητα, μια απότομη αύξηση στις αναγνώσεις ή μια ανάγνωση από περιοχή όπου δεν κάνετε ανάπτυξη αξίζει άμεση ειδοποίηση.
Τα συνηθισμένα λάθη είναι προβλέψιμα: τα παλιά αντίγραφα μένουν στη θέση τους μετά τη μετάβαση, ένας φόρτος εργασίας παίρνει δικαίωμα ανάγνωσης σε όλο τον χώρο αντί μόνο στα δικά του μυστικά, και η τιμή που ανακτήθηκε καταγράφεται στα αρχεία καταγραφής της εφαρμογής.
Το κενό που δεν καλύπτει ένας διαχειριστής μυστικών
Ένας διαχειριστής μυστικών είναι φτιαγμένος για μηχανές και για ανθρώπους μέσα στο σύστημα ταυτοτήτων σας. Δεν είναι φτιαγμένος για τη στιγμή που ένα διαπιστευτήριο πρέπει να φτάσει σε κάποιον έξω από αυτό: σε έναν εξωτερικό συνεργάτη που χρειάζεται προσωρινό κωδικό πρόσβασης για μια βάση δεδομένων, σε έναν πελάτη που παίρνει τα πρώτα του στοιχεία σύνδεσης διαχειριστή, σε έναν μηχανικό ενός προμηθευτή που χρειάζεται ένα token για ένα απόγευμα, σε έναν νέο υπάλληλο την πρώτη του ημέρα, πριν υπάρξει ο λογαριασμός του στο SSO.
Αυτές οι παραδόσεις γίνονται ούτως ή άλλως, και χωρίς εγκεκριμένο δρόμο γίνονται μέσω email και συνομιλιών, δηλαδή εκεί από όπου οι διαχειριστές μυστικών υποτίθεται ότι θα έβγαζαν τα διαπιστευτήρια. Ο εγκεκριμένος δρόμος είναι ένας μυστικός σύνδεσμος μίας χρήσης. Η τιμή κρυπτογραφείται στο πρόγραμμα περιήγησής σας πριν αποθηκευτεί, το μήνυμα περιέχει μόνο έναν σύνδεσμο, το αποθηκευμένο αντίγραφο καταστρέφεται την πρώτη φορά που ανοίγει ο σύνδεσμος, και ο σύνδεσμος λήγει μετά από ορισμένο χρόνο αν δεν τον ανοίξει κανείς.
Το μοτίβο που λειτουργεί: ο διαχειριστής μυστικών είναι το σύστημα αναφοράς, και ο σύνδεσμος μίας χρήσης είναι ο μηχανισμός παράδοσης όταν ένας άνθρωπος έξω από το σύστημα χρειάζεται μια τιμή μία φορά. Δημιουργήστε το διαπιστευτήριο, αποθηκεύστε το στον διαχειριστή, στείλτε το στο άτομο με έναν σύνδεσμο μίας χρήσης και αλλάξτε το όταν λήξει η πρόσβασή του. Το άρθρο μυστικοί σύνδεσμοι ή διαχειριστές κωδικών πρόσβασης εφαρμόζει το ίδιο σκεπτικό στον διαχειριστή κωδικών πρόσβασης της ομάδας, και ο οδηγός για τα διαπιστευτήρια ανάμεσα σε ομάδες περιγράφει τη ρουτίνα.
Μια σύντομη λίστα ελέγχου
- Κάθε μυστικό έχει υπεύθυνο, πολιτική πρόσβασης και κανόνα εναλλαγής.
- Οι φόρτοι εργασίας ταυτοποιούνται με τη δική τους ταυτότητα, ποτέ με κοινόχρηστο κλειδί.
- Μετά τη μετάβαση, κανένα μυστικό δεν υπάρχει σε κώδικα, images, μεταβλητές CI ή συνομιλίες.
- Οι αναγνώσεις καταγράφονται κάπου όπου κάποιος πραγματικά κοιτάζει.
- Οι άνθρωποι έξω από το σύστημα ταυτοτήτων λαμβάνουν μυστικά μέσω συνδέσμου μίας χρήσης, όχι μέσα σε μήνυμα.
Κάντε αυτά τα πέντε και ο διαχειριστής μυστικών παύει να είναι απλώς ένα προϊόν που αγοράσατε: γίνεται ο λόγος που τα διαπιστευτήρια σταμάτησαν να διαρρέουν.
