AI-agenter · leksjon

Rotering og sikkerhet for hemmeligheter

Utløp av hemmeligheter, strategier for rotering og hvelvløsninger (AWS Secrets Manager).

Leksjon 3 av 413 trinn

Rotering og sikkerhet for hemmeligheter er en gratis leksjon i AI-agenter på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI-agenter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI-agenter inneholder totalt 4 leksjoner.

Hvorfor hemmeligheter må roteres

Selv om en hemmelighet aldri eksponeres eksplisitt, begrenser regelmessig rotasjon skadeomfanget ved et uoppdaget sikkerhetsbrudd. En nøkkel som ble stjålet i det skjulte for seks måneder siden, blir ubrukelig etter rotasjon.

Mange sikkerhetsstandarder (SOC 2, PCI-DSS) krever periodisk rotasjon av hemmeligheter. Å bygge agentkode som er enkel å rotere, er god profesjonell praksis.

Utløpsregler for API-nøkler

Ulike leverandører har ulike regler for utløp. Noen lar Dem angi utløpsdatoer for nøkler, mens andre utsteder nøkler som aldri utløper med mindre de roteres manuelt. Kontroller nøklene regelmessig, og opprett kalenderpåminnelser for manuell rotasjon.

# Key rotation schedule by provider (as of mid-2025):
# OpenAI: no automatic expiry, rotate manually every 90 days
# Anthropic: no automatic expiry, rotate manually every 90 days
# Google Cloud: API keys can have expiry dates set in the console
# AWS: IAM access keys: rotate every 90 days (AWS Security Hub recommends)
# Tavily: no automatic expiry, rotate when suspected compromise

# Best practices:
# - Set a recurring calendar event: 'Rotate API keys'
# - Document when each key was last rotated
# - Store rotation date in a secrets manager, not a spreadsheet
print('Schedule key rotation every 60-90 days as a standing task')

AWS Secrets Manager for agenter

AWS Secrets Manager lagrer hemmeligheter sikkert og støtter automatisk rotasjon. Agenten henter den gjeldende hemmelighetsverdien under kjøring via SDK-et — ingen hardkodede nøkler og ingen .env-filer i produksjon.

# pip install boto3
import boto3
import json

def get_secret(secret_name: str, region: str = 'us-east-1') -> dict:
    client = boto3.client('secretsmanager', region_name=region)
    response = client.get_secret_value(SecretId=secret_name)
    return json.loads(response['SecretString'])

# Store secrets as JSON in Secrets Manager:
# Secret name: 'prod/myagent/api-keys'
# Secret value: {'OPENAI_API_KEY': 'sk-...', 'SEARCH_API_KEY': 'tvly-...'}

# Fetch at agent startup:
# secrets = get_secret('prod/myagent/api-keys')
# openai_key = secrets['OPENAI_API_KEY']

HashiCorp Vault for hemmeligheter

HashiCorp Vault er et system med åpen kildekode for håndtering av hemmeligheter, og er populært i virksomhetsmiljøer. Det støtter dynamiske hemmeligheter, finkornet tilgangskontroll og revisjonslogging av hver tilgang til en hemmelighet.

# pip install hvac
import hvac
import os

def get_vault_secret(path: str, key: str) -> str:
    client = hvac.Client(
        url=os.environ['VAULT_ADDR'],
        token=os.environ['VAULT_TOKEN']  # from env, not hard-coded
    )

    if not client.is_authenticated():
        raise RuntimeError('Vault authentication failed')

    response = client.secrets.kv.read_secret_version(path=path)
    return response['data']['data'][key]

# Usage:
# openai_key = get_vault_secret('secret/myagent', 'OPENAI_API_KEY')

# Vault provides:
# - Audit log of every secret read
# - Lease-based secrets that expire automatically
# - Fine-grained ACL policies

Hemmelighetsskanning: truffleHog

truffleHog skanner git-repositorier etter hemmeligheter som kan ha blitt committet ved et uhell. Det kontrollerer hele commit-historikken, ikke bare den gjeldende koden. Kjør det før De gjør et repositorium offentlig.

# pip install trufflehog
# Or: brew install trufflehog (Mac)

# Scan current git repository:
# trufflehog git file://.

# Scan only recent commits:
# trufflehog git file://. --since-commit HEAD~50

# Scan a GitHub repository:
# trufflehog github --repo https://github.com/yourorg/yourrepo

# truffleHog detects:
# - OpenAI API keys (sk-proj-...)
# - Anthropic keys (sk-ant-...)
# - AWS access keys (AKIA...)
# - Private keys (BEGIN RSA PRIVATE KEY)
# - And 700+ other secret patterns

print('Run truffleHog before open-sourcing any private repository')

git-secrets: Beskyttelse før commit

git-secrets er et git-hook-verktøy fra AWS som blokkerer commiter som inneholder hemmeligheter som samsvarer med konfigurerte mønstre. Det kjører før hver commit og avviser den hvis et hemmelighetsmønster blir funnet.

# Install:
# brew install git-secrets  (Mac)
# or: git clone https://github.com/awslabs/git-secrets && make install

# Set up in your repo:
# git secrets --install
# git secrets --register-aws  (adds AWS key patterns)

# Add custom patterns (e.g., OpenAI keys):
# git secrets --add 'sk-proj-[A-Za-z0-9_-]{48,}'

# Now attempting to commit a secret:
# git add agent.py  # file containing API key
# git commit -m 'add agent'
# [ERROR] Untracked secret found in agent.py
# Commit blocked!

print('git-secrets prevents secrets from ever entering git history')

Hva du bør gjøre hvis en nøkkel er eksponert

En trinnvis plan for håndtering av en kompromittert API-nøkkel. Det er avgjørende å handle raskt — automatiserte skannere henter eksponerte nøkler i løpet av minutter etter at de er sendt inn med en commit.

# INCIDENT RESPONSE: Exposed API Key
#
# Step 1 (IMMEDIATE): Revoke the exposed key
#   OpenAI: platform.openai.com/api-keys -> Delete key
#   Anthropic: console.anthropic.com -> API Keys -> Delete
#   AWS: IAM console -> Access Keys -> Deactivate/Delete
#
# Step 2: Generate a new key
#   Create a replacement key with the same permissions
#
# Step 3: Update everywhere
#   - Local .env
#   - Staging environment
#   - Production environment (Secrets Manager / Vault)
#   - CI/CD secrets (GitHub Actions, GitLab CI)
#
# Step 4: Audit usage
#   - Check provider usage logs for unauthorized activity
#   - Check billing for unexpected charges
#
# Step 5: Prevent recurrence
#   - Add pattern to git-secrets
#   - Enable pre-commit hooks
print('Revoke first. Then rotate. Then audit. Then prevent.')

Oppdage uautorisert bruk

Etter at du har rotert en nøkkel, bør du kontrollere om den ble brukt uten autorisasjon. De fleste leverandører tilbyr brukslogger og varsler om kostnader som kan avdekke om en stjålet nøkkel ble brukt til å foreta API-kall.

import openai
import datetime

client = openai.OpenAI(api_key='YOUR_NEW_API_KEY')

# Check OpenAI usage for the past day
# (requires usage read permissions on the key)
def check_recent_usage():
    # OpenAI billing/usage dashboard: platform.openai.com/usage
    # Set up spending alerts: platform.openai.com/account/limits
    # - 'Email alert' when monthly spend exceeds $X

    print('Suspicious usage indicators to look for:')
    print('1. Spikes in token usage outside business hours')
    print('2. Requests from unexpected IP addresses')
    print('3. Models or endpoints you do not use')
    print('4. Unusual cost patterns')
    print('\nAlways set spending limits and alerts on new API keys')

check_recent_usage()

Angi kostnadsgrenser for API-nøkler

Angi faste kostnadsgrenser for API-nøklene dine for å begrense skaden fra en kompromittert nøkkel. Selv om noen bruker nøkkelen din, kan de ikke påføre deg en ubegrenset regning.

# OpenAI spending limits:
# platform.openai.com/account/limits
# - Set 'Monthly budget' (hard limit — API stops when reached)
# - Set 'Email notification threshold' (soft alert)

# Best practice for agent keys:
# - Development key: $5-10/month hard limit
# - Staging key: $20-50/month hard limit
# - Production key: Based on expected usage + 2x buffer
# - CI/CD test key: $5/month hard limit (mocks should handle most tests)

# Anthropic:
# console.anthropic.com -> Settings -> Spending Limits

# Use separate keys per environment so limits are independent
print('Spending limits cap the blast radius of a compromised key')

Prinsippet om minste privilegium for nøkler

Gi hver API-nøkkel bare tillatelsene den trenger. En nøkkel som bare leser data, bør ikke ha tillatelser til å skrive eller slette. De fleste leverandører støtter nøkler med avgrenset omfang eller begrensede tillatelser.

# Principle of Least Privilege applied to agent API keys:

# OpenAI key scopes (if API allows scoped keys):
# - Read-only key: for logging/audit agents
# - Write key: for agents that create content
# - Admin key: NEVER use in agent code — only for management

# Tavily API:
# - Basic plan: limited search results
# - Research plan: more results, images
# Use the plan appropriate to the agent's needs

# AWS IAM for agents:
# Create a dedicated IAM role/user per agent with only the S3/DynamoDB
# paths it needs to read/write. No admin permissions.

# Rule: If the key is compromised, how much damage can be done?
# Minimize the answer through scoped permissions.
print('Least privilege limits blast radius of any single key compromise')

Bygge en helsesjekk for nøkler

Valider at API-nøklene fortsatt er gyldige når agenten starter. Oppdag utløpte eller tilbakekalte nøkler umiddelbart, i stedet for at agenten mislykkes midt i en oppgave etter allerede å ha brukt ressurser.

import openai

def check_openai_key_health(api_key: str) -> bool:
    try:
        client = openai.OpenAI(api_key=api_key)
        # Make a minimal API call to verify the key
        models = client.models.list()
        print(f'OpenAI key valid. {len(list(models))} models available.')
        return True
    except openai.AuthenticationError:
        print('ERROR: OpenAI API key is invalid or expired.')
        return False
    except openai.PermissionDeniedError:
        print('ERROR: API key lacks required permissions.')
        return False

# At agent startup:
# import os
# if not check_openai_key_health(os.environ['OPENAI_API_KEY']):
#     raise SystemExit('Cannot start: invalid API key')

Kunnskapssjekk: Rotasjon og sikkerhet for hemmeligheter

Test forståelsen din av rotasjon av hemmeligheter og sikkerhetspraksis.

Oppsummering: Rotasjon og sikkerhet for hemmeligheter

Du har nå en komplett strategi for sikker håndtering av hemmeligheter i agenter i produksjon:

  • Roter API-nøkler hver 60.–90. dag som en fast praksis
  • Bruk AWS Secrets Manager eller HashiCorp Vault i produksjonsmiljøer
  • Kjør truffleHog før du gjør et repositorium åpent
  • Installer git-secrets som en pre-commit-hook for å forhindre utilsiktede commits
  • Hvis en nøkkel eksponeres: tilbakekall den umiddelbart, roter den deretter, og kontroller så bruken
  • Angi kostnadsgrenser for alle API-nøkler for å begrense skaden ved kompromittering
  • Bruk minste privilegium — gi hver nøkkel bare tillatelsene den trenger
Gratis å komme i gang

Lær deg AI-agenter med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
60
Leksjoner
239

Ofte stilte spørsmål

Er leksjonen «Rotering og sikkerhet for hemmeligheter» gratis?

Ja – hele teksten i «Rotering og sikkerhet for hemmeligheter» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av AI-agenter-kurset, kan du oppgradere til CoddyKit PRO. Kurset i AI-agenter inneholder totalt 4 leksjoner.

Hva lærer jeg i «Rotering og sikkerhet for hemmeligheter»?

Utløp av hemmeligheter, strategier for rotering og hvelvløsninger (AWS Secrets Manager). Du øver på AI-agenter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med AI-agenter?

Ingen tidligere erfaring er nødvendig. AI-agenter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Rotering og sikkerhet for hemmeligheter»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne AI-agenter-leksjonen?

Ja. Alle AI-agenter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Miljøvariabler for agenter
  2. .env-filer og python-dotenv
  3. Rotering og sikkerhet for hemmeligheter
  4. Konfigurasjonsprofiler for utvikling og produksjon
← Tilbake til AI-agenter