Список документов

Тут будет собираться полезные документы/видео по работе.

Архив:

Документы:

# Регламент по валидации и хранению паролей пользователей ## 1. Цель и основание **Цель:** Установить единые и обязательные правила создания, проверки и безопасного хранения паролей пользователей для предотвращения использования слабых учётных данных и компрометации систем. **Область применения:** Настоящий регламент распространяется на все сервисы, производящие регистрацию и хранение данных пользователей, включая как публичные, так и внутренние системы компании. ## 2. На что распространяется политика Требования применяются ко всем системам и сервисам, включая: - сервисы, доступные из интернета (публичные интерфейсы, админки, панели, VPN/VDI, bastion, GitLab, Harbor, Monitoring, API с аутентификацией); - внутренние сервисы и CI/CD; - учетные записи пользователей и сервисные аккаунты. **Обязательное требование к интерфейсам:** Фронтенд всех сервисов, подпадающих под действие настоящего регламента, должен реализовывать функцию генерации надежного пароля для новых пользователей в каждой форме создания/регистрации пользователей. **Разделение секретов по типам (из входящих требований ИБ):** В системе используются разные типы секретов с разными требованиями: 1. **Пароли пользователей (Human)** — SSO, локальные учётки, админ-панели, пользовательские интерфейсы. *Требования описаны в данном регламенте.* 2. **Секреты сервисов (Machine)** — пароли БД, service accounts, basic auth, webhook secrets. *Требования к ним описаны в отдельных документах.* 3. **Токены и ключи** — API-ключи, JWT-секреты, приватные ключи. *Требования к ним описаны в отдельных документах.* **Ключевое правило:** `UUIDv7` допустим только для Machine-секретов. Использование `UUIDv7` в качестве пароля для человека **запрещено**, так как это неудобно и почти гарантированно приводит к утечкам. ## 3. Требования к паролям пользователей (валидация) Любой пароль, устанавливаемый пользователем, должен проходить проверку на соответствие следующим правилам. ### 3.1. Базовые требования * **Минимальная длина:** 12 символов. * **Для администраторов:** 14 символов. * **Максимальная длина:** 128 символов. * Пароль не может быть пустым или состоять только из пробелов. ### 3.2. Запрещённые пароли Пароль должен быть отклонен, если он: 1. Присутствует в актуальном списке запрещенных (слабых) паролей (denylist), включая, но не ограничиваясь: `password`, `123456`, `qwerty`, `admin123` и др. 2. Содержит, без учета регистра: * Логин пользователя (при длине логина от 3 символов). * Локальную часть адреса электронной почты пользователя (часть до символа `@`, при длине от 3 символов). * Наименование сервиса или домена (при длине от 3 символов). * Служебные слова, такие как: `admin`, `prod`, `dev`, `test`, `msdis`. 3. Содержит простые шаблоны: * Повторяющийся символ (4 и более раз подряд). * Последовательные буквы алфавита (например, `abc`, `cde`) или цифры (например, `123`, `987`). * Распространенные клавиатурные комбинации (например, `qwerty`, `asdfgh`). ### 3.3. Требование к криптостойкости Пароль считается валидным, только если итоговая оценка сложности ≥ 3. **Критерии оценки:** 1. **Длина:** - ≥ 12 символов → +1 - ≥ 16 символов → +1 - ≥ 20 символов → +1 2. **Разнообразие символов:** - lowercase (строчные буквы) - uppercase (заглавные буквы) - digits (цифры) - special chars (специальные символы) **Начисление баллов:** - 2 типа символов → +1 - 3 типа символов → +2 - 4 типа символов → +3 3. **Уникальность символов:** - ≥ 60% уникальных символов → +1 - ≥ 80% уникальных символов → +2 **Максимальный score: 5** ### 3.4. Логирование валидации При отклонении пароля логируется только причина отказа (текстовое описание). Уровень логирования: **Warning**. **Опционально:** идентификатор пользователя (необязателен). **Запрещено:** - Логирование пароля в любом виде - Логирование персональных данных ## 4. Требования к хранению паролей ### 4.1. Алгоритм и формат хранения Для постоянного хранения паролей пользователей должен использоваться **исключительно** алгоритм хэширования **Argon2id**. Результат хэширования должен сохраняться в стандартизированном формате **PHC (Password Hashing Competition)** *(string)*. **Пример корректного формата хранения:** `$argon2id$v=19$m=65536,t=3,p=4$$` ### 4.2. Параметры алгоритма Рекомендуемые параметры для Argon2id: Минимальные: | Параметр | Значение | |----------|----------| | Version | 19 | | Memory | 32768 KiB (32 MiB) | | Iterations | 3 | | Parallelism | 1 | | Salt size | 16 bytes (128 bit) | | Hash size | 32 bytes (256 bit) | Рекомендуемые: | Параметр | Значение | |----------|----------| | Version | 19 | | Memory | 19456 KiB (19 MiB) | | Iterations | 2 | | Parallelism | 1 | | Salt size | 16 bytes (128 bit) | | Hash size | 32 bytes (256 bit) | Максимальные: | Параметр | Значение | |----------|----------| | Version | 19 | | Memory | 65536 KiB (64 MiB) | | Iterations | 3 | | Parallelism | 4 | | Salt size | 16 bytes (128 bit) | | Hash size | 32 bytes (256 bit) | [Шпаргалка по OWASP](https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html) **Требования к salt:** - Генерируется криптографически стойко - Уникальна для каждого пароля - Хранится внутри PHC-строки - Минимальная допустимая длина при проверке: **≥ 8 bytes** ### 4.3. Запрещенные методы хранения Для хранения паролей пользователей запрещены следующие форматы: 1. **SHA-256** (полностью запрещён для хранения паролей) 2. **Base64-хэши без PHC-формата** 3. **Любые форматы, отличные от PHC-строки Argon2id** 4. **Строки без префикса `$argon2id$` в начале** ### 4.4. Формат хэша для проверки Для проверки пароля принимается исключительно PHC-строка Argon2id, содержащая: - Префикс `$argon2id$` - Версию `v=19` - Параметры `m` (memory), `t` (iterations), `p` (parallelism) - Валидные Base64-кодированные `salt` и `hash` ### 4.5. Проверка корректности хэша Перед верификацией необходимо проверить корректность PHC-строки: 1. Наличие обязательных компонентов (`$argon2id$`, `v=19`, `m`, `t`, `p`) 2. Корректность Base64-кодирования `salt` и `hash` 3. Соответствие длины `salt` (≥ 8 байт) и `hash` (32 байта) ### 4.6. Процедура верификации Верификация пароля выполняется в следующем порядке: 1. **Извлечение параметров** — получение `salt`, `memory`, `iterations`, `parallelism` из PHC-строки 2. **Вычисление хэша** — пересчёт хэша от предоставленного пароля с **теми же параметрами**: - Та же соль (`salt`) - Та же память (`memory`) - То же количество итераций (`iterations`) - Та же степень параллелизма (`parallelism`) 3. **Сравнение хэшей** — постоянное по времени (constant-time) сравнение полученного хэша с хранимым **Обработка ошибок:** - Любая ошибка (некорректный формат, неверный пароль) → возврат `false` - Исключения не пробрасываются - Пустые/null значения → `false`
Регламент по валидации и хранению паролей пользователей.md Скачать
# Регламент по генерация паролей и доступ к сервисам и виртуальным машинам ## 1. Цель и основание **Цель:** Настоящий регламент устанавливает требования к генерации, валидации, ротации и использованию паролей и учетных данных для доступа к сервисам, доступным из внешнего интернета, а также к виртуальным машинам, с целью реализации требований информационной безопасности и снижения рисков компрометации доступов. **Основание:** Регламент разработан на основании: - требований заказчика в области информационной безопасности к паролям, секретам и инфраструктурному доступу; - требований к управлению секретами и учетными записями сервисов и инфраструктуры; - эксплуатационных практик команд разработки и эксплуатации. ## 2. Область применения Действие настоящего регламента распространяется на: - сервисы и приложения, доступные из внешнего интернета и не требующие подключения к VPN; - виртуальные машины во всех окружениях (production, stage, test и др.); - учетные записи сервисов и инфраструктурные учетные записи; - пароли, SSH-ключи и иные учетные данные, используемые для доступа к указанным ресурсам. ## 3. Термины и определения - **Внешний сервис** — сервис, доступный из сети Интернет без использования VPN. - **Критичный сервис** — сервис, компрометация которого может привести к нарушению безопасности, доступности или целостности данных. - **Учетные данные** — пароли, SSH-ключи и иные средства аутентификации. - **Виртуальная машина (ВМ)** — вычислительный ресурс, предоставляемый инфраструктурой виртуализации. ## 4. Требования к генерации и валидации паролей 4.1. Пароли для доступа к сервисам, доступным из внешнего интернета, **должны соответствовать гайдлайнам генерации и валидации паролей**, установленным в регламенте по валидации и хранению паролей пользователей. 4.2. Использование вручную созданных, простых или предсказуемых паролей для внешних сервисов **запрещается**. 4.3. Пароли, используемые для доступа к виртуальным машинам, при их наличии **должны проходить валидацию** по тем же требованиям, что и пароли сервисов. ## 5. Требования к ротации паролей 5.1. Для критичных сервисов **рекомендуется** осуществлять регулярную ротацию паролей. 5.2. Рекомендуемый период ротации паролей для критичных сервисов составляет **от 1 до 4 месяцев**, если иные сроки не установлены требованиями информационной безопасности. 5.3. Ротация паролей должна выполняться с учетом корректной поддержки смены учетных данных со стороны сервисов. ## 6. Требования к доступу к виртуальным машинам 6.1. Доступ по SSH к виртуальным машинам **не должен осуществляться под учетной записью root**. 6.2. Для административного доступа к виртуальным машинам должны использоваться индивидуальные учетные записи с минимально необходимыми привилегиями. 6.3. При возможности **весь доступ к виртуальным машинам рекомендуется осуществлять с использованием SSH-ключей**, а не паролей. 6.4. Использование парольной аутентификации для доступа к виртуальным машинам допускается только в случаях, когда применение SSH-ключей технически невозможно. ## 7. Общие требования безопасности 7.1. Учетные данные не должны передаваться или храниться в незащищенном виде (репозитории, чаты, документация и т.п.). 7.2. Доступы к сервисам и виртуальным машинам должны предоставляться по принципу минимально необходимых привилегий. 7.3. Факты предоставления и использования доступов должны подлежать аудиту в соответствии с требованиями информационной безопасности. ## 8. Ответственность и контроль 8.1. Ответственность за соблюдение настоящего регламента несут команды разработки и эксплуатации. 8.2. Контроль соблюдения требований настоящего регламента осуществляется командой информационной безопасности. 8.3. Нарушение требований регламента рассматривается как нарушение требований информационной безопасности.
Регламент по генерация паролей и доступ к сервисам и виртуальным машинам.md Скачать
# Регламент по хранению данных в HashiCorp Vault ## 1. Цель и основание **Цель:** Настоящий регламент устанавливает единые правила хранения, структурирования, именования и использования конфиденциальных данных (секретов) в HashiCorp Vault с целью повышения уровня информационной безопасности, управляемости и прозрачности работы с секретами. **Основание:** Регламент разработан на основании внутренних требований информационной безопасности к управлению секретами, а также практик эксплуатации HashiCorp Vault, используемых в инфраструктуре компании, и требований к хранению и использованию секретов. ## 2. Область применения Действие настоящего регламента распространяется на: - все команды разработки и эксплуатации; - все сервисы и приложения, использующие HashiCorp Vault; - все окружения (production, stage, test и иные); - все типы секретов, включая, но не ограничиваясь: пароли баз данных, API-ключи, токены, сервисные учетные данные, ключи интеграций. ## 3. Термины и определения - **Vault** — централизованное хранилище секретов HashiCorp Vault. - **Секрет** — конфиденциальные данные, используемые сервисами или инфраструктурой (пароли, ключи, токены и т.д.). - **Окружение** — логически изолированная среда эксплуатации сервиса (prod, stage, test и т.п.). ## 4. Общие требования к хранению данных в Vault 4.1. Секреты запрещается хранить: - в репозиториях исходного кода; - в CI/CD переменных без защиты; - в документации, Confluence, чатах и иных незащищенных хранилищах. 4.2. Секреты, используемые в различных окружениях, **должны быть уникальными** и не пересекаться между собой. ## 5. Требования к структуре хранения секретов 5.1. Все секреты в Vault **должны храниться в виде структуры «ключ–значение»**. 5.2. Не рекомендуется хранение нескольких значений в одном поле в виде сериализованного JSON, сохраненного строкой, за исключением случаев, когда это технически обосновано и согласовано. 5.3. При возможности секреты **должны группироваться по иерархическим папкам (path)** для предотвращения нагромождения данных и повышения читаемости структуры Vault. Пример логической структуры: ``` mcdis//// ``` ## 6. Требования к именованию секретов 6.1. Наименования секретов должны быть **исчерпывающими, однозначными и следовать единому стандарту именования**. 6.2. Рекомендуемый формат имени секрета: ``` product-env-function-wbsecret ``` где: - `product` — продукт или жомен; - `env` — окружение (prod, stage, test); - `function` — назначение секрета (db-password, api-token и т.п.). ## 7. Повторно используемые данные 7.1. При наличии повторяющихся значений в разных секретах такие данные рекомендуется выносить в отдельный секрет и использовать повторно через ссылки или шаблоны. 7.2. Дублирование идентичных секретных данных без необходимости не допускается. ## 8. Интеграция Vault с Kubernetes / Helm 8.1. Для использования секретов в Kubernetes рекомендуется применять механизм **Vault Agent Injection**. 8.2. Для корректного парсинга структуры «ключ–значение» в Helm-шаблонах рекомендуется использовать следующий подход: ```yaml vault.hashicorp.com/agent-inject-secret-{{ $key }}: "{{ $value }}" vault.hashicorp.com/agent-inject-template-{{ $key }}: | {{`{{- with secret "`}}{{ $value }}{{`" -}}`}} {{`{{ .Data.data | toJSON }}`}} {{`{{- end }}`}} vault.hashicorp.com/agent-inject-file-{{ $key }}: "{{ $key }}.json" ``` 8.3. Результатом инжекта должен являться файл с корректным JSON-представлением данных секрета. ## 9. Ответственность и контроль 9.1. Ответственность за корректное хранение и использование секретов в Vault несут команды разработки и эксплуатации. 9.2. Контроль соблюдения настоящего регламента осуществляется командой информационной безопасности. 9.3. Нарушение требований регламента рассматривается как нарушение требований информационной безопасности.
Регламент по хранению данных в HashiCorp Vault.md Скачать