Cloud SQL Auth Proxy ή απευθείας διαδρομή VPN προς τη βάση δεδομένων
Το Auth Proxy και μια απευθείας διαδρομή VPN λύνουν διαφορετικά μισά του ίδιου προβλήματος. Συγκρίνετε πρώτα την εξουσιοδότηση του connector, τις θύρες και τη σύνδεση στη βάση δεδομένων.
Υπάρχουν δύο λογικοί τρόποι να φτάσετε σε ένα ιδιωτικό instance Cloud SQL από φορητό υπολογιστή στο VPN. Ο ένας είναι απευθείας σύνδεση στην ιδιωτική διεύθυνση του instance μέσω της διαδρομής που έχετε ήδη. Ο άλλος είναι το Cloud SQL Auth Proxy, που ακούει στο loopback και ανοίγει το ίδιο τη σύνδεση προς το Cloud SQL. Δεν είναι τόσο ανταγωνιστικά προϊόντα όσο δύο διαφορετικές απαντήσεις στο ποιος κρατά τα διαπιστευτήρια και ποιος κρατά τη διαδρομή. Μια κακή επιλογή συνήθως εμφανίζεται ως σφάλμα εξουσιοδότησης που διαβάζεται ως σφάλμα δικτύου.
Αυτή είναι η σύγκριση που θα έβαζα μπροστά σε μια ομάδα, ακολουθούμενη από τους ελέγχους που πραγματικά την αποφασίζουν.
Δύο διαδρομές προς το ίδιο instance
Η άμεση διαδρομή χρησιμοποιεί τη διαδρομή private-services-access από το δίκτυό σας προς το VPC του έργου. Ο client σας μιλά PostgreSQL με την ιδιωτική διεύθυνση του instance, και η σύνδεση ζει ή πεθαίνει στη δρομολόγηση, τους κανόνες firewall και τα διαπιστευτήρια της βάσης δεδομένων.
Η διαδρομή μέσω proxy χρησιμοποιεί την ίδια διαδρομή αλλά προσθέτει μια τοπική διεργασία. Το proxy πιστοποιείται στο API της Google με τα default credentials της εφαρμογής σας, ανοίγει σύνδεση προς το instance μέσω του connector και εκθέτει μια θύρα loopback που ο client σας αντιμετωπίζει ως PostgreSQL. Δύο άλματα γίνονται τρία, και το μεσαίο φέρει την εξουσιοδότηση IAM. Η διαδρομή VPN παραμένει δική σας για συντήρηση, και το proxy δεν τη θεωρεί ποτέ υποκατάστατο αυτού του ελέγχου.
Τι εξουσιοδοτεί στην πραγματικότητα κάθε διαδρομή
Η διαφορά που μετράει περισσότερο είναι τι μπορεί να εξουσιοδοτήσει για εσάς κάθε επιλογή:
| Question | Direct private IP | Auth Proxy |
|---|---|---|
| Who proves identity to the network | Your client, through the VPN and a database login | The proxy, through IAM to Google's API |
| IAM role needed for the connector | None | Cloud SQL Client or equivalent |
| Database user authentication | Always required | Still required unless IAM database authentication is enabled |
| Shape of the local leg | Client to instance | Client to loopback, proxy to instance |
Ο έλεγχος IAM του proxy και η σύνδεση στη βάση δεδομένων είναι ξεχωριστές πύλες, και το πέρασμα από τη μία δεν ανοίγει την άλλη. Μια ομάδα που ενεργοποιεί το proxy και υποθέτει ότι ο λογαριασμός της εφαρμογής είναι πλέον περιττός θα περάσει ένα απόγευμα με αποτυχίες κωδικών που δεν έχουν καμία σχέση με το δίκτυο.
Θύρες και διαδρομές, δίπλα δίπλα
Το proxy χρειάζεται εξερχόμενο TCP 443 για το API και TCP 3307 για τη σύνδεση του instance, και τα δύο περιγράφονται στην επισκόπηση του Auth Proxy. Η διαδρομή VPN σας καλύπτει το δεύτερο· το πρώτο φεύγει συνήθως από τη συνηθισμένη διαδρομή.
Μια άμεση σύνδεση απαιτεί η θύρα PostgreSQL του instance να είναι προσβάσιμη μέσω της ιδιωτικής διαδρομής, που είναι μια τελείως διαφορετική συζήτηση για firewall. Αν η ομάδα δικτύου σας επιτρέπει μόνο εξερχόμενο 443 από υποδίκτυα client, το proxy ταιριάζει χωρίς αλλαγή κανόνα και η άμεση διαδρομή όχι. Αυτό το ένα γεγονός αποφασίζει την επιλογή συχνότερα από οποιαδήποτε αρχιτεκτονική προτίμηση.
Καμία από τις δύο διαδρομές δεν απαιτεί το instance να έχει δημόσια διεύθυνση, και καμία δεν δικαιολογεί να προστεθεί μία.
Πού το proxy δεν βοηθά
Το proxy δεν διορθώνει μια διαδρομή που λείπει. Αν η διαδρομή private-services-access λείπει, ή το VPN δεν τη μεταφέρει, ο connector αποτυγχάνει ενώ ο τοπικός listener κάθεται ακόμη εκεί και ακούει, και αυτό είναι το μπερδεμένο μέρος.
Επίσης δεν προστατεύει το τμήμα ανάμεσα στην εφαρμογή σας και το proxy. Σε έναν φορητό υπολογιστή αυτό το τμήμα είναι loopback και εντάξει. Αν δεσμεύσετε τον listener σε διεύθυνση wildcard ώστε να φτάνει ένας συνάδελφος, έχετε χτίσει μια πύλη βάσης δεδομένων χωρίς πιστοποίηση και την ονομάσατε ευκολία. Κρατήστε το στο loopback και αφήστε τον συνάδελφο να πάρει τα δικά του διαπιστευτήρια.
Και δεν κάνει το Private Service Connect και το private services access ανταλλάξιμα. Ένα instance PSC χρειάζεται τη δική του ρύθμιση DNS και την κλήση --psc αντί για τη μορφή --private-ip.
Επιλογή και μετά επαλήθευση και στις δύο περιπτώσεις
Επιλέξτε το proxy όταν θέλετε IAM στη διαδρομή, βραχύβια διαπιστευτήρια και καμία αλλαγή στην εισερχόμενη firewall.
Επιλέξτε την άμεση διαδρομή όταν ένας υποστηριζόμενος client έχει ήδη ισχυρά διαπιστευτήρια βάσης δεδομένων και η ομάδα δικτύου είναι άνετη να ανοίξει τη θύρα. Και στις δύο περιπτώσεις επαληθεύστε με πραγματικό query και όχι με επιτυχημένη σύνδεση: συνδεθείτε, εκτελέστε μία ανάγνωση σε γνωστό πίνακα και δείτε τι βλέπει ο διακομιστής για τη συνεδρία σας.
Μετά από επανασύνδεση VPN, αντιμετωπίστε τα ληγμένα διαπιστευτήρια, τη χαμένη ιδιωτική διαδρομή και την απόρριψη σύνδεσης στη βάση ως τρεις διαφορετικές αστοχίες. Μόνο μία από αυτές είναι πρόβλημα δικτύου, και μόνο μία θα πρέπει ποτέ να οδηγήσει σε αλλαγή κανόνα firewall.