DevSecOpsを一歩進めることができるバイナリ・リポジトリマネージャー(BRM)
ここで横田氏は「自分たちで書いて生成したソースコードだけを管理・チェックするのでは足りません。アーティファクトも管理しましょう」とバイナリ・リポジトリマネージャー(以下、BRM)の活用を提案する。BRMとはアーティファクトの保管専用ツールであり、アーティファクトの脆弱性やライセンスのチェックができるSCAツールと組み合わせて使うことができるものだ。
しかしここで疑問が沸くのではないだろうか。「ソースコードがあればアーティファクトを作れるのだから、わざわざ別に管理する必要はないのでは」と。横田氏はこの疑問に対して「同じソースコードをビルドしても、アーティファクトの中身が同じになるとは限らないため」と説明する。依存解決の際に含まれるOSSのバージョンが変わるかもしれないし、ビルド時のフラグや設定の差異で結果が異なることもありえる。
さらに、アーティファクトはビルドにより一度作られると、テストやデプロイのさまざまな段階で何度も使い回す。使う度にアーティファクトを刷新していては、「検品済みのものを出荷する」ことができない。せっかくテストやSCAを行っても、それと違うアーティファクトをリリースするのでは効果が弱まる恐れがある。また、ビルドにはそれなりの時間がかかる。それなら本番まで同じものを使うほうが時間を節約できて、流動的な要素を減らすことができて確実だ。
アーティファクトをBRMに保存して管理するとしよう。保存するものは2種類ある。これまで説明したように自分たちのソースコードからビルドして作成したアーティファクトに加えて、Docker Hub、Maven Central、npmなど外部から取得したアーティファクトもある。
前者についてはこれまで説明したとおり。後者は外から取ってくるわけだが、必要になるたびに取得するのではなく、保存しておけば2回目以降のダウンロード時間を短縮可能だ。何らかの障害で取得できない時に備えておくこともできる。どちらもSCAツールで定期的にセキュリティスキャンを実施し、問題があれば修正するまで使用できないように設定できる。
このようにBRMはセキュリティの組み込みの他にもビルド時間の短縮や品質の担保に効果的なツールと言えるわけだが、今回のテーマ「DevSecOps」を考えるときにはやはりSCAとの連携が肝となる。CI/CDパイプラインの中でビルド時とリリース時にスキャンを行うことで、開発ライフサイクルにセキュリティが組み込まれることになる。DevSecOpsを1つ実現したと言えるだろう。
横田氏は「SCAツールを導入したら、OSSスキャンは当然実施することとして定着させること」と釘を刺した。「今回は忙しいからスキップ」などとルールが形骸化してしまったら意味がない。またスキャンで問題が発覚したときのフローもあらかじめ決めておくといい。こうしてセキュリティチェックも自動化することにより、人間がより重要な判断に時間を費やせるようになる。
最後に横田氏は「みなさんの組織ではどうでしょうか」と問いかけた。DevOpsやDevSecOpsの理解が浸透している環境だろうか。「なぜやらなくてはいけないの?」という疑問が最初の大きなハードルとなる。
特に、上司を説得したり組織全体を巻き込んだりするところで苦労する人も多い。ただ、セキュリティはこうした壁を越えるのにも効果的である。「開発が効率化される」「運用がしやすくなる」といったメリットに比べて「セキュリティ対策ができる」というのは誰にとっても分かりやすく、所謂マネージャーや経営層を巻き込むきっかけにしやすいからだ。これを越えることができたら、以降は楽になる。アーティファクトの管理、CD/CDパイプラインの整備、CD/CDパイプラインにセキュリティを組み込む、というようにステップアップしていけばいい。
「自分の組織でできていること、できていないことを分析し、取り組めるところから始めましょう。まずは身近な仲間と話すことから始めてみては。自分が楽になり、幸せになることを考えて行動すればチームや、ひいては会社のためになります」(横田氏)
JFrog Platformで早速DevSecOpsを始めてみませんか
JFrog Artifactoryによるバイナリ管理を中心とした継続的インテグレーション(CI)と継続的デプロイメント(CD)の実現が可能です。まずは無料版からお気軽にお試しください。:JFrog Platformご利用開始ページ