Безопасный жизненный цикл разработки - схемы
Узнайте больше о Well-Architected T Trust → Жизненный цикл безопасной разработки
Безопасность должна быть интегрирована на протяжении всего жизненного цикла разработки, от первоначального проектирования до развертывания и операций. Эти схемы включают практики безопасности со сменой налево, устраняют распространенные уязвимости и обеспечивают безопасность ожидаемых продаж.
Шаблоны
| Где искать | Как хорошо выглядит |
|---|---|
| Разработка | Инструменты | ✅ Сканирование безопасности IDE, интегрированное в бизнес-процесс разработчика |
| Разработка | Дизайн | ✅ Моделирование угроз завершено на этапе проектирования с использованием методологии STRIDE |
| Разработка | Требования | ✅ Требования безопасности, включенные в истории пользователей и критерии принятия |
| Разработка | Исходный контроль | ✅ Хуки перед обязательствами внедряют политики безопасности (тайное сканирование, анализ кода) |
| Разработка | Обучение | ✅ Обучение безопасности разработчика регулярно обновляется с учетом меняющихся угроз |
| Разработка | CI/CD | ✅ Автоматическое тестирование безопасности в ожидаемых продажах CI/CD не выполняется на основе важных выводов |
| Разработка | Проверка кода | ✅ Требуются коллегиальные проверки безопасности для проверки подлинности, авторизации и кода доступа к данным |
| Разработка | Анализ кода | ✅ Стандарты безопасного кодирования внедряются посредством строк и статического анализа |
| Разработка | Зависимости | ✅ Сканирование уязвимости зависимостей выполняется при каждом обязательстве |
| Разработка | Тестирование | ✅ Область тестирования проникновения содержит новые функции до выпуска ГА |
Антишаблоны
| Где искать | Как плохо выглядит |
|---|---|
| Разработка | Тестирование | ⚠️ Тестирование безопасности отложено до проверки вручную перед выпуском |
| Разработка | Обучение | ⚠️ Обучение безопасности, проводимое один раз только во время адаптации |
| Разработка | Проверка кода | ⚠️ Группа безопасности проверяет код после объединения |
| Разработка | Дизайн | ⚠️ Модели угроз не обновляются при изменении архитектуры |
| Разработка | Исходный контроль | ⚠️ Секретное сканирование отключено для уменьшения ложных положительных результатов |
| Разработка | CI/CD | ⚠️ Выводы безопасности игнорируются при приближении сроков выпуска |
Шаблоны
| Где искать | Как хорошо выглядит |
|---|---|
| Впрыск | ✅ Запросы SOQL используют переменные связывания для предотвращения инъекции |
| Впрыск | ✅ Вводные данные пользователя проверены и обработаны перед использованием в SOQL, SOSL или динамических запросах |
| Впрыск | ✅ Динамический SOQL ограничен только надежными вводными данными |
| Контроль доступа | ✅ Полномочия CRUD и FLS применяются посредством Security.stripInaccessible() |
| XSS | ✅ Компоненты Lightning избегают пользовательского содержимого в рендеринге пользовательского интерфейса |
| Впрыск | ✅ Внешние интеграции API проверяют и очищают все вводные данные |
| Контроль доступа | ✅ Доступ пользователей-гостей минимизирован и строго ограничен |
| Проверка подлинности | ✅ Именованные регистрационные данные, используемые для внешней проверки подлинности (не жестко запрограммированные регистрационные данные) |
| Проверка подлинности | ✅ Потоки OAuth 2.0, реализованные корректно посредством PKCE |
| Управление сеансами | ✅ Политики безопасности сеанса внедряют ограничения по времени ожидания и IP-адресам |
| Конфигурация | ✅ Ежеквартальная проверка состояния безопасности и исправление выводов, связанных с высоким риском |
| Контроль доступа | ✅ Настраиваемые метаданные и полномочия, проверенные во избежание избыточных полномочий |
Антишаблоны
| Где искать | Как плохо выглядит |
|---|---|
| Впрыск | ⚠️ Запросы SOQL, созданные посредством конкатенации строк с вводом пользователя |
| Контроль доступа | ⚠️ Профили пользователей-гостей, которым предоставлены полномочия «Создание», «Обновление» или «Удаление» |
| XSS | ⚠️ Компоненты Lightning используют в шаблонах выражения nescape |
| Проверка подлинности | ⚠️ Внешние интеграции используют жестко запрограммированные регистрационные данные в коде |
| Регистрация | ⚠️ Журналы отладки содержат конфиденциальные данные, например, пароли или персональные данные |
| Контроль доступа | ⚠️ Проверки FLS и CRUD пропущены, поскольку «мы контролируем всех пользователей» |
| Конфигурация | ⚠️ Результаты проверки состояния безопасности пропущены или отложены на неопределенный срок |
Шаблоны
| Где искать | Как хорошо выглядит |
|---|---|
| Конвейеры | Управление источниками | ✅ Правила защиты филиала внедряют обязательные проверки и проверки статуса |
| Конвейеры | Управление доступом | ✅ Конвейеры развертывания используют сервисные организации с минимальными обязательными полномочиями |
| Конвейеры | Секреты | ✅ Секреты, хранящиеся в надежных хранилищах (никогда в контрольном источнике или переменных среды) |
| Ожидаемые продажи | Развертывание | ✅ Производственные развертывания требуют ручного утверждения от авторизованного персонала |
| Ожидаемые продажи | Аудит | ✅ Журналы развертывания собирают, кто и когда что развертывал, с помощью журналов утверждений |
| Конвейеры | Проверка | ✅ Проверка перед развертыванием включает сканирование безопасности и проверку соответствия |
| Конвейеры | Управление доступом | ✅ Многофакторная проверка подлинности, необходимая для административного доступа к ожидаемым продажам |
| Конвейеры | Мониторинг | ✅ Изменения конфигурации ожидаемых продаж инициируют уведомления группы безопасности |
| Конвейеры | Проверка | ✅ Автоматическая проверка после развертывания подтверждает активные ожидаемые средства контроля безопасности |
| Конвейеры | Зависимости | ✅ Обновления зависимостей, оцениваемые на наличие последствий для безопасности перед развертыванием |
Антишаблоны
| Где искать | Как плохо выглядит |
|---|---|
| Конвейеры | Секреты | ⚠️ Секреты, связанные с управлением версиями (даже при последующем удалении) |
| Конвейеры | Управление источниками | ⚠️ Любой может объединиться с основным/производственным филиалом без проверки |
| Конвейеры | Управление доступом | ⚠️ Конвейеры развертывания выполняются с полномочиями на уровне администратора |
| Ожидаемые продажи | Развертывание | ⚠️ Полностью автоматизированные развертывания производства без ворот утверждения |
| Ожидаемые продажи | Аудит | ⚠️ Журналы развертывания не записывают, кто инициировал или утверждал изменения |
| Конвейеры | Проверка | ⚠️ Неудачные проверки безопасности игнорируются или обходятся для соблюдения сроков |
| Конвейеры | Мониторинг | ⚠️ Изменения конфигурации ожидаемых продаж не отслеживаются и не проверяются |
| Конвейеры | Проверка | ⚠️ Проверка после развертывания проверяет только функциональную корректность |
Шаблоны
| Где искать | Как хорошо выглядит |
|---|---|
| Тестирование | Статический анализ | ✅ Анализатор кода Salesforce запускается в IDE разработчика для немедленной обратной связи и в ожидаемых продажах CI/CD в качестве автоматических ворот |
| Тестирование | Тестирование проникновения | ✅ Тестирование на проникновение проведено для настраиваемых приложений, открытых для ненадежных пользователей, особенно сайтов Experience Cloud и общедоступных API |
| Тестирование | Единичные тесты | ✅ Единичные тесты Apex, ориентированные на безопасность, выполняются от имени пользователей с разными профилями полномочий |
| Тестирование | Зависимости | ✅ Сканирование зависимостей отслеживает пакеты AgentExchange и библиотеки JavaScript на наличие известных уязвимостей |
| Тестирование | Проверка безопасности | ✅ Отчет о статическом анализе, подготовленный для каждой отправки AppExchange или AgentExchange Security Review |
| Тестирование | Проверка безопасности | ✅ Отчет о динамическом сканировании (тестировании на проникновение), подготовленный, когда решение интегрирует стороннее веб-приложение или службу |
| Тестирование | Зависимости | ✅ Советы по безопасности для установленных пакетов, на которые подписаны и которые отслеживаются |
Антишаблоны
| Где искать | Как плохо выглядит |
|---|---|
| Тестирование | Покрытие | ⚠️ Тестирование безопасности зависит только от одного метода, например, статического анализа |
| Тестирование | Единичные тесты | ⚠️ Тесты Apex проверяют функциональное поведение, но никогда не выполняются в качестве пользователей с более низкими полномочиями |
| Тестирование | Проверка безопасности | ⚠️ Отправка AppExchange или AgentExchange подготовлена без обязательного статического анализа или динамических отчетов по сканированию |
| Тестирование | Тестирование проникновения | ⚠️ Тестирование проникновения пропущено для общедоступных сайтов Experience Cloud и API |
См. также:
- Схемы соблюдения и регулирования — управление платформой и контроль аудита
- Схемы управления удостоверениями и доступом — проверка подлинности и авторизация
- Схемы реагирования на инциденты — обнаружение событий безопасности и реагирование
- Схемы агента — средства контроля безопасности агента