This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
devsecops_и_промышленные_решения [2026/03/20 15:19] val [Модуль 3: Безопасность в DevOps] |
devsecops_и_промышленные_решения [2026/04/19 08:24] (current) val [Модуль 4: Восстановление кластера после сбоев] |
||
|---|---|---|---|
| Line 141: | Line 141: | ||
| * [[Сервис Keycloak#Страница для проверки учетных записей]] | * [[Сервис Keycloak#Страница для проверки учетных записей]] | ||
| - | * [[Сервис Keycloak#Аутентификация пользователей WEB приложения]] | ||
| Line 236: | Line 235: | ||
| * [[Инструмент GitLab#Проверка конфигурации и перезапуск]] для процесса Sidekiq | * [[Инструмент GitLab#Проверка конфигурации и перезапуск]] для процесса Sidekiq | ||
| - | * Для демонстрации OpenID можно создать УЗ user1 через [[Инструмент GitLab#REST API интерфейс]] и связать через [[Инструмент GitLab#Клиент OpenID]] | + | * Настройка подключения через OpenID |
| + | * [[Сервис Keycloak#Аутентификация пользователей WEB приложения]] | ||
| + | * Создать УЗ user1 через [[Инструмент GitLab#REST API интерфейс]] и связать через [[Инструмент GitLab#Клиент OpenID]] | ||
| ==== 2.3 Стратегии развертывания и масштабирование нагрузки ==== | ==== 2.3 Стратегии развертывания и масштабирование нагрузки ==== | ||
| Line 337: | Line 338: | ||
| * [[Система Kubernetes#gitlab-runner kubernetes]] | * [[Система Kubernetes#gitlab-runner kubernetes]] | ||
| * Интеграция инструментов безопасности в [[Инструмент GitLab#Пример CI с использованием контейнеров|CI/CD]] | * Интеграция инструментов безопасности в [[Инструмент GitLab#Пример CI с использованием контейнеров|CI/CD]] | ||
| + | |||
| + | <code> | ||
| + | stages: | ||
| + | - lint | ||
| + | - build | ||
| + | - scan | ||
| + | - push | ||
| + | |||
| + | variables: | ||
| + | KANIKO_REGISTRY_MIRROR: "mirror.gcr.io" | ||
| + | |||
| + | Build: | ||
| + | stage: build | ||
| + | image: | ||
| + | name: gcr.io/kaniko-project/executor:v1.9.0-debug | ||
| + | entrypoint: [""] | ||
| + | script: | ||
| + | - echo "{\"auths\":{\"${CI_REGISTRY}\":{\"auth\":\"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json | ||
| + | - /kaniko/executor | ||
| + | --insecure --skip-tls-verify | ||
| + | --context "${CI_PROJECT_DIR}" | ||
| + | --dockerfile "${CI_PROJECT_DIR}/Dockerfile" | ||
| + | --destination "${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA}" | ||
| + | |||
| + | except: | ||
| + | - tags | ||
| + | tags: | ||
| + | - build | ||
| + | |||
| + | Push latest: | ||
| + | image: | ||
| + | name: gcr.io/go-containerregistry/crane:debug | ||
| + | entrypoint: [""] | ||
| + | variables: | ||
| + | GIT_STRATEGY: none | ||
| + | stage: push | ||
| + | only: | ||
| + | - main | ||
| + | script: | ||
| + | - crane auth login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY | ||
| + | - crane --insecure cp $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest | ||
| + | tags: | ||
| + | - build | ||
| + | |||
| + | Push tag: | ||
| + | image: | ||
| + | name: gcr.io/go-containerregistry/crane:debug | ||
| + | entrypoint: [""] | ||
| + | variables: | ||
| + | GIT_STRATEGY: none | ||
| + | stage: push | ||
| + | only: | ||
| + | - tags | ||
| + | script: | ||
| + | - crane auth login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY | ||
| + | - crane --insecure cp $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME | ||
| + | tags: | ||
| + | - build | ||
| + | |||
| + | semgrep: | ||
| + | stage: lint | ||
| + | image: semgrep/semgrep | ||
| + | script: semgrep --config=auto --error | ||
| + | variables: | ||
| + | SEMGREP_SRC_DIRECTORY: $CI_PROJECT_DIR | ||
| + | https_proxy: http://gate.isp.un:3128/ | ||
| + | no_proxy: localhost,127.0.0.1,isp.un,corp1.un | ||
| + | except: | ||
| + | - tags | ||
| + | tags: | ||
| + | - build | ||
| + | |||
| + | trivy: | ||
| + | stage: scan | ||
| + | image: | ||
| + | name: ghcr.io/aquasecurity/trivy | ||
| + | entrypoint: [""] | ||
| + | variables: | ||
| + | #TRIVY_USERNAME: "$CI_REGISTRY_USER" | ||
| + | #TRIVY_PASSWORD: "$CI_REGISTRY_PASSWORD" | ||
| + | TRIVY_REGISTRY: "$CI_REGISTRY" | ||
| + | TRIVY_CACHE_DIR: ".trivycache/" | ||
| + | script: | ||
| + | - trivy image --exit-code 1 --severity HIGH --insecure $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA | ||
| + | cache: | ||
| + | paths: | ||
| + | - ".trivycache/" | ||
| + | except: | ||
| + | - tags | ||
| + | tags: | ||
| + | - build | ||
| + | </code> | ||
| * Можно показать [[Контроллер ArgoCD#Развертывание множества приложений через ApplicationSet]], приложения pywebd, (потребует [[Система Kubernetes#Добавление корпоративного корневого сертификата в кластер]]) | * Можно показать [[Контроллер ArgoCD#Развертывание множества приложений через ApplicationSet]], приложения pywebd, (потребует [[Система Kubernetes#Добавление корпоративного корневого сертификата в кластер]]) | ||
| Line 354: | Line 447: | ||
| * [[Управление доступом в Kubernetes]] для пользователей и интеграция с внешними системами идентификации | * [[Управление доступом в Kubernetes]] для пользователей и интеграция с внешними системами идентификации | ||
| - | * Практикум: адинистрирование NS по сертификату, | + | * Практикум: адинистрирование NS по сертификату, всего кластера через токен service-account |
| + | |||
| + | * Обсудить, или придумать лабораторную работу про [[Система Kubernetes#Использование SecurityContext]] | ||
| + | * [[Система Kubernetes#Использование NetworkPolicy]] для управления доступом в сети кластера | ||
| + | * Тестируем доступ через [[Сервис PostgreSQL#Клиент psql]] из разных NS (используя pod-ы my-debian из [[Система Kubernetes#Базовые объекты k8s]]) и, непосредственно, с узлов кластера | ||
| * Использование IDS/IPS в Kubernetes | * Использование IDS/IPS в Kubernetes | ||
| + | * [[https://habr.com/ru/articles/813799/|DPI из подручных материалов]] | ||
| + | <code> | ||
| + | root@my-ubuntu:/# apt install apache2 | ||
| + | /etc/init.d/apache2 start | ||
| + | tcpdump -nnieth0 -s0 -A port 80 | ||
| + | |||
| + | root@my-ubuntu:/# snort -i eth0 -S HOME_NET=[0.0.0.0/0] -c /etc/snort/snort.conf # -A console | ||
| + | </code> | ||
| ===== Модуль 4: Восстановление кластера после сбоев ===== | ===== Модуль 4: Восстановление кластера после сбоев ===== | ||
| - | * Мониторинг кластера Kubernetes | + | * [[Мониторинг кластера Kubernetes]] |
| * Резервное копирование и восстановление данных приложений | * Резервное копирование и восстановление данных приложений | ||
| * Восстановление управляющих и рабочих узлов | * Восстановление управляющих и рабочих узлов | ||