Ο πίνακας ελέγχου ανοίγει κανονικά στο πρόγραμμα περιήγησης στον φορητό υπολογιστή, αλλά το ίδιο σενάριο υπολογιστικού φύλλου αποτυγχάνει με σφάλμα μη διαθέσιμης διεύθυνσης. Η ενεργοποίηση ή απενεργοποίηση του VPN δεν αλλάζει τίποτα, γιατί το αίτημα δεν φεύγει καθόλου από τον φορητό υπολογιστή. Το Apps Script εκτελείται στην υποδομή της Google και ανοίγει εκεί τη δική του σύνδεση. Αυτό το ένα γεγονός καθορίζει όλο τον σχεδιασμό.

Χωρίστε δύο ερωτήματα πριν αλλάξετε οτιδήποτε: ποιο μηχάνημα στέλνει το αίτημα και ποιο διαπιστευτήριο δέχεται ο παραλήπτης.

Το αίτημα δεν ξεκινά ποτέ στον φορητό σας υπολογιστή

Μια καρτέλα του προγράμματος περιήγησης στέλνει από τον φορητό υπολογιστή, μέσα από τον προσαρμογέα VPN, το εσωτερικό επίθημα DNS και στο ιδιωτικό υποδίκτυο. Το UrlFetchApp στέλνει από κεντρικό υπολογιστή που διαχειρίζεται η Google, άρα βλέπει τους επιλυτές της Google, τις διευθύνσεις εξόδου της Google και καμία από τις διαδρομές split-tunnel σας. Οι δύο διαδρομές μοιράζονται ένα έγγραφο υπολογιστικού φύλλου, όχι μια θέση δικτύου. Στο αρχείο καταγραφής πρόσβασης της εφαρμογής, η προσπάθεια του σεναρίου εμφανίζεται ως διεύθυνση Google και όχι ως διεύθυνση από τη δεξαμενή VPN, και αυτή είναι η ταχύτερη επιβεβαίωση που θα πάρετε.

Γι' αυτό οι τοπικές διορθώσεις δεν κάνουν τίποτα. Το να δείξετε τον φορητό υπολογιστή σε άλλον επιλυτή, να επανεκκινήσετε τον πελάτη VPN ή να προσθέσετε μια εγγραφή στο hosts αλλάζει τη διαδρομή του προγράμματος περιήγησης και αφήνει τη διαδρομή του σεναρίου ακριβώς όπως ήταν.

Τι αποκλείει αυτό

Ένα τελικό σημείο μόνο για εσωτερική χρήση δεν είναι προσβάσιμο από το Apps Script, και η λίστα επιτρεπόμενων IP είναι φτωχό υποκατάστατο του ελέγχου πρόσβασης σε αυτή τη θέση. Τα εύρη εξόδου της Google είναι ευρέα, κοινοποιούνται με άλλους πελάτες και είναι αδύνατο να συνδεθούν με ένα σενάριο. Η αναφορά του UrlFetchApp δηλώνει ότι τα αιτήματα προέρχονται από τη δεξαμενή IP της Google, που είναι η έγκυρη εκδοχή αυτού του ισχυρισμού. Το άνοιγμα της εσωτερικής εφαρμογής σε αυτά τα εύρη επιτρέπει κίνηση που δεν μπορείτε να αποδώσετε.

Οι συνεδρίες του προγράμματος περιήγησης συμπεριφέρονται με τον ίδιο τρόπο. Ένα cookie ή μια συνεδρία SSO στο πρόγραμμα περιήγησης του φορητού υπολογιστή δεν ταξιδεύει με το αίτημα, το οποίο είναι νέος πελάτης HTTPS χωρίς κατάσταση συνεδρίας. Ό,τι εξαρτάται από ανακατεύθυνση SSO του προγράμματος περιήγησης καταλήγει σε αυτή την ανακατεύθυνση και όχι στα δεδομένα σας.

Δύο εφαρμόσιμες μορφές

Η πρώτη μορφή δίνει στο σενάριο εγκεκριμένο API. Δημοσιεύστε την εσωτερική υπηρεσία πίσω από μια πύλη που επαληθεύει τον καλούντα και μετά κάντε το σενάριο να παρουσιάσει διαπιστευτήριο που δέχεται η πύλη, όπως ένα token λογαριασμού υπηρεσίας. Στο Apps Script αυτό σημαίνει βιβλιοθήκη OAuth2 ή ScriptApp.getOAuthToken(), μαζί με λίστα επιτρεπόμενων ταυτοτήτων καλούντος στην πλευρά του API αντί για λίστα IP.

Η δεύτερη μορφή αντιστρέφει την κατεύθυνση. Μια εσωτερική εργασία ερωτά το ιδιωτικό σύστημα και δημοσιεύει ελεγχόμενο αποτέλεσμα σε ένα Sheet, σε αντικείμενο Cloud Storage ή σε πίνακα BigQuery που διαβάζει το σενάριο. Μια εργασία Cloud Run, ένας τοπικός χρονοπρογραμματιστής ή ένα υπάρχον βήμα ETL μπορούν όλα να είναι αυτή η εργασία και κανένα από αυτά δεν χρειάζεται να δεχτεί εισερχόμενη σύνδεση. Το φύλλο τότε καταναλώνει ένα σύνολο δεδομένων αντί για διεπαφή.

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

Τι πρέπει να περιέχει το δημοσιευμένο αποτέλεσμα

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

Η κατεύθυνση του API χρειάζεται επίσης συμβόλαιο: ποιο διαπιστευτήριο δέχεται η πύλη, ποια scopes μεταφέρει το token και ποιες ταυτότητες καλούντος επιτρέπονται. Μια απάντηση 200 που περιέχει σελίδα σύνδεσης δεν είναι επιτυχής κλήση, γι' αυτό ελέγξτε το σώμα και όχι μόνο τον κωδικό κατάστασης.

Διαβάστε το σφάλμα από τη σωστή πλευρά

Το Apps Script αναφέρει έναν μη προσβάσιμο κεντρικό υπολογιστή ως εξαίρεση μη διαθέσιμης διεύθυνσης, που δεν είναι το μήνυμα του προγράμματος περιήγησης για απόρριψη σύνδεσης. Ένα 403 από την πύλη σημαίνει ότι το αίτημα έφτασε και απορρίφθηκε διαπιστευτήριο ή πολιτική. Μια σελίδα σύνδεσης HTML σημαίνει ότι το αίτημα έφτασε σε διαδραστικό επίπεδο που ένα σενάριο δεν μπορεί να ολοκληρώσει. Τρεις διαφορετικές αποτυχίες με τρεις διαφορετικούς ιδιοκτήτες.

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

Σχετικά άρθρα