IaC の脆弱性を可視化! Visual Studio Code で Snyk IaC が利用可能になってました @snykjp #Qiitaアドカレ
この記事は「Snykを使って開発者セキュリティにまつわる記事を投稿しよう! by Snyk Advent Calendar 2022」の14日目です。 今回は Snyk が提供している Visual Studio Code の拡張機能のアップデートについてご紹介したい思います。
SHARP 水なし自動調理鍋 HEALSiO ヘルシオ ホットクックを狙っています。 (妻が)
Snykとは
Snyk は「デベロッパーファーストのセキュリティプラットフォーム」を標榜する、SaaS 型の SAST (静的解析)ツールです。弊社でも取り扱っています。
フリープランもあるためお気軽にぜひご利用いただけると幸いです。
中でも今回は Snyk IaC について焦点を置きご紹介しようと思います。
Snyk IaCとは
Snyk IaC とは、 IaC に関する脆弱性を静的スキャンする製品です。
デフォルトでは事前に Snyk 独自のルールセットを用意されており、ルールに反していないかチェックする製品になります。
また、「特定のタグがついている」などのカスタムルールも定義可能で、デプロイ前に脆弱性を検査できるツールとして非常に使いやすい製品となっております。
個人的なおすすめポイントは CloudFormation , Terraform , ARM ( Azure ), Kubernetes と幅広く IaC の脆弱性検出に対応している部分です。
Terraform にはなりますが、基本的な使い方は以下を併せてご覧いただければと思います。
本題
前置きが長くなりましたが本題です。
「Visual Studio Codeで Snyk IaC が使えるようになってました!!!!!!!!!!!!」
ブラボーです。ブラボー以外に言うことないです。嘘です。
今回のアップデートで以下の項目に関して Visual Studio Code で検出できるようになりました。
- Snyk OSS
- プロジェクトで利用しているOSSの直接的/間接的な依存関係をリストアップ
- リストアップされたOSSの中で脆弱性をチェックする
- Snyk Code
- アプリケーションコードの脆弱性をチェック
- アプリケーションコードの品質をチェック
- Snyk IaC ( New )
- IaCテンプレートの脆弱性をチェック
- Terraform , Kubernetes , CloudFormation, Azure Resource Manager のコードをチェックする
Visual Studio Code 上で確認すると確かに「IaC
」の文字が追加されていました。
前回
Snyk CodeとVSCodeで開発中コードのセキュリティスキャンをやってみたより引用
今回
やってみる
では、 IaC の脆弱性がどのように可視化されているのか確認してみましょう。
フリープランもあるためぜひご自身でお気軽にお試しください。
セットアップ方法
Visual Studio Code と Snyk アカウントの連携には、 Snyk CLI のインストールと Snyk アカウントへの認証が必要になります。
より詳しいセットアップ方法は、以下に記載されています。併せてご覧ください。
サンプルコード
今回は以下の Terraform コードを利用します。
検出される脆弱性は、2行目の最小パスワード文字数と、3行目のパスワードの最大有効期限です。
resource "aws_iam_account_password_policy" "policy" { minimum_password_length = 10 max_password_age = 90 require_lowercase_characters = true require_uppercase_characters = true require_symbols = true require_numbers = true allow_users_to_change_password = true }
検出されるルールについて解説します。
デフォルトのルールセットでは、パスワードの最小文字数は14文字以上にするルールがセットされています。
IAM requires minimum password length
デフォルトのルールセットでは、パスワードの最大有効期限は90よりも小さいにするルールがセットされています。
IAM should have max password age
Visual Studio Code上で確認
Snyk IaC のチェックはファイルを保存したタイミングで実行されます。
スキャンが完了すると、概要が「問題」タブに検出されたコードの脆弱性が表示されます。
ここから真骨頂です。
必ずしも問題タブを開いておく必要はありません。 と言うより、コードを見ると全部出てきます。
自動的にどの部分がどのようにが悪いのか、コード上で可視化できます。(今回のアップデートに気が付いたのも、この機能があったからです。)
しかも問題タブに比べて、脆弱性情報の閲覧が Visual Studio Code 上で完結するんです。感動しませんか...
Ignore
脆弱性を Ignore (無視)するには、 Snyk アカウント内の Organizations で設定します。
パスワードの最小文字数のルールを無視するように設定します。
再度テストを行うと、パスワードの有効期限のみ検出 (波線でマーキング) されるようになりました。
.snykファイルについて
結論、.snyk
ファイルを用いた脆弱性の管理はVisual Studio Codeでは対応していなかったです。
SCM 統合や、 Snyk CLIの実行では、検出対象のフォルダ内に.snyk
ファイルを仕込むことで、フォルダ配下の脆弱性を無視することもできます。
当初、.snyk
ファイルでも脆弱性を無視できるかなと思っていたのですが対応していませんでした。今後に期待ですね!
スキャン頻度に注意!
スキャン頻度に注意です。
Visual Studio Code でのスキャンはファイル保存時に1回行われます。
そのため、フリープランでご利用いただいている方は、1ヶ月あたり300スキャンまでの制約があるため注意が必要です。
なお、現在の使用量(スキャン回数)は Snyk アカウントの Usage から確認できます。
また、Visual Studio Code を利用した Snyk IaC のスキャンは拡張機能設定からオン/オフを切り替えれます。
まとめ
以上、「 IaC の脆弱性を可視化! Visual Studio Code で Snyk IaC が利用可能になってました」でした。
Snyk IaC が Visual Studio Code で確認できるようになったのは、とってもアツいアップデートだと思います。
面白そう!と思われた方は是非、フリープランからお試しいただけると嬉しいです。
以上、AWS事業本部コンサルティング部のたかくに(@takakuni_)でした!