1.はじめに
スカラパートナーズAdventcalendar15日目担当です。気づけば折り返しも過ぎてしまいました。。。
今回はここ最近話題の脆弱性診断ツールSnykでどうやらCDKで構築したインフラの脆弱性診断ができるということでやっていきます。
2.Snykとは
Snykは、私たちが書くCode,オープンソースの依存関係,コンテナイメージ,IaCの設定に潜むセキュリティにおける脆弱性を検知し、優先度づけし、修正できるプラットフォームです。大きく以下の4つのラインナップを機能として提供しています。
- Snyk Code
- Snyk Open Source
- Snyk Container
- Snyk IaC
また、さまざまな使い方をすることができるのも魅力の一つです。
- Web
- 設定やissue,reportのフィルタリング、修正機能を提供
- CLI
- 脆弱性スキャンをローカルマシンで実行したり、パイプラインに組み込んだりできる
- IDEs
- 開発環境に埋め込める
- API
- プログラム上でSnykと連携できる
3.各機能の簡単な概要と参考になる記事
下記今回のSnykアドカレを中心に各機能の概要掴むために、自分がみた記事を参考とさせていただきました。
Snykの機能/観点 | 概要 | 参考記事 |
---|---|---|
Code | 開発者が書くコードの脆弱性を見るだけでなく、コードの修正方法のサンプルも合わせて提供 | 生成AIのセキュリティ脅威をSnykで防ぐ! |
Open Source | ・オープンソースパッケージの依存関係に潜む脆弱性をみて、脆弱性への実用的な修正アドバイスを提供し、プルリクエストを自動作成する修正ワークフローをサポート。定期的な自動スキャン (デフォルトでは日次) を行い、新たな脆弱性が検知された場合に速やかに通知 | SnykでOSSプロジェクトの脆弱性を調べてみる |
Container | ・コンテナイメージの脆弱性をみる。コンテナイメージのファイルシステムのスキャンにより、ベースイメージや、パッケージマネージャのマニフェストファイル、それ以外でインストールされたソフトウェアの脆弱性も検知・また、他のベースイメージとの比較もレポートすることで、より安全なコンテナイメージの作成をサポート。定期的な自動スキャン (デフォルトでは日次) を行い、新たな脆弱性が検知された場合に速やかに通知 | アプリの脆弱性もインフラの脆弱性もSnykで全部漏らさず対処しよう! |
IaC(今回) | ・IaC に含まれる設定ミスを、クラウドプロバイダのベストプラクティスや CIS ベンチマーク、また Snyk による脅威モデルの調査結果などをもとにしてスキャン。Open Policy Agent を利用して、独自のカスタムルールを作ることも可能。実際にクラウドへのプロビジョニングをする前に IaC の設定ミスやセキュリティ上の問題の修正方法を確認。 | Snykを使用したIaC脆弱性診断をやってみた |
4.実際にインフラコードの脆弱性検出してみる
今回は上記のSnyk IaCを利用してインフラコードの脆弱性検出をしてみます。
1.まずはじめに公式サイトを参考にsnykをインストールしてください。
2.次にSnykのアカウント内で「設定ファイルの検知が有効化」されていることと、「該当のクラウドプロバイダーが提供するIaCサービスにチェックがついていること」を確認します。
今回、CDKのインフラコードの脆弱性検出をしたいので、AWSのCloudFormationにチェックがついていることを確認します。
3.自分が脆弱性チェックしたいCloudFormationスタックテンプレートをcdk CLIから生成します
cdk synth [該当のスタック] #cdk.out直下にjson形式のCFnテンプレートが吐き出される
4.いざ脆弱性診断
snyk iac test cdk.out/[該当のスタック].json
こんな感じに大量の検出結果と、最後にSummaryが吐かれました。
一応、critical,highはないので、大丈夫そう?
念の為Medium,Lowの中をざっとみているとLowには「Load balancer is internet facing.」といった割と厳しめのものがある一方でMediumには「RDS automatic backup is disabled」といったような重要なものまでさまざまありました。
実はそれぞれのサービスポリシーに対するrate設定(Low~High)はSnykのアカウント側で自分で設定できます。なので組織のポリシーに従って「これはしっかり設定していた方がいいよね」というものはhighにあげる等、気づきやすくするのも良い取り組みだと思います。
まとめ
今回、Snyk IaCを使用して自分がCDKで構成したインフラコードの脆弱性診断をしていきました。脆弱性もそうですが、シンプルな設定ミスなどかなり広範かつ、重要な点を検知してくれて非常に助かりました。
皆さんも自分の書いたインフラコードの設定ミス、脆弱性等をSnykで確認することをお勧めします。