Miks Apps Script ei jõua VPN-i kaudu teie sisemise rakenduseni
Apps Script töötab Google'i võrgus, mitte sülearvutis, kus on VPN. Kujundage andmete tee masina jaoks, mis päringu saadab.
Armatuurlaud avaneb sülearvuti brauseris hästi, kuid sama arvutustabeli skript ebaõnnestub aadressi mittekättesaadavuse veaga. VPN-i sisse- ja väljalülitamine ei muuda midagi, sest päring ei lahku sülearvutist üldse. Apps Script käivitub Google'i taristul ja avab sealt omaenda ühenduse. See üks asjaolu määrab kogu kujunduse.
Eraldage enne millegi muutmist kaks küsimust: milline masin päringu saadab ja millist volitust vastuvõtja aktsepteerib.
Päring ei alga kunagi teie sülearvutis
Brauseri vahekaart saadab sülearvutist, läbi VPN-adapteri, sisemise DNS-järelliite ja privaatsesse alamvõrku. UrlFetchApp saadab Google'i hallatavast hostist, seega näeb see Google'i nimeserveri lahendajaid, Google'i väljundipa adresse ja mitte ühtki teie split-tunnel marsruuti. Kaks teed jagavad arvutustabeli dokumenti, mitte võrgukohta. Rakenduse juurdepääsulogis ilmub skripti katse Google'i aadressina, mitte VPN-i basseini aadressina, ja see on kiireim kinnitus, mille saate.
Seetõttu ei tee kohalikud parandused midagi. Sülearvuti suunamine teisele lahendajale, VPN-kliendi taaskäivitamine või hosts-kirje lisamine muudab brauseri teed ja jätab skripti tee täpselt selliseks, nagu see oli.
Mida see välistab
Ainult sisemisele lõpp-punktile ei pääse Apps Scriptist ligi ja IP-lubade loend on selles kohas nõrk asendus juurdepääsukontrollile. Google'i väljundivahemikud on laiad, teiste klientidega jagatud ja neid ei saa siduda ühe skriptiga. UrlFetchAppi viide märgib, et päringud pärinevad Google'i IP-basseinist, mis on selle väite autoriteetne versioon. Sisemise rakenduse avamine nendele vahemikele laseb sisse liiklust, mida te ei saa omistada.
Brauseri sessioonid käituvad samamoodi. Küpsis või SSO-sessioon sülearvuti brauseris ei reisi päringuga kaasa, sest päring on värske HTTPS-klient ilma sessiooniseisundita. Kõik, mis sõltub brauseri SSO-ümbersuunamisest, lõpeb selle ümbersuunamise juures, mitte teie andmete juures.
Kaks teostatavat kuju
Esimene kuju annab skriptile heakskiidetud API. Avaldage sisemine teenus lüüsi taga, mis autendib kutsuja, ja laske skriptil esitada volitus, mille lüüs aktsepteerib, näiteks teenusekonto luba. Apps Scriptis tähendab see OAuth2 teeki või ScriptApp.getOAuthToken() ning kutsuja identiteetide lubade loendit API poolel IP-loendi asemel.
Teine kuju pöörab suuna vastupidiseks. Sisemine töö pärib privaatset süsteemi ja avaldab kontrollitud tulemuse Sheeti, Cloud Storage'i objektina või BigQuery tabelisse, mida skript loeb. Cloud Runi töö, kohalik planeerija või olemasolev ETL-i samm võivad kõik selleks tööks olla ja ükski neist ei pea vastu võtma sissetulevat ühendust. Seejärel tarbib arvutustabel liidese asemel andmekogumit.
Milline kuju võidab, sõltub värskusest, väljatasandi kontrollist ja sellest, kes peab saama lugejat auditeerida.
Mida avaldatud tulemus peab sisaldama
Vastassuunas voog vajab selget lepingut: väljad, mida see kannab, värskendusintervall, lugejate rühm ja see, mis juhtub, kui sisemine töö ebaõnnestub. Ilma nende neljata näitab tabel vaikselt eilseid numbreid. Lisage genereeritud ajatempli veerg ja ridade arv, et aegunud või osaline avaldamine oleks nähtav tabelis endas, ilma et keegi logi avaks.
API suund vajab samuti lepingut: millist volitust lüüs aktsepteerib, milliseid scopes luba kannab ja millised kutsuja identiteedid on lubatud. 200 vastus, mis sisaldab sisselogimislehte, ei ole edukas kutse, seega kontrollige keha, mitte ainult olekukoodi.
Lugege viga õigelt poolt
Apps Script teatab kättesaamatust hostist aadressi mittekättesaadavuse erandina, mis ei ole brauseri ühenduse tagasilükkamise teade. Lüüsist tulev 403 tähendab, et päring jõudis kohale ja volitus või poliitika lükati tagasi. HTML-i sisselogimisleht tähendab, et päring jõudis interaktiivsesse kihti, mida skript ei saa lõpule viia. Kolm erinevat tõrget kolme erineva omanikuga.
Hoidke skripti logi brauseri tulemuse kõrval, mitte ei asenda üht teisega. Ülejäänud küsimus on siis tavaline integratsiooniotsus: andke sellele keskkonnale vajalik juurdepääs või toimetage talle kontrollitud tulemus.