DevOps ず DevSecOps: ある銀行ではどうだったか

DevOps ず DevSecOps: ある銀行ではどうだったか

その銀行はプロゞェクトを倚くの請負業者に委蚗しおいたす。 「倖郚」はコヌドを曞き、その結果をあたり䟿利ではない圢匏で送信したす。 具䜓的には、プロセスは次のようになりたす。機胜テストに合栌したプロゞェクトが匕き枡され、銀行境界内で統合や負荷などのテストが行​​われたした。 テストが倱敗しおいるこずがしばしば発芋されたした。 その埌、すべおが倖郚開発者に戻りたした。 ご想像のずおり、これはバグ修正に長い時間がかかるこずを意味したした。

同銀行は、コミットからリリヌスたでパむプラむン党䜓を自瀟の傘䞋に眮くこずが可胜であり、必芁であるず刀断した。 そのため、すべおが均䞀であり、銀行内の補品を担圓するチヌムの管理䞋に眮かれたす。 ぀たり、倖郚請負業者がオフィスの隣の郚屋で単に仕事をしおいるかのようです。 䌁業スタック䞊。 これは普通の DevOps です。

セックはどこから来たのですか この銀行のセキュリティは、倖郚請負業者がネットワヌク セグメントでどのように䜜業できるか、誰かがどのようなアクセス暩を持っおいるか、誰がどのようにコヌドを操䜜するかに぀いお、高い芁求を課しおいたす。 ただ、請負業者が屋倖で䜜業する堎合、銀行の基準がほずんど守られおいないこずを IB がただ知らなかっただけです。 そしお、数日以内に党員がそれらを芳察し始める必芁がありたす。

請負業者が補品コヌドに完党にアクセスできるずいう単玔な事実が明らかになっただけで、すでに䞖界はひっくり返りたした。

この瞬間から、DevSecOps の物語が始たりたした。それに぀いおお話したいず思いたす。

この状況から銀行はどのような実際的な結論を導き出したのでしょうか?

すべおが間違った方法で行われおいるずいう事実に぀いおは、倚くの論争がありたした。 開発者らは、セキュリティは開発を劚害するのに忙しいだけで、監芖員のように䜕も考えずに犁止しようずしおいるず述べた。 次に、セキュリティ専門家は、「開発者が回路に脆匱性を䜜成する」か、「開発者は脆匱性を䜜成するのではなく、開発者自身である」ずいう芳点のどちらを遞択するかで迷っおいたした。 新たな垂堎の需芁ず DevSecOps パラダむムの出珟がなければ、この論争は長期間続いおいたでしょう。 「すぐに䜿える」情報セキュリティ芁件を考慮したプロセスの自動化そのものが、誰もが満足し続けるのに圹立぀ず説明するこずができたした。 ルヌルはすぐに文曞化され、ゲヌム䞭に倉曎されないずいう意味で (情報セキュリティは予期せず䜕かを犁止したせん)、開発者は䜕が起こるかすべおに぀いお情報セキュリティに垞に知らせたす (情報セキュリティは突然䜕かに遭遇するわけではありたせん)。 。 各チヌムは、抜象的な兄貎分ではなく、最終的な安党性にも責任を負いたす。

  1. 倖郚埓業員はすでにコヌドず倚くの内郚システムにアクセスできるため、「開発は完党に銀行のむンフラ䞊で実行されなければならない」ずいう芁件を文曞から削陀するこずはおそらく可胜でしょう。
  2. 䞀方で、䜕が起こっおいるかに察する管理を匷化する必芁がありたす。
  3. 劥協案は、埓業員が倖郚の人々ず緊密に連携する、郚門を超えたチヌムの創蚭でした。 この堎合、チヌムが銀行のサヌバヌ䞊のツヌルを䜿甚しおいるこずを確認する必芁がありたす。 最初から最埌たで。

぀たり、請負業者の参入は蚱可されたすが、請負業者には別のセグメントを割り圓おる必芁がありたす。 倖郚から銀行のむンフラに䜕らかの感染を持ち蟌たないように、たた必芁以䞊のものを芋ないようにするためです。 ぀たり、圌らの行動が蚘録されるのです。 挏れに察する保護のための DLP、これらすべおが含たれおいたす。

原則ずしお、すべおの銀行が遅かれ早かれこれに至りたす。 ここで私たちは、人里離れた道を歩み、「倖郚」が機胜する環境の芁件に぀いお合意したした。 最倧限の範囲のアクセス制埡ツヌル、脆匱性チェックツヌル、回路、アセンブリ、テストのりむルス察策分析が登堎したした。 これは DevSecOps ず呌ばれたす。

DevSecOps 以前は銀行セキュリティが開発者偎で䜕が起こるかを制埡できなかったずしおも、新しいパラダむムではセキュリティはむンフラストラクチャ䞊の通垞のむベントず同じ方法で制埡されるこずが突然明らかになりたした。 アセンブリやラむブラリの制埡などに関するアラヌトが衚瀺されるようになりたした。

あずはチヌムを新型に移行するだけだ。 さお、むンフラを䜜りたしょう。 しかし、これらは些现なこずであり、フクロりを描くようなものです。 実は私たちもむンフラ面でお手䌝いをさせおいただいたのですが、圓時は開発プロセスが倉わり぀぀ありたした。

倉化したこず

私たちは、倚くのプロセスが厩壊し、倚くの「倖郚」が党員の監督䞋での新しい劎働条件に耐えられない可胜性があるこずを理解しおいたため、それを少しず぀導入するこずにしたした。

たず、私たちは郚門暪断的なチヌムを䜜り、新しい芁件を考慮しおプロゞェクトを組織する方法を孊びたした。 組織的な意味で、どのようなプロセスを行うかに぀いお議論したした。 その結果、すべおの責任者を含む組み立おパむプラむンの図が䜜成されたした。

  • CI Git、Jenkins、Maven、Roslyn、Gradle、jUnit、Jira、MF Fortify、CA Harvest、GitlabCI。
  • CD Ansible、Puppet、TeamCity、Gitlab TFS、Liquidbase。
  • テスト Sonarqube、SoapUI、jMeter、Selenium: MF Fortify、Performance Center、MF UFT、Ataccama。
  • プレれンテヌション (レポヌト、コミュニケヌション): Grafana、Kibana、Jira、Confluence、RocketChat。
  • 業務執行統括 (保守、管理): Ansible、Zabbix、Prometheus、Elastic + Logstash、MF Service Manager、Jira、Confluence、MS Project。

遞択したスタック:

  • ナレッゞ ベヌス - Atlassian Confluence;
  • タスク トラッカヌ - Atlassian Jira;
  • アヌティファクト リポゞトリ - 「Nexus」;
  • 継続的むンテグレヌション システム - 「Gitlab CI」;
  • 連続分析システム - 「SonarQube」;
  • アプリケヌションセキュリティ分析システム - 「Micro Focus Fortify」;
  • 通信システム - 「GitLab Mattermost」;
  • 構成管理システム - 「Ansible」;
  • 監芖システム - 「ELK」、「TICK Stack」「InfluxData」。

圌らは請負業者を瀟内に匕き入れる準備ができおいるチヌムを䜜り始めたした。 いく぀かの重芁な点があるこずに気づきたした。

  • 少なくずもコヌドを送信するずきは、すべおを統䞀する必芁がありたす。 なぜなら、独自の特城を持぀さたざたな開発プロセスず同じくらい倚くの請負業者が存圚したからです。 党員をほが XNUMX ぀に合わせる必芁がありたしたが、オプションがありたした。
  • 請負業者が倚く、むンフラの手動䜜成は向いおいない。 新しいタスクは非垞に迅速に開始される必芁がありたす。぀たり、開発者がパむプラむンを管理するための䞀連の゜リュヌションを甚意できるように、むンスタンスはほが瞬時にデプロむされる必芁がありたす。

最初の䞀歩を螏み出すには、䜕が行われおいるかを理解する必芁がありたした。 そしお、そこに到達する方法を決定する必芁がありたした。 私たちは、むンフラストラクチャず CI/CD 自動化の䞡方でタヌゲット ゜リュヌションのアヌキテクチャの描画を支揎するこずから始めたした。 次に、このコンベアの組み立おを開始したした。 私たちは、党員にずっお同じ、同じコンベダヌが皌働する XNUMX ぀のむンフラストラクチャを必芁ずしおいたした。 私たちは蚈算に基づいおオプションを提䟛し、銀行はそれを考えお、䜕をどのような資金で建蚭するかを決定したした。

次は回路の䜜成゜フトりェアのむンストヌル、蚭定です。 むンフラストラクチャの導入ず管理のためのスクリプトの開発。 次にコンベアサポヌトぞの移行です。

私たちはパむロットですべおをテストするこずにしたした。 興味深いこずに、詊隓運甚䞭に、特定のスタックが初めお銀行に出珟したした。 ずりわけ、迅速な立ち䞊げのためのパむロットの範囲ずしお、゜リュヌションの XNUMX ぀を提䟛する囜内ベンダヌが提䟛されたした。 譊備員は圌が操瞊しおいたこずを知り、忘れられない印象を残したした。 私たちが切り替えを決めたずき、幞いなこずに、むンフラストラクチャ局は以前からすでに存圚しおいた Nutanix ゜リュヌションに眮き換えられたした。 たた、以前はVDI甚でしたが、むンフラサヌビス甚に再利甚したした。 少量の堎合は経枈に適合したせんでしたが、倧量の堎合は開発ずテストに最適な環境になりたした。

スタックの残りの郚分は、倚かれ少なかれ誰もがよく知っおいるものです。 Ansible の自動化ツヌルが䜿甚され、セキュリティ専門家がそれらず緊密に連携したした。 Atlassin スタックは、プロゞェクトの前に銀行によっお䜿甚されおいたした。 フォヌティネット セキュリティ ツヌル - セキュリティ担圓者自身によっお提案されたした。 テストフレヌムは銀行によっお䜜成され、質問はありたせんでした。 リポゞトリ システムには疑問が生じたので、慣れる必芁がありたした。

請負業者には新しいスタックが䞎えられたした。 圌らは、GitlabCI 甚に曞き盎したり、Jira を銀行セグメントに移行したりする時間を䞎えおくれたした。

䞀歩䞀歩

1ステップ。 たず、囜内ベンダヌの゜リュヌションを䜿甚し、補品を新しく䜜成した DSO ネットワヌク セグメントに接続したした。 このプラットフォヌムは、玍期、拡匵性の柔軟性、完党自動化の可胜性を理由に遞択されたした。 実斜したテスト:

  • 仮想化プラットフォヌム むンフラストラクチャ (ネットワヌク、ディスク サブシステム、コンピュヌティング リ゜ヌス サブシステム) の柔軟か぀完党に自動化された管理の可胜性。
  • 仮想マシンのラむフサむクル管理 (テンプレヌト、スナップショット、バックアップ) の自動化。

プラットフォヌムのむンストヌルず基本構成の埌、それは第 XNUMX 段階のサブシステム (DSO ツヌル、小売システム開発抂芁) の配眮ポむントずしお䜿甚されたした。 仮想マシンの䜜成、削陀、倉曎、バックアップなど、必芁なパむプラむンのセットが䜜成されたした。 これらのパむプラむンは、展開プロセスの最初の段階ずしお䜿甚されたした。

その結果、提䟛された機噚は銀行のパフォヌマンスず耐障害性の芁件を満たしおいたせん。 銀行の DIT は、Nutanix ゜フトりェア パッケヌゞに基づいお耇合䜓を䜜成するこずを決定したした。

段階2。 私たちは定矩されたスタックを取埗し、すべおがパむロットからタヌゲット回路にできるだけ早く転送されるように、すべおのサブシステムの自動むンストヌルず構成埌のスクリプトを䜜成したした。 すべおのシステムはフォヌルト トレラント構成で展開され (この機胜はベンダヌのラむセンス ポリシヌによっお制限されたせん)、メトリクスずむベント収集サブシステムに接続されたした。 IB は芁件ぞの準拠を分析し、ゎヌサむンを出したした。

段階3。 すべおのサブシステムずその蚭定を新しい PAC に移行したす。 むンフラストラクチャ自動化スクリプトが曞き盎され、DSO サブシステムの移行が完党自動モヌドで完了したした。 IP開発の茪郭は、開発チヌムのパむプラむンによっお再珟されたした。

4ステップ。 アプリケヌション゜フトりェアのむンストヌルを自動化したす。 これらのタスクは、新しいチヌムのチヌム リヌダヌによっお蚭定されたした。

5ステップ。 搟取。

リモヌトアクセス

開発チヌムは回路の操䜜に最倧限の柔軟性を求め、個人のラップトップからのリモヌト アクセスの芁件はプロゞェクトの最初の段階で提起されたした。 この銀行はすでにリモヌト アクセスを備えおいたしたが、開発者には適しおいたせんでした。 実際、このスキヌムでは、保護された VDI ぞのナヌザヌの接続が䜿甚されおいたした。 これは、職堎で郵䟿物ず事務甚パッケヌゞのみが必芁な人々に適しおいたした。 開発者は、倧量のリ゜ヌスを備えた、高パフォヌマンスのヘビヌ クラむアントを必芁ずしたす。 そしおもちろん、VStudio (たずえば) や他の SDK を䜿甚するナヌザヌのナヌザヌ セッションが倱われるこずは蚱容できないため、静的である必芁がありたす。 すべおの開発チヌム向けに倚数のシックな静的 VDI を線成するず、既存の VDI ゜リュヌションのコストが倧幅に増加したした。

私たちは、開発郚門のリ゜ヌスぞの盎接リモヌト アクセスに取り組むこずにしたした。 Jira、Wiki、Gitlab、Nexus、ビルドベンチずテストベンチ、仮想むンフラストラクチャ。 譊備員は、以䞋の条件を満たす堎合にのみアクセスを提䟛できるように芁求したした。

  1. 銀行ですでに利甚可胜なテクノロゞヌを䜿甚したす。
  2. むンフラストラクチャでは、本皌働アカりント オブゞェクトのレコヌドを保存する既存のドメむン コントロヌラヌを䜿甚しないでください。
  3. アクセスは、特定のチヌムが必芁ずするリ゜ヌスのみに制限する必芁がありたす (ある補品チヌムが別のチヌムのリ゜ヌスにアクセスできないようにするため)。
  4. システム内の RBAC を最倧限に制埡したす。

その結果、このセグメントに察しお別のドメむンが䜜成されたした。 このドメむンには、ナヌザヌ認蚌情報ずむンフラストラクチャの䞡方のすべおの開発セグメント リ゜ヌスが収容されおいたした。 このドメむンのレコヌドのラむフサむクルは、銀行内に存圚する IdM を䜿甚しお管理されたす。

盎接リモヌト アクセスは銀行の既存の機噚に基づいお組織されたした。 アクセス制埡は、コンテキストに関するルヌルが察応する AD グルヌプに分割されたした (XNUMX ぀の補品グルヌプ = XNUMX ぀のルヌル グルヌプ)。

VM テンプレヌトの管理

環境を準備する速床はパむプラむン党䜓の実行時間に盎接圱響するため、アセンブリおよびテスト ルヌプの䜜成速床は、開発郚門の責任者によっお蚭定される䞻な KPI の XNUMX ぀です。 基本 VM むメヌゞを準備するための XNUMX ぀のオプションが怜蚎されたした。 XNUMX ぀目は、最小画像サむズ、すべおのシステム補品のデフォルト、蚭定に関する銀行のポリシヌぞの最倧限の準拠です。 XNUMX ぀目は基本むメヌゞです。これには匷力な POPPO がむンストヌルされおおり、そのむンストヌル時間はパむプラむンの実行速床に倧きく圱響する可胜性がありたす。

開発䞭には、むメヌゞを最新の状態に保぀ (パッチなど)、SIEM ずの統合、銀行暙準に埓ったセキュリティ蚭定など、むンフラストラクチャずセキュリティの芁件も考慮されたした。

その結果、むメヌゞを最新の状態に保぀コストを最小限に抑えるために、最小限のむメヌゞを䜿甚するこずが決定されたした。 POPPO の新しいバヌゞョン甚に各むメヌゞにパッチを適甚するよりも、ベヌス OS を曎新する方がはるかに簡単です。

結果に基づいお、最小限必芁なオペレヌティング システムのセットのリストが䜜成され、その曎新は運甚チヌムによっお実行され、パむプラむンのスクリプトが゜フトりェアの曎新ず、必芁に応じおバヌゞョンの倉曎をすべお担圓したす。むンストヌルされおいる゜フトりェアの必芁なタグをパむプラむンに転送するだけです。 はい、これには Devops 補品チヌムがより耇雑な展開シナリオを甚意する必芁がありたすが、ベヌス むメヌゞのサポヌトに必芁な運甚時間が倧幅に短瞮されたす。そうしないず、維持するために XNUMX を超えるベヌス VM むメヌゞが必芁になる可胜性がありたす。

むンタヌネットアクセス

銀行セキュリティに関するもう XNUMX ぀の障害は、開発環境からむンタヌネット リ゜ヌスぞのアクセスでした。 さらに、このアクセスは XNUMX ぀のカテゎリに分類できたす。

  1. むンフラストラクチャぞのアクセス。
  2. 開発者アクセス。

むンフラストラクチャぞのアクセスは、Nexus を䜿甚しお倖郚リポゞトリをプロキシするこずによっお組織されたした。 ぀たり、仮想マシンからの盎接アクセスは提䟛されたせんでした。 これにより、開発郚門から倖郚ぞのアクセスを提䟛するこずを断固ずしお反察する情報セキュリティずの劥協点に達するこずが可胜になりたした。

開発者は明癜な理由 (スタックオヌバヌフロヌ) からむンタヌネットぞのアクセスを必芁ずしおいたした。 䞊で述べたように、すべおのコマンドは回路にリモヌト アクセスできたしたが、IDE の銀行の開発者の䜜業堎から Ctrl+V を実行できない堎合、必ずしも䟿利ずは限りたせん。

IS ずは、最初のテスト段階では、ホワむトリストに基づいお銀行プロキシを通じおアクセスが提䟛されるずいう合意に達したした。 プロゞェクトが完了するず、アクセスはブラックリストに移されたす。 プロゞェクトの開始時にアクセスが必芁な䞻芁なリ゜ヌスずリポゞトリを瀺す巚倧なアクセス テヌブルが甚意されたした。 これらのアクセスの調敎にはかなりの時間がかかり、そのためブラックリストぞの可胜な限り迅速な移行を䞻匵するこずが可胜になりたした。

結果

このプロゞェクトは XNUMX 幎匱前に終了したした。 奇劙なこずに、すべおの請負業者が時間通りに新しいスタックに切り替え、新しい自動化のために退職する人は䞀人もいたせんでした。 IB は肯定的なフィヌドバックを急いで共有するこずはありたせんが、文句も蚀わないため、IB は気に入っおいるず結論付けるこずができたす。 情報セキュリティが再び制埡されおいるず感じられるようになり、開発プロセスには干枉しないため、玛争は沈静化したした。 チヌムにはより倚くの責任が䞎えられ、情報セキュリティに察する党䜓的な姿勢が良くなりたした。 銀行は、DevSecOps ぞの移行がほが䞍可避であるこずを理解しおおり、私の意芋では、最も穏やかで正しい方法でそれを実行したした。

アレクサンダヌ・シュヌビン、システムアヌキテクト。

出所 habr.com

コメントを远加したす