IaC の脆弱性を可視化! Visual Studio Code で Snyk IaC が利用可能になってました @snykjp #Qiitaアドカレ

Visual Studio Code から Snyk IaC がスキャン可能になってました! とっても使いやすいアップデートのためぜひお試しいただけると嬉しいです!
2022.12.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

この記事は「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 の脆弱性がどのように可視化されているのか確認してみましょう。

以後は Snyk アカウントにご登録いただいた後に確認できる項目になります。
フリープランもあるためぜひご自身でお気軽にお試しください。

Snyk JPホームページ

セットアップ方法

Visual Studio Code と Snyk アカウントの連携には、 Snyk CLI のインストールと Snyk アカウントへの認証が必要になります。

より詳しいセットアップ方法は、以下に記載されています。併せてご覧ください。

サンプルコード

今回は以下の Terraform コードを利用します。

検出される脆弱性は、2行目の最小パスワード文字数と、3行目のパスワードの最大有効期限です。

iam.tf

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_)でした!