Πώς να ασφαλίσετε το αποθετήριο Git σας με υπογεγραμμένες δεσμεύσεις και ετικέτες

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

Τι είναι οι υπογεγραμμένες δεσμεύσεις;

Οι υπογεγραμμένες δεσμεύσεις περιλαμβάνουν την προσθήκη ψηφιακής υπογραφής στις δεσμεύσεις σας, χρησιμοποιώντας ένα ιδιωτικό κρυπτογραφικό κλειδί, συνήθως GPG, αν και υποστηρίζει επίσης SSH ή X.509. Μόλις δημιουργηθεί, πρέπει να προσθέσετε το κλειδί υπογραφής τόσο στο προφίλ σας στο GitHub όσο και στο τοπικό σας πρόγραμμα-πελάτη Git.

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

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

Ρύθμιση νέου κλειδιού GPG

Πρώτα, θα χρειαστεί να δημιουργήσετε ένα νέο κλειδί GPG που χρησιμοποιείται για την υπογραφή και, στη συνέχεια, θα πρέπει να ενημερώσετε τόσο τον πελάτη Git όσο και το GitHub σχετικά.

Για να δημιουργήσετε το κλειδί, θα χρειαστείτε το

gpg

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

gpg --full-generate-key

Μπορείτε να πατήσετε enter για τα περισσότερα από τα μηνύματα προτροπής, αλλά πρέπει να εισαγάγετε μια φράση πρόσβασης και πρέπει να εισαγάγετε τη διεύθυνση email σας στο GitHub. Εάν θέλετε η διεύθυνσή σας να είναι ιδιωτική, μπορείτε να χρησιμοποιήσετε τη διεύθυνση “μη απάντηση” για τον λογαριασμό σας στο GitHub.

Στη συνέχεια, παραθέστε τα κλειδιά και εξάγετε το μπλοκ δημόσιου κλειδιού για το αναγνωριστικό κλειδιού που μόλις δημιουργήσατε:

gpg --list-secret-keys
gpg --armor --export [keyID]

Στη συνέχεια, θα το προσθέσουμε στον λογαριασμό σας στο GitHub. Από τις ρυθμίσεις χρήστη, κάντε κλικ στο «SSH and GPG Keys» και προσθέστε ένα νέο κλειδί GPG. Μπορείτε επίσης να ενεργοποιήσετε τη λειτουργία επαγρύπνησης εδώ, η οποία θα επισημάνει τις δεσμεύσεις στο GitHub που δεν χρησιμοποιούν αυτά τα κλειδιά ως μη επαληθευμένες.

Ορίστε ένα όνομα και επικολλήστε στο μπλοκ δημόσιου κλειδιού με το οποίο πραγματοποιήσατε εξαγωγή

gpg --export

.

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

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

user.signingkey

στο αναγνωριστικό κλειδιού GPG που χρησιμοποιήσατε για εξαγωγή.

git config --global user.signingkey [keyID]

Στη συνέχεια, θα θέλετε να πείτε στο Git να υπογράψει όλες τις δεσμεύσεις από προεπιλογή. Αυτό μπορεί να ρυθμιστεί για μεμονωμένα αποθετήρια εάν θέλετε:

git config --global commit.gpgsign true

Διαφορετικά, μπορείτε να χρησιμοποιήσετε το

-S

Σημαία για υπογραφή δεσμεύεται με μη αυτόματο τρόπο.

Επιβολή υπογεγραμμένων δεσμεύσεων με προστασία κλάδων

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

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

Είναι εύκολο να δημιουργήσετε έναν νέο κανόνα προστασίας διακλάδωσης από την καρτέλα “Κλάδοι” στις ρυθμίσεις του αποθετηρίου σας. Θα θελήσετε να ρυθμίσετε το φίλτρο σε “*” για να περιλαμβάνει όλους τους κλάδους.

Στη συνέχεια, επιλέξτε “Απαιτούνται υπογεγραμμένες δεσμεύσεις”.

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


HowToGeek.com



You might also like


Leave A Reply



Cancel Reply

Your email address will not be published.