シフトレフトを実現するSnykについて
「リリース直前に脆弱性が見つかって、公開が延期に…」
「セキュリティチームからの指摘で、大幅な手戻りが発生してしまった…」
多くの開発現場で、このような経験はないでしょうか。
このジレンマを解決する鍵が、「シフトレフト」という考え方と、それを強力に支援するツール**「Snyk(スニーク)」です。
この記事では、Snykが気になっているあなたへ、基本からSnykがどのようにしてそれを実現するのかを見ていきます。
「シフトレフト」とは
まずは、「シフトレフト」についてみていきましょう。
開発プロセスを左から右への直線(企画 → 設計 → 開発 → テスト → リリース)で思い浮かべてみてください。
従来のセキュリティ対策は、このプロセスの右側、つまり開発が完了した後の「テスト」や「リリース」の段階で行われるのが一般的でした。
しかし、この方法では、プロセスの最終段階で問題が見つかると、原因の特定に時間がかかり、修正のために設計段階まで遡る「手戻り」が発生してしまい、コストの増大や開発スケジュールの遅延につながる可能性もあります。
そこで「シフトレフト(Shift Left)」という考え方です。
これは文字通り、セキュリティへの取り組みを開発プロセスのより左側、つまり「開発」や「設計」といった早い段階に移行させようというアプローチです。
開発者がコードを書いているその場で問題を特定し、修正できれば、手戻りは最小限に抑えられます。
この「シフトレフト」を具体的に実現してくれるのが、DevSecOpsツール「Snyk」です。
Snykは、開発者が普段使っているツールに連携し、セキュリティチェックを自動化することで、開発のワークフローを妨げることなくシフトレフトを実践できるように設計されています。
Snykには4つの機能があります。
Snyk Open Source
Snykは、プロジェクトが依存しているOSSをスキャンし、package.json
や pom.xml
といったマニフェストファイルを基に、既知の脆弱性を持つライブラリがないかを即座に特定します。
脆弱性の深刻度や、修正可能なバージョンを提示してくれるため、開発者は迅速かつ的確に対応できます。
Snyk Code
Snyk Codeは、開発者自身が書いたコードをリアルタイムで静的解析(SAST)し、セキュリティ上の問題となりうるコードパターンを検出します。IDEの拡張機能を使えば、コーディング中に具体的な問題箇所と修正例が提示されます。
コーディングの段階で具体的な箇所と修正例を教えてくれるのです。
Snyk Container
Snyk Containerは、Docker HubやAmazon ECRといった各種コンテナレジストリに保存されたイメージの脆弱性をスキャンし、その結果をSnykのダッシュボードで一元管理できます。
Snyk Infrastructure as Code
Snyk IaCは、TerraformやKubernetesなどのIaC(Infrastructure as Code)ファイルに潜む設定ミスを自動で検出する開発者向けのセキュリティツールです。
Snyk CLI
Snykの強力な機能は、Web UIだけでなくCLIからも手軽に利用できます。CI/CDパイプラインへの組み込みも簡単です。
# 主要なコマンド
$ snyk test # 脆弱性スキャン
$ snyk monitor # 継続的なモニタリング
$ snyk test
Testing /.../goof...
Tested dependencies for known issues, found 98 issues, 279 vulnerable paths.
Issues to fix by upgrading:
Upgrade body-parser@1.19.1 to body-parser@1.20.3 to fix
✗ Asymmetric Resource Consumption (Amplification) [High Severity][https://security.snyk.io/vuln/SNYK-JS-BODYPARSER-7926860] in body-parser@1.19.1
introduced by body-parser@1.19.1 and 1 other path(s)
✗ Prototype Poisoning [High Severity][https://security.snyk.io/vuln/SNYK-JS-QS-3153490] in qs@6.9.6
introduced by body-parser@1.19.1 > qs@6.9.6 and 2 other path(s)
Upgrade check-dependencies@1.1.0 to check-dependencies@2.0.0 to fix
✗ Prototype Pollution [Low Severity][https://security.snyk.io/vuln/SNYK-JS-MINIMIST-2429795] in minimist@0.2.1
introduced by check-dependencies@1.1.0 > bower-config@1.4.3 > minimist@0.2.1 and 18 other path(s)
✗ Excessive Platform Resource Consumption within a Loop [High Severity][https://security.snyk.io/vuln/SNYK-JS-BRACES-6838727] in braces@2.3.2
introduced by check-dependencies@1.1.0 > findup-sync@2.0.0 > micromatch@3.1.10 > braces@2.3.2 and 1 other path(s)
✗ Denial of Service (DoS) [High Severity][https://security.snyk.io/vuln/SNYK-JS-DECODEURICOMPONENT-3149970] in decode-uri-component@0.2.0
introduced by check-dependencies@1.1.0 > findup-sync@2.0.0 > micromatch@3.1.10 >
/// (以下省略)
まとめ
「シフトレフト」は、開発のスピードと品質、そしてセキュリティを高い次元で両立させるための、実践的なアプローチです。
Snykは、そのシフトレフトという考え方を、開発者の日々の業務にスムーズに組み込むための最も強力なツールの一つです。セキュリティチェックを自動化し、問題を早期に発見・修正できる環境を整えることで、より速く、より安全なソフトウェアを実現できます。
Snykに関するブログも沢山展開されていますので、是非こちらもご覧ください。
この記事がどなたかのお役に立てば幸いです。
以上、きだぱんでした。