AI Agents · Lekcja

Rotacja sekretów i bezpieczeństwo

Wygasanie sekretów, strategie ich rotacji i rozwiązania typu vault (AWS Secrets Manager).

Lekcja 3 z 413 kroki

Rotacja sekretów i bezpieczeństwo to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.

Dlaczego sekrety trzeba rotować

Nawet jeśli sekret nigdy nie zostanie jawnie ujawniony, jego regularna rotacja ogranicza skutki niewykrytego naruszenia. Klucz skradziony po cichu 6 miesięcy temu staje się bezużyteczny po rotacji.

Wiele standardów bezpieczeństwa (SOC 2, PCI-DSS) wymaga okresowej rotacji sekretów. Tworzenie kodu agentów ułatwiającego rotację jest profesjonalną praktyką.

Zasady wygasania kluczy API

Poszczególni dostawcy stosują różne zasady wygasania kluczy. Niektórzy pozwalają ustawić daty wygaśnięcia kluczy, a inni wydają klucze, które nie wygasają, dopóki nie zostaną ręcznie zmienione. Należy regularnie kontrolować klucze i ustawić w kalendarzu przypomnienia o ręcznej rotacji.

# 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 dla agentów

AWS Secrets Manager bezpiecznie przechowuje sekrety i obsługuje automatyczną rotację. Agent pobiera aktualną wartość sekretu w czasie działania za pośrednictwem SDK — bez kluczy wpisanych na stałe i bez plików .env na produkcji.

# 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 do zarządzania sekretami

HashiCorp Vault to popularny w środowiskach korporacyjnych system open source do zarządzania sekretami. Obsługuje dynamiczne sekrety, szczegółową kontrolę dostępu i rejestrowanie audytowe każdego dostępu do sekretu.

# 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

Wykrywanie sekretów: truffleHog

truffleHog skanuje repozytoria git w poszukiwaniu sekretów, które mogły zostać przypadkowo zatwierdzone. Sprawdza całą historię commitów, a nie tylko bieżący kod. Należy uruchomić go przed upublicznieniem repozytorium.

# 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: ochrona pre-commit

git-secrets to narzędzie w postaci hooka Git, stworzone przez AWS, które blokuje commity zawierające sekrety pasujące do skonfigurowanych wzorców. Uruchamia się przed każdym commitem i odrzuca go, jeśli znajdzie wzorzec sekretu.

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

Co zrobić w przypadku ujawnienia klucza

Plan działania krok po kroku w przypadku przejęcia klucza API. Liczy się czas — automatyczne skanery wyłapują ujawnione klucze w ciągu kilku minut od wykonania commita.

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

Wykrywanie nieautoryzowanego użycia

Po rotacji klucza należy sprawdzić, czy nie był używany bez autoryzacji. Większość dostawców oferuje dzienniki użycia i alerty dotyczące wydatków, które mogą ujawnić, czy skradziony klucz posłużył do wykonywania wywołań API.

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

Ustawianie limitów wydatków dla kluczy API

Należy ustawić sztywne limity wydatków dla kluczy API, aby ograniczyć szkody wynikające z przejęcia klucza. Nawet jeśli ktoś użyje Państwa klucza, nie będzie mógł wygenerować nieograniczonych opłat.

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

Zasada najmniejszych uprawnień dla kluczy

Każdemu kluczowi API należy nadać wyłącznie uprawnienia, których potrzebuje. Klucz służący tylko do odczytu danych nie powinien mieć uprawnień do zapisu ani usuwania. Większość dostawców obsługuje klucze z ograniczonym zakresem lub zestawem uprawnień.

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

Kontrola stanu klucza

Należy weryfikować, czy klucze API są nadal ważne podczas uruchamiania agenta. Wygasłe lub unieważnione klucze należy wykrywać natychmiast, zamiast dopuszczać do przerwania zadania w połowie, gdy agent zdążył już zużyć zasoby.

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

Sprawdzenie wiedzy: rotacja sekretów i bezpieczeństwo

Sprawdź swoją wiedzę na temat rotacji sekretów i praktyk bezpieczeństwa.

Podsumowanie: rotacja sekretów i bezpieczeństwo

Ma już Pani/Pan kompletną strategię bezpieczeństwa sekretów dla agentów produkcyjnych:

  • Rotować klucze API co 60–90 dni w ramach stałej praktyki
  • Korzystać z AWS Secrets Manager lub HashiCorp Vault w środowiskach produkcyjnych
  • Uruchamiać truffleHog przed udostępnieniem repozytorium jako open source
  • Instalować git-secrets jako hook pre-commit, aby zapobiegać przypadkowym commitom
  • W razie ujawnienia klucza: natychmiast go unieważnić, następnie wykonać rotację i przeprowadzić audyt użycia
  • Ustawiać limity wydatków dla wszystkich kluczy API, aby ograniczyć szkody wynikające z przejęcia
  • Stosować zasadę najmniejszych uprawnień — każdemu kluczowi nadawać wyłącznie potrzebne uprawnienia
Bezpłatny start

Ucz się AI Agents dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
60
Lekcje
239

Często zadawane pytania

Czy lekcja „Rotacja sekretów i bezpieczeństwo” jest bezpłatna?

Tak — pełny tekst „Rotacja sekretów i bezpieczeństwo” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.

Co nauczysz się w „Rotacja sekretów i bezpieczeństwo”?

Wygasanie sekretów, strategie ich rotacji i rozwiązania typu vault (AWS Secrets Manager). Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AI Agents?

Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Rotacja sekretów i bezpieczeństwo”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?

Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Zmienne środowiskowe dla agentów
  2. Pliki .env i python-dotenv
  3. Rotacja sekretów i bezpieczeństwo
  4. Profile konfiguracji dla środowisk deweloperskich i produkcyjnych
← Powrót do AI Agents