Безопасные и надежные системы: Лучшие практики проектирования, внедрения и обслуживания как в Google

Безопасные и надежные системы: Лучшие практики проектирования, внедрения и обслуживания как в Google

Безопасные и надежные системы: Лучшие практики проектирования, внедрения и обслуживания как в Google
Автор: Адкинс Хизер, Бейер Бетси, Бланкиншип Пол, Левандовски Петр, Опреа Ана, Стабблфилд Адам
Дата выхода: 2025
Издательство: Питер
Количество страниц: 592
Размер файла: 4.0 MB
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

Введение....27

Почему мы написали эту книгу....27

Для кого предназначена эта книга....28

Примечание о культуре....29

Как читать эту книгу....29

Условные обозначения, используемые в книге....30

Благодарности....31

От издательства....36

О научном редакторе русскоязычного издания....36

Предисловие Майкла Вайлдпанера....25

Предисловие Рояла Хансена....22

Отзывы о книге....19

Часть I. Вводные материалы....37

Глава 1. Пересечение безопасности и надежности....38

О паролях и перфораторах....38

Надежность и безопасность: соображения проектирования....40

Конфиденциальность, целостность, доступность....41

Конфиденциальность....41

Целостность....41

Доступность....42

Надежность и безопасность: общие черты....43

Незаметность....43

Оценка....44

Простота....44

Эволюция....44

Устойчивость....45

От проектирования до использования....47

Исследование систем и ведение журналов....47

Антикризисное реагирование....48

Восстановление....49

Резюме....50

Глава 2. Виды злоумышленников....51

Мотивация атакующего....52

Профили злоумышленников....54

Любители....54

Исследователи уязвимостей....55

Правительства и правоохранительные органы....55

Преступники....60

Автоматизация и искусственный интеллект....62

Инсайдеры....62

Методы атакующего....69

Анализ угроз....69

Cyber Kill Chains™....70

Тактика, методы и процедуры....71

Оценка риска....72

Резюме....73

Часть II. Проектирование систем....75

Глава 3. Пример из практики: безопасные прокси....77

Безопасные прокси в производственных средах....77

Tool Proxy в Google....80

Резюме....82

Глава 4. Компромиссные решения при проектировании....83

Цели и требования при проектировании....84

Функциональные требования....84

Нефункциональные требования....85

Характеристики в сравнении с эмерджентными свойствами....86

Пример: документ о дизайне в Google....88

Балансировка требований....89

Пример: обработка платежей....90

Управление противоречиями и согласование целей....95

Пример: микросервисы и фреймворк веб-приложений Google....95

Согласование требований к эмерджентным свойствам....97

Начальная скорость по сравнению с установившейся скоростью....98

Резюме....101

Глава 5. Принцип наименьших привилегий при проектировании....102

Концепции и терминология....103

Наименьшая привилегия....103

Сеть с нулевым доверием....103

Zero Touch....104

Классификация доступа на основе риска....104

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

Небольшие функциональные API....106

Механизм аварийного доступа....109

Аудит....110

Тестирование и минимальные привилегии....113

Диагностика отказа в доступе....116

Механизмы постепенного отказа и аварийного доступа....117

Пример из практики: распределение конфигурации....118

POSIX API через OpenSSH....119

API обновления ПО....120

Пользовательская ForceCommand для OpenSSH....120

Пользовательский HTTP-получатель (расширенный)....121

Пользовательский HTTP-получатель (внутрипроцессный)....121

Компромиссы....121

Структура политик для решений аутентификации и авторизации....122

Использование расширенных средств контроля авторизации....124

Вложение в широко используемый фреймворк авторизации....125

Избегание потенциальных ловушек....125

Расширенные средства контроля....126

Многосторонняя авторизация (MPA)....126

Трехфакторная авторизация (3FA)....127

Бизнес-обоснования....130

Временный доступ....131

Прокси....131

Компромиссы и противоречия....132

Повышенная сложность безопасности....132

Влияние на сотрудничество и корпоративную культуру....132

Качественные данные и системы, влияющие на безопасность....133

Влияние на производительность пользователей....133

Влияние на сложность для разработчиков....133

Резюме....134

Глава 6. Проектирование для понятности....136

Почему понятность важна?....137

Инварианты системы....138

Анализ инвариантов....139

Ментальные модели....140

Проектирование понятных систем....142

Сложность и понятность....142

Разрушение сложности....143

Централизованная ответственность за требования безопасности и надежности....144

Архитектура системы....145

Понятные спецификации интерфейса....146

Понятные идентификационные данные, аутентификация и контроль доступа....149

Границы безопасности....155

Проектирование программного обеспечения....162

Использование фреймворков приложений для общих требований к сервису....162

Понимание сложных потоков данных....163

Рассматриваем удобство использования API....167

Резюме....170

Глава 7. Проектирование для меняющегося ландшафта....172

Типы изменений безопасности....173

Проектирование ваших изменений....173

Архитектурные решения для простых изменений....175

Постоянно обновляйте зависимости и регулярно пересобирайте код....175

Частые выпуски с использованием автоматизированного тестирования....175

Использование контейнеров....176

Использование микросервисов....177

Разные изменения: разные скорости, разные сроки....180

Краткосрочное изменение: уязвимость нулевого дня....181

Среднесрочные изменения: улучшение состояния безопасности....185

Долгосрочные изменения: внешнее требование....189

Сложности: когда планы меняются....193

Пример: растущая область действия — Heartbleed....194

Резюме....196

Глава 8. Проектирование для устойчивости....197

Принципы проектирования для устойчивости....198

Защита в глубину....199

Троянский конь....199

Анализ Google App Engine....201

Управление деградацией....205

Разделение затрат на сбои....207

Развертывание механизмов реагирования....209

Автоматизируйте ответственно....213

Управление радиусом взлома....215

Разделение по ролям....218

Разделение по местоположению....218

Разделение по времени....223

Области отказов и избыточность....223

Области отказов....224

Типы компонентов....227

Контроль избыточности....230

Непрерывная проверка....232

Основные направления проверки....234

Проверка на практике....235

Практические советы: с чего начать....239

Резюме....241

Глава 9. Проектирование для восстановления....242

От чего мы восстанавливаемся?....243

Случайные ошибки....243

Непреднамеренные ошибки....244

Ошибки программного обеспечения....245

Вредоносные действия....245

Принципы проектирования для восстановления....246

Проектирование должно быть максимально быстрым (в соответствии с политикой)....246

Ограничение зависимости от внешних представлений о времени....251

Откаты — компромисс между безопасностью и надежностью....253

Минимально допустимые номера версий безопасности....257

Использование явного механизма отката....263

Знайте свое предполагаемое состояние, вплоть до байтов....267

Проектирование для тестирования и непрерывной проверки....274

Экстренный доступ....275

Контроль доступа....276

Связь....277

Привычки респондентов....278

Неожиданные преимущества....279

Резюме....280

Глава 10. Защита от DoS-атак....281

Стратегии атаки и защиты....282

Стратегия атакующего....282

Стратегия защитника....283

Проектирование для защиты....284

Защищаемая архитектура....284

Защищаемые сервисы....286

Предотвращение атак....287

Мониторинг и оповещение....287

Постепенная деградация....288

Система защиты от DoS....288

Стратегический ответ....290

Борьба с внутренними атаками....291

Поведение пользователя....291

Поведение клиента при повторных попытках....293

Резюме....293

Часть III. Внедрение систем....295

Глава 11. Пример: проектирование, разработка и поддержка публично доверенного центра сертификации....296

Общие сведения о публично доверенных центрах сертификации....296

Зачем нам нужен доверенный ЦС....298

Создать или купить?....298

Вопросы проектирования, реализации и обслуживания....299

Выбор языка программирования....300

Сложность в сравнении с понятностью....301

Защита сторонних компонентов и компонентов с открытым исходным кодом....302

Тестирование....303

Устойчивость набора ключей ЦС....304

Проверка данных....304

Резюме....305

Глава 12. Написание кода....306

Основы обеспечения безопасности и надежности....307

Преимущества использования фреймворков....308

Пример: фреймворк для серверов RPC....310

Распространенные уязвимости безопасности....314

Уязвимости SQL-внедрений: TrustedSqlString....316

Предотвращение XSS: SafeHtml....318

Уроки оценки и создания фреймворков....320

Простые, безопасные, надежные библиотеки для общих задач....321

Стратегия внедрения....322

Простота ведет к безопасному и надежному коду....324

Избегайте многоуровневого вложения....324

Устранение «запахов» YAGNI....325

Погашение технического долга....326

Рефакторинг....327

Безопасность и надежность по умолчанию....328

Выберите правильные инструменты....328

Использование строгих типов....330

Очистка кода....333

Резюме....334

Глава 13. Тестирование....335

Модульное тестирование....336

Написание эффективных модульных тестов....337

Когда писать модульные тесты....337

Как модульное тестирование влияет на код....339

Интеграционное тестирование....340

Написание эффективных интеграционных тестов....341

Динамический анализ программ....342

Нечеткое тестирование....345

Как работают механизмы фаззинга....347

Написание эффективных драйверов фаззинга....351

Пример фаззера....352

Непрерывное нечеткое тестирование....356

Статический анализ программ....357

Инструменты автоматической проверки кода....359

Интеграция статического анализа в рабочий процесс....364

Абстрактная интерпретация....366

Формальные методы....368

Резюме....369

Глава 14. Развертывание....370

Концепции и терминология....371

Модель угроз....373

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

Сделайте рецензирование обязательным....375

Автоматизируйте....376

Проверяйте не только людей, но и артефакты....377

Относитесь к настройкам как к коду....378

Защита в соответствии с моделью угроз....380

Расширенные стратегии смягчения угроз....382

Бинарное происхождение....383

Что указывать в бинарном происхождении....383

Политики развертывания на основе происхождения....386

Верифицируемые сборки....388

Пункты контроля развертывания....394

Проверки после развертывания....396

Практические советы....397

Двигайтесь небольшими шагами....397

Предоставьте информативные сообщения об ошибках....397

Убедитесь в однозначности происхождения....398

Создание однозначных политик....399

Добавьте механизм аварийного доступа при развертывании....399

Пересмотр защиты в соответствии с моделью угроз....400

Резюме....400

Глава 15. Исследование систем....402

От отладки до исследования....403

Пример: временные файлы....403

Методы отладки....405

Что делать, если вы зашли в тупик....414

Совместная отладка: способ обучения....419

Чем отличаются исследования безопасности от отладки....420

Сбор подходящих и полезных записей журналов....422

Сделайте журналы неизменяемым....422

Примите во внимание конфиденциальность....423

Определите, какие журналы безопасности нужно сохранить....424

Бюджет на ведение журнала....429

Надежный и безопасный доступ при отладке....430

Надежность....430

Безопасность....431

Резюме....432

Часть IV. Обслуживание систем....433

Глава 16. Планирование аварийных ситуаций....435

Определение «бедствия»....436

Стратегии динамического реагирования на бедствия....436

Анализ риска катастроф....438

Создание группы реагирования на происшествия....439

Определение членов команды и их ролей....439

Создание устава команды....441

Создание моделей серьезности и приоритетов....442

Определите рабочие параметры для привлечения IR-команды....443

Разработка планов реагирования....444

Создание подробных инструкций....446

Убедитесь в наличии механизмов доступа и обновления....446

Предварительная подготовка людей и систем....447

Настройка систем....447

Обучение....448

Процессы и процедуры....450

Тестирование систем и планов реагирования....450

Аудит автоматизированных систем....451

Проведение ненавязчивых настольных упражнений....452

Тестирование реагирования в производственных средах....454

Тестирование красных команд....456

Оценка ответов....457

Примеры из опыта Google....458

Тест с глобальным воздействием....458

Тестирование DiRT при экстренном доступе....459

Отраслевые уязвимости....459

Резюме....460

Глава 17. Антикризисное управление....461

Это кризис или нет?....462

Сортировка инцидента....463

Компрометации и ошибки....465

Управление инцидентом....466

Первый шаг: не паникуйте!....466

Начинаем реагировать....467

Создаем команды по реагированию на инцидент....468

Операционная безопасность....470

Жертвуем хорошим OpSec для большего блага....472

Процесс расследования....473

Сохранение контроля над инцидентом....477

Распараллеливание инцидента....477

Передача обязанностей....479

Командный дух....482

Коммуникация....483

Недопонимание....483

Уклонение от ответа....484

Встречи....484

Информирование нужных людей с правильными уровнями детализации....486

Объединяем все вместе....488

Сортировка инцидента....488

Объявление о происшествии....488

Коммуникация и операционная безопасность....488

Начало инцидента....489

Передача обязанностей....490

Обратная передача обязанностей ....490

Подготовка сообщений и исправление....491

Завершение реагирования....492

Резюме....493

Глава 18. Восстановление и последствия....494

Логистика восстановления....496

Сроки восстановления....498

Планирование восстановления....499

Определение объема восстановления....499

Соображения по восстановлению....500

Контрольные списки восстановления....506

Запуск восстановления....507

Изоляция активов (карантин)....508

Повторная сборка системы и обновление программного обеспечения....509

Очистка данных....510

Данные для восстановления....511

Учетные данные и замена секретов....512

Действия после восстановления....515

Постмортемы....516

Примеры....517

Скомпрометированные облачные экземпляры....517

Крупномасштабная фишинговая атака....519

Целенаправленная атака, требующая сложного восстановления....520

Резюме....522

Часть V. Организация и культура....523

Глава 19. Пример из практики: команда безопасности Chrome....524

Возникновение и развитие команды....524

Безопасность — командная ответственность....528

Помогать пользователям безопасно перемещаться в Интернете....530

Скорость имеет значение....531

Проектирование для защиты в глубину....531

Будьте прозрачны и вовлекайте сообщество....532

Резюме....533

Глава 20. Понимание ролей и обязанностей....535

Кто отвечает за безопасность и надежность....536

Роли специалистов....537

Что такое экспертиза в безопасности....539

Сертификаты и образование....540

Интеграция безопасности в организацию....541

Внедрение специалистов и команд по безопасности....544

Пример: внедрение безопасности в Google....545

Специальные команды: синие и красные....548

Внешние исследователи....551

Резюме....553

Глава 21. Формирование культуры безопасности и надежности....554

Определение здоровой культуры безопасности и надежности....556

Культура безопасности и надежности по умолчанию....556

Культура рецензирования....557

Культура осведомленности....559

Культура «да»....563

Культура неизбежности....564

Культура устойчивости....566

Изменение культуры с помощью хорошей практики....568

Согласуйте цели проекта и поощрения участников....569

Избавление от страха с помощью механизмов снижения риска....569

Сделайте сети безопасности нормой....571

Повышение производительности и удобства использования....572

Чрезмерное общение и прозрачность....574

Развивайте эмпатию....575

Убедите руководство....577

Понимание процесса принятия решений....577

Создайте причину для изменения....578

Выберите сражение....580

Эскалации и решение проблем....581

Резюме....582

Заключение....583

Приложение....585

Матрица оценки риска бедствий....585

Об авторах....588

Иллюстрация на обложке....590

Может ли быть надежной небезопасная система? Можно ли считать безопасной ненадежную систему? Безопасность имеет решающее значение для разработки и эксплуатации масштабируемых систем в реальных условиях, поскольку вносит важный вклад в качество, производительность и доступность продукта. В этой книге эксперты Google делятся передовым опытом, позволяющим разрабатывать масштабируемые и надежные системы, которые действительно будут безопасны.Вам уже знакомы два бестселлера, написанные разработчиками из Google — «Site Reliability Engineering. Надежность и безотказность как в Google» и «Site Reliability Workbook: практическое применение», значит, вы понимаете, что только неуклонное следование жизненному циклу обслуживания позволяет успешно создавать, развертывать и поддерживать программные системы. Сейчас же мы предлагаем взглянуть на проектирование, реализацию и обслуживание систем с точки зрения практиков, специализирующихся на безопасности и надежности.


Похожее:

Список отзывов:

Нет отзывов к книге.