0Pricing
AI Agents · Урок

Ротация секретов и безопасность

Истечение срока действия секретов, стратегии их ротации и решения для хранилищ (AWS Secrets Manager).

«Ротация секретов и безопасность» — бесплатный урок AI Agents на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Почему секреты нужно ротировать

Даже если секрет никогда явно не раскрывался, регулярная ротация ограничивает ущерб от незамеченного взлома. Ключ, который был незаметно украден шесть месяцев назад, после ротации становится бесполезным.

Многие стандарты безопасности (SOC 2, PCI-DSS) требуют периодической ротации секретов. Создание кода агента, удобного для ротации, — профессиональный подход.

Политики истечения срока действия ключей API

У разных поставщиков действуют разные политики истечения срока действия. Некоторые позволяют задавать даты истечения для ключей, другие выдают ключи, которые не истекают, пока их не ротируют вручную. Регулярно проверяйте ключи и устанавливайте в календаре напоминания о ручной ротации.

# 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 для агентов

AWS Secrets Manager безопасно хранит секреты и поддерживает автоматическую ротацию. Агент получает текущее значение секрета во время выполнения через SDK — без жестко заданных ключей и без файлов .env в production.

# 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 для секретов

HashiCorp Vault — система управления секретами с открытым исходным кодом, популярная в корпоративных средах. Она поддерживает динамические секреты, детализированный контроль доступа и журналирование каждого обращения к секрету.

# 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

Сканирование секретов: truffleHog

truffleHog сканирует репозитории Git в поисках секретов, которые могли быть случайно добавлены в коммиты. Он проверяет всю историю коммитов, а не только текущий код. Запустите его перед публикацией repository.

# 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: защита перед коммитом

git-secrets — инструмент хуков Git от AWS, который блокирует коммиты, содержащие секреты, соответствующие настроенным шаблонам. Он запускается перед каждым коммитом и отклоняет его, если обнаружен шаблон секрета.

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

Что делать при раскрытии ключа

Пошаговый план действий при компрометации ключа API. Здесь важна скорость: автоматические сканеры извлекают раскрытые ключи в течение нескольких минут после фиксации изменений.

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

Обнаружение несанкционированного использования

После ротации ключа проверьте, использовался ли он без разрешения. Большинство провайдеров предлагают журналы использования и оповещения о расходах, которые могут показать, применялся ли украденный ключ для вызовов 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()

Установка лимитов расходов для ключей API

Установите жесткие лимиты расходов для ключей API, чтобы ограничить ущерб от скомпрометированного ключа. Даже если кто-то воспользуется вашим ключом, он не сможет создать неограниченный счет.

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

Принцип наименьших привилегий для ключей

Предоставляйте каждому ключу API только необходимые ему разрешения. Ключ, предназначенный только для чтения данных, не должен иметь разрешений на запись или удаление. Большинство провайдеров поддерживают ключи с ограниченной областью действия или набором разрешений.

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

Создание проверки работоспособности ключа

Проверяйте, что ключи API по-прежнему действительны, при запуске агента. Немедленно обнаруживайте истекшие или отозванные ключи, а не допускайте сбоя в середине задачи после того, как агент уже израсходовал ресурсы.

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

Проверка знаний: ротация секретов и безопасность

Проверьте свое понимание ротации секретов и методов обеспечения безопасности.

Итоги: ротация секретов и безопасность

Теперь у вас есть полная стратегия защиты секретов для агентов в рабочей среде:

  • Выполняйте ротацию ключей API каждые 60–90 дней на постоянной основе
  • Используйте AWS Secrets Manager или HashiCorp Vault в рабочих окружениях
  • Запускайте truffleHog перед публикацией любого репозитория с открытым исходным кодом
  • Установите git-secrets как обработчик перед фиксацией изменений, чтобы предотвратить случайные фиксации
  • Если ключ раскрыт: немедленно отзовите его, затем выполните ротацию и проверьте использование
  • Установите лимиты расходов для всех ключей API, чтобы ограничить ущерб от компрометации
  • Применяйте принцип наименьших привилегий: предоставляйте каждому ключу только необходимые ему разрешения

Часто задаваемые вопросы

Урок «Ротация секретов и безопасность» бесплатный?

Да — полный текст урока «Ротация секретов и безопасность» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «Ротация секретов и безопасность»?

Истечение срока действия секретов, стратегии их ротации и решения для хранилищ (AWS Secrets Manager). Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Ротация секретов и безопасность»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Переменные окружения для агентов
  2. Файлы .env и python-dotenv
  3. Ротация секретов и безопасность
  4. Профили конфигурации для разработки и продакшена
← Назад к AI Agents