Безопасность
Сертификаты, TLS, секреты и политики доступа: работа по безопасности, которая тихо держит продакшен в порядке.
6 статей
- Сертификаты истекли по расписанию. Алерт неделю кричал — в пустотуkubeadm-кластер потерял control plane ровно через год после установки. Алерт об истечении горел семь дней, но у Alertmanager был только receiver null.
- Боевой сертификат истёк, и никто не заметил: внешний прокси прикрыл аварию собойВсе публичные хосты отдавали 200, пока кластер отдавал просроченный wildcard. Прокси со своей TLS-терминацией спрятал аварию; настоящая находка — отсутствие алерта на истечение.
- Basic auth пропал на 80-м порту после переезда с Ingress на Gateway APIВсе статусы зелёные, мой curl возвращал 401. А вход в WordPress был открыт всем: Gateway API привязывает политику к одному listener'у, а аннотации Ingress покрывали все порты.
- Звёздочка в середине пути Vault — не wildcardПротухший токен уронил оператор секретов. Его перевыпуск вскрыл более старый баг: 27 политик Vault со * в середине пути молча запрещали то, что объявляли, и прятали избыточные права.
- Перевод Vault с Shamir на transit auto-unseal и четыре ловушки по дорогеКаждый рестарт пода Vault заканчивался запечатанным хранилищем и замороженной синхронизацией секретов. Как мы добавили transit-провайдер, мигрировали raft-кластер из трёх нод и на чём споткнулись.
- «Vault сам себя запечатывает» — нет, он просто никогда не распечатываетсяПод Vault днями висел в Ready 0/1, пока кворум raft тихо держался на двух пирах. Никто его не запечатывал: Shamir без auto-unseal оставляет запечатанным каждый рестарт.