Turvallinen verkkoalue ei ole pieni luotettu sisäverkko. Se on identiteettipohjainen mikrosegmentti, jossa agentille on olemassa vain sen tehtävän välttämättä edellyttämät yhteyspolut.
Edellisessä artikkelissamme käsittelimme 12 kontrollia, jotka yrityksen pitäisi toteuttaa ennen kuin tekoälyagentille annetaan pääsy todellisiin järjestelmiin. Näihin kuuluvat agentin oma identiteetti, rajatut verkkoyhteydet, työkalukohtainen valtuutus, ihmisen hyväksyntä, lokitus ja testattu pysäytysmekanismi. [1]
Tässä artikkelissa keskitymme yhteen näistä kerroksista: AI-agentin verkkopääsyn tekniseen rajaamiseen Tailscalella.
Tavoitteena ei ole rakentaa agentille pientä sisäverkkoa, jonka sisällä se voi liikkua vapaasti. Tavoitteena on rakentaa identiteettipohjainen mikrosegmentti, jossa agentille on olemassa vain ne yhteyspolut, joita sen tehtävä välttämättä edellyttää.
Verkkopääsyn vaatimukset
Agentti saa muodostaa yhteyden
- hyväksyttyyn LLM-yhdyskäytävään portissa 443
- hyväksyttyyn työkalu-APIin portissa 443.
Agentti ei saa muodostaa yhteyttä
- tuotantotietokantaan
- ERP-järjestelmään suoraan
- ylläpitopalvelimelle
- työntekijöiden päätelaitteisiin
- muihin agentteihin
- julkiseen internetiin ilman välityspalvelua.
Tämä on paljon tarkempi turvallisuusominaisuus kuin yleinen väite siitä, että agentti on “VPN:n takana”.
Turvallinen verkkoalue ei ole sama asia kuin luotettu sisäverkko
Perinteinen verkkosegmentti rakennetaan usein VLANin, aliverkon tai palomuurivyöhykkeen ympärille.
Agentti voidaan esimerkiksi sijoittaa verkkoon:
10.40.20.0/24
Palomuuri voi estää liikenteen muihin aliverkkoihin, mutta saman verkkoalueen sisällä olevat työkuormat saattavat edelleen nähdä toisensa. Verkkopolitiikka perustuu ensisijaisesti IP-osoitteisiin ja verkkosijaintiin.
Tailscale-arkkitehtuurissa verkkoalue voidaan mallintaa toisin:
Tailscale Grants -politiikassa yhteys määritellään vähintään kolmella tiedolla:
src = kuka tai mikä saa aloittaa yhteyden
dst = mihin resurssiin yhteys saa muodostua
ip = mitä protokollaa ja porttia saa käyttää
Grants-sääntömalli on deny-by-default: yhteyttä ei sallita, ellei täydellisestä politiikasta löydy siihen täsmäävää sääntöä. Uudessa tailnetissa voi silti olla valmiiksi täytetty laaja aloituspolitiikka, joten se pitää korvata ennen vähimmän oikeuden toteutumista. Tailscalen hallintataso jakelee laitteille identiteetti-, avain- ja politiikkatiedot, ja WireGuard-salattu dataliikenne pysyy datatasolla. Netmap trimming vähentää laitteelle jaettavia vertaistietoja, mutta laite voi silti nähdä sallitut kohteet, käytettävissä olevat exit nodet, saman käyttäjän tunnistamat laitteet sekä laitteet, jotka voivat aloittaa siihen yhteyden. [2] [21] [23]
Turvallinen verkkoalue on siten käytännössä sallittujen yhteyksien graafi:
Reachability(ai-agent) = {
ai-llm-gateway:443,
ai-tool-gateway:443
}
Kaikki muu jää graafin ulkopuolelle.
Reachability(ai-agent, prod-db:5432) = false
Reachability(ai-agent, prod-admin:22) = false
Reachability(ai-agent, erp-api:443) = false
Tämä vastaa Defense Firstin käyttämää pääsypolkuajattelua:
- Tunnista
- Mallinna
- Toimeenpane
- Todista
Ensin tunnistetaan todellinen liiketoimintatarve. Sen jälkeen yhteyspolku mallinnetaan, toimeenpannaan Grants-politiikalla ja todistetaan sekä sallituilla että estetyillä testeillä. [3]
Uhkamalli: oletetaan, että agentti toimii väärin
Referenssiarkkitehtuuria ei pidä suunnitella vain agentin normaalin toiminnan ympärille.
Arkkitehtuurin lähtöoletuksena pitäisi olla, että jokin seuraavista tapahtuu:
- Agentti tulkitsee tehtävän väärin.
- Agentti lukee prompt injection -hyökkäyksen sisältävän dokumentin.
- Agentin käyttämä työkalu tai MCP-palvelin vaarantuu.
- Agentin ohjelmistoriippuvuuteen tulee toimitusketjuhyökkäys.
- Agentin työkuormaidentiteetti tai sovellustunnus varastetaan.
- Agentin suoritusympäristöön saadaan koodinsuoritus.
- Agentti yrittää tavoittaa järjestelmän, jota sen ei pitäisi käyttää.
OWASP tunnistaa agenttisten järjestelmien riskeiksi muun muassa agentin tavoitteen kaappaamisen, työkalujen väärinkäytön, identiteetti- ja käyttöoikeusväärinkäytökset, agenttisen toimitusketjun ongelmat sekä odottamattoman koodinsuorituksen. Kansainvälinen viranomaisohjeistus suosittelee siksi tarkasti rajattuja resursseja ja toimintoja, vähimmän oikeuden periaatetta, lyhytikäisiä tunnisteita, eristämistä ja asteittaista käyttöönottoa. [4] [22]
Verkkokerroksen turvallisuustavoite ei ole: agentti ei koskaan yritä tehdä mitään vaarallista.
Parempi tavoite on: vaikka agentti yrittäisi tehdä vaarallisen toiminnon, tarvittavaa verkkopolkua ei ole olemassa.
Tämän artikkelin referenssiarkkitehtuuri perustuu seuraaviin turvallisuusvaatimuksiin:
- I1Agentilla ei ole suoraa yhteyttä tietokantaan.
- I2Agentilla ei ole suoraa yhteyttä ERP-järjestelmään.
- I3Agentilla ei ole SSH- tai hallintayhteyttä tuotantoon.
- I4Agentti ei säilytä mallipalveluntarjoajan API-avainta.
- I5Agentti käyttää liiketoimintajärjestelmiä vain työkalu- ja API-yhdyskäytävän kautta.
- I6Lukeminen, hyväksyminen ja kirjoittaminen on erotettu toisistaan eri palveluihin ja identiteetteihin.
- I7Julkiseen internetiin suuntautuva liikenne kulkee vain erikseen hallitun yhdyskäytävän kautta.
- I8Jokainen sallittu ja estetty Tailscale-yhteys testataan.
- I9Agentin verkkopääsy voidaan poistaa keskitetysti.
- I10Agentin tekemät toiminnot voidaan yhdistää verkko-, työkalu- ja sovelluslokeihin.
Referenssiarkkitehtuuri
Alla oleva arkkitehtuuri soveltuu esimerkiksi laskuja, tukipyyntöjä, asiakasdataa tai muita sisäisiä liiketoimintaprosesseja käsittelevälle agentille.
Matalan luottamuksen vyöhyke
tag:ai-agent-invoice-prod- agenttikehys ja mallin konteksti
- rajattu muisti
- eristetty työkalusuoritus
LLM-yhdyskäytävä
Avaimet, hyväksytyt mallit, kustannus- ja nopeusrajat sekä hallittu egress.
Työkalu- ja API-yhdyskäytävä
Sallittu työkalulista, parametrien validointi, autentikointi ja tapahtumalokit.
Arkkitehtuurissa agentti on tietoisesti matalan luottamuksen työkuorma.
Agentti saa käsitellä epäluotettavaa sisältöä ja muodostaa ehdotuksia, mutta se ei saa suoraa yhteyttä korkean vaikutuksen järjestelmiin.
Komponentti 01
AI-agentin suoritusympäristö
Agentin suoritusympäristö sisältää kielimallin orkestroinnin, kontekstin, muistin ja mahdollisen koodin tai työkalujen suorittamisen.
Tätä ympäristöä käsitellään potentiaalisesti vaarantuneena.
Agentti ei saa sisältää:
- tuotantotietokannan tunnuksia
- ERP-järjestelmän yleisiä ylläpitotunnuksia
- SSH-avaimia
- mallipalveluntarjoajan pitkäikäisiä API-avaimia
- Tailscalen hallintatason ylläpito-oikeuksia
- oikeutta muuttaa omia tagejaan tai Grants-politiikkaansa.
Agentin oma Tailscale-identiteetti antaa sille vain kaksi yhteyspolkua: LLM-yhdyskäytävän ja työkalu-API-yhdyskäytävän.
Komponentti 02
LLM-yhdyskäytävä
LLM-yhdyskäytävä välittää agentin mallikutsut hyväksytylle mallipalveluntarjoajalle.
Sen tehtäviä voivat olla:
- mallipalveluntarjoajan API-avainten säilyttäminen
- hyväksyttyjen mallien rajaaminen
- käyttäjä- ja agenttikohtaiset käyttörajat
- token- ja kustannusrajat
- pyyntöjen luokittelu
- tietojen suodatus
- lokitus
- mallipalveluntarjoajan vaihtaminen hallitusti.
Agentin ei tarvitse tietää ulkoisen mallipalvelun tunnistetietoja. Se tunnistautuu vain sisäiselle LLM-yhdyskäytävälle omalla työkuormaidentiteetillään.
Tailscale kehittää tähän tarkoitukseen myös Aperture-yhdyskäytävää, jolla voidaan keskittää mallipääsyä, mallipalveluntarjoajien tunnistetietoja ja telemetriaa. Tarkistettu 29.7.2026: Aperture on beta-vaiheessa. Sen Grant-arviointi on deny-by-default, jos yksikään sääntö ei täsmää, mutta uudessa instanssissa on tällä hetkellä laaja aloituskonfiguraatio, joka antaa kaikille käyttäjille ylläpito-oikeuden ja pääsyn kaikkiin määritettyihin malleihin. Konfiguraatio pitää korvata ja testata ennen tuotantokäyttöä. Aperture ei poista kohdesovellusten, työkalujen tai datapalveluiden omien käyttöoikeuksien tarvetta. [5] [24]
Komponentti 03
Työkalu- ja API-yhdyskäytävä
Työkalu- ja API-yhdyskäytävä on agentin ja liiketoimintajärjestelmien välinen kontrollipiste.
Agentti ei ota suoraa yhteyttä ERP-järjestelmään tai tietokantaan. Se kutsuu tarkasti määriteltyjä työkaluja, esimerkiksi:
get_invoice(invoice_id)
get_supplier(supplier_id)
create_invoice_draft(invoice_data)
request_payment_approval(payment_data)
Yhdyskäytävän tehtävänä on tarkistaa:
- saako kyseinen agentti käyttää työkalua
- ovatko parametrit oikeassa muodossa
- kuuluuko pyydetty tietue agentin sallittuun toiminta-alueeseen
- ylittääkö pyyntö summan tai määrän riskirajan
- vaatiiko toiminto ihmisen hyväksynnän
- onko kutsujen määrä poikkeava
- pitääkö toiminta keskeyttää.
Verkkopolitiikka ratkaisee, saako agentti tavoittaa yhdyskäytävän. Työkalupolitiikka ratkaisee, mitä se saa yhdyskäytävän kautta tehdä.
Komponentti 04
Erillinen luku-API
Lukuoperaatiot kannattaa erottaa kirjoitusoperaatioista.
Agentti tai työkalu-API voi esimerkiksi hakea:
- yhden laskun tiedot
- yhden asiakkaan sopimustason
- yhden toimittajan perustiedot
- yhden tukipyynnön historian.
Luku-API:n ei tarvitse antaa yleistä SQL-yhteyttä tietokantaan.
Rajattu API
Yksi nimetty objekti
GET /invoices/7421
Liian laaja pääsy
Mielivaltainen SQL
SELECT * FROM invoices;
Luku-API voi toteuttaa objektitason valtuutuksen, tietojen minimoinnin ja tulosten suodatuksen ennen kuin data palautetaan agentille.
Komponentti 05
Hyväksyntäpalvelu
Korkean vaikutuksen toimintoja ei anneta agentin suoritettavaksi suoraan.
Agentti voi muodostaa ehdotuksen:
{
"action": "create-payment",
"invoice_id": "7421",
"recipient": "FI00 0000 0000 0000 00",
"amount_eur": 1240.00
}
Hyväksyntäpalvelu näyttää ihmiselle tarkan toiminnon, ei vain agentin kirjoittamaa sanallista yhteenvetoa.
Hyväksyntä pitäisi sitoa:
- agentin identiteettiin
- tarkkaan toimintoon
- kohderesurssiin
- rahamäärään
- vastaanottajaan
- hyväksyjään
- voimassaoloaikaan
- yksilölliseen nonce-arvoon.
Jos agentti muuttaa summaa, vastaanottajaa tai muuta olennaista parametria hyväksynnän jälkeen, hyväksyntä ei enää kelpaa.
Komponentti 06
Kirjoitustoimintojen suorittaja
Varsinaisen muutoksen tekee erillinen työkuorma, ei AI-agentti.
Kirjoitustoimintojen suorittaja:
- vastaanottaa hyväksytyn toiminto-objektin
- tarkistaa allekirjoituksen tai valtuutustodisteen
- tarkistaa hyväksynnän voimassaolon
- tarkistaa, ettei toimintoa ole jo suoritettu
- suorittaa vain ennalta määritellyn API-kutsun
- tallentaa tuloksen ja korrelaatiotunnisteen.
Kirjoitustoimintojen suorittajalla voi olla yhteys ERP:n rajattuun APIin. Silläkään ei tarvitse olla suoraa pääsyä tietokantaan tai SSH-ylläpitoon.
Agentin identiteetti ja tagirakenne
Tailscalessa palvelimet, kontit, automaatio ja muut ei-henkilökohtaiset laitteet voidaan tunnistaa tageilla.
Tagi ei ole vain kuvaileva etiketti. Sitä käytetään työkuorman identiteettinä ja Grants-politiikan lähde- tai kohdeselektorina. Kun laite merkitään tagilla, sitä käsitellään tagi-identiteettinä käyttäjän henkilökohtaisen identiteetin sijasta. [6]
Geneeristä tagia kannattaa välttää:
tag:ai-agent
Se ei kerro, mitä agentti tekee, missä ympäristössä se toimii, onko sillä luku- vai kirjoitusoikeuksia tai mihin järjestelmään se liittyy.
Parempi tagi voisi olla:
tag:ai-agent-invoice-prod
Tai vielä tarkemmin:
tag:ai-invoice-reader-prod
tag:ai-invoice-drafter-prod
tag:ai-payment-executor-prod
Yksi identiteetti yhtä tarkoitusta varten
Kehitys-, testi- ja tuotantoympäristöjä ei pidä yhdistää samaan identiteettiin:
tag:ai-agent-invoice-dev
tag:ai-agent-invoice-test
tag:ai-agent-invoice-prod
Samoin luku- ja kirjoitustoiminnot kannattaa erottaa:
tag:ai-invoice-reader-prod
tag:ai-invoice-write-executor-prod
Tailscale-tagien oikeudet yhdistyvät additiivisesti. Jos laitteelle annetaan useita tageja, kaikkien tagien kautta saadut oikeudet voivat tulla voimaan. Tagien yhdistelmää ei voi tavallisessa säännössä käsitellä vaatimuksena “tagi A ja tagi B”, joten selkeitä yhdistelmätageja kannattaa käyttää epäselvien monen tagin yhdistelmien sijasta. [6]
Epäselvä yhdistelmä
Kolme additiivista tagia
tag:ai-agent
tag:production
tag:finance
Tarkoitussidonnainen
Yksi yhdistelmätagi
tag:ai-finance-agent-prod
Tagin myöntämisoikeus on korkean riskin oikeus
tagOwners määrittelee, kuka saa liittää laitteen tiettyyn tagi-identiteettiin.
Jos hyökkääjä voi itse antaa työkuormalleen tagin:
tag:ai-write-executor-prod
hän voi mahdollisesti saada myös kyseiselle identiteetille kuuluvat verkkopolut.
Tagien myöntämisoikeudet pitää siksi rajata esimerkiksi tietoturvan ylläpitoryhmälle tai erilliselle hallitulle automaatiolle. tagOwners delegoi sen, kuka saa antaa identiteetin tavallisessa työnkulussa; tailnetin Owners-, Admins- ja Network admins -rooleissa toimivat ylläpitäjät voivat hallintaroolinsa perusteella antaa minkä tahansa tagin. Tagin omistajuus ei itsessään anna verkkopääsyä, vaan se määritetään erikseen Grants-osiossa. [6] [7]
Pienin toimiva Grants-toteutus
Ensimmäinen versio voidaan rakentaa yhdellä agentilla ja yhdellä yhdyskäytävällä.
ai-agent-read-prod → ai-tool-gateway-prod:443ai-agent-read-prod → prod-db:5432ai-agent-read-prod → prod-admin:22Havainnollistava Tailscale-politiikka:
{
"groups": {
"group:security-admins": [
"security-admin@example.com"
]
},
"tagOwners": {
"tag:ai-agent-read-prod": [
"group:security-admins"
],
"tag:ai-tool-gateway-prod": [
"group:security-admins"
],
"tag:prod-db": [
"group:security-admins"
],
"tag:prod-admin": [
"group:security-admins"
]
},
"grants": [
{
"src": [
"tag:ai-agent-read-prod"
],
"dst": [
"tag:ai-tool-gateway-prod"
],
"ip": [
"tcp:443"
]
}
],
"tests": [
{
"src": "tag:ai-agent-read-prod",
"proto": "tcp",
"accept": [
"tag:ai-tool-gateway-prod:443"
],
"deny": [
"tag:prod-db:5432",
"tag:prod-admin:22"
]
}
]
}
Politiikassa on kolme erillistä asiaa.
tagOwners
"tagOwners": {
"tag:ai-agent-read-prod": [
"group:security-admins"
]
}
Vain määritetty tietoturvaryhmä saa liittää laitteen agentin identiteettiin.
grants
{
"src": [
"tag:ai-agent-read-prod"
],
"dst": [
"tag:ai-tool-gateway-prod"
],
"ip": [
"tcp:443"
]
}
Agentti saa muodostaa TCP-yhteyden yhdyskäytävän porttiin 443.
Tämä sääntö ei anna agentille pääsyä muihin yhdyskäytävän portteihin, tietokantaan, ylläpitopalvelimelle tai muihin tailnetin laitteisiin.
tests
{
"src": "tag:ai-agent-read-prod",
"proto": "tcp",
"accept": [
"tag:ai-tool-gateway-prod:443"
],
"deny": [
"tag:prod-db:5432",
"tag:prod-admin:22"
]
}
Testi osoittaa sekä sallitun että estetyt yhteydet.
Tailscale suorittaa politiikkatiedostoon määritellyt testit politiikkamuutosten yhteydessä. Jos testin oletus ei täyty, politiikkamuutos hylätään. Testit ovat erityisen tärkeitä, koska Grants-säännöt ovat additiivisia: jokin toinen liian laaja sääntö voi vahingossa antaa agentille enemmän pääsyä kuin sen oma tarkasti rajattu sääntö antaa ymmärtää. [7]
Tuotantotasoinen Grants-referenssipolitiikka
Seuraavassa esimerkissä toteutetaan koko referenssiarkkitehtuuri.
Käytetyt identiteetit ovat:
tag:ai-agent-invoice-prod
tag:ai-llm-gateway-prod
tag:ai-tool-gateway-prod
tag:ai-read-api-prod
tag:ai-approval-api-prod
tag:ai-write-executor-prod
tag:erp-api-prod
tag:prod-db
tag:prod-admin
Havainnollistava politiikka:
{
"groups": {
"group:security-admins": [
"security-admin@example.com"
]
},
"tagOwners": {
"tag:ai-agent-invoice-prod": [
"group:security-admins"
],
"tag:ai-llm-gateway-prod": [
"group:security-admins"
],
"tag:ai-tool-gateway-prod": [
"group:security-admins"
],
"tag:ai-read-api-prod": [
"group:security-admins"
],
"tag:ai-approval-api-prod": [
"group:security-admins"
],
"tag:ai-write-executor-prod": [
"group:security-admins"
],
"tag:erp-api-prod": [
"group:security-admins"
],
"tag:prod-db": [
"group:security-admins"
],
"tag:prod-admin": [
"group:security-admins"
]
},
"grants": [
{
"src": [
"tag:ai-agent-invoice-prod"
],
"dst": [
"tag:ai-llm-gateway-prod",
"tag:ai-tool-gateway-prod"
],
"ip": [
"tcp:443"
]
},
{
"src": [
"tag:ai-tool-gateway-prod"
],
"dst": [
"tag:ai-read-api-prod",
"tag:ai-approval-api-prod"
],
"ip": [
"tcp:443"
]
},
{
"src": [
"tag:ai-approval-api-prod"
],
"dst": [
"tag:ai-write-executor-prod"
],
"ip": [
"tcp:443"
]
},
{
"src": [
"tag:ai-write-executor-prod"
],
"dst": [
"tag:erp-api-prod"
],
"ip": [
"tcp:443"
]
}
],
"tests": [
{
"src": "tag:ai-agent-invoice-prod",
"proto": "tcp",
"accept": [
"tag:ai-llm-gateway-prod:443",
"tag:ai-tool-gateway-prod:443"
],
"deny": [
"tag:ai-read-api-prod:443",
"tag:ai-approval-api-prod:443",
"tag:ai-write-executor-prod:443",
"tag:erp-api-prod:443",
"tag:prod-db:5432",
"tag:prod-admin:22"
]
},
{
"src": "tag:ai-tool-gateway-prod",
"proto": "tcp",
"accept": [
"tag:ai-read-api-prod:443",
"tag:ai-approval-api-prod:443"
],
"deny": [
"tag:ai-write-executor-prod:443",
"tag:erp-api-prod:443",
"tag:prod-db:5432",
"tag:prod-admin:22"
]
},
{
"src": "tag:ai-approval-api-prod",
"proto": "tcp",
"accept": [
"tag:ai-write-executor-prod:443"
],
"deny": [
"tag:erp-api-prod:443",
"tag:prod-db:5432",
"tag:prod-admin:22"
]
},
{
"src": "tag:ai-write-executor-prod",
"proto": "tcp",
"accept": [
"tag:erp-api-prod:443"
],
"deny": [
"tag:prod-db:5432",
"tag:prod-admin:22"
]
}
]
}
Olennaista ei ole tagien tarkka nimi, vaan pääsypolkujen erottaminen ja koko additiivisen politiikan testaaminen asiakkaan oikeilla identiteeteillä, porteilla ja palveluilla.
Grant 1: agentti saa tavoittaa vain kaksi yhdyskäytävää
{
"src": [
"tag:ai-agent-invoice-prod"
],
"dst": [
"tag:ai-llm-gateway-prod",
"tag:ai-tool-gateway-prod"
],
"ip": [
"tcp:443"
]
}
Agentti voi käyttää hyväksyttyä mallipalvelua ja hyväksyttyjä työkaluja.
Se ei voi ottaa suoraa yhteyttä luku-APIin, hyväksyntäpalveluun, kirjoitustoimintojen suorittajaan, ERP-järjestelmään, tietokantaan tai ylläpitopalvelimeen.
Grant 2: työkalu-API saa lukea ja muodostaa hyväksyntäpyynnön
{
"src": [
"tag:ai-tool-gateway-prod"
],
"dst": [
"tag:ai-read-api-prod",
"tag:ai-approval-api-prod"
],
"ip": [
"tcp:443"
]
}
Työkalu-API voi hakea rajattua tietoa ja jättää ehdotuksen hyväksyttäväksi. Se ei kuitenkaan voi suorittaa kirjoitusoperaatiota suoraan.
Grant 3: hyväksyntäpalvelu saa käynnistää kirjoitustoiminnon
{
"src": [
"tag:ai-approval-api-prod"
],
"dst": [
"tag:ai-write-executor-prod"
],
"ip": [
"tcp:443"
]
}
Vain hyväksyntäpalvelulla on verkkopolku kirjoitustoimintojen suorittajaan. Agentilla tai työkalu-APIlla ei ole tätä polkua.
Grant 4: suorittaja saa käyttää vain ERP:n rajattua APIa
{
"src": [
"tag:ai-write-executor-prod"
],
"dst": [
"tag:erp-api-prod"
],
"ip": [
"tcp:443"
]
}
Kirjoitustoimintojen suorittaja saa käyttää ERP:n APIa mutta ei tuotantotietokantaa tai ylläpitopalvelinta.
Tämän vuoksi ERP:n API voi toteuttaa toimintokohtaisen valtuutuksen, objektitason käyttöoikeuden, määrärajoitukset, idempotenssin, tapahtumalokin ja palautettavuuden.
Verkkopolitiikka ei korvaa sovelluksen valtuutusta
Tavallinen Tailscale Grant voi sallia yhteyden:
tag:ai-tool-gateway-prod
→
tag:ai-read-api-prod:443
Grant ei yksin ratkaise, mitä HTTP-metodia tai API-operaatiota yhdyskäytävä saa käyttää:
GET /invoices/7421
POST /payments
DELETE /suppliers/91
Verkkokerros vastaa kysymykseen: saako lähde muodostaa verkkoyhteyden kohteeseen?
Sovelluskerros vastaa kysymykseen: mitä lähde saa tehdä yhteyden muodostamisen jälkeen?
Tailscale Grants tukee myös sovelluskohtaisia capability-määrittelyitä, mutta kohdesovelluksen pitää itse toteuttaa ja tulkita kyseiset oikeudet. Tailscale käsittelee sovelluscapabilityn parametreja läpinäkymättömänä JSON-datana eikä toimeenpane sovelluksen liiketoimintalogiikkaa. [2]
Turvalliseen kokonaisuuteen tarvitaan siksi vähintään kolme valtuutuskerrosta:
Sulje Tailscalen ohittavat yhteyspolut
Tailscale-politiikka suojaa Tailscale-liikennettä. Se ei automaattisesti estä palvelua olemasta tavoitettavissa myös julkisella IPv4- tai IPv6-osoitteella, pilvipalvelun sisäverkossa, paikallisessa LAN-verkossa, Kubernetes-klusterin normaalissa palveluverkossa tai toisella verkkoliittymällä.
Tailscale Grants ei muuta sitä, mitä laite voi tavoittaa paikallisessa verkossa Tailscalen ulkopuolella. Jos tietokanta on saavutettavissa suoraan tavallisen aliverkon kautta, agentti saattaa ohittaa tarkasti rajatun tailnet-politiikan kokonaan. [8]
Sulje julkinen ingress
Sisäisen API-palvelun ei pidä kuunnella avoimesti kaikilla verkkoliittymillä, kuten 0.0.0.0:443, ellei julkista yhteyttä ole erikseen tarkoitettu.
Palvelu voidaan sitoa localhostiin tai Tailscale-IP-osoitteeseen, suojata host-palomuurilla tai pilvipalvelun security groupilla, julkaista tailnetiin Tailscale Servellä tai liittää verkkoon sovellukseen upotetulla tsnet-identiteetillä.
Tailscale Serve voi tuoda localhostissa toimivan palvelun tailnetin sisäiseen käyttöön siten, että tailnetin pääsypolitiikka säilyy käytössä. Tailscale Funnel puolestaan julkaisee palvelun julkiseen internetiin, joten sitä ei pidä sekoittaa yksityiseen agenttiarkkitehtuuriin. [9]
Sulje tavallinen internet-egress
Tailscale Grant ei oletusarvoisesti säätele agentin tavallista, Tailscalen ulkopuolista internet-liikennettä. Jos agentin käyttöjärjestelmällä on normaali oletusreitti internetiin, se voi muodostaa HTTPS-yhteyden ulkoiseen kohteeseen ilman, että yhteys kulkee Tailscale-politiikan kautta.
Agentin internet-egress pitää rajata erikseen esimerkiksi pilvialustan tai käyttöjärjestelmän palomuurilla, Kubernetes NetworkPolicyllä, egress proxylla, erillisellä verkkonimiavaruudella, kontrolloidulla NAT gatewaylla tai hallitulla exit nodella ja sen takana olevalla palomuurilla.
AI-agentti
│
│ Tailscale
▼
Sisäinen LLM-yhdyskäytävä
│
│ hallittu egress
▼
Hyväksytty mallipalveluntarjoaja
Tällöin vain LLM-yhdyskäytävällä on oikeus muodostaa yhteys mallipalveluntarjoajaan.
Tailscale App Connectors voi reitittää määritettyjen SaaS-palveluiden liikennettä hallitun ulospääsyn kautta ja tarjota ennustettavan julkisen lähdeosoitteen. Pelkkä App Connector ei kuitenkaan tee reitistä pakollista, jos työkuormalla on edelleen toinen avoin internet-reitti. [10]
Exit node voi keskittää internet-liikenteen yhden pisteen kautta. Sen käyttöoikeus määritellään erikseen autogroup:internet-kohteen avulla, mutta varsinainen kohde- tai domain-rajaus pitää edelleen toteuttaa exit noden palomuurissa, välityspalvelimessa tai muussa egress-kontrollissa. [11]
Miten agentti liitetään Tailscaleen?
Toteutustapa riippuu agentin suoritusympäristöstä ja elinkaaresta.
Pitkäikäinen virtuaalikone tai palvelin
Pitkäikäiselle agenttipalvelimelle voidaan asentaa tavallinen Tailscale-asiakasohjelma. Työkuorma liitetään tailnetiin tarkoitussidonnaisella tagilla, kuten tag:ai-agent-invoice-prod.
Palvelimen päivitykset, node key -avaimet ja poistaminen pitää hallita osana normaalia palvelinhallintaa. Key expiry poistetaan oletusarvoisesti käytöstä, kun laite tunnistetaan alun perin tagilla, joten organisaation pitää määritellä erikseen työkuormaidentiteetin elinkaari, uudelleenautentikointi ja poistaminen. [6]
Kontti tai sidecar
Agentti voidaan suorittaa kontissa, jonka rinnalla toimii Tailscale-sidecar.
Agenttikontti
│
│ localhost / konttiverkko
▼
Tailscale-sidecar
│
▼
Tailnet
Agenttikontti ei tarvitse suoraan Tailscalen hallintatunnuksia. Sidecar hoitaa verkkoidentiteetin ja tailnet-yhteyden. Konttiverkon muut reitit pitää silti rajata, jotta agentti ei voi ohittaa sidecaria tavallisen klusteri- tai internet-yhteyden kautta.
Lyhytikäinen työ tai CI-tehtävä
Lyhytikäisille agenteille voidaan käyttää ephemeral node -mallia. Ephemeral node poistetaan lyhyen toimettomuuden jälkeen tai välittömästi uloskirjautumisen yhteydessä. Se sopii esimerkiksi yksittäiseen analyysi- tai tiedonkäsittelytehtävään, CI/CD-agenttiin tai dynaamisesti käynnistyvään konttiin.
Ephemeral node vähentää hallintaan jäävien vanhentuneiden työkuormalaitteiden määrää, mutta ei poista tarvetta suojata tailnetiin liittymisessä käytettyjä tunnisteita. Uusi instanssi saa uuden Tailscale-IP-osoitteen. [12]
Workload Identity Federation
Kun suoritusympäristö tukee OIDC-pohjaista työkuormaidentiteettiä, pitkäikäinen Tailscale auth key voidaan korvata työkuorman omalla identiteettitodisteella.
Tailscale tarkistaa tokenin allekirjoituksen, issuerin, audience-arvon, voimassaoloajan ja määritellyt claim-ehdot sekä palauttaa lyhytikäisen Tailscale API -tokenin ennalta määritellyillä käyttöoikeusrajauksilla. Tokenia voidaan käyttää Tailscalen APIssa ja vaaditulla oikeusrajauksella solmun rekisteröintiin; se ei ole kohteena olevan liiketoimintasovelluksen tunniste. [13]
Sovellukseen upotettu tsnet
Go-sovellukseen voidaan upottaa Tailscale-yhteys tsnet-kirjastolla. Jokainen agenttipalvelu voi tällöin liittyä tailnetiin erillisenä solmuna, vaikka useita palveluita suoritettaisiin samalla koneella.
Sama fyysinen palvelin:
invoice-reader → oma tsnet-identiteetti
invoice-writer → oma tsnet-identiteetti
reporting-agent → oma tsnet-identiteetti
admin-tool → oma tsnet-identiteetti
Tämä estää koko palvelimen käsittelemisen yhtenä laajana verkkoidentiteettinä. tsnet mahdollistaa sekä lähtevät yhteydet että tailnetin sisäiset kuuntelupisteet sovelluksen sisällä. [14]
Testaa politiikka kolmella tasolla
Pelkkä onnistunut demo ei osoita turvallista arkkitehtuuria. Testauksen pitää kattaa vähintään kolme tasoa:
1. Tailscale-politiikkatestit
Politiikkatiedoston tests-osio varmistaa, että Grants-politiikka tuottaa tarkoitetun yhteysmatriisin.
{
"src": "tag:ai-agent-invoice-prod",
"proto": "tcp",
"accept": [
"tag:ai-tool-gateway-prod:443"
],
"deny": [
"tag:erp-api-prod:443",
"tag:prod-db:5432",
"tag:prod-admin:22"
]
}
Testi pitää ajaa osana jokaista politiikkamuutosta. Positiivisen testin lisäksi tarvitaan eksplisiittisiä negatiivisia testejä. Muuten jokin toinen laaja Grant voi sallia yhteyden ilman, että agentin oma sääntö muuttuu.
2. Todelliset verkkoyhteystestit
Politiikan lisäksi yhteydet pitää testata oikeasta agentin suoritusympäristöstä.
| Testi | Odotettu tulos | Todiste |
|---|---|---|
| Agentti → LLM-yhdyskäytävä:443 | Sallittu | TLS-yhteys ja palveluloki |
| Agentti → työkalu-API:443 | Sallittu | API:n autentikoitu vastaus |
| Agentti → luku-API suoraan | Estetty | Yhteyden epäonnistuminen |
| Agentti → ERP API suoraan | Estetty | Yhteyden epäonnistuminen |
| Agentti → tietokanta:5432 | Estetty | Yhteyden epäonnistuminen |
| Agentti → ylläpito:22 | Estetty | Yhteyden epäonnistuminen |
| Työkalu-API → kirjoitussuorittaja | Estetty | Yhteyden epäonnistuminen |
| Agentti → tuntematon internet-kohde | Estetty | Egress-palomuurin loki |
| Poistettu agenttisolmu → tailnet | Estetty | Uudelleenyhdistäminen epäonnistuu |
| Hyväksytty palautussuunnitelma | Onnistuu | Dokumentoitu rollback-testi |
3. Sovellustason testit
Toimiva verkkoyhteys yhdyskäytävään ei vielä todista, että sovellusvaltuutus toimii.
get_invoice("7421")get_all_invoices()delete_invoice("7421")create_payment ilman hyväksyntääcreate_payment vanhentuneella hyväksynnälläcreate_payment muutetulla summallaTailscale-politiikkatestit osoittavat tailnetin verkkotason saavutettavuuden. Ne eivät testaa API:n liiketoimintalogiikkaa, kohdetietueiden käyttöoikeuksia tai ihmisen hyväksynnän oikeellisuutta.
Lokitus: mitä pitää pystyä todistamaan?
Yhdestä agenttiajosta pitäisi muodostua yhdistettävä tapahtumaketju. Sama korrelaatiotunniste, esimerkiksi run_id: ai-run-2026-07-28-000142, liitetään agentin suorituslokiin, LLM-yhdyskäytävän lokiin, työkalu-API:n lokiin, hyväksyntäobjektiin, kirjoitustoiminnon lokiin ja kohdesovelluksen tapahtumalokiin.
Tällöin voidaan jälkikäteen selvittää, kuka käynnisti tehtävän, mikä agentti suoritti sen, mitä mallia ja työkaluja käytettiin, mihin verkkokohteisiin muodostettiin yhteys, mitä tietoja luettiin, kuka hyväksyi toiminnon ja mitä järjestelmään muutettiin.
Tailscalen konfiguraatioauditointi
Tailscalen auditointiloki tallentaa hallinnollisia muutoksia: kuka muutti politiikkaa, mitä asetusta muutettiin, milloin muutos tehtiin sekä mikä oli politiikan aikaisempi ja uusi tila. Tämä auttaa osoittamaan, milloin agentin pääsyoikeuksia muutettiin ja kuka muutoksen teki. [15]
Network flow logs
Network flow logs tallentaa yhteyksien metadataa, kuten lähde- ja kohdesolmun, protokollan, portin ja siirretyn datamäärän. Se ei tallenna liikenteen sisältöä. Ominaisuus kuuluu tällä hetkellä Premium- ja Enterprise-paketteihin, Tailscale säilyttää uusimmat 30 päivää ja tiedon muodostuminen edellyttää tuettua telemetriaa lähettävää asiakasohjelmaa.
Flow-lokeja ei pidä käsitellä täydellisenä estettyjen yhteysyritysten lokina tai itsenäisenä IDS-, SIEM- tai reaaliaikaisena uhkien tunnistusjärjestelmänä. Estettyjen yritysten todentamiseen tarvitaan käyttötapauksen mukaan vastaanottavan laitteen paikallisia Tailscale-lokeja, host-palomuuria, egress-palomuuria tai yhdyskäytävän omia lokeja. [16]
Premium- ja Enterprise-paketteihin kuuluva log streaming voi lähettää tuetut auditointi- ja verkkolokit keskitettyyn säilytykseen tai SIEM-järjestelmään. [17]
Toteuta oikea pysäytysmekanismi
Agentin pysäyttäminen ei saa riippua siitä, vastaako agentti enää hallintakäskyihin. Pysäytyksen pitää olla agentin ulkopuolella.
- Pysäytä agentin työkuorma.
- Poista agentin Tailscale-laite tai sitä koskevat Grants-oikeudet.
- Peruuta agentin sovellus- ja API-tunnukset.
- Estä agentin internet-egress.
- Estä uudet työkalukutsut yhdyskäytävässä.
- Säilytä lokit tutkintaa varten.
- Kierrätä tai peruuta paljastuneet auth key -avaimet, API-tokenit ja muut tunnistetiedot.
- Palauta agentin tekemät muutokset.
Pelkkä alkuperäisen Tailscale auth keyn peruuttaminen ei automaattisesti poista sillä jo tailnetiin liitetyn laitteen oikeuksia. Auth key on laitteen rekisteröintiin käytetty tunniste; rekisteröidyllä solmulla on sen jälkeen oma erillinen laite- ja avainelinkaarensa. Solmu pitää tarvittaessa poistaa tai sen pääsypolitiikka muuttaa. [18]
Samoin Tailscale-verkkopääsyn poistaminen ei yksin peruuta agentin jo saamia sovellustunnuksia. Verkkoidentiteetti ja sovellustunnukset pitää pystyä peruuttamaan toisistaan riippumatta.
Yleisimmät virheet
1. Agentille annetaan geneerinen ja liian laaja tagi
tag:ai-agent ei erottele agenttien tehtäviä tai riskejä. Käytä tarkoitussidonnaisia tunnisteita, kuten tag:ai-invoice-reader-prod ja tag:ai-payment-executor-prod.
2. Useiden tagien yhteisvaikutusta ei huomioida
Tagien oikeudet ovat additiivisia. Yhdistelmä tag:ai-agent, tag:finance ja tag:prod voi antaa enemmän oikeuksia kuin suunnittelija tarkoitti. Käytä tarkoitussidonnaista yhdistelmätagia ja testaa koko politiikka.
3. Agentti yhdistetään suoraan tietokantaan
Suora SQL-yhteys antaa helposti liian laajan luku- ja kirjoituspinnan. Käytä ketjua: agentti → työkalu-API → rajattu liiketoiminta-API → tietokanta.
4. Agentilla on suora internet-yhteys
Prompt injection tai vaarantunut työkalu voi käyttää avointa internet-egressiä datan viemiseen. Keskitä ulospääsy yhdyskäytävään ja estä muu egress erillisellä verkkokontrollilla.
5. Palvelu on edelleen julkinen
Tarkka Tailscale-politiikka ei auta, jos julkinen IP-osoite tai pilven sisäverkkoreitti ohittaa tailnetin. Sulje julkiset portit ja tarpeettomat tavalliset verkkoreitit.
6. Testataan vain se, minkä pitää toimia
Yksi onnistunut HTTPS-yhteys ei todista, ettei agentti pääse tietokantaan tai SSH-palvelimelle. Negatiiviset testit ovat vähintään yhtä tärkeitä kuin positiiviset.
7. Flow-lokeja pidetään täydellisenä uhkien tunnistusjärjestelmänä
Flow-lokit näyttävät yhteysmetadataa, eivät sovelluksen sisältöä tai täydellistä kuvaa kaikista estetyistä yrityksistä. Yhdistä verkko-, sovellus-, työkalu-, agentti- ja egress-lokit.
8. Agentti saa muuttaa omaa verkkoidentiteettiään
Agentilla ei pidä olla Tailscalen ylläpito-oikeutta, oikeutta myöntää itselleen tageja tai oikeutta muuttaa Grants-politiikkaa. Kontrollit eivät saa olla niiden rajaaman agentin hallinnassa.
9. Kehitys- ja tuotantoagentti käyttävät samaa identiteettiä
Kehitysympäristössä vaarantunut agentti voi saada tuotannon yhteyspolut. Erota identiteetit ja Grants-säännöt ympäristöittäin.
10. Auth keyn peruuttamista luullaan valmiiksi kill switchiksi
Liittymisavaimen peruuttaminen ei poista jo rekisteröidyn laitteen pääsyä. Testaa solmun poistaminen, Grants-muutos ja sovellustunnusten peruutus yhtenä kokonaisuutena.
Valinnainen jatkokehitys: vakaa palveluidentiteetti
Tuotantoympäristössä työkalu-APIsta tai LLM-yhdyskäytävästä voi olla useita rinnakkaisia instansseja. Tailscale Services mahdollistaa vakaan palveluidentiteetin erottamisen yksittäisistä palvelimista.
{
"src": [
"tag:ai-agent-invoice-prod"
],
"dst": [
"svc:ai-tool-gateway"
],
"ip": [
"tcp:443"
]
}
Agentti käyttää vakaata palvelunimeä, ja palvelu voidaan toteuttaa usealla tagilla tunnistetulla ja hyväksytyllä isännällä. Tämä helpottaa instanssien vaihtamista ja korkean käytettävyyden rakentamista ilman, että agentin politiikka sidotaan yhteen palvelimeen. Tailscale Services tukee tällä hetkellä TCP-palveluita, joten protokolla-, asiakasversio- ja isäntien hyväksyntävaatimukset pitää tarkistaa ennen mallin käyttöönottoa. [19]
Milloin agentin verkkoalue on tuotantovalmis?
Agentin verkkoalue ei ole tuotantovalmis vain siksi, että Tailscale on asennettu. Uuden tailnetin alkuperäinen oletuspolitiikka voi sallia laitteiden välisen liikenteen laajasti. Vähimmän oikeuden Grants-politiikka, tagien omistajuus ja politiikkatestit pitää suunnitella erikseen. [3] [23]
Tuotantovalmiudesta pitäisi pystyä osoittamaan vähintään seuraavat asiat:
- Agentilla on oma tarkoitussidonnainen työkuormaidentiteetti.
- Kehitys-, testi- ja tuotantoympäristöt on erotettu.
- Tagien myöntämisoikeudet on rajattu.
- Agentilla on vain nimetyt kohteet, protokollat ja portit.
- Agentilla ei ole suoraa tietokanta- tai ylläpitoyhteyttä.
- Luku-, hyväksyntä- ja kirjoituspolut on erotettu.
- Sovellusvaltuutus toimii verkkopolitiikan lisäksi.
- Julkiset ja paikallisen verkon ohitusreitit on suljettu.
- Internet-egress on rajattu erillisellä kontrollilla.
- Politiikassa on sekä hyväksyviä että estäviä testejä.
- Testit kattavat koko politiikan additiiviset vaikutukset.
- Todelliset end-to-end-yhteydet on testattu.
- Verkko-, agentti-, työkalu- ja sovelluslokit voidaan yhdistää.
- Pysäytys ja tunnusten peruutus on testattu.
- Muutokselle on dokumentoitu palautustapa.
- Agentin pääsypolulla on nimetty omistaja.
Turvallinen verkkoalue on vahingon raja
AI-agentin turvallisuutta ei voida rakentaa sen oletuksen varaan, että malli ymmärtää aina käyttäjän tarkoituksen, tunnistaa kaikki haitalliset ohjeet ja valitsee kaikissa tilanteissa turvallisen toiminnon.
Verkkokerroksessa voidaan kuitenkin toteuttaa deterministinen raja:
Tailscale toteuttaa tässä arkkitehtuurissa työkuorman identiteetin, salatun yhteyskerroksen ja tarkasti rajatun verkkosaavutettavuuden. Sovellus, API gateway, hyväksyntäpalvelu, palomuuri ja valvonta toteuttavat muut kerrokset.
Tailscale ei korvaa sovelluksen autentikointia, datan käyttöoikeuksia, haavoittuvuuksien hallintaa, EDR-järjestelmää, SIEM-ratkaisua tai poikkeamiin reagointia. Asiakas vastaa myös laitteiden päivityksistä, identiteetinhallinnasta, tagien ja ryhmien hallinnasta sekä tarkoituksenmukaisesta pääsypolitiikasta. [3]
Hyvä ensimmäinen toteutus on tarkoituksella pieni:
Defense First tunnistaa asiakkaan todellisen pääsypolun, mallintaa tavoitetilan, toteuttaa sen Tailscale Grants -politiikalla ja tuottaa sekä sallittujen että estettyjen yhteyksien testit, dokumentaation ja palautussuunnitelman. [20]
Yksi agentti. Tarkasti nimetyt yhteydet. Todennettu rajaus.
Rajataan ensimmäisen AI-agentin verkkoalue.
Varaa 30 minuutin Tailscale-kartoitusKeskeiset lähteet
- Defense First: AI-agentin turvallinen käyttöönotto yrityksessä – 12 turvakontrollia.
- Tailscale: Grants.
- Defense First: Tailscale-opas yrityksille.
- OWASP GenAI Security Project: OWASP Top 10 for Agentic Applications 2026.
- Tailscale: Secure AI agent connectivity.
- Tailscale: Tags.
- Tailscale: Policy file ja politiikkatestit.
- Tailscale: Access controls and ACLs.
- Tailscale: Tailscale Serve.
- Tailscale: App Connectors.
- Tailscale: Exit nodes.
- Tailscale: Ephemeral nodes.
- Tailscale: Workload Identity Federation.
- Tailscale:
tsnet.Server. - Tailscale: Configuration audit logging.
- Tailscale: Network flow logs.
- Tailscale: Log streaming.
- Tailscale: Auth keys.
- Tailscale: Tailscale Services.
- Defense First: Tailscale-asiantuntija Suomessa.
- Tailscale: Control and data planes.
- Australian Cyber Security Centre ja kansainväliset kumppanit: Careful Adoption of Agentic AI Services.
- Tailscale: Device visibility principles.
- Tailscale: Aperture configuration reference.