SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2022 Summer レポート(PR)

セキュリティ対策とDevOpsを効率的に加速する「シフトレフト」の実践法とは?【デブサミ2022夏】

【D-2】シフトレフトがゴールなの?セキュリティだってプロダクティビティで勝負!

  • このエントリーをはてなブックマークに追加

 開発プロセスの上流側でセキュリティ対策を行うことで、迅速な開発を実現する「シフトレフト」。デベロッパーならではのアプローチを使えば、より効率的に行うことが可能となる。開発者が実装するセキュリティ対策や効果的なプロセス改善などについて、Snykのシニアソリューションズエンジニアの相澤俊幸氏が解説する。

  • このエントリーをはてなブックマークに追加
Snyk株式会社 シニアソリューションズエンジニア 相澤俊幸氏
Snyk株式会社 シニアソリューションズエンジニア 相澤俊幸氏

セキュリティのシフトレフトはコード化とlaCによって前進する

 ソフトウェアテストに関するバグ修正の相対的コストは、開発フェーズが後工程になればなるほど指数関数的に増えていく。逆に言えば、早いタイミングで修正しておけば、簡単に修正することができる。それを示したのが、以下の図である。

 設計時の修正コストを1とすると、コーディングのタイミングではそれが5倍になる。統合テストのタイミングでは10倍。受け入れテストになると15倍、リリース後だと30倍になるというわけだ。

異なる開発フェーズにおけるバグ修正の相対的コスト
異なる開発フェーズにおけるバグ修正の相対的コスト

 セキュリティや脆弱性に関しても、同様の傾向があると相澤氏は指摘する。

 「セキュリティのシフトレフト、つまり早いタイミングに開発の上流側でテストを行い、脆弱性対策をとることでコストが削減できる。さらに、生産性向上や迅速な開発が実現できるのです」(相澤氏)

 セキュリティのシフトレフトは、本番もしくはクラウドランタイムで行ってきた作業を上流側で行う。つまり、CI/CDでスキャンを行うキットと連携し、コーディングのタイミングで実行すればコストが下がり、効率的になるというのだ。

 「シフトレフトを行う場合、脆弱性をスキャンして修正するのは開発者です。そこでこのプロセスを、SnykではDeveloper Securityという言葉で提唱しています」(相澤氏)

 ここで相澤氏は視聴者に向けて、2つの質問を投げかける。

  1. laC(Infrastructure as Code)はセキュリティツールか?
  2. laCツールを導入すれば、シフトレフトは実現できるか?

 これには正解があるわけではなく、あくまでも認識であると前置きしながら、相澤氏の回答は以下である。

1の回答:セキュリティツールと言ってよい

 laCとは、これまでGUIやCLIで設定していたものをコード化することであり、laCのソースファイルは一般的にテンプレートと呼ばれている。つまり、「再現性を高める」「ミスを減らす」効果を求めて使っている人が多く、コードで管理していれば、問題が発生したときも後で確認することができる。セキュリティを高めるという意味では、laCはセキュリティツールと言えるのではないだろうか。

2の回答:実現するわけではない

 laCは、シフトレフトを実現するための必要条件。セキュリティのシフトレフトをする上では、まずコード化されていなければコード化する必要がある。つまり、コード化することによって、本番に適用する前にスキャンすることができるというわけだ。

セキュリティのシフトレフト
セキュリティのシフトレフト

 では、脆弱性スキャナーにはどのようなものがあるのか。相澤氏はクラウド時代のアプリケーションに潜むリスクを、氷山に例えて説明した。

 まず、表層となる一番上のアプリケーションのコード、2番目が上のカスタムコードから呼び出されるオープンソースのライブラリ。そしてモダンなアプリケーションの場合、これらはコンテナとしてパッケージ化されるコードが3番目。それらをクラウドにデプロイするときにインフラとなるInfrastructure as Code(laC)が4番目となる。

 これらのコードベースにはすべて脆弱性が混入されるリスクがあり、スキャンする対象となる。さらに、オープンソースで提供、または無償で使えるツールも紹介された。

 例えば、アプリケーションのカスタムコードでは、Snyk Code、GitHub CodeQL、SonarQubeなど。オープンソースのライブラリであれば、Snyk Open Source、OWASP Dependency-Check、GitHub Dependabot。コンテナはSnyk Container、Aqua Trivy、AWS ECR Basic Scanning。laCについては、Snyk Infrastructure as Code、Bridgecrew checkov、Aqua Trivyなどである。

 「シフトレフトはTest early, test often。スピードに加え、頻繁に行うということを考えると、自動化するツールを導入することは非常に大事です」(相澤氏)

Snyk Developer Securityプラットフォーム活用のメリット

 続いては、Snykが推奨するDeveloper Securityについて解説が行われた。繰り返しになるが、Developer Securityとは自身の開発したアプリケーションに対して、開発者が脆弱性のスキャンを行うこと。デベロッパーが主役のセキュリティ対策である。

 Snyk Developer Securityのツールを使えば、開発者自身がソフトウェア開発ライフサイクル(SDLC)全体でセキュリティ対策が実行できる。さらに、「セキュリティ担当と開発者、両方のチームに使っていただける点がポイント」だと、相澤氏は強調する。

 具体的な流れとしては、コーディングをしながらIDEと連携して、脆弱性をスキャンする。見つかったらその場で修正をする。Gitと連携して、さらにCI/CDにSnykのスキャンを組み込んで、使うことも可能だ。さらに、本番環境やクラウド環境で稼働するアプリケーションに混入する新たな脆弱性、例えばLog4Shellなどにも対応することができる。

 「それぞれのフェーズで、これまでの開発ツールを使いながら連携することができるのも、Snykらしい特徴。一つのプラットフォームでコードから混入する脆弱性全体へ対策することが可能なのです」(相澤氏)

 クラウド時代のモダンなアプリケーションのプラットフォーム構造に当てはめると、それぞれの4つのコードに対し、SnykはSnyk Code、Snyk Open Source、Snyk Container、Snyk laCという4つの製品で脆弱性対応ができる。

 Snykは無料で使えるフリープランを提供しており、このプランでは月間のテスト回数に制限がある。その場合でもパブリックリポジトリを対象とする場合は、Snyk Open Sourceのテストは回数無制限で使うことができる。

Snykが提供するセキュリティ製品
Snykが提供するセキュリティ製品

 Snyk Developer Securityプラットフォームの特徴は、以下の4つが挙げられる。

  1. デベロッパーファーストへのこだわり(開発ワークフローへの統合)
  2. 業界トップレベルの脆弱性データベース
  3. 脆弱性の自動修正、Priority Scoreによるトリアージの機能
  4. 情報セキュリティガバナンスを支える一元的な管理機能

シフトレフトとDevSecOpsの関係性とは

 では、プロダクティビティを高めていくためにどんなことができるのか。ソフトウェア開発ライフサイクル(SDLC)は、DevOpsを導入することによって開発スピードが速くなる。その要因を相澤氏は3つにまとめている。

 1つは「継続的なプロセス」。継続的にサイクルを回していけば、継続的にリリースすることができる。2つめは「自律的なチーム」。開発チームがコードを書いてGitにプッシュし、ビルドやテストを経てリリースをするプロセスをすべて行うことで、他のチームに頼らなくてすむ。それを成り立たせる上では、3つめの「作業の自動化」、ツールの活用が非常に重要となる。

 最近は、DevOpsにセキュリティの観点を加えた「DevSecOps」という継続的なプロセスが注目されている。開発とセキュリティの間で継続的なプロセス、自律的なチーム作業の自動化を促進していくことで、セキュリティ対策もスピードアップしていくという考え方だ。

DevSecOps
DevSecOps

 ここからは、いくつかのセキュリティ対策に関する悩みに注目しながら、Snykを活用することでどう改善できるのかについて紹介していく。

初期設定・初回スキャンの手間

 まずは、「導入の際に、初期設定、初回スキャンに手間がかかる」という悩みである。相澤氏は、実際にSnykを使ったデモを行い、3分弱でインストールから初回スキャンまで行えることを示した。

スキャン結果の共有

 「スキャン結果を整理して、他部署に共有するのが面倒」といった悩み。Snykはレポートの機能があるので、特別な作業は必要なく、組織全体で共有することが可能である。

検出された脆弱性の無視

 誤検知や実害のない脆弱性の対応など、「ノイズの対応がわずらわしい」といった場合、Snykであれば不要な検査結果はワンクリックで無視することができる。

修正の自動化

 「修正作業に時間がかかる」場合は、自動修正、プルリクエストを作成してくれる機能が便利だ。10分以上かかる修正作業が、数十秒ほどでスピーディーに脆弱性修正完了することができるデモも披露された。

高いスキャン精度

 「誤検知が多い」という悩みには、高いスキャン精度が頼りになる。Snykでは脆弱性データベースに注力しており、数多くの脆弱性を正確に検知できる「Snyk Vulnerability Database」を提供している。Docker、Red Hat、Google、AWSなど、多くの企業がこのサービスを導入していることからも、確かな信頼性を感じるだろう。

 最後に相澤氏は以下のように語り、セッションを締めた。

 「シフトレフトはセキュリティ対策における大事なステップであり、マイルストーンです。DevSecOps的なアプローチでセキュリティ対策の生産性を向上させるためにも、Snyk Developer Securityをぜひ試してみてください」(相澤氏)

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/16318 2022/09/02 12:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング