Tech Recipe Book
My Services
  • Book
    • About the author
    • Architect
      • Algorithms
        • DB index algorithms
          • How does database indexing work
        • Neural network optimization
          • Neural Network Optimization
        • Route search
          • Road network in a database to build a route
          • Traveling Salesman Problem (TSP)
      • Architecture Frameworks
        • DODAF
        • TOGAF
        • Enterprise Architecture (EA) Tools Reviews 2023 | Gartner
      • Zero Trust
      • Billing
        • SHM billing system
      • Bots
        • Discord
        • Telegram
          • Chat GPT Telegram bot
          • Получаем статистику Telegram-канала при помощи api и python или свой tgstat с регистрацией и смс
          • Как хостить телеграм-бота (и другие скрипты на Python) на Repl.it бесплатно 24/7
          • Создание Telegram бота на PHP #1: основные понятия для работы с API
          • Создание Telegram бота на PHP #2: создание первого бота для Telegram
          • Создание Telegram бота на PHP #3: примеры отправки сообщений с кнопками в Telegram
          • Создание Telegram бота на PHP #4: отправка файлов и изображений в Telegram
          • Создание Telegram бота на PHP #5: работа с хуками
      • Business intelligence
      • Cloud Storage
        • Ceph
        • Virtual Distributed File System
      • Cryptography
        • Open Source PKI Software
        • OpenPGP
          • Email Encryption
          • Kleopatra
          • Miscellaneous Tools
          • Server side applications
      • Message broker
        • Kafka
          • Kafka UI-tools
          • Kafka streams ksqlDb
        • RabbitMQ
      • DB
        • MySQL
          • Auto sharding
          • MariaDB Zabbix monitoring
          • MySQL and MariaDB replication with Zabbix monitoring
        • Postgres
          • HA PostgreSQL with Patroni, Haproxy, Keepalived
          • Mass parallel requests - Greenplum
          • PostgreSQL cluster for development and testing
        • Vitess - Scalable. Reliable. MySQL-compatible. Cloud-native. Database.
      • Identity and Access Management (IDM)
        • FreeIPA - Identity, Policy, Audit
        • FreeIPA as an Enterprise solution
        • Keycloak
          • Keycloak HA cluster
        • Open Identity Platform
        • SSO
          • Keycloak for Java app
          • OpenAM
          • OpenIG
      • Firewall
        • nftables
      • Infrastructure As a Code
        • Ansible
        • IaC Packer Ansible Teraform
        • Installing Jenkins using terraform in Kubernetes in Yandex Cloud with letsencypt
        • Teraform Crosplan Pulumi
        • Yandex IaC solutions
      • Kubernetes
        • Installation
          • Install Kubernetes cluster
          • Deploying a Kubespray cluster to OpenStack using Terraform
          • Kube deploy in Yandex cloud
        • Frameworks
          • Deckhouse
            • LDAP authentification
            • On premise Install
            • Yandex Cloud Install
          • K3S
          • OpenShift OKD
          • RKE2
          • Rancher
            • Rancher Install
        • Auth
          • Keycloak in k8s
          • LDAP
        • GUI management Lens
        • Monitoring
          • Monitoring with Falco
          • Network monitoring
          • Nginx ingress
          • Prometheus Graphana for sample Nodejs app
          • Rsource monitoring Avito
        • Exposing services
          • Exposing Kubernetes Services
          • Cilium BGP
        • CNCF
        • Helm
          • Repositories
            • Artifact Hub | official
            • Bitnami | vmware
          • Awesome helm charts and resources
          • Essential Services for Modern Organizations
          • Security and Compliance
          • Additional charts
        • Isolation
          • vcluster - Virtual Kubernetes Clusters
          • Kiosk
          • KubeArmor
          • Control Plane Hardening
          • Hierarchical namespaces
        • Security Center
          • Minesweeper
          • NeuVector by SUSE
          • SOAR in Kubernetes
          • Security Сenter for Kubernetes
        • Terraform CI security
          • Terraform plan analysis with Checkov and Bridgecrew
          • Yandex Terraform scan
        • Vulnerability management
          • Aqua
          • Sysdig
          • Kyverno
          • GitLab
          • NeuVector by SUSE
        • Image scanning
          • Snyk
          • Sysdig
          • Harbor
          • Trivy
        • Signature verification
          • Sigstore
        • Control plane security
          • Gatekeeper
            • Applying OPA Gatekeeper
          • Kyverno
            • Policy as a code. Kyverno
        • Runtime Security
          • Osquery
          • Falco
          • ClamAV
        • Network security
          • Cilium
          • Control Plane Hardening (API restriction)
          • Network policy recipes
          • Service mesh
            • Istio HA, LoadBalance, Rate limit
          • mTLS Autocert
        • Honeypot
          • Building honeypot using vcluster and Falco
        • Backup
          • Kasten K10
        • Secrets
          • Vault CSI Driver
      • Load Balance
        • Nginx
        • HAProxy
          • Proxy methods
          • HAProxy for RDP
          • Payment gateway A/B test with HAProxy
          • HAPRoxy for Percona or Galera
      • Monitoring
        • Zabbix
          • Apache Zabbix
          • Disc Quota
          • Nginx Zabbix
          • SSL certificates Zabix
          • Zabbix notifications
        • Nagios
          • Datacenter monitoring
        • Prometheus and Grafana
      • Windows
        • Sysmon enhanced Windows audit
        • Sysmon to Block Unwanted File
      • Linux
        • Rsync
        • Debian based
          • Apt-Cacher NG
          • Unattended Upgrades in Debian / Ubuntu
        • RedHat basede
          • RPM Server
        • Logs analysis
        • Build armhf qemu
      • NGFW
      • CI/CD
        • DevSecOps
          • DAST
            • Burp
              • Dastardly
            • StackHawk
            • ZAP and GitHub Actions
          • SAST
            • Checkmarx
            • OSV by Google
            • Snyk
            • SonarQube
        • GitLab Runner in Yandex Cloud
        • Dynamic Gitlab Runners in Yandex Cloud
        • GitLab runner in Kubernetes with Werf
        • Kubernetes deploy strategies
        • Kubernetes highload deploy. part 1
        • Kubernetes highload deploy. part 2
        • Kubernetes Argo Rollouts
        • Jenkins in Kubernetes
        • Ansible Semaphore
        • Image storage, scaning and signing
        • Install WireGuard with Gitlab and Terraform
        • CI/CD example fror small web app
        • Threat matrix for CI CD Pipeline
      • SIEM / SOC
        • Datadog
        • Splunk
          • Splunk — general description
        • MaxPatrol
          • MaxPatrol 8 and RedCheck Enterprise
        • QRadar IBM
        • Cloud Native Security Platform (CNAPP) - Aqua
        • OSSIM | AT&T
          • AlienVault (OSSIM) install
        • Wazuh
        • EDR
          • Cortex XDR | Palo Alto Networks
          • Cynet
          • FortiEDR | Fortinet
          • Elastic
        • Elastic
          • Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on Ubuntu 22.04
          • Setting Up Elastic 8 with Kibana, Fleet, Endpoint Security, and Windows Log Collection
        • Threat Intelligence
          • MISP
          • msticpy Microsoft
          • X-Force | IBM
          • Elastic
      • VPN
        • Full-Mesh VPN fastd, tinc, VpnCloud
        • Wireguard
          • WireGuard for Internet access
          • WireGuard on MikroTik and Keenetic
          • WireGuard site to site
        • SoftEther VPN Project
        • Cisco AnyConnect client
        • OpenConnect
        • SSTP python server
      • OS hardening
        • CIS Benchmarks
      • Cloud Providers
      • OpenNebula
        • OpenNebula Edge Cloud - Open Source Cloud & Edge Computing
        • Discover OpenNebula – Open Source Cloud & Edge Computing Platform
        • OpenNebula Multi-Cloud
        • Kubernetes on OpenNebula
        • The Open Source Alternative to Nutanix
        • The Simple Alternative to OpenStack
        • OpenNebula Partner Ecosystem
      • OpenStack
        • Install manual
        • Install with DevStack
      • VM
        • Create a VHD file from a Linux disk
        • Backup / Migration
          • Coriolis
          • Proxmox Backup Server
        • oVirt
        • VMware vCenter
        • Proxmox
      • Docker
        • Container optimization
        • Ubuntu RDP container
      • LXC
        • LXD on Ubuntu 18.04
        • Install, Create and Manage LXC in Ubuntu/Debian
    • Big Data
      • OLAP data qubes
      • Storage and autoscale in Lerua
    • Machine Learning
      • Yandex YaLM 100B. GPT model
      • Kaggle Community Datasts Models
      • AI in video production
      • Image search
      • Chat bots
        • You.com
        • Chat GPT
          • Implementing GPT in NumPy
        • Jailbreak Chat
      • Coding plugins CodeWhisperer
    • Malware
      • Isiaon/Pitraix: Modern Cross-Platform Peer-to-Peer Botnet over TOR
      • theZoo A repository of LIVE malwares
    • Pentest
      • Red Team
        • MITRE ATT&CK matrix
        • C2 Frameworks
          • Brute Ratel C4
          • Cobalt Strike
          • Covenant
          • Havoc Framework
          • Merlin
          • Metasploit
          • Sillenttrinity
          • Sliver
        • Manage and report
          • Dradis Framework
          • Hexway
        • Underground
      • Social engineering
        • Social Engineer Toolkit setoolkit
      • OSINT
        • OSINT for comapny
        • Instagram fishing
      • Forensics
        • Forensics tools
      • Pentesting Methodology
      • Web
      • CI/CD Methodology
      • Cloud Methodology
        • Hacking The Cloud
      • Kubernetes Pentesting
      • Android
        • SSL Unpinning for Android applications
      • iOS
        • SSL unpinning iOS and macOS applications
      • HackBar tool
      • CyberChef Tools
      • Python virtualenv
      • IppSec - YouTube
      • Hacktricks.xyz
    • Compliance
      • 152 ФЗ. Personal data
      • PCI DSS and ГОСТ Р 57580.1-2017
      • Cloud compliance
      • ГОСТ Р 57580.1-2017 для Kubernetes
      • Kubernets as DevSecOps and NIST compliance
      • NIST SP 800-61 cyberincidece control
      • CIS Kubernetes Benchmark v1.6 - RKE2 v1.20
      • CIS Kubernetes Benchmark v1.23 - RKE2
      • Requirements for Russian Banks
      • Tools
        • Chef InSpec
        • Elastic SIEM
    • Asset management
      • CMDBuild
    • Project management
    • Incident management SRE
    • Risk management
      • IT risk management
      • BSI-Standard 200-3
    • Web Dev
      • Cookie security
      • OWASP Top 10 2021
      • Docker nginx php mysql
      • Docker tor hiddenservice nginx
      • Docker Compose wp nginx php mariadb
      • Dependency Checking
        • Nexus Analyzer
        • OWASP dependency-check
      • Yii skeeks cms
      • YiiStudio
    • Art
      • GTK Themes
      • Themes for Xfce Desktop
      • XFCE / Xubuntu Windows 95
      • Moscow events
      • Photo goods
      • Russian style gifts
    • Cryptocurrency
      • News
      • Arbitrage
      • Stocks
      • Exchange aggregators
      • Where to use
      • Prepaid cards
        • BitFree
        • Pyypl Your Money at Your Fingertips
    • IT magazines
      • WIKI and Writeups tools
        • BookStack
        • GitBook
        • MkDocs
        • Wiki.js
        • DokuWiki
    • Languages
    • Learning
      • (ISC)2
        • CISSP
      • Offensive Security
        • OSCP
        • OSEP
        • OSED
      • DevSecOps
        • Certified DevSecOps Professional (CDP)
        • Certified DevSecOps Expert (CDE)
      • Web Security Academy: PortSwigger
    • Relocation
      • London experience
      • IT visas in 2022
      • Remote work
      • Running business in UAE
    • Freenet
      • Independent online services: the philosophy of a free Internet
      • Tor Project Anonymity Online
      • I2P Anonymous Network
    • Services
      • SMS Registration
        • Registering ChatGPT in Russia
      • Local and regional eSIMs for travellers - Airalo
      • Digital busines cards
      • No KYC services and exchanges
Powered by GitBook
On this page
  • Введение
  • Часть 1: Общая информация о контейнерах и средах контейнерной оркестрации
  • Часть 2: Стандарт ГОСТ 57580.1-2017, контейнеры и среды контейнерной оркестрации
  • 2.1. Обеспечение защиты информации при управлении доступом
  • 2.2. Обеспечение защиты вычислительных сетей
  • 2.3. Контроль целостности и защищенности информационной инфраструктуры
  • 2.4. Защита от вредоносного кода
  • 2.5. Предотвращение утечек информации
  • 2.6. Обнаружение инцидентов защиты информации и реагирование на них
  • 2.7. Защита среды виртуализации
  • 2.8. Защита при осуществлении удаленного доступа с использованием мобильных (переносных) устройств
  • Часть 3: Краткое содержание статьи
  • Часть 4: Ссылки на полезные материалы

Was this helpful?

  1. Book
  2. Compliance

ГОСТ Р 57580.1-2017 для Kubernetes

Last updated 1 year ago

Was this helpful?

Цель этой статьи ― показать, как можно выполнять регуляторные требования по ИБ в средах контейнерной оркестрации, какие для этого есть подходы и инструменты.

Антон Гаврилов, руководитель направления DevSecOps Центра информационной безопасности компании «Инфосистемы Джет»

Введение

В качестве примера рассмотрим, как можно добиться выполнения стандарта ГОСТ Р 57580.1-2017 «Безопасность финансовых (банковских) операций. Защита информации финансовых организаций. Базовый набор организационных и технических мер». Мы выбрали этот ГОСТ, так как в нём содержится исчерпывающий список требований по ИБ (в том числе ― по повышению уровня ИБ виртуальных сред), которые в том или ином виде есть и в других стандартах. К тому же ГОСТ Р 57580.1-2017 актуален для финансовых организаций. А именно эти организации одними из первых начали использовать контейнеризацию, поэтому и выполнение требований регулятора в этой области может коснуться их в первую очередь.

Не стоит воспринимать эту статью как детальное руководство к действию. Во-первых, в разных организациях среды контейнерной оркестрации могут быть реализованы по-разному (отличаться могут оркестраторы и CNI, кто-то может использовать Service Mesh, кто-то ― нет, и т.д.). Во-вторых, нельзя создать универсальный для всех сред перечень мер по обеспечению безопасности: для каждой конкретной среды актуальным будет что-то своё. Поэтому в статье приведены примеры реализации определенных групп требований/мер и ссылки на дополнительные материалы, содержащие полезную информацию.

Статья состоит из следующих частей:

  • Часть 1: Общая информация о контейнерах и средах контейнерной оркестрации. В этой части приведено описание того, что такое контейнеры, где они хранятся и на чем запускаются.

  • Часть 2: ГОСТ Р 57580.1-2017, контейнеры и среды контейнерной оркестрации. Это основная часть, в которой описаны подходы к реализации соответствующих требований ГОСТ Р 57580.1-2017.

  • Часть 3: Краткое содержание статьи. Здесь приведены ключевые идеи статьи и таблица «Способы реализации мер Стандарта ГОСТ Р 57580.1-2017».

  • Часть 4: Ссылки на полезные материалы. Здесь приведены некоторые полезные материалы, которые можно использовать для обеспечения соответствия требованиям регуляторов.

Часть 1: Общая информация о контейнерах и средах контейнерной оркестрации

Контейнеры ― один из самых удобных способов упаковки программного обеспечения. Если упростить, то всё, что нужно для упаковки ― поместить в такой контейнер исходный код приложения, используемые зависимости и открыть необходимые порты. После этого использовать контейнер сможет любой, у кого есть Container Engine (например, Docker или CRI-O). При этом не нужно устанавливать интерпретаторы языков программирования, Java Runtime или другое «дополнительное» ПО, все это уже будет внутри контейнера.

С технической точки зрения, контейнер ― это виртуализация уровня операционной системы, которой не требуется гипервизор для работы. Контейнеры «легче» классических виртуальных машин. Хотя бы потому, что для контейнера не нужно устанавливать гостевую операционную систему.

Графически разница между «контейнеризацией» и «виртуализацией» представлена на рис. 11.

Рисунок 1: Общая разница между контейнеризацией и виртуализацией

Когда мы хотим «упаковать» приложение в контейнер, мы создаём образ этого контейнера. Образ (image) ― аналог шаблона виртуальной машины. Образ создается из Dockerfile ― конфигурационного файла, в котором мы описываем все необходимые параметры конфигурации (переменные окружения, порты, пользователей, установку и обновление пакетов, копирование файлов и т.д.). Пример образа приведен на рис. 2.

Рис. 2. Пример Dockerfile

Для того, чтобы выполнить централизованное хранение образов контейнеров, используются реестры. Грубо говоря, реестр представляет собой дерево папок. Кроме самих образов, в реестре хранятся и их более старые версии, к которым можно вернуться, если что-то пошло не по плану.

Обычно, если в организации используются контейнеры, рано или поздно встаёт вопрос о том, как ими эффективно управлять. Микросервисные архитектуры, постоянное наращивание функционала, запуск новых продуктов ― всё это ведёт к увеличению числа контейнеров, а значит, и к усложнению управления ими. Для преодоления «трудностей масштабирования» были созданы среды контейнерной оркестрации, которые еще называются оркестраторами (например, Kubernetes, Red Hat OpenShift, Rancher, VMware Tanzu, HashiCorp Nomad и т.д.). Они позволяют контролировать такие аспекты, как:

  • запуск контейнеризованных приложений в кластере;

  • организация сетевого взаимодействия;

  • масштабирование контейнеров (например, при увеличении нагрузки/трафика на приложение);

  • поддержка актуального состояния приложения в соответствии с желаемой конфигурацией;

  • распределение ресурсов и балансировка нагрузки между контейнерами;

  • балансировка нагрузки между контейнерами и т.д.

Далее мы будем рассматривать только один оркестратор ― Kubernetes ― без каких-либо дополнительных решений (например, без Service Mesh). Мы выбрали именно этот оркестратор по двум причинам.

  • Во-первых, Kubernetes ― одно из самых популярных решений для управления большим количеством контейнеров (если не самое популярное).

  • Во-вторых, большинство альтернатив созданы на базе Kubernetes, поэтому многие примеры и тезисы в этой статье будут актуальны для других оркестраторов (хоть и с некоторой адаптацией).

Если упростить, то Kubernetes состоит из двух основных компонентов (каждый из которых также представляет из себя некий набор сервисов): Control Plane и Node Components. Как видно из названия, Control Plane отвечает за принятие решений и управление нагрузками кластера (например, scheduling, запуск новых pod2, миграция pod и т.д.). Node Components, в свою очередь, отвечает за запуск pod и их работоспособность на конкретной node.

Kubernetes устанавливается как кластер среды контейнерной оркестрации, представляющий из себя набор нод:

  • Master Node, на который устанавливается Control Plane

  • Worker Node, на который устанавливается Node Components

Node Components, в свою очередь, отвечают за запуск pod и их работоспособность на конкретной ноде кластера.

Общая схема кластера представлена на рис. 3

Рис. 3. Кластер среды контейнерной оркестрации, обобщенная схема

Общая схема кластера и развернутых на нем приложений будет выглядеть следующим образом (рис. 4):

Рис. 4. Кластер среды контейнерной оркестрации, расширенная схема

Часть 2: Стандарт ГОСТ 57580.1-2017, контейнеры и среды контейнерной оркестрации

ГОСТ 57580.1-2017 устанавливает требования для следующих процессов (направлений) защиты информации:

  • Обеспечение защиты информации при управлении доступом

  • Обеспечение защиты вычислительных сетей

  • Контроль целостности и защищенности информационной инфраструктуры

  • Защита от вредоносного кода

  • Предотвращение утечек информации

  • Управление инцидентами защиты информации

  • Защита среды виртуализации

  • Защита при осуществлении удаленного доступа с использованием мобильных (переносных) устройств

Для того, чтобы выполнить регуляторные требования, необходимо провести подготовительную работу. Важно определить, какие меры нужно предпринять, чтобы обеспечить предусмотренный ГОСТ 57580.1-2017 уровень защиты. Также необходимо решить, какие их этих мер применимы к конкретной среде контейнерной оркестрации. После составления списка актуальных для организации мер важно определить их «точку приложения». Например, часть из них будет актуальна для нод, на которых установлен оркестратор, часть ― непосредственно для оркестратора, а часть ― для контейнеров.

Далее на примерах рассмотрим меры ГОСТ 57580.1-2017 и то, как их можно реализовать в среде контейнерной оркестрации.

2.1. Обеспечение защиты информации при управлении доступом

Учетные записи (УЗ) в среде контейнерной оркестрации бывают нескольких типов: учетные записи субъектов (субъектами могут быть разработчики или эксплуатационный персонал) и сервисные учетные записи. Управление этими двумя типами УЗ осуществляется по-разному. Сервисные управляются средствами самого кластера, учетные записи субъектов (пользовательские) ― с использованием сторонних механизмов, файлов, X.509 сертификатов, посредством интеграции с внешними системами, например, LDAP (тут важно отметить, что интеграция Kubernetes с LDAP не является нативной, для её реализации потребуются дополнительные действия).

Что касается аутентификации пользователей, оптимальным способом управления паролями будет интеграция Kubernetes со службой каталогов (например, MS AD). В этом случае эксплуатационный персонал/разработчики будут использовать доменные учетные записи в соответствии с ролевой моделью на уровне кластера. А реализация требований ГОСТ 57580.1-2017 будет осуществляться на уровне MS AD.

Если говорить об аутентификации сервисных учетных записей, дело обстоит иначе. В Kubernetes можно создать объект Secret для хранения секретов (аутентификационных данных) в «закодированном» виде. Для создания таких объектов применяется base64. Поэтому хорошей практикой считается использование сторонней системы, которая будет управлять секретами, хранить их в зашифрованном виде и выдавать через REST-запросы. Примером таких систем могут быть HashiCorp Vault, CyberArk Conjur. При этом на уровне внешней системы могут задаваться ротация и требования к сервисным УЗ. А кластер и развернутые на нем приложения становятся «пользователями», которые обращаются за секретами во внешнюю систему и не хранят их локально.

Для корректной реализации принципа минимальных привилегий для доступа к кластеру можно воспользоваться механизмом RBAC (Role Based Access Control). Он позволяет настроить возможности пользователей и сервисов на основе ролевой модели как на уровне отдельно взятого пространства имен (namespace), так и на уровне кластера.

Создание ролей и последующее их распределение состоит из нескольких этапов:

  • Определение объектов Kubernetes, с которыми взаимодействует роль (pod, services, secrets и т.д.).

  • Определение возможностей роли (получать информацию, создавать объекты, изменять объекты и т.д.).

  • Определение «носителей» роли (пользователь, сервис).

Правильно выстроенная ролевая модель повысит общий уровень ИБ и может использоваться для реализации требований стандарта ГОСТ 57580.1-2017.

Важно помнить, что помимо создания ролей или контроля аутентификации/авторизации необходимо выстроить процессы регулярного пересмотра и контроля доступов. Например, важно постоянно проводить проверки, чтобы вовремя обнаруживать «мертвые учетные записи» или несвоевременный отзыв повышенных полномочий, которые были предоставлены пользователю/сервису временно для реализации определенной задачи. В качестве технической реализации для этого можно использовать либо встроенные механизмы Kubernetes, либо сторонние утилиты. Например, Open Source утилиту Kubi-Scan.

2.2. Обеспечение защиты вычислительных сетей

Управление сетевой безопасностью на уровне кластера среды контейнерной оркестрации незначительно отличается от управления сетевой безопасностью в целом.

Кластер важно разместить в безопасном сегменте сети, на границе которого нужно установить необходимые средства сетевой защиты, а доступ в интернет контролировать специализированными решениями. При этом нужно создать несколько окружений, например: Dev, Test, Prod. Количество окружений может быть разным в разных организациях. Рекомендуется использовать несколько кластеров: как минимум, отдельный кластер нужен будет для тестирования.

Оптимально ограничить возможность подключения к отдельным нодам напрямую и реализовать управление всем кластером через Master Node. Для взаимодействия компонентов Kubernetes, расположенных на Worker Node (например, kubelet, kube-proxy) с компонентами Master Node (например, kube-apiserver) можно использовать TLS, это повысит общий уровень защищенности кластера.

Ситуация несколько отличается, если посмотреть на сетевую безопасность на уровне оркестрации. По умолчанию в Kubernetes отсутствует какое-либо сегментирование, и любой pod может общаться с любым pod в любом namespace. Однако в Kubernetes можно реализовать Network Policy (сетевые политики), которые позволят реализовать достаточно гранулярное сегментирование сети. Главное ― при выборе Cluster Network Interface (CNI) убедитесь, что решение поддерживает такой функционал. К счастью, он есть у большинства представленных на рынке CNI (например, Calico, Cilium, Romana, Weave).

Кроме того, с помощью Network Policy можно контролировать Ingress (входящий трафик) и Egress (исходящий трафик) и реализовать подход «белого списка»: все, что не указано в Network Policies, по умолчанию будет считаться запрещенным.

Для того, чтобы подготовить Network Policy, которая не навредила бы работоспособности приложения, необходимо понять, как именно и с чем это приложение взаимодействует как внутри кластера, так и за его пределами. Такая информация, как правило, есть у разработчиков. Они могут помочь в составлении корректной модели сетевого взаимодействия приложения, на основе которой ИБ-специалисты подготовят Network Policy. Важно учитывать, что в работе приложений постоянно происходят изменения. Поэтому нужно чётко выстроить процесс актуализации Network Policy внутри организации и назначить ответственных за реализацию этого процесса.

Еще один способ обеспечить сетевую безопасность ― реализовать межсетевое экранирование между контейнерами. Для этого можно использовать внешние решения. Некоторые из таких решений позволяют использовать L3/L4 фильтрацию трафика при взаимодействии микросервисов приложений.

Дополнительно можно использовать Service Mesh (Istio, LinkerD), которые позволяют реализовать mTLS при взаимодействии между pods.

Рассмотрим ещё один, косвенный, способ сетевой защиты. По умолчанию Kubernetes выбирает, на какую node разместить pod/container в соответствии с внутренней логикой работы, явных ограничений/приоритетов нет (за исключением ограничения запуска контейнеров на Master Node, кроме системных). Однако есть возможности контроля запуска определенных pods/container на определенных node за счет NodeSelector, Taints/Tolerations и Affinity. Указанные способы явно не относятся к средствам контроля сетевого взаимодействия, но частично и их можно использовать, например, для выделения определенной node, на которой будут запускаться только критичные приложения.

2.3. Контроль целостности и защищенности информационной инфраструктуры

Устранять уязвимости на нодах кластера можно в соответствии с выстроенным в компании процессом управления уязвимостями. По сути, ноды ― это обычные вычислительные мощности под управлением ОС семейства Linux. Это значит, что можно придерживаться стандартного подхода, то есть проводить сканирование, приоритизацию, постановку задач на устранение, тестирование обновлений, обновление.

То же самое может быть применимо и к оркестратору. Но стоит помнить, что Kubernetes обновляется на регулярной основе, в него постоянно добавляется новый функционал, исправляются недоработки. Поэтому будет особенно важно выстроить внутренний процесс по поддержке его актуальной версии.

Также важно отметить, что Kubernetes реализует концепт «неизменяемой инфраструктуры» (immutable infrastructure). Это означает, что любые изменения, которые совершались с pod/container напрямую, не будут сохранены в случае перезапуска контейнера. В случае перезапуска pod Kubernetes будет создавать новый pod/container на основе используемого в спецификации образа (image). Таким образом, единственный способ повлиять на конфигурацию pod/container ― модифицировать сам образ.

Контроль целостности образов по умолчанию в Kubernetes не реализован. Для решения этой задачи есть несколько подходов.

  • Процессный подход подразумевает выстраивание процесса сборки, хранения и использования образов, который исключает воздействие человека. При этом важно делать фокус на максимальную автоматизацию и корректно настроенную ролевую модель доступа. Процесс может выглядеть следующим образом:

  • Разработчик делает commit в SCM (систему управления исходным кодом), расположенную в среде TEST.

  • Запускается сборка в CI-системе в среде TEST, собирается образ и помещается в реестр. Допустим, что возможность делать push в реестр есть только у технологической УЗ агента CI-системы (Runner’a). Кроме нее, доступ есть только у администраторов (по определению). Это исключает возможность произвольного помещения образа в реестр.

  • Дальше происходит репликация реестров PROD-TEST (т.е. образы из реестра в TEST автоматически загружаются в реестр PROD), при корректной настройке ролевых моделей можно исключить влияние человека.

  • В PROD стартует процесс CD (развертывания), который использует образы из соответствующего реестра.

Таким образом создается «виртуальный» контроль целостности: образы сможет изменить только авторизированный пользователь, обладающий соответствующими правами. В примере, рассмотренном выше, таким пользователем является технологическая УЗ, которая используется в CI/CD-конвейере.

  • Технический подход подразумевает использование сторонних Open Source решений, например, Notary и OPA Gatekeeper. Задача Notary ― сформировать и сохранить подпись образов, которые прошли все проверки. Задача OPA Gatekeeper ― проверять наличие подписи у образов перед запуском контейнеров. В случае, если подпись не будет обнаружена, контейнер не сможет запуститься. Альтернативный вариант ― использование наложенных средств защиты, обладающих функционалом контроля доверенных реестров и образов.

Можно комбинировать процессный и технический подходы к контролю целостности образов. Это позволит гарантировать, что «случайные» образы не будут использованы для запуска контейнеров.

2.4. Защита от вредоносного кода

Установка антивирусов ― не лучшая практика как с точки зрения нод, так и с точки зрения pod/container. Для нод ― антивирусы могут привести к нарушению в логике работы оркестратора, а в pod/container большинство «классических» решений попросту невозможно встроить.

Поэтому для защиты от вредоносного кода стоит использовать компенсирующие меры, применение которых допускается стандартом ГОСТ Р 57580.1-2017, например, SELinux и AppArmor (применительно к ОС семейства Linux). Однако стоит помнить, что SELinux/AppArmor не являются 100% заменой антивирусным решениям, так как не обладают функционалом идентификации вирусов и иного вредоносного ПО.

Обеспечить еще большую защиту на уровне pod/container можно с использованием Security Context3 . Security Context помогает проанализировать контейнеры и то, что они делают, для того, чтобы гранулярно дать им только те возможности и привилегии, которые им необходимы, и запретить все остальные. Благодаря такому подходу вирусы просто не могут осуществлять свои вредоносные действия.

С помощью Security Context можно реализовать:

  • Контроль запуска в привилегированном режиме.

  • Контроль запуска от требуемой учетной записи (UID/GUID). Например, если требуется, чтобы контейнер запускался от УЗ, UID которой больше 1000, это можно явно указать в Dockerfile или при формировании конфигурации pod/container через runAsUser, где явно указать желаемый параметр.

  • Контроль разрешенных Linux Capabilities. Контейнерам, из-за их «условной ограниченности», далеко не всегда требуется полный перечень Linux Capabilities. Например, NET_RAW иногда бывает избыточна, а ее могут использовать, например, для ARP-spoofing.

  • Управление Privilege Escalation процессов внутри контейнера.

  • Контроль возможности записи в файловую систему ноды, на которой создан pod/container.

Есть несколько вариантов формирования Security Context:

  • Самостоятельно или с помощью разработчика собрать нужную информацию для формирования Security Context. При этом важно разобраться, что делает то или иное приложение, как оно работает, какие процессы запускаются внутри контейнера, какие сетевые взаимодействия используются.

  • Второй вариант более грубый, но более «быстрый». Запускаем контейнер с минимальными возможностями и анализируем: из-за чего происходят ошибки, чего контейнеру не хватает для корректного функционирования. С учетом собранной информации начинаем «ослаблять» настройки и повторяем действие, пока контейнер не начнет работать.

В дополнение к аналитике с использованием Security Context можно использовать внешние средства защиты информации. Во-первых, те, которые позволят автоматизировать процесс проверки настроек нод и pod/container на соответствие лучшим практикам (как правило, используются CIS Benchmarks). Во-вторых, те, которые помогают идентифицировать наличие вредоносных файлов, чтобы удалить их.

Такие средства защиты также позволяют обеспечить безопасность контейнеров в runtime, что не может быть сделано силами оркестратора. Большинство решений позволяет реализовать поведенческую аналитику и формировать правила контроля ИБ контейнеров на основании заранее разработанных моделей, которые описывают «нормальное поведение контейнера». Все, что будет отличаться от такой модели, будет расцениваться, как событие ИБ. А если выставить режим «enforce», любая «аномальная» активность будет заблокирована.

2.5. Предотвращение утечек информации

Kubernetes не предполагает каких-либо специальных возможностей/инструментов для контроля потенциальных каналов утечек.

Для многих таких каналов (например, электронная почта, машинные носители информации, внешние файлообменники) подход к защите не отличается от «классических» подходов, применяемых в организации.

2.6. Обнаружение инцидентов защиты информации и реагирование на них

На уровне нод процесс мониторинга ИБ аналогичен мониторингу ИБ классических элементов ИТ-инфраструктур: журналы нод просто перенаправляются в SIEM-систему для идентификации инцидентов.

Что касается уровня кластера, то для того, чтобы анализировать события, рекомендуется настроить Audit Policy (политику аудита). Эта политика позволяет «фильтровать» поток событий, который генерируется в кластере, чтобы идентифицировать подозрительные события, например:

  • Binding роли Cluster Admin к какому-либо пользователю

  • Запуск привилегированных контейнеров

  • Манипуляции с секретами

  • Создание pods в определенных namespaces (например, в kube-system)

Инструмент Audit Policy достаточно гибкий и может быть использован для фильтрации потока событий, который генерируется большим количеством сущностей Kubernetes. Эти события могут быть направлены в SIEM-систему и использоваться как для идентификации инцидентов ИБ, так и для проведения расследований. Для определения на уровне кластера перечня событий, которые необходимо передавать в SIEM, можно воспользоваться несколькими подходами:

  • Моделирование угроз. Определяем актуальные угрозы для конкретного кластера и составляем перечень событий, которые могли бы помочь идентифицировать атаку или ее этапы. Именно эти события и нужно будет собирать и анализировать.

  • Анализ процессов. Этот подход можно применять организациям, у которых есть выстроенные процессы управления средой контейнерной оркестрации. Подход подразумевает, что в SIEM-систему будут передаваться события, которые выбиваются из стандартных процессов. Например, каждая команда работает в своем namespace. Namespace создается командой эксплуатации на основании согласованной заявки в Service Desk. Если разработчики сами создают новый Namespace, это может стать поводом для уточнения ― почему так получилось? Откуда у них полномочия на это? Данные об отклонении от стандартного процесса должны быть переданы в SIEM-систему. Аналогично такой подход может применятся и к другим процессам, например, к созданию Cluster Role/Cluster Bindings.

В случае использования наложенных средств защиты рекомендуется направлять в SIEM-систему журналы о нарушении установленных политик безопасности, чтобы обогащать общую информацию о том, что происходит в кластере среды контейнерной оркестрации.

Кроме того, на рынке есть специализированные решения для идентификации инцидентов ИБ на основании анализа событий ИБ в кластере среды контейнерной оркестрации.

2.7. Защита среды виртуализации

В настоящее время отсутствует позиция регуляторов, в том числе Банка России, относительно того, является ли контейнер виртуальной машиной или нет. Есть аргументы «за», есть аргументы «против».

Если допустить, что контейнер представляет собой виртуальную машину, то большинство требований ГОСТ Р 57580.1-2017 можно будет без труда выполнить. Давайте рассмотрим эти требования подробнее:

  • Для организации идентификации, аутентификации, авторизации подходы и практики описаны в разделе «Обеспечение защиты информации при управлении доступом».

  • Для организации сегментации и межсетевого экранирования вычислительных сетей, предназначенных для размещения виртуальных машин, и серверных компонент виртуализации подходы и практики описаны в разделе «Обеспечение защиты вычислительных сетей».

  • Что касается организации защиты образов виртуальных машин, то в данном случае образом виртуальной машины будет образ контейнера. Подходы и практики обеспечения ИБ для образов контейнера описаны в разделах «Контроль целостности и защищенности информационной инфраструктуры» и «Защита от вредоносного кода».

  • Для регистрации событий защиты информации, связанных с доступом к виртуальным машинам и серверным компонентам виртуализации, подходы и практики описаны в разделе «Обнаружение инцидентов защиты информации и реагирование на них».

Главное отличие требований к защите контейнерной оркестрации в том, что среди них нет требований к защите гипервизора, так как он не используется.

2.8. Защита при осуществлении удаленного доступа с использованием мобильных (переносных) устройств

В этой сфере ГОСТ Р 57580.1-2017 предусматривает меры, реализация которых не зависит от специфики сред контейнерной оркестрации. Поэтому эти меры могут быть реализованы в соответствии с общим подходом организации по управлению удаленным доступом и его защите при использовании мобильных (переносимых) устройств.

Часть 3: Краткое содержание статьи

Если обобщить, то получается:

  • Контейнеры запускаются из образов, для каждого из которых есть «конфигурационный файл». Централизованное хранение образов реализуется с использованием реестров. Для управления большим количеством контейнеров целесообразно использовать специальные решения ― оркестраторы.

  • Оркестраторы (на примере Kubernetes) состоят из нескольких сущностей: Control Plane, ответственной за управление нагрузками, и Node Components, ответственными за запуск pods на nodes (для упрощения допустим, что pod представляет собой синоним контейнера, хотя это и не совсем так). Control Plane размещаются на Master Node кластера, Node Components ― на Worker Node кластера. Master и Worker nodes могут быть как физическими, так и виртуальными машинами.

  • Реализация мер, указанных в процессах стандарта ГОСТ Р 57580.1-2017 в средах контейнерной оркестрации, возможна как с использованием штатных механизмов, предоставляемых Kubernetes, так и с использованием наложенных средств защиты. Одной из важных задач, которую требуется решить при планировании приведения среды контейнерной оркестрации в соответствие требованиям регуляторов ― к чему именно применять требование: node, orchestrator, pod/container? Как именно будут меняться способы реализации мер в зависимости от рассматриваемого объекта? Сводная информация о процессах и о том, при помощи чего можно выполнять предписанные в них меры, приведена в табл. 1. Таблица не является избыточной. Основной целью, которой хотелось достичь настоящей статьей, являлось показать, как это можно сделать, на что обратить внимание, какой инструментарий нужен. Написать детальное универсальное руководство по приведению среды контейнерной оркестрации в соответствие требованиям стандарта ГОСТ Р 57580.1-2017 не представляется возможным хотя бы потому, что реализация кластеров сильно варьируется от организации к организации.

  • Важно помнить, что, помимо технологий, важно обращать внимание и на процессный аспект ― просто написать политику/настроить роль недостаточно. В контейнерных инфраструктурах все меняется достаточно часто и быстро, поэтому необходимо выстроить процесс поддержания реализованных мероприятий по ИБ в актуальном состоянии.

Табл. 1. Способы реализации мер Стандарта ГОСТ Р 57580.1-2017

Часть 4: Ссылки на полезные материалы

Ниже приведены ссылки на упоминаемые в статье возможности Kubernetes, используемые для повышения уровня защищенности кластера, а также на материалы, подготовленные компанией Red Hat ― разработчика продукта OpenShift и одного из главных участников проекта Kubernetes:

2Pod – базовый объект Kubernetes – группа из одного или нескольких контейнеров и совместно используемых ресурсов для этих контейнеров

Kubernetes Authentication ―

RBAC ―

Network Policy ―

Security Context ―

Audit Policy ―

Обзор Service Meshes (Istio + Linkerd) ―

Использование нескольких сетей в pods (Red Hat OpenShift) ―

Гайд по безопасности от Red Hat (IBM) для Red Hat OpenShift ―

1

3Security Context прописываются в YAML-конфигурацию pod’a приложения. Политики, позволяющие реализовать централизованное управление Security Context, были исключены из версии Kubernetes 1.21 (), однако в некоторых оркестраторах, например, RedHat OpenShift, они продолжают свое существование.

https://www.securitylab.ru/analytics/523203.php
https://kubernetes.io/docs/reference/access-authn-authz/authentication/
https://kubernetes.io/docs/reference/access-authn-authz/rbac/
https://kubernetes.io/docs/concepts/services-networking/network-policies/
https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
https://kubernetes.io/docs/tasks/debug-application-cluster/audit/
https://dzone.com/articles/service-mesh-comparison-istio-vs-linkerd
https://docs.openshift.com/container-platform/4.7/networking/multiple_networks/understanding-multiple-networks.html
https://www.redhat.com/rhdc/managed-files/cl-openshift-security-guide-ebook-us287757-202103.pdf
https://www.docker.com/resources/what-container
https://kubernetes.io/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/