☑️ Yandex-Cloud-Security-Checklist
Этот документ пока является драфтом для публичного ревью
Yandex-Cloud-Security-Checklist
🔵 Сетевая безопасность:
- ☑️ Сегментация: разделите ресурсы по группам и поместите их в разные каталоги либо разные VPC (в случае необходимости наиболее строгой изоляции), посмотрите вебинар 📹Как работает сеть в Облаке. PS: внутри VPC траффик по умолчанию разрешен, между VPC нет (только через routing vm(2 ports), vpn, Cloud interconnect)
- ☑️ Ограничение сетевого доступа - "Группы безопасности": ограничьте сетевой доступ между ресурсами с помощью встроенного межсетевого экрана "Группы безопасности", используйте 🔐Пример настройки Security Groups (dev/stage/prod): Terraform
- ☑️ NGFW из marketplace: если требуется продвинутая сетевая защита используйте NGFW из marketplace, 🔐[Пример установки в Яндекс Облако ВМ-Межсетевой экран (NGFW): Checkpoint
- ☑️ Безопасный удаленный доступ из площадок (VPN): если требуется удаленный доступ до ресурсов облака, то настройте site-to-site VPN Инструкция по созданию site-to-site VPN соединения с Yandex Cloud (strongSwan): UI, 🔐 Пример создания site-to-site VPN соединения с Yandex Cloud: Terraform либо воспользуйтесь услугой Cloud Interconnect(также доступна услуга ГОСТ VPN)
- ☑️ Безопасный удаленный доступ администраторов (VPN): сlient VPN между удаленными устройствами и Yandex Cloud (ссылка на варианты в Marketplace), 📖Инструкция по настройке ClientVPN на базе OpenVPN
- ☑️ Bastion host: для доступа в инфраструктуру по управляющим протоколам (например ssh, rdp) рекомендуется создать бастионную виртуальную машину
- ☑️ Исходящий доступ (NAT): используйте один из безопасных вариантов исходящего доступа в интернет: Egress NAT(встроенный сервис NAT) Важно что данный сервис делает трансляцию ваших адресов в общий пул адресов. Если необходимо чтобы выход в интернет был из вашего контролируемого пула адресов то используйте NAT instance(отдельная NAT ВМ)
- ☑️ Защита от DDoS: при назначении публичных IP адресов на ресурсы облака, используйте встроенный DDoS-Protection по кнопке (услуга L4/L4 защиты от DDoS). Если необходима защита от DDoS на L7 - обратитесь к своему менеджеру.
🔵 Аутентификация и управление доступом:
- ☑️ Централизованное управление и федерации удостоверений: создайте организацию в сервисе Yandex Cloud Organization и настройте федерацию удостоверений (Single Sign-On аутентификацию в Yandex.Cloud через свой сервер IdP). 📖Пример настройки для ADFS, 📖Пример настройки для Keycloak, 📖Пример настройки для Google Workspace
- ☑️ Используйте федеративные аккаунты вместо аккаунтов Яндекс.Паспорта, где это возможно
- ☑️ Принцип минимальных привелегий: назначайте сервисные роли (например compute.images.user) вместо примитивных (viewer, editor, admin), список всех ролей, 📖 пример назначения ролей, посмотрите вебинар 📹 Управление доступами в облаке
- ☑️ Используйте Terraform Yandex Cloud IAM module: позволяет организовать группы доступов для пользователей облака и имеет ряд других удобных функций. IAM модуль (с примерами использования)
- ☑️ Работа с сервисными аккаунтами: применяйте механизм назначения сервисного аккаунта виртуальной машине и получения токена через сервис метаданных. Настройте локальный файрвол на ВМ, чтобы только необходимые процессы и пользователи системы имели доступ к сервису метаданных (IP-адрес: 169.254.169.254), ссылка на решение (tbd)
- ☑️ Используйте 2FA: настройке 2FA на стороне вашего IDP (при использовании федерации удостоверений), для паспортного аккаунта настройте 2FA согласно инструкции.
- ☑️ Защитите billing.accounts.owner: выполните первоначальные операции и после этого не используйте. Для управления платежным аккаунтом назначьте роль admin или editor, viewer на платежный аккаунт выделенному сотруднику организации с федеративным аккаунтом.
- ☑️ Защитите resource-manager.clouds.owner: назначьте роль resource-manager.clouds.owner сотрудникам организации с федеративным аккаунтом. Аккаунту Яндекс.Паспорта, с которым создано облако, назначьте сложный пароль и используйте только в случае крайней необходимости. Назначьте менее привелигированные доступы администраторам и используйте resource-manager.clouds.owner в случае крайней необходимости
- ☑️ Ресурсная модель: Все критичные ресурсы, которые входят в область соответствия стандартам, поместите в отдельное облако, Группы ресурсов, разделите по каталогам, Общие ресурсы (например, сеть и группы безопасности) поместите в отдельный каталог для разделяемых ресурсов.
🔵 Шифрование данных и управление ключами/секретами:
- ☑️ Включиите server-side шифрование Yandex Object Storage: ссылка на инстуркцию. Помимо шифрования данных это защищает данные бакета от сценария когда бакет сделают публичным.
- ☑️ Используйте Шифрование диска ВМ в Облаке с помощью YC KMS (если требуется): используйте 🔐Шифрование диска ВМ в Облаке с помощью YC KMS
- ☑️ Шифруйте данные с помощью client-side encryption (если требуется): возможно использования client-side encryption при помощи KMS следующими библиотеками
- ☑️ Защита ключей KMS: выдавайте только точечные права на KMS ключ - kms.keys.encrypterDecrypter, используйте ротацию ключей
- ☑️ Управление секретами: используйте SecretManager для работы с секретами: Yandex Lockbox либо HashiCorp Vault c поддержкой KMS (из marketplace) или контейнер cr.yandex/yc/vault
🔵 Безопасная конфигурация:
- ☑️ Следите за default паролями в ПО внутри ВМ: Организационно и технически с помощью различных сканнеров уязвимостей
- ☑️ Конфигурируйте ОС и ПО в соответствии с baseline и стандартами: для автоматизации соответствия различным стандартам и baseline (CIS, PCI DSS, др), например OpenSCAP
- ☑️ Старайтесь не использовать серийную консоль: если необходимо то оценивайте указанные риски и отключайте по итогу работы
- ☑️ Безопасное использование Terraform: используйте terraform remote state на базе Yandex Cloud Object Storage с функцией блокировки в Yandex Database Ссылка на решение. Где необходимо: используйте параметр “sensitive = true”. Старайтесь не передавать приватные данные в конфиг, но если требуется то используйте Secret Manager либо env vars. Подробнее
- ☑️ Используйте контроль целостности на гостевых ОС: возможно имплементировать с помощью беcплатных host-based решений: Wazuh, Osquery либо с помощью платных решений в marketplace (Kaspersky security).
- ☑️ Безопасная конфигурация Object Storage: шифрование (описано выше) + Bucket Policy/ACL + версионирование(защита от удаления) + включить встроенный аудит доступа + настройки CORS (при необходимости). 🔐Пример безопасной конфигурации Yandex Cloud Object Storage: Terraform
- ☑️ Безопасная конфигурация Cloud Functionse: предоставлять токен сервисного аккаунта через нативный механизм с помощью назначенного сервисного аккаунта и метадаты. Старайтесь использовать приватные функции
- ☑️ Безопасная конфигурация Yandex Container Registry: не рекомендуется использовать привилегированные контейнеры для запуска нагрузок. Используйте встроенный в сервис сканер уязвиомстей в образах (tbd ссылка на инстуркцию)
- ☑️ Используйте Yandex Certificate Manager: Yandex Certificate Manager сервис для хранения, получения и обновления TLS-сертификатов от Let's Encrypt®, а также для загрузки собственных сертификатов. Интегрирован с: Yandex Object Storage, Yandex API Gateway, Application LoadBalancer
🔵 Защита от вредоносного кода:
🔵 Управление уязвимостями:
🔵 Сбор, мониторинг и анализ Аудит логов:
🔵 Физическая безопасность:
🔵 Резервное копирование:
🔵 Управление бюджетами:
🔵 Реагирование на инциденты:
🔵 Безопасность Managed Service for Kubernetes:
- Шифрование данных и управление ключами/секретами Managed Kubernetes:
- ☑️ Включиите server-side шифрование в k8s: включение шифрования secrets в etcd ссылка на инстуркцию. Делайте это всегда вне зависимости будете ли вы использовать решения ниже по управления секретами или нет
- ☑️ Управление секретами: используйте SecretManager для работы с секретами: Yandex Lockbox либо HashiCorp Vault c поддержкой KMS (из marketplace) или контейнер cr.yandex/yc/vault. Управление секретами c SecretManager(Lockbox,Vault).
- Сетевая безопасность:
- ☑️ Настройте группы безопасности для k8s: подробная инструкция. Не рекомендуется давать публичный доступ и публичные адреса компонентам k8s
- ☑️ Используйте Ingress контроллер: для доступа извне к сервисам k8s используйте Ingress контроллер (https) с типом LoadBalancer (внешний либо внутренний) Рекомендуется использовать Application Load Balancer ingress conroller. А также возможно использовать и другие ingress controllers например Инструкция по настройке nginx ingress conroller
- Защищайте сервисы и Ingress Conroller Kubernetes от DDoS, создав IP адрес с защитой от DDoS и назначив его сервису либо application ingress conroller.
- ☑️ Сетевые политики (Network Policy): ограничьте доступ на уровне k8s с помощью network policy calico либо продвинутых network policy cilium
- Если необходимо обеспечить к приложению доступ только из ограниченного пула адресов - то в случае Application Load Balancer Ingress controller используйте группы безопасности, назначенную на него. В случае других ingress conrollers используйте Network Policy
- Аутентификация и управление доступом:
- ☑️ Правильно построить ролевую модель в k8s: Детальное описание ролевого доступа в k8s. 🔐Пример настройки ролевых моделей и политик в Managed Service for Kubernetes. Контролируйте права доступа сервисного аккаунта группы узлов (как правило достаточно: container-registry.images.puller)
- Безопасная конфигурация:
- ☑️ Конфигурация группы узлов в соответствии с baseline и стандартами: настройке группы узлов в соответствии со стандартами и baseline: NIST, CIS, др. Возможно использовать автоматизированные инструменты: kubebench, kubescape
- ☑️ Используйте runtime security и Policy Engine: пример runtime security: Falco, примеры Policy Engine: OPA Gatekeeper, Kyverno. 🔐Пример установки Falco+Policy Engine с отправкой alerts в managed ELK
- ☑️ Обновления безопасности: выберите подходящий канал обновления и настройте автоматическое применение обновлений либо применяйте их вручную сразу после публикации в выбранном канале. Также выполняйте своевременное обновление собственного ПО на группах узлов
- ☑️ Распределяйте поды на разные группы узлов: с помощью node taints and tolerations + node affinity (по нагрузке и степени приватности)
- Cбор, мониторинг и анализ Аудит логов:
- ☑️ Собирайте, анализируйте аудит логи k8s и инструментов защиты: 🔐Анализ логов безопасности k8s в Managed ELK: аудит-логи, policy engine, falco
- ☑️ Собирайте, анализируйте аудит логи workloads и группы узлов: например, с помощью открытых инструментов
- ☑️ Мониторьте аномальную нагрузку: с помощью Yandex Cloud Monitoring
- Резервное копирование:
- ☑️ Выполняйте резервное копирование: например в object storage по гайду, необходимо следовать рекомендациям из раздела «Безопасная конфигурация Yandex Object Storage»