Tekoälyagenttien kyberturvallisuus: rajaa oikeudet ja kulut
Markdown7 sääntöä Claude Code -rajojen asettamiseen, jotta autonominen agentti ei jätä sinua vararikkoon: palveluntarjoajan ylärajat, Task Budgets, hookit, sallittujen luettelot, hätäpysäytyskytkimet, sandbox-avaimet ja iteraatiorajat.
Lue koko artikkeli
Tärkeimmät kohdat
Autonominen agentti, jolla on rajoittamaton pääsy pilveen, voi kerryttää suuren laskun yhdessä yössä. Käyn läpi 7 Claude Code -sääntöä, jotka voit ottaa käyttöön yhdessä illassa tämänkaltaisten virheiden estämiseksi.
Opi käyttämään palvelua Ailoot-dokumentaatiosta.
Mihin rahat kuluvat: autonomisen agentin 3 kululuokkaa
Tärkeimmät kohdat
Mihin autonominen agentti käyttää rahojasi? Kolmeen erilliseen kanavaan: Anthropic/OpenAI-tokenit, pilviresurssit (AWS/GCP/Yandex Cloud) ja maksulliset toiminnot kolmansien osapuolten rajapinnoissa (Stripe-veloitukset, tekstiviestipalvelut, Twilio, tilauksia sisältävät Telegram-botit). Jokaisella kanavalla on oma laskutuksensa ja oma tapansa pysäyttää kulutus.
Älä sekoita näitä kolmea kanavaa keskenään—ne toimivat itsenäisesti ja edellyttävät eri asetuksia:
- LLM-tokenit. Claude, OpenAI tai Gemini veloittaa jokaisen pyynnön syöte- ja tulostekontekstista. Anthropic Task Budgets (katso sääntö 2) ja tilaus API:n käytön mukaan maksettavan vaihtoehdon sijaan voivat auttaa tässä.
- Pilvi-infrastruktuuri. MCP:n tai Bash-työkalun kautta agentti luo EC2-, RDS- ja S3-resursseja tai ottaa lambdoja käyttöön. AWS Budgets, GCP tai Yandex Cloud hätäpysäytyskytkimellä voi auttaa tässä (sääntö 5).
- Kolmansien osapuolten rajapinnat. Agentti tekee Stripe-veloituksen, lähettää 100 tekstiviestiä yhdyskäytävän kautta tai luo tuhat Telegram-tilausta. Rajatun käyttöoikeuden sandbox-avaimet ja palveluntarjoajan hallintapaneelissa asetettava ehdoton yläraja voivat auttaa tässä (sääntö 6).
Seuraavaksi 7 sääntöä. Kukin kattaa yhden tai kaksi kanavaa.
Näin asetat API-kulutukselle ehdottoman ylärajan (sääntö 1)
Tärkeimmät kohdat
Miten API-kulutukselle asetetaan ehdoton yläraja? Anthropicilla ja OpenAI:lla on sisäänrakennettu organisaation kulutusraja, joka rajoittaa tiliä automaattisesti, kun määritetty summa saavutetaan. Älä sekoita sitä hälytyksiin, jotka vain lähettävät sähköpostin. Ehdoton yläraja on este; hälytys on merkkivalo. Ota molemmat käyttöön ja aloita esteestä.
Näin otat sen käyttöön (varaa vähintään 2 minuuttia palveluntarjoajaa kohden):
Anthropic Console. console.anthropic.com → Settings → Limits → Monthly spend limit. Aseta summa, jonka olet valmis käyttämään pahimpana kuukautena. Kun raja saavutetaan, API palauttaa 429-virheen ja kirjaa tapahtuman lokiin. Ei mitään ”yritän uudestaan minuutin päästä”—käyttö on estetty kuukauden loppuun asti.
OpenAI Platform. platform.openai.com → Billing → Usage limits. Siellä on vastaavasti pehmeä raja (sähköposti-ilmoitus) ja kova raja (API:n sulkeminen). Aseta molemmat; aseta kova raja 1.5x pehmeäksi rajaksi, jotta ehdit reagoida.
AWS Bedrock / Google Vertex. Jos käytät Claudea/Anthropicia pilvipalvelun välityksellä, kova raja on asetettava pilvipalvelun puolella, ei Anthropicin puolella. Se on sääntö 5.
Mikä ei ole ehdoton yläraja: sähköposti-ilmoitukset (”olet käyttänyt 80% budjetistasi”). Ne tulevat viiveellä, eikä kukaan lue sähköpostia yöllä. Vain palveluntarjoajan puolella synkronisesti toimiva esto.
Näin Anthropic Task Budgets toimii ja mistä sen voi asettaa (sääntö 2)
Tärkeimmät kohdat
Mitä Anthropic Task Budgets on ja miltä se suojaa? Se on Opus 4.7/4.8- ja Fable/Mythos-sarjan betaominaisuus: asetat budjetin yhdelle autonomiselle työnkululle, ja Claude vähentää päättelynsä syvyyttä budjetin käydessä vähiin. Se viimeistelee työn yhteenvedolla sen sijaan, että sanoisi kesken tehtävän ”siinä kaikki, budjettini loppui”. Se ei ratkaise pilvikulutusta kokonaan, mutta ehkäisee 80% tapauksista, joissa agentti ”jäi silmukkaan huomaamatta sitä itse”.
Katso lisätiedot Anthropicin virallisesta dokumentaatiosta. Tärkeintä on, että kyseessä on pehmeä raja, ei kova. Jos agentti on jo luonut EC2-instanssin, Task Budget ei kumoa sitä.
Näin se toimii käytännössä: lisäät task_budget-kentän pyynnön payloadiin (esimerkiksi 100,000 syötetokenia koko tehtävälle). Claude saa tiedon budjetista ja supistaa suunnitelmiaan itse, yksinkertaistaa vaiheita tai jättää alitehtäviä väliin. Kun budjetti lähestyy nollaa, se alkaa lopetella ja palauttaa väliaikaisen yhteenvedon ”kiitos kun kuuntelit” -viestin sijaan.
Rajoitukset:
- Vain Anthropic API. Se ei toimi Bedrockissa/Vertexissä, joilla on oma laskutuksensa
- Vain beetamallit (Opus 4.7, 4.8, Fable 5, Mythos 5). Ei Sonnet 4.6:ssa eikä Haikussa
- Ei kata pilvikulutusta eikä kolmansien osapuolten rajapintoja. Jos Claude käynnistää EC2-instanssin, Task Budget ei reagoi
Käytä sitä yhdessä säännön 1 (ehdoton yläraja) kanssa, älä sen sijasta.
Kulurajat ovat osa kontekstisuunnittelua: päätät, mitä agentti saa tehdä ja mitä ei sekä missä sen hätäpysäytys on.
Mitä Claude Coden PreToolUse-hookeilla kannattaa estää (sääntö 3)
Tärkeimmät kohdat
Mitä Claude Coden PreToolUse-hookit ovat ja miksi tarvitset niitä? Ne ovat skriptejä, jotka suoritetaan ennen kuin Claude suorittaa työkalukutsun. Voit estää pyynnön (exit 2), vaatia käyttäjän vahvistuksen tai antaa pyynnön mennä läpi kysymättä. Tärkeintä: hookit suoritetaan ennen --dangerously-skip-permissions-asetusta. Tämä tarkoittaa, että voit estää vaarallisia toimia myös ohitustilassa.
Claude Coden käyttöoikeudet (1. kesäkuuta 2026 alkaen) arvioidaan tässä järjestyksessä: deny → ask → allow. Se tarkoittaa:
- tarkista valittu käyttöoikeustila erikseen; tavallisessa tilassa testattu deny-sääntö ei todista suojaa ohitustilassa
- jos hook palauttaa
exit 2, työkalukutsu estetään allowedToolstulee voimaan vain, kun deny-säännöt ja hookit eivät estä toimintaa
Yksinkertainen PreToolUse-hook, joka tarkistaa muutamia vaarallisten komentojen kirjoitusasuja. Tämä on tekstisuodatin, ei täydellinen komentotulkin jäsennin tai pääsyraja. Vastaavat komennot, skriptit, muut työkalut ja jo olemassa olevat pilviresurssit tarvitsevat erilliset hallintakeinot.
#!/usr/bin/env bash
# ~/.claude/hooks/block-dangerous-bash.sh
INPUT=$(cat)
if ! COMMAND=$(printf '%s\n' "$INPUT" | jq -er '.tool_input.command | select(type == "string")'); then
echo "Estetty: virheellinen Bash-hookin syöte" >&2
exit 2
fi
# Tarkistaa luetellut tekstikuviot; ei kata jokaista vastaavaa operaatiota
if echo "$COMMAND" | grep -qiE '(rm -rf|aws s3 rb|terraform destroy|kubectl delete|drop database)'; then
echo "Estetty: tuhoava komento" >&2
exit 2
fi
exit 0
Tallenna skripti osoitettuun polkuun, varmista jq:n saatavuus ja tee skriptistä suoritettava komennolla chmod +x ~/.claude/hooks/block-dangerous-bash.sh. Liitä se tiedostoon ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": "~/.claude/hooks/block-dangerous-bash.sh" }]
}
]
}
}
Katso virallinen dokumentaatio.
Varmista rekisteröinti komennolla /hooks ja anna sitten skriptille vaaratonta JSON-testisyötettä suorittamatta sen komentokenttää. Luetellun tuhoavan kirjoitusasun pitää palauttaa 2 ja vaarattoman komennon 0. Testaa myös virheellinen syöte. Säännöllinen lauseke tarkistaa vain siihen osuvat Bash-kutsut. Käytä todellisen toimivaltarajan toteuttamiseen rajattuja tunnistetietoja ja ympäristön eristystä. Katso virallinen esimerkki hookin syötteestä ja tulosteesta.
Miksi käyttää allowedTools-sallittujen työkalujen listaa ja miksi --dangerously-skip-permissions ei kuulu isäntäkoneelle (sääntö 4)
Tärkeimmät kohdat
Mihin sallitut työkalut listataan, ja miksi isäntäkone on huono paikka ohitustilalle? allowedTools-asetus settings.json-tiedostossa on luettelo komennoista, jotka agentti voi suorittaa ilman vahvistusta; muiden kohdalla sinulta kysytään lupa. --dangerously-skip-permissions poistaa kaikki vahvistuspyynnöt käytöstä, joten älä suorita sitä isäntäkoneella—käytä vain konttia tai virtuaalikonetta.
Sallittujen lista noudattaa vähimpien oikeuksien periaatetta. Sen sijaan, että ”sallit kaiken” (--dangerously-skip-permissions), lisää vain tehtävän vaatimat asiat:
{
"permissions": {
"allow": [
"Bash(npm install:*)",
"Bash(npm run build)",
"Bash(git add:*)",
"Bash(git commit:*)",
"Read(./src/**)",
"Write(./src/**)"
],
"deny": [
"Bash(rm -rf:*)",
"Bash(curl * | sh)",
"Write(/etc/**)",
"Write(~/.ssh/**)"
]
}
}
Mitä ohitustilasta on hyvä tietää:
- Linux/macOS kieltäytyy käynnistämästä Claude Codea ohitustilassa root-käyttäjänä tai sudolla—sisäänrakennettu suojaus
- Omalla koneellasi ohitus poistaa kaikki vahvistuspyynnöt, ja agentti voi suorittaa
rm -rf-komennon mille tahansa, avata SSH-avaimia ja ladata tietoja pilveen - Älä koskaan suorita
--dangerously-skip-permissions-asetusta isäntäkoneella, vaan ainoastaan:- Docker-kontissa, johon on liitetty rajattu levyosa (vain tarvittava kansio)
- eristetyssä virtuaalikoneessa (Multipass, Lima, Orbstack)
- GitHub Codespacesissa / Replitissä / muussa hiekkalaatikossa
Yksinkertainen docker run -komento ohitustilaa varten:
docker run --rm -it \
-v "$PWD:/workspace" \
-w /workspace \
--network host \
ghcr.io/anthropics/claude-code:latest \
claude --dangerously-skip-permissions
Jos agentti tarvitsee pilvipalvelun tunnistetietoja, käytä erillisiä, rajatun käyttöoikeuden avaimia, älä omia pääavaimiasi (sääntö 6).
Pilvibudjetin hälytysten ja hätäpysäytyskytkimen asettaminen AWS:ssä, GCP:ssä ja Yandex Cloudissa (sääntö 5)
Tärkeimmät kohdat
Budjettihälytys kertoo havaitusta tai ennustetusta kulutuksesta ja voi saapua myöhässä. Reaktiofunktio voi estää agentin uusia toimintoja tai pysäyttää tiettyjä resursseja; nämä ovat eri toimia. IAM-avaimen poistaminen käytöstä ei lopeta jo käynnissä olevien resurssien veloituksia. Määritä ja testaa resurssien pysäyttäminen erikseen.
Näin määrität sen kussakin pilvipalvelussa:
AWS Budgets (dokumentaatio). Luo kuukausibudjetti ja kynnysarvot (50%, 80%, 100%). 100%:n kynnysarvossa SNS-aihe voi käynnistää reaktio-Lambdan. Alla oleva esimerkki poistaa käytöstä vain nimetyn käyttäjän IAM-käyttöavaimet. Se ei pysäytä resursseja eikä muodosta ehdotonta kulutuskattoa:
import boto3
def lambda_handler(event, context):
iam = boto3.client('iam')
# Poista käytöstä kaikki 'claude-agent'-käyttäjän avaimet
keys = iam.list_access_keys(UserName='claude-agent')['AccessKeyMetadata']
for key in keys:
iam.update_access_key(
UserName='claude-agent',
AccessKeyId=key['AccessKeyId'],
Status='Inactive'
)
return {'statusCode': 200, 'body': 'IAM keys deactivated; existing resources unchanged'}
Rajattu resurssien pysäytysmenettely: Kirjaa hyväksyttyjä EBS-pohjaisia EC2-instansseja sisältävää erillistä hiekkalaatikkoa varten tili, alueet ja täsmälliset instanssitunnukset ennen ajoa. Valitse EC2-konsolissa vain nämä instanssit → Instance state → Stop instance → vahvista ja varmista sitten, että jokaisen tilaksi tulee stopped. Tallenna ensin tarvittavat instance store -tiedot, sillä pysäyttäminen poistaa ne. Tarkista, ettei hyväksytty ajastin tai skaalausjärjestelmä korvaa instansseja. Tämä lopettaa kyseisen laskentakäytön, ei kaikkia tilin veloituksia. Tarkista säilytetty tallennustila ja muut palvelut erikseen. Noudata virallista EC2-pysäytysohjetta.
AWS Budgets -dokumentaatio varoittaa, että ilmoitukset tulevat resurssikäytön jäljessä ja lisää kustannuksia voi kertyä ennen hälytystä ja sen jälkeen. Hälytys 100%:n kohdalla ei siksi voi pakottaa täsmällistä rahamääräistä kattoa.
GCP Budget Alerts. Luo Budget → Pub/Sub-aihe → Cloud Function, joka poistaa Service Accountin käytöstä. Tärkeä huomio dokumentaatiosta: hälytykset vain ilmoittavat, eivät pysäytä mitään, joten Cloud Function on välttämätön.
Yandex Cloud (dokumentaatio). Aseta budjetit kohdassa Billing → Budgets ja resurssikiintiöt ehdottomaksi ylärajaksi. Voit yhdistää ilmoitukset Telegram-bottiin Cloud Functions -palvelun kautta.
OpenAI API. Pehmeät ja kovat kulutusrajat löytyvät suoraan hallintapaneelista—kova raja pysäyttää API:n automaattisesti; Lambdaa ei tarvita.
Käytä todennettua palveluntarjoajan ehdotonta ylärajaa silloin, kun sellainen on saatavilla, viiveellisiä budjettihälytyksiä, rajattuja tunnistetietoja ja testattua reaktiota juuri niille resursseille, joita agentti voi luoda. Tunnistetietojen mitätöinti estää osan uusista toimista. Jatkuva resurssikäyttö edellyttää pysäytyksen todentamista. Hälytys tai avaimet mitätöivän Lambdan onnistumisviesti ei kumpikaan todista kaiken laskutuksen loppuneen.
Miksi agentti tarvitsee erillisen, rajatun sandbox-API-avaimen (sääntö 6)
Tärkeimmät kohdat
Miksi agentti tarvitsee erillisen API-avaimen? Jotta virhe pysyy rajattuna. Luo IAM-käyttäjä tai Service Account vain yhdelle agentille, anna sille vain vähimmäisoikeudet (EC2, ei *), ja liitä se erilliseen laskutusprojektiin, jossa on ehdoton yläraja. Jos agentti kuluttaa budjettinsa loppuun, se kuluttaa tunnissa omat 50 dollariaan, ei koko yrityksen lompakkoa.
AWS:n vähimmäisasetus:
- Luo IAM-käyttäjä
claude-agent-scan - Käytäntö: vain vaaditut toiminnot (esimerkiksi
ec2:RunInstancesyhdellä alueella koollat3.micro, ilman VPC:n elastista IP-osoitetta) - Liitä se erilliseen AWS-tiliin (Organizationsin kautta), jonka kuukausibudjetti on 100 dollaria
- Luo käyttöavaimet ja anna ne vain agentille; älä lisää niitä omaan
~/.aws/credentials-tiedostoosi - Kierrätä avaimet tai poista käyttäjä istunnon jälkeen
Vastaavasti muiden palveluntarjoajien kohdalla:
- OpenAI / Anthropic: erillinen API-avain kullekin agentille, kova raja kullekin avaimelle hallintapaneelissa ja
agent_id-tunnisteet pyyntöjen metatiedoissa - Stripe / YooKassa: rajoitettu API-avain yhtä toimintoa varten (esimerkiksi vain
charges:read) ja mahdollisuuksien mukaan erillinen kauppiastili - Telegram Bot API: erillinen bot-token, ei päätilin token
Vanha tietoturvaperiaate pätee tässäkin: vähimmät oikeudet—agentti saa täsmälleen sen, mitä tehtävä vaatii, ei tavuakaan enempää. Jos tehtävä on ”skannaa verkko”, älä anna sille ec2:*- ja s3:*-oikeuksia; anna vain ec2:DescribeInstances.
Milloin käyttää ennakkokuivaharjoitusta ja iteraatiorajaa (sääntö 7)
Tärkeimmät kohdat
Miksi agentin kannattaa näyttää suunnitelmansa ennen käynnistystä, ja kuinka monta iteraatiota pitäisi sallia enintään? Plan Mode on Claude Coden sisäänrakennettu ominaisuus: agentti kuvaa ensin, mitä se aikoo tehdä, ja sinä hyväksyt suunnitelman. Se on maksuton ennakkotarkistus. --max-turns N rajoittaa yhden istunnon vaiheiden määrää, joten agentti ei voi jatkaa loputtomiin. Aseta autonomisessa tilassa rajaksi 10–30 vuoroa, ei enempää.
Plan Mode (/plan) otetaan käyttöön istunnon alussa. Agentti laatii suunnitelman, näyttää sen chatissa, odottaa hyväksyntää ja ryhtyy työhön vasta sitten. Se on maksuton ja ehkäisee 70% tapauksista, joissa käyttäjä ajattelee: ”hups, luulin että se kysyisi ensin”.
--max-turns on käynnistyslippu. Yksi vuoro on sykli: ”agentti ajattelee + työkalukutsu + tulos”. Autonomisissa tehtävissä:
- pieni muutos: 5–10 vuoroa
- keskikokoinen tehtävä: 15–30 vuoroa
- suuri autonominen tehtävä: 50–80 vuoroa
Lisäkeinoja:
- Seinäkellon mukainen aikakatkaisu Linuxin
timeout-komennolla:
timeout 1800 claude --dangerously-skip-permissions --max-turns 30 -p "scan task"
# 1800 sekuntia = 30 minuuttia. Pysäytä prosessi hallitusti.
- Kirjaa jokainen työkalukutsu tiedostoon PostToolUse-hookilla, jotta näet jälkikäteen, mitä tapahtui
- Cron-valvonta—tarkista 5 minuutin välein, ettei 10 Claude-prosessia ole käynnissä samaan aikaan (tyypillinen merkki siitä, että jokin on mennyt pieleen)
Käyttövalmis 5 minuutin tarkistuslista ennen Claude Coden autonomista käynnistämistä
Tärkeimmät kohdat
Mitä pitää olla valmiina ennen kuin painat Enteriä autonomisen tehtävän käynnistämiseksi? Seitsemän valintaruutua, noin minuutti kuhunkin. Jos yksikin on tyhjä, älä käynnistä.
Tarkistuslista ennen komentoa claude --dangerously-skip-permissions:
[ ] 1. Ehdoton yläraja API-palveluntarjoajalla (Anthropic Console → Limits → Monthly spend limit)
[ ] 2. Task Budget pyynnön payloadissa (jos käytössä on Opus 4.7+/Fable/Mythos)
[ ] 3. PreToolUse-hook, joka estää rm -rf-, aws s3 rb- ja terraform destroy -komennot
[ ] 4. allowedTools-sallittujen työkalujen lista settings.json-tiedostossa tai työskentely Docker-kontissa
[ ] 5. Viiveelliset pilvibudjetin hälytykset + testattu avainten mitätöinti ja hyväksytty resurssien pysäytys
[ ] 6. Sandbox-API-avaimet (agentille erillinen avain, ei pääavainta)
[ ] 7. --max-turns N + timeout NNN sekuntia + prosessien cron-valvonta
Jos kaikki seitsemän ovat kunnossa, käynnistä. Jos yksikin puuttuu, pysähdy ja ota se käyttöön. Kolmekymmentä minuuttia nyt voi säästää myöhemmin 6 000–500 000.
Esimerkki taustaksi: vibe-koodaaja julkaisi verkkokauppasovelluksen, jossa oli postgres-tietokannan oletussalasana. Muutamassa päivässä joku löysi sen, asensi louhintaohjelmia ja loi omia takaovia. Palvelin oli pakko sulkea, ja kuukauden lasku kasvoi jonkun muun kryptolouhinnan takia.
Tämä tarina kuuluu osion 1 luokkaan 3 (kolmannet osapuolet ajavat ohjelmia infrastruktuurissasi), mutta logiikka on sama: kulutuksen hallinta ei saa riippua siitä, kuka aloitti kulutuksen—agenttisi, työntekijäsi vai louhija Nigeriassa.
Lisälukemista:
- Näin suojaat Claude Coden rikkoutumiselta—
--dangerously-skip-permissions-asetuksesta ja käyttöoikeuksista toisesta näkökulmasta - Vibe-koodauksen tietoturva—tietoturvapilari
- Näin et kuluta Claude Code -rajoja loppuun yhdessä päivässä—tilauksen tokeneista (älä sekoita tätä pilvilaskuja käsittelevään oppaaseen)
Lähteet
Tutustu Ailootiin.
Lisätietoja
Kysymyksiä tästä oppaasta: 7 Claude Code -sääntöä autonomisten agenttien kulujen rajoittamiseen vuonna 2026
Lopettaako agentin IAM-avainten mitätöinti pilvilaskun kertymisen?
Ei. Se estää näiden avainten käytön uusiin todennettuihin pyyntöihin, mutta olemassa olevat resurssit voivat edelleen kerryttää kuluja. Pidä sallittujen omistettujen resurssien luettelo, pysäytä hyväksytyt instanssit, varmista niiden tila ja tarkista säilytetty tallennustila sekä muut palvelut erikseen.
Voiko esimerkin komentolauseke pakottaa täydellisen turvallisuusrajan?
Ei. Se tarkastelee vain siihen osuvia Bash-työkalukutsuja ja valittua komentotekstiä. Testaa JSON-jäsennys ja paluuarvot, mutta toteuta todellinen pääsyraja rajatuilla pilvioikeuksilla ja ympäristön eristyksellä. Vastaavat operaatiot ja muut työkalut voivat ohittaa tekstisuodattimen.