User Tools

Site Tools


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/21 15:32]
val [Модуль 3: Безопасность в DevOps]
devsecops_и_промышленные_решения [2026/04/19 08:24] (current)
val [Модуль 4: Восстановление кластера после сбоев]
Line 338: 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 357: Line 449:
   * Практикум:​ адинистрирование NS по сертификату,​ всего кластера через токен service-account   * Практикум:​ адинистрирование NS по сертификату,​ всего кластера через токен service-account
  
-  * [[Использование NetworkPolicy]] для управления доступом в сети кластера+  * Обсудить,​ или придумать лабораторную работу про ​[[Система 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]]
   * Резервное копирование и восстановление данных приложений ​   * Резервное копирование и восстановление данных приложений ​
   * Восстановление управляющих и рабочих узлов   * Восстановление управляющих и рабочих узлов
devsecops_и_промышленные_решения.1774096372.txt.gz · Last modified: 2026/03/21 15:32 by val