【セミナーレポート】安全なソフトウェアサプライチェーンの実現 ~後編~
※本セミナーのセッション資料・アーカイブ動画はこちら
※前編はこちら
こんにちは、SB C&Sの佐藤です。
2022年5月18日に「コンテナイメージスキャンは開発時に!~ シフトレフトでスピードとセキュリティを両立する方法とは?~」と題して、「SB C&S × Palo Alto × JFrog」の3社でウェブセミナーを共同開催しました。
本記事では後編として、JFrogから登壇いただきました三宅様のパート「安全なソフトウェアサプライチェーンの実現」についてから、以下の内容をレポートさせて頂きます。
・ソフトウェアサプライチェーンとは何か
・ソフトウェアサプライチェーンに対する攻撃とは
セミナー情報
概要
昨今、コンテナの開発初期段階からセキュリティを組み込んで手戻りの発生を防ぎスピードとセキュリティを両立させる『シフトレフト』が注目されています。
本ウェビナーではDevOpsやDevSecOpsプラットフォームを提供する「JFrog」とサイバーセキュリティの雄「Palo Alto Networks」の製品を組み合わせて実現するシフトレフトについて両社製品を連携させたデモを交えてご紹介いたします。
アジェンダ
- シフトレフトを実現するJFrogとPrisma Cloudの素敵な組み合わせ(SB C&S株式会社 竹石 渡)
- 安全なソフトウェアサプライチェーンの実現(JFrog Japan株式会社 三宅 剛史 氏)←本記事のレポート対象
- 近代のCloud Native環境に適するCI/CD Pipelineのあり方(Palo Alto Networks株式会社 CTO アジェイ ミスラ 氏)
- 両社連携デモ(JFrog Japan株式会社 三宅 剛史 氏、Palo Alto Networks株式会社 CTO アジェイ ミスラ 氏)
JFrogで実現するソフトウェアサプライチェーン
JFrogPlatformではパッケージ管理を行う「Artifactory」やセキュリティチェックを行う「Xray」、ディストリビューションを行う「Distoribution」、CICDのための「Pipeline」等をオールインワンで提供しています。
それらの機能がどのようにソフトウェアサプライチェーン攻撃に対しメリットを発揮するのかをご紹介します。
キュレーション(Artifactory)
JFrog内に存在する「リモートリポジトリ」が、開発者の代理となりパブリックリポジトリからコンポーネントをダウンロードしキャッシュした上で開発者に返します。このリモートリポジトリはコンポーネント取得元(例:DockerHub、GitHub、パブリッククラウド)毎に用意されます。これにより、悪意あるコンポーネントであっても直接開発者の手元に届いてしまうことを防ぐことが出来ます。
アップロードの際も同様で、JFrog内に存在する「ローカルリポジトリ」にアップロードを行います。ローカルリポジトリに関しても、環境毎(例:開発環境、QA環境)に作成することが可能です。
また、JFrogでは複数存在するリモートリポジトリとローカルリポジトリを仮想的に1つのリポジトリとして見ることの出来る「バーチャルリポジトリ」も保持しており、これにより開発者はバーチャルリポジトリにアクセスすれば良いということになり「どこからダウンロードしてきたものなのか」ということを意識する必要がなくなります。
加えてこれらのリポジトリには優先順位が決められており、バーチャルリポジトリに対しダウンロード要求があった場合は、以下の順に対象のコンポーネントを検索します。
①ローカルリポジトリ
②リモートリポジトリ
③どちらにも存在しない場合、リモートリポジトリが開発者の代理となりネットワーク上からダウンロード、リモートリポジトリにキャッシュし、開発者に返す
これらの処理は自動的に行うため、開発者が意識する必要はありません。
そしてキュレーションでは、必要とするコンポーネントに対し、検索対象とするリポジトリを設定することも可能です。また、正規表現を使用し検索対象リポジトリを設定することも可能です。そのため、自身がアクセス可能であるリポジトリに対し、優先度順にチェックすることが可能となります。
脆弱性チェック(Xray)
JFrogでは主にVulnDB(※注3)の商用セキュリティDBを基にして作られている「ザーク」と呼ばれるセキュリティメタデータを使用し、コンポーネントの脆弱性をチェックしています。
チェック対象となるコンポーネントに関しても、そのコンポーネントがどのような親子関係で作られているのかをデータ化した「コンポーネントグラフ」がArtifactoryにデータが保存された時点で作成されるため、このデータにザークを照らし合わせ、脆弱性のチェックを行っています。
また、発見された脆弱性に対しどのようなアクションを行うかの設定である「ポリシー」を当て込むことが可能です。例として、DevOps観点では「CICDパイプラインの中でビルド時に脆弱性が見つかった場合、ビルドをFailさせる」といったことを実現可能です。もしくは、脆弱性が見つかったコンポーネントはそもそもダウンロードをブロックするといった設定も可能です。
※注3:セキュリティ脆弱性インテリジェンスデータベース
署名付きパイプライン(Distoribution、Pipeline)
安全なソフトウェアサプライチェーンをエンドトゥーエンドで実現させるため、JFrogはではキュレーション以外にもCICDツールである「JFrogパイプライン」という機能を擁しており、これには「署名付きパイプライン」という機能があります。
ビルド時にSBOM(※注4)の作成を自動的に行うのだが、このSBOMは署名付きであり、手動管理が不可能な状態で作成されます。これにより「このSBOMはこのビルドで作成されたものである」という1対1のマッピングがされた、信頼された状態とすることが出来ます。
ディストリビューションの際にも、リリースされるものが改ざんされたものでないという証明のため、リリースバンドル(※注5)に対し、署名を行います。これにより、リリース先でもリリースバンドルが改ざんされていないか確認した上で環境への反映を行うことが可能になります。
※注4:Software Bill Of Materials、コンポーネントに含まれる全ての要素(ライセンス、依存関係等)を一覧化したもの
※注5:リリース対象のファイルをzip等で纏めたもの
JFrogではDevOpsのベンダとして「より簡単に、より迅速に」皆様のソフトウェアのアップデート行ってきましたが、上記で紹介した技術により、更に「より安全に」することを目指しています。
まとめ、感想
後編では「JFrogで実現するソフトウェアサプライチェーン」という内容をレポートさせて頂きました。前編でご紹介した脅威に対し、どのような対策が必要で、JFrogではそれらに対しどのようなアプローチを行っているのかについて、ご理解いただけたのではないでしょうか。
また、後編でレポートさせ頂いた対策をスクラッチで行っていくのには、かなりの時間と労力を必要とします。そんな時にあらゆる観点からソフトウェアを保護してくれるJFrogは、開発者にとって、より「開発に集中できる」ソフトウェアではないでしょうか。
「より簡単に、より迅速に、より安全に」、このビジョンの実現のため、是非JFrogのご利用をご検討下さい。
今後JFrogの導入を検討されることがございましたら、お問い合わせくださいませ。
関連リンク
セッション資料・アーカイブ動画はこちら
この記事の著者:佐藤梨花
勤怠管理システムの開発(使用言語:Java)に約8年間従事。
現在はエンジニア時の経験を活かしたDevOpsやDX推進のプリセールスとして業務に精励しています。
DevOps Hubのアカウントをフォローして
更新情報を受け取る
-
Like on Facebook
-
Like on Feedly