AI-agenten · Les

Secrets roteren en beveiligen

Verloop van secrets, rotatiestrategieën en vaultoplossingen (AWS Secrets Manager).

Les 3 van 413 stappen

Secrets roteren en beveiligen is een gratis AI-agenten-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject AI-agenten. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus AI-agenten bevat in totaal 4 lessen.

Waarom geheimen moeten worden geroteerd

Ook als een geheim nooit expliciet is blootgesteld, beperkt regelmatige rotatie de schade van een onopgemerkte inbreuk. Een sleutel die zes maanden geleden stilletjes is gestolen, wordt na rotatie onbruikbaar.

Veel beveiligingsstandaarden (SOC 2, PCI-DSS) vereisen periodieke rotatie van geheimen. Agentcode schrijven die eenvoudig te roteren sleutels ondersteunt, is professioneel.

Vervalbeleid voor API-sleutels

Verschillende aanbieders hanteren verschillend vervalbeleid. Bij sommige kun je vervaldatums voor sleutels instellen; andere verstrekken sleutels die nooit verlopen tenzij je ze handmatig roteert. Controleer je sleutels regelmatig en stel agendaherinneringen in voor handmatige rotatie.

# 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 voor agents

AWS Secrets Manager slaat geheimen veilig op en ondersteunt automatische rotatie. Je agent haalt de huidige geheime waarde tijdens de uitvoering op via de SDK — geen hardgecodeerde sleutels en geen .env-bestanden in productie.

# 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 voor geheimen

HashiCorp Vault is een opensourcegeheimenbeheersysteem dat populair is in bedrijfsomgevingen. Het ondersteunt dynamische geheimen, fijnmazige toegangscontrole en auditregistratie van elke toegang tot een geheim.

# 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

Geheimen scannen: truffleHog

truffleHog scant Git-repositories op geheimen die mogelijk per ongeluk zijn vastgelegd. Het controleert de volledige commitgeschiedenis, niet alleen de huidige code. Voer het uit voordat je een repository openbaar maakt.

# 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: bescherming vóór commits

git-secrets is een Git-hookhulpmiddel van AWS dat commits blokkeert waarin geheimen staan die overeenkomen met geconfigureerde patronen. Het draait vóór elke commit en wijst deze af als er een geheimenpatroon wordt gevonden.

# 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')

Wat je moet doen als een sleutel is blootgesteld

Een stapsgewijs reactieplan voor een gecompromitteerde API-sleutel. Snelheid is cruciaal — geautomatiseerde scanners verzamelen blootgestelde sleutels binnen enkele minuten nadat ze zijn vastgelegd.

# 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.')

Ongeautoriseerd gebruik detecteren

Controleer na het rouleren van een sleutel of deze zonder toestemming is gebruikt. De meeste providers bieden gebruikslogboeken en waarschuwingen voor uitgaven waarmee je kunt ontdekken of een gestolen sleutel is gebruikt om API-aanroepen te doen.

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()

Uitgavenlimieten voor API-sleutels instellen

Stel harde uitgavenlimieten in voor je API-sleutels om de schade door een gecompromitteerde sleutel te beperken. Zelfs als iemand je sleutel gebruikt, kan diegene geen onbeperkte rekening opbouwen.

# 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')

Het principe van minimale bevoegdheden voor sleutels

Geef elke API-sleutel alleen de bevoegdheden die deze nodig heeft. Een sleutel die alleen gegevens leest, mag geen bevoegdheden hebben om gegevens te schrijven of te verwijderen. De meeste providers ondersteunen sleutels met een beperkt bereik of beperkte bevoegdheden.

# 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')

Een controle op de geldigheid van sleutels bouwen

Controleer bij het opstarten van de agent of je API-sleutels nog geldig zijn. Vang verlopen of ingetrokken sleutels onmiddellijk op in plaats van halverwege een taak te falen, nadat de agent al bronnen heeft verbruikt.

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')

Kennischeck: geheimen rouleren en beveiligen

Toets je begrip van het rouleren van geheimen en beveiligingspraktijken.

Samenvatting: geheimen rouleren en beveiligen

Je hebt nu een complete beveiligingsstrategie voor geheimen in productieagents:

  • Rouleer API-sleutels elke 60-90 dagen als vaste werkwijze
  • Gebruik AWS Secrets Manager of HashiCorp Vault voor productieomgevingen
  • Voer truffleHog uit voordat je een repository openbaar maakt
  • Installeer git-secrets als pre-commit-hook om onbedoelde commits te voorkomen
  • Als een sleutel wordt blootgesteld: trek deze onmiddellijk in, rouleer de sleutel daarna en controleer vervolgens het gebruik
  • Stel uitgavenlimieten in voor alle API-sleutels om schade door een beveiligingslek te beperken
  • Pas minimale bevoegdheden toe — geef elke sleutel alleen de bevoegdheden die deze nodig heeft
Gratis beginnen

Leer AI-agenten met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
60
Lessen
239

Veelgestelde vragen

Is de les “Secrets roteren en beveiligen” gratis?

Ja — de volledige tekst van “Secrets roteren en beveiligen” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus AI-agenten wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus AI-agenten bevat in totaal 4 lessen.

Wat leer ik in “Secrets roteren en beveiligen”?

Verloop van secrets, rotatiestrategieën en vaultoplossingen (AWS Secrets Manager). Je oefent met AI-agenten door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met AI-agenten te beginnen?

Ervaring vooraf is niet nodig. AI-agenten op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Secrets roteren en beveiligen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over AI-agenten?

Ja. Elke les over AI-agenten bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Omgevingsvariabelen voor agents
  2. .env-bestanden en python-dotenv
  3. Secrets roteren en beveiligen
  4. Configuratieprofielen voor development en productie
← Terug naar AI-agenten