Skip to content

Как ротировать секреты в production

Коротко:

Secret rotation в 2026: (1) Вычислить все secrets (DB passwords, API keys, JWT, OAuth client secrets), (2) Центральное хранилище — AWS Secrets Manager ($0.40/secret/мес), HashiCorp Vault (self-host), Doppler ($5/user), (3) Automatic rotation через Lambda/GitHub Actions, (4) Zero-downtime: dual-read period с old+new keys. После incident — rotate ВСЕ related secrets в течение часа.

Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.

Попробовать бесплатно →

Пошаговая настройка

  1. Inventory: запустите trufflehog / gitleaks для поиска всех secrets в codebase + git history
  2. Миграция в secret manager (Vault / AWS SM / Doppler) — убрать из .env committed to git
  3. App load: fetch at boot из secret manager, cache в memory (не на disk)
  4. Rotation policy: 90 дней для long-lived, 24h для API keys с high-privilege
  5. Auto-rotation: AWS SM Lambda, Vault PKI engine — generate new key, deploy, revoke old
  6. Dual-read grace period: 5-60 минут где app accepts и old и new
  7. Post-incident: rotate ВСЕ keys в blast radius в течение часа

Рабочие примеры

СценарийКонфиг
AWS Secrets Manager Nodeconst { SecretsManager } = require('@aws-sdk/client-secrets-manager'); const sm = new SecretsManager(); const res = await sm.getSecretValue({ SecretId: 'prod/db/password' }); const { password } = JSON.parse(res.SecretString);
Vault Agent sidecar (K8s)# Pod annotation vault.hashicorp.com/agent-inject: "true" vault.hashicorp.com/role: "my-app" vault.hashicorp.com/agent-inject-secret-db: "database/creds/my-app"
Auto-rotate schedule# AWS SM resource resource "aws_secretsmanager_secret" "db" { name = "prod/db" rotation_rules { automatically_after_days = 30 } rotation_lambda_arn = aws_lambda_function.rotator.arn }
trufflehog scan# Scan git history for secrets $ docker run -v $(pwd):/repo trufflesecurity/trufflehog:latest \ git file:///repo --only-verified
Dual-read patternconst current = await loadSecret('api-key-current'); const previous = await loadSecret('api-key-previous'); function verify(token) { return verifyWith(token, current) || verifyWith(token, previous); }

Типичные ошибки

  • Rotation без grace period → 5 мин outage (все connections rejected) — deploy old+new сначала
  • Log secrets в error tracker (Sentry, Datadog) — один exception + process.env → утечка
  • Manual rotation quarterly → забудете. Automate или используйте short-lived tokens (15 мин)
  • Secrets в Dockerfile ENV — попадают в image layers, visible для всех с pull access
  • Cached secrets на disk → survive restart, attacker на instance читает. In-memory only
ЗаголовкиCSP, HSTS, X-Frame-Options и др.
SSL/TLSШифрование и сертификат
КонфигурацияСерверные настройки и утечки
Оценка A-FОбщий балл безопасности

Почему нам доверяют

OWASP
рекомендации
15+
заголовков безопасности
<2с
результат
A–F
оценка безопасности

Как это работает

1

Введите URL сайта

2

Анализ заголовков безопасности

3

Получите оценку A–F

Что проверяет анализ безопасности?

Инструмент проверяет HTTP-заголовки безопасности, конфигурацию SSL/TLS, утечки серверной информации и защиту от распространённых атак (XSS, clickjacking, MIMEsniffing). Оценка от A до F показывает общий уровень защиты.

Анализ заголовков

Проверка Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy и других.

Проверка SSL

Версия TLS, срок сертификата, цепочка доверия, поддержка HSTS.

Обнаружение утечек

Поиск раскрытых серверных версий, debug-режимов, открытых конфигов и директорий.

Отчёт с рекомендациями

Детальный отчёт с объяснением каждой проблемы и конкретными шагами для исправления.

Кому это нужно

Специалисты по безопасности

аудит HTTP-заголовков

DevOps

проверка конфигурации

Разработчики

CSP и HSTS настройка

Аудиторы

соответствие стандартам

Частые ошибки

Нет Content-Security-PolicyCSP — главная защита от XSS. Без него инъекция скриптов значительно проще.
Нет заголовка HSTSБез HSTS возможна downgrade-атака с HTTPS на HTTP. Включите Strict-Transport-Security.
Server header раскрывает версиюServer: Apache/2.4.52 помогает атакующим подобрать эксплойт. Скройте версию.
X-Frame-Options не установленСайт можно встроить в iframe для clickjacking-атаки. Установите DENY или SAMEORIGIN.
Нет X-Content-Type-OptionsБез nosniff браузер может интерпретировать файлы неправильно (MIME sniffing).

Лучшие практики

Начните с базовых заголовковМинимум: HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy. Займёт 5 минут.
Внедрите CSP постепенноНачните с Content-Security-Policy-Report-Only, мониторьте нарушения, затем включите.
Скройте серверные заголовкиУдалите Server, X-Powered-By, X-AspNet-Version из ответов.
Настройте Permissions-PolicyОграничьте доступ к камере, микрофону, геолокации — только то, что реально используется.
Проверяйте после каждого деплояЗаголовки безопасности могут быть перезаписаны при обновлении конфигурации сервера.

Получите больше с бесплатным аккаунтом

История security-проверок и мониторинг HTTP-заголовков безопасности.

Зарегистрироваться (FREE)

Больше по теме

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

Как часто ротировать?

High-privilege API keys — 24-72h (JIT). Service credentials — 30-90d. Human passwords — 90d + MFA. После incident — немедленно.

Vault или AWS SM?

Vault: self-host, universal (не только AWS), $0 if self. AWS SM: managed, tight AWS IAM integration, $0.40/secret/мес. Cloud-native → SM, multi-cloud → Vault.

Short-lived credentials?

Best practice 2026 — AWS STS AssumeRole (1h), GitHub OIDC federation (no static AWS keys), Workload Identity (K8s). Reduces rotation overhead.

Как проверить leakage?

GitHub secret scanning enabled, trufflehog в CI, Shodan alerts для own IPs. <a href="/security">Enterno Security Scanner</a> для sensitive file disclosure.