GitOps супраць DevOps - інструменты GitOps

GitOps супраць DevOps: што бачаць распрацоўшчыкі ў праектах

Калі вы працавалі ў камандах DevOps, тыповы працоўны працэс выглядае наступным чынам: прасоўванне кода прыкладання праз неперасягненную інфраструктуру. pipeline, а затым кіраваць інфраструктурай асобна з дапамогай інструментаў GitOps, такіх як kubectl, Terraform або Ansible. Гэта класічны DevOps: збіраць, тэставаць, разгортваць і часта кіраваць інфраструктурай уручную або з дапамогай скрыптоў.

А цяпер пераходзім да GitOps. З GitOps усё, у тым ліку разгортванні, інфраструктура і правілы доступу, аб'яўляецца ў Git. Больш нічога... kubectl прымяніць або ручныя запускі Terraform. Git становіцца інтэрфейсам для прадукцыйнай працы. Вы адкрываеце PR, і інструмент GitOps, напрыклад ArgoCD або FluxCD, аўтаматычна сінхранізуе патрэбны стан з кластарам.

Ключавы зрух у GitOps супраць DevOps

  • DevOps: CI/CD pipelineадпраўляе ў кластары
  • GitOps: Кластары атрымліваюць патрэбны стан з Git

Гэта тонкае, але кардынальнае адрозненне. Непераўзыдзеная інтэграцыя (CI) усё яшчэ збіраецца і тэстуе, але з GitOps CD арыентаваны на Git. Вашы сувязі з грамадскасцю становяцца зменамі ў прадукцыйнасці.

Як GitOps змяняе кантроль распрацоўшчыкаў над разгортваннем, інфраструктурай і доступам

разгортвання

У традыцыйным DevOps разгортванне азначала запуск pipeline заданняў або ўводу каманд, такіх як kubectl apply -f deployment.yaml.

У GitOps працэс змяняецца. Вы рэдагуеце маніфест наступным чынам:

apiVersion: apps/v1 kind: Deployment metadata:   name: my-app spec:   replicas: 4   template:     spec:       containers:       - name: web         image: myregistry/my-app:1.2.4 

Вы адкрываеце PR. Выконваюцца праверкі CI (kubeval, yamllint, праверкі палітык). Аб'ядноўваеце яго, і ваш інструмент GitOps аўтаматычна сінхранізуе стан. Разгортванне цяпер можна адсочваць праз гісторыю Git і праверкі PR.

Інфраструктура (Тэраформ)

Каманды DevOps часта працуюць план тэраформавання і terraform apply уручную або з дапамогай pipeline скрыпты. У GitOps змены ў код Terraform уносяцца праз PR. Пасля зацвярджэння яны запускаюць аператара або аўтаматызаванае заданне для дэкларатыўнага прымянення змяненняў.

Прыклад: абнаўленне тыпу экзэмпляра EC2 або групы бяспекі. Увесь жыццёвы цыкл становіцца бачным і кантралюецца праз Git.

Кіраванне доступам

У DevOps доступ залежыць ад роляў і токенаў IAM. Аўдытарскія журналы раскіданыя па сістэмах неперасягненай інтэграцыі і воблачных журналах.

У GitOps змены доступу ўносяцца праз маніфесты з версіямі. Напрыклад:

kind: ClusterRoleBinding metadata:   name: dev-team-admin subjects: - kind: Group   name: dev-team roleRef:   kind: ClusterRole   name: cluster-admin 

Аб'яднаныя PR-запыты даюць або адмяняюць дазволы, і кожнае змяненне рэгіструецца ў Git.

Рызыкі бяспекі GitOps: чаму Git становіцца вашай паверхняй для атакі на прадукцыйную сістэму

GitOps цэнтралізуе кантроль у Git, але гэта таксама пашырае паверхню для атакі:

Зламысныя або выпадковыя PR-паведамленні

PR можа вярнуцца да ўразлівага вобраза (выява: апошняе) або ненаўмысна раскрыць сэрвіс (тып: LoadBalancer без абмежаванняў па IP-адрасах).

Эскалацыя RBAC

Небяспечны YAML можа даваць празмерныя прывілеі, такія як прывязка pipeline службовы рахунак для адміністратар кластара.

Збоі дрэйфу і сінхранізацыі

Знешнія змены (напрыклад, патч kubectl) або памылкі аператара могуць прывесці да зрушэння канфігурацыі. Без папярэджанняў сінхранізацыі праблемы могуць застацца незаўважанымі.

Гэтыя праблемы ілюструюць крытычную праблему бяспекі ў GitOps супраць DevOps: калі рэпазітар Git становіцца інтэрфейсам да прадукцыйнай сістэмы, бяспека павінна быць забяспечана на кожным этапе. commitПамылкі ў кантролі доступу або ненадзейныя PR могуць імгненна адбіцца на дзеючай інфраструктуры.

Рэальны інцыдэнт: няправільная канфігурацыя RBAC у GitOps

  • Што здарылася: Малодшы распрацоўшчык аб'яднаў новую версію Helm праз PR. Яна выпадкова ўключыла ClusterRoleBinding з павышанымі правамі доступу. ArgoCD сінхранізаваў яе.
  • Якую рызыку гэта ўнесла: Grafana стала агульнадаступнай; каманда распрацоўшчыкаў атрымала поўны доступ да кластара.
  • Як гэта было вырашана: Выяўлена сканаваннем бяспекі падчас рэагавання на інцыдэнт. Каманда дадала праверку адрэндэра Helm і больш строгае PR-адабрэнне для інфраструктуры.

Паколькі Git цяпер з'яўляецца прадукцыйным інтэрфейсам, guardrails з'яўляюцца крытычнымі.

Кантрольны спіс бяспекі GitOps для распрацоўшчыкаў

Практыка бяспекіШто рабіцьЧаму гэта важна
Абарона філіялаўЗабяспечваць праверкі PR і статусу асноўныхПрадухіленне несанкцыянаваных або неправераных змяненняў у прадукцыйнай прадукцыі
падпісаны CommitsПатрабуецца подпіс GPG commitі правераныя асобыЗабяспечце адсочванне і падсправаздачнасць
Праверка маніфестаДадайце праверку YAML, RBAC і Helm у CI pipelinesБлакуйце небяспечныя канфігурацыі і пазбягайце зрушэння
Абмежаваныя зацвярджэнніВыкарыстоўвайце CODEOWNERS, каб абмежаваць тых, хто можа зацвярджаць змены ў інфраструктуры і RBACАбмяжуйце рызыку, звязаную з занадта шырокім доступам
Выяўленне дрэйфуУключыць сінхранізацыю ArgoCD/FluxCD і папярэджанні аб неадпаведнасці стануВызначэнне ўнесеных уручную змяненняў або памылак аператара
Журнал аўдытуІнтэграцыя інструментаў GitOps са стэкамі логавання (напрыклад, Loki + Grafana)Атрымлівайце ўяўленне пра падзеі сінхранізацыі і гісторыю ад PR да prod

Ці варта камандам замяніць DevOps на GitOps?

нямаGitOps не з'яўляецца заменай DevOps; гэта яго дадатак.

  • DevOps = зборка/тэставанне pipelineс, генерацыя артэфактаў, сканаванне бяспекі.
  • GitOps = кіраванне што разгортваецца, дзе, і як інфраструктура захоўваецца ў стане.

Найлепшая практыка? Выкарыстанне CI (DevOps) pipelines) для стварэння артэфактаў і правядзення тэстаў. Выкарыстоўвайце інструменты GitOps для кіравання кампакт-дыскамі і інфраструктурай. Вось як вы атрымаеце паслядоўныя разгортванні, чысты аўдыт і працоўныя працэсы, арыентаваныя на распрацоўшчыкаў.

Інструменты GitOps, якія трэба ведаць

ІнструментBest ForНататкі па бяспецы
ArgoCDВізуальныя працоўныя працэсыУключыць RBAC, SSO і HTTPS
FluxCDGit-натыўная аўтаматызацыяАбмежаваць доступ да Git, абмежыць сакрэты
Weave GitOpsКіраванне некалькімі кластараміЗабяспечваць выкананне межаў арэнды
шлемСкладаныя/староннія праграмыПраверце values.yaml, пазбягайце сакрэтаў
KustomizeАчысціць накладкіПазбягайце зрушэння з дапамогай выразнасці асновы/накладання

Выбар патрэбнага інструмента залежыць ад патрэб вашага працоўнага працэсу. Выкарыстанне ArgoCD для бачнасці і кантролю доступу на аснове роляў. Выберыце FluxCD калі вы аддаеце перавагу сцэнарыям і аўтаматызацыі, натыўнай для Git. Выкарыстоўвайце шлем для старонніх праграм, такіх як Prometheus (са строгай праверкай), і выберыце Kustomize калі вам патрэбныя чыстыя, мінімальныя накладкі для ўнутраных сэрвісаў.

Разам DevOps і GitOps дапамагаюць камандам працаваць хутчэй, бяспечней і ўпэўнена. Галоўнае не ў тым, каб выбраць адзін з іх, а ў тым, каб ведаць, дзе кожны з іх найлепш падыходзіць.

Частыя пытанні па бяспецы Git

Прачытайце нашы часта задаваныя пытанні па бяспецы Git і даведайцеся, што павінен ведаць кожны распрацоўшчык!

Прачытанае па тэме:

Прыклад з рэальнага свету: няправільна настроены рэпазітар GitOps, які кіруе прадукцыйнасцю

Гэты сцэнар паказвае, наколькі хутка сітуацыя можа абвастрыцца ў мадэлі GitOps супраць DevOps. Камандзе, якая выкарыстоўвала рэпазітар, інтэграваны з вэбхукам, не хапала належных guardrailsСуправаджальнікі мелі доступ на запіс, і абарона галін не была ўстаноўлена. Служба была выпадкова пераключана на тып: LoadBalancer, выстаўляючы яго на суд грамадскасці. А Прывязка кластарных ролей у тым жа рэпазітарыі прадастаўлены празмерныя дазволы.

Паколькі інструменты GitOps, такія як ArgoCD, ужываюць змены адразу пасля іх аб'яднання, няправільныя канфігурацыі распаўсюджваюцца аўтаматычна. Рэпазітар па сутнасці стаў прадукцыйным API.

Каб аднавіць сітуацыю, каманда заблакувала правы на аб'яднанне для файлаў інфраструктуры, рэалізавала праверку перад аб'яднаннем для палітык RBAC і наладзіла абвесткі для любога несінхранізаванага стану праз свае інструменты GitOps. Гэты прыклад паказвае, што ў GitOps супраць DevOps хуткасць дастаўкі можа стаць перашкодай без надзейнага кантролю.

Выпраўленні

  1. Блакіраваць дазволытолькі старэйшыя спецыялісты па развіцці бяспекі могуць аб'ядноўваць заяўкі на ўдзел у праграме інфраструктуры
  2. Дадаць валідатарыCI блакуе маніфест PR з забароненымі правіламі RBAC
  3. Манітор сінхранізуе: папярэджанне, калі ArgoCD адпраўляе змены
  4. Паварот тэгаў малюнкаў: прымусовае падпісанне або выкарыстанне выявы SBOM Сканеры

Як Xygeni ўзмацняе бяспеку GitOps, не парушаючы працоўныя працэсы распрацоўшчыкаў

Ксігені вырашае распаўсюджаную сляпую пляму ў GitOps: рызыкоўныя змены, якія праслізгваюць падчас праверкі кода або ціха знікаюць пасля разгортвання. Перад аб'яднаннем Xygeni скануе pull requests па пытаннях бяспекі, такіх як Прывязка кластарных ролей у адміністратар кластара, паслугі, якія прадастаўляюцца праз LoadBalancer без абмежаванняў IP-адраса, жорстка закадаваныя сакрэты ў YAML, .env, або файлы Terraform, выкарыстанне выява: апошняе, або неправераныя вобразы кантэйнераў. Ён таксама выяўляе адкрытыя парты ў азначэннях інфраструктуры, такіх як групы бяспекі, якія выкрываюць SSH публічнаму інтэрнэту.

Калі pull request парушае палітыку бяспекі, Xygeni можа аўтаматычна блакаваць або пазначаць яго. Напрыклад, ён можа прымусіць толькі ClusterIP службы дазволеныя ў прадукцыйнай версіі, адхіляць PR-запыты, якія даюць празмерныя дазволы, або патрабаваць, каб усе вобразы кантэйнераў уключалі Спецыфікацыя матэрыялаў праграмнага забеспячэння (SBOM)Сакрэты, няправільна настроеныя правілы доступу і неадсочваемыя выявы таксама выяўляюцца да таго, як яны патрапяць у прадукцыйную версію.

Пасля аб'яднання кода Xygeni працягвае маніторыць актыўнасць Git і GitOps. Ён выяўляе прамыя рэдагаванні абароненых галін, несанкцыянаваныя змены дазволаў у рэпазіторыях Git і нечаканыя сінхранізацыі, выкліканыя ArgoCD або FluxCD, асабліва тыя, што адбываюцца па-за звычайным працоўным часам або тычацца крытычна важных маніфестаў.

Вынік — большы кантроль і менш нечаканасцяў. Xygeni забяспечвае бачнасць таго, што разгортваецца, хто гэта ўхваліў і як гэта адпавядае вашай бяспецы. standardі ўсё гэта без парушэння працоўнага працэсу распрацоўшчыка. Паспрабуйце!

Выснова: GitOps не замяняе DevOps, але змяняе тое, што распрацоўшчыкі павінны абараняць

GitOps — гэта не замена DevOps, а яго эвалюцыя. У мадэлі GitOps супраць DevOps неперасягненая інтэграцыя застаецца сканцэнтраванай на зборцы і тэсціраванні, у той час як інструменты GitOps, такія як ArgoCD, FluxCD або Weave GitOps, кіруюць дастаўкай і станам інфраструктуры.

Гэты пераход робіць сам рэпазітар Git часткай вашага асяроддзя выканання. Калі ён небяспечны, то і ваша прадукцыйная сістэма таксама небяспечная. Разуменне GitOps і DevOps мае важнае значэнне для бяспечнай распрацоўкі архітэктуры. pipelineі выкарыстанне правільных інструментаў GitOps гарантуе, што бачнасць, забеспячэнне выканання і аўдыт будуць убудаваныя з самага пачатку.

Калі Git кіруе прадукцыйнасцю, code security становіцца аперацыйнай бяспекай. Калі вы валодаеце рэпазітарам, вы валодаеце кластарам. Абараніце абодва з дапамогай інструментаў і практык, якія апрацоўваюць Git як ваш новы інтэрфейс выканання.

інструменты-для-аналізу-складання-праграмнага ...
Прыярытэзуйце, ліквідуйце і абараняйце свае праграмныя рызыкі
Атрымайце свой бясплатны рахунак.
Не патрабуецца крэдытная карта.

Забяспечце распрацоўку і пастаўку праграмнага забеспячэння

з пакетам прадуктаў Xygeni