devsecops_и_промышленные_решения

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
devsecops_и_промышленные_решения [2026/03/20 06:34]
val
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]]
-  * Можно показать [[Контроллер ArgoCD#​Развертывание множества приложений через ApplicationSet]], ​добавив приложение ​pywebd+ 
 +<​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#​Добавление корпоративного корневого сертификата в кластер]])
 <​code>​ <​code>​
 kube1:​~/​webd-k8s#​ mkdir apps/pywebd kube1:​~/​webd-k8s#​ mkdir apps/pywebd
Line 352: Line 446:
   * [[Система Kubernetes#​Работа с чувствительными данными (секретами)]] в Helm   * [[Система Kubernetes#​Работа с чувствительными данными (секретами)]] в Helm
  
-  * [[Управление доступом в Kubernetes]] для пользователей +  * [[Управление доступом в Kubernetes]] для пользователей ​и интеграция с внешними системами идентификации ​ 
-  * Интеграция с внешними системами идентификации+  * Практикум:​ адинистрирование 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]]
   * Резервное копирование и восстановление данных приложений ​   * Резервное копирование и восстановление данных приложений ​
   * Восстановление управляющих и рабочих узлов   * Восстановление управляющих и рабочих узлов
Line 397: Line 502:
 update-ca-certificates update-ca-certificates
 systemctl reload docker systemctl reload docker
-</​code>​ 
- 
-  * Добавляем корпоративный сертификат в кластер kubernetes 
-<​code>​ 
-server# 
- 
-bash -c ' 
-scp /​opt/​freeipa-data/​etc/​ipa/​ca.crt kube1:/​usr/​local/​share/​ca-certificates/​ 
-ssh kube1 update-ca-certificates 
-ssh kube1 systemctl restart containerd 
-scp /​opt/​freeipa-data/​etc/​ipa/​ca.crt kube2:/​usr/​local/​share/​ca-certificates/​ 
-ssh kube2 update-ca-certificates 
-ssh kube2 systemctl restart containerd 
-scp /​opt/​freeipa-data/​etc/​ipa/​ca.crt kube3:/​usr/​local/​share/​ca-certificates/​ 
-ssh kube3 update-ca-certificates 
-ssh kube3 systemctl restart containerd 
-scp /​opt/​freeipa-data/​etc/​ipa/​ca.crt kube4:/​usr/​local/​share/​ca-certificates/​ 
-ssh kube4 update-ca-certificates 
-ssh kube4 systemctl restart containerd 
-' 
 </​code>​ </​code>​
  
devsecops_и_промышленные_решения.1773977668.txt.gz · Last modified: 2026/03/20 06:34 by val