Snyk IaCの2021年の振り返りと2022年への抱負

本記事は2021年12月22日に公開した英語ブログ[Snyk IaC in 2021: Leading infrastructure as code security for developers](https://snyk.io/blog/snyk-iac-review-2021/)の日本語版です。

Snykのセキュリティプラットフォームは、下記の4つの製品を提供しています。

* Snyk Open Source: オープンソースコードの脆弱性を発見し、修正することができます。
* Snyk Code: アプリケーションコードの脆弱性を発見し、修正することができます。
* Snyk Container: コンテナイメージの脆弱性を発見し、修正することができます。
* Snyk Infrastructure as Code: Kubernetes、Helm、Terraformの設定ファイルの脆弱性を発見し、修正します。

そのうち、本日のブログはSnyk Infrastructure as Codeについて、2021年の製品アップデートのまとめと、2022年の方向性についての話になります。

![logo-solid-background.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2216557/d8d176b0-44b8-1302-1f30-bf1ed9fb6a87.png)

大きな自動化には、大きなリスクが伴います。Infrastructure as Codeの登場によって、パブリッククラウドにおけるリソースのデプロイ、プロビジョニング、管理といった面倒な作業を、宣言型スクリプトにより自動化することが可能になりました。しかし、この自動化により、安全なIaCスクリプトや設定を作成する重要性が高まり、2021年の[Snyk Cloud Native Application Securityレポート](https://snyk.io/state-of-cloud-native-application-security/)では、**2020年から2021年にかけて懸念が高まった最大の分野（58％）として、クラウドインフラの設定ミスが挙げられています**。 セキュアでないAWS S3バケットや不用意に外部からアクセスできるインスタンスなど、1つのIaCの誤構成が企業全体に数十の脆弱性をもたらす可能性があります。

[Snyk Infrastructure as Code (Snyk IaC) ](https://snyk.io/product/infrastructure-as-code-security/)は、デベロッパーファーストのソリューションで、開発中および [CI/CD パイプライン](https://snyk.io/learn/what-is-ci-cd-pipeline-and-tools-explained/)での IaC構成のセキュリティを確保できるようにDevOpsチームを支援します。業界のベストプラクティス、コンプライアンスフレームワーク、AWS、Azure、GCPなどのクラウドプロバイダーにマッピングされた何百もの独自の定義済みルールと照合し、Snyk IaCは、開発チームにセキュリティを組み込み、ポリシー施行の自動化と設定ミスの迅速な修正を支援します。

2021年、Snyk Infrastructure as Codeは、

* Gitリポジトリだけで2億3千5百万回のテストを実行
* 今年に入ってから800万件以上の問題を検出
* ルールカバレッジを拡張し、AWS、Azure、GCP、Kubernetesの合計413のユニークなミスコンフィギュレーションをカバー
* スキャン速度が20倍に向上

ここで、Snyk Infrastructure as Codeが、**市場をリードするデベロッパーファーストのIaCソリューションになるため**に、この1年で達成した進歩を振り返り、総括したいと思います。

端的に言うと、より多くの構成フォーマットとコンテンツ、強化された開発者体験、そして開発者ワークフローとの統合についてです。

# より多くのインフラ構成フォーマットに対応し、当社独自のルールセットを追加
開発チームとセキュリティチームがすべてのインフラストラクチャをスキャンできるように、Snyk IaCはTerraform、CloudFormation、Kubernetes（Helmを含む）、Azure Resource Manager（ARM）のテンプレートを含む設定フォーマットの長く継続的な拡張リストをサポートしており、今後もさらに追加していく予定です。

2021年には、[AWS CloudFormation](https://snyk.io/blog/scan-aws-cloudformation-misconfigurations-snyk-iac/)とAzure環境のユーザー用の[ARMテンプレート](https://snyk.io/blog/scanning-azure-resource-manager-arm-templates-misconfigurations-snyk-cli/)のサポートをリストに追加し、すべての主要なクラウド環境にわたる包括的なカバレッジを強化しています。

![blog-aws-cf-config-scan.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2216557/9eae508a-cc7a-ea9a-13e1-d767b572d054.png)
【スクリーンショット】GitリポジトリワークフローによるCloudFormation(CF)ファイルのスキャン

また、2021年は、Snyk Securityチームが調査し、脅威をモデル化し、コンプライアンスフレームワークにマッピングした400以上のユニークな誤設定について、継続的に改善する年でもありました。

合計で私たちが導入したのは...

* AWSの66の新ポリシー
* Azureの66の新しいポリシー
* GCPに関する41の新しいポリシー
* Cloudformation形式をサポートする133のポリシー
* Azure Resource Manager形式をサポートする119のポリシー
* Terraform Kubernetesプロバイダ形式をサポートする41のポリシー

Snyk IaC は、すべての主要なクラウドプロバイダー、Terraform、Kubernetes 形式において、お客様企業内で発見される設定ミス問題の数を総合的に改善し、セキュリティチームによる何百何千ものルールセットやポリシーの調査および作成という集中的なプロセスの負担を軽減します。

> 私たちは、実行環境におけるインフラの脆弱性につながる問題を（手動レビューなしで）発見できるよう、包括的なカバレッジを求めました。Snyk は、さまざまな IaC リポジトリをすべて可視化する素晴らしい方法でした。
[Natera社、Director of Security Engineering、Charlotte Townsley](https://snyk.io/case-studies/natera/)



定義済みのベストプラクティスのルールセットに加え、最近、Snyk IaC用のカスタムルールを発表し、新たなレベルのセキュリティの個別性と柔軟性を提供するようになりました。ベストプラクティスのルールセットではカバーできない特定のシナリオがある場合、Snyk Custom Rules SDK と Regoを活用して、タグ付けの標準化やクラウドリソースの事前承認リストの確立などのユースケースに関するルールセットの作成、テスト、バンドル、公開を行うことができるようになりました。

![blog-snyk-iac-2021-custom-rule-1240x582.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2216557/bb796b54-380f-b024-2daa-98335dc21171.png)
【スクリーンショット】Snyk CLI でタグ付けの標準化を強制するカスタムルール

# 開発者体験の継続的な改善
開発者のために作られたIaCツールは、リポジトリの優れた可視性を提供するだけでなく、開発者の開発環境に対応し、問題を迅速かつ正確に発見し、コードに沿った修正を導くことができます。**Snyk IaC は、設定ミスに対する実用的で自動化された修正ワークフローにより、開発者の利便性について高い標準を定めています**。

![blog-snyk-iac-2021-ci-cd.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2216557/d9992792-8dad-5a43-ce9e-8795e6670dba.jpeg)
【上記スライド】Snyk IaCは、IaCファイルをできるだけ早い段階でIDEにてスキャンします。

今年初めには、統合開発環境（IDE）上で直接IaCスキャンを自動化する[Snyk Plugin for JetBrains](https://plugins.jetbrains.com/plugin/10972-snyk-vulnerability-scanner/reviews)を発表しました。この強力な新機能により、スキャンを完了すると、数秒以内に開発者向けの実行可能な修正アドバイスを得ることができます。私たちは、開発者のワークフローにネイティブにフィットし、既存のワークフローに改善を加えることで、開発者のためのセキュリティインテリジェンスの品質と体験を向上させるために、常に改善を繰り返しています。

<iframe width="560" height="315" src="https://www.youtube.com/embed/fgXe2ovHVV8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

これに伴い、ローカルマシンまたはCI環境での[Snyk CLIでのIaCのスキャン](https://snyk.io/blog/snyk-cli-cheat-sheet/)を2021年にリリースしました。CLIを介したスキャンにより、IaCテストの速度が向上し、また、すべてのテスト結果がローカルに保持され、Snykに出力されないため、組織のセキュリティが強化されます。以下は、Snyk CLIでKubernetesとTerraformのファイルをスキャンする例です。


```
$ snyk iac test /path/to/Kubernetes.yaml
$ snyk iac test /path/to/terraform_file.tf
```

これに加えて、IaCテストを実行する際に[IaC脆弱性を無視する機能](https://snyk.io/blog/improve-security-by-knowing-when-to-ignore-iac-vulnerabilities/)を追加しました。開発者は無視ルールによって自分に関係のない問題を効果的に排除し、厄介な通知を排除するプロセスを自動化することができます。以下は、Snyk CLIのパブリックに読み取り可能なバケット脆弱性のインスタンスを無視する例です。


```
# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
version: v1.22.0
# ignores vulnerabilities until expiry date; change duration by modifying expiry date
ignore:
  SNYK-CC-TF-18:
    - '*':
        reason: Blog bucket should be open
        expires: 2021-09-17T10:57:56.635Z
        created: 2021-08-18T10:57:56.637Z
patch: {}
```

#より効果的なインテグレーション（統合）
そして、その過程で築いたパートナーシップやインテグレーションについて、とても重要と考えています。Snyk IaCは、コード開発やGitリポジトリからCI/CDパイプラインまで、開発ライフサイクルの早い段階から横断的に統合していますが、2021年にはTerraformワークスペースまで統合を拡大しました。

現在、弊社のお客様の39%以上が、インフラのプロビジョニングと管理にHashicorpのTerraformを使用しています。私たちの使命は、セキュリティをDevOpsのプロセスに組み込み、開発者に専門的なセキュリティガイダンスを提供することです。その使命に向けて、Terraform Cloudとの統合をベータ機能として発表しました。Snykと[Terraform Cloud](https://snyk.io/blog/snyk-developer-security-hashicorp-terraform-cloud-workflow/)を組み合わせることで、IaCスキャンを自動化し、AWS, Azure, GCP, Kuberenetesの400以上のセキュリティルールやポリシーと照らし合わせて、「適用」段階前のTerraformの修正からTerraformの「実行」までのステップを効率化し、開発者にストレスのない修正と理解しやすいコンテキストを提供することができます。

最後になりますが、10月に[CloudSkiffの買収](https://snyk.io/blog/snyk-welcomes-cloudskiff-accelerates-infrastructure-as-code/)により、オープンソースのドリフト検出ツールDriftctlの開発チームが当社に参加しました。Driftctlは、コミュニティに対して無償で提供され、オープンソースであるため、私たちはDriftctlの技術に継続的に投資し、コミュニティを成長させ、創造的な新しいワークフローを考え出し、今後数ヶ月でSnyk IaCにドリフト検出と管理されていないインフラを検出する機能を統合していく予定です。

#2022年に向けて
クラウドへの移行やIaCツールの採用が進むにつれて、[IaCセキュリティ](https://snyk.io/learn/infrastructure-as-code-iac/)の重要性も高まっています。IaCは不十分なアプリ・インフラの設定のまま攻撃に曝されるアプリケーションがリリースされる経路を増やします。

IaCのセキュリティは、2021年、10月に発生した[Twitchのデータ流出](https://www.reuters.com/technology/amazons-twitch-hit-by-data-breach-2021-10-06/)において、設定ミスが侵入手段であることが判明し、さらに分析した結果、Terraformのコードでデータベース認証情報が漏洩していることがわかり、世界の注目を浴びました。

[Snyk Infrastructure as Code](https://snyk.io/product/infrastructure-as-code-security/)は、Terraform、CloudFormation、Kubernetes、ARMテンプレート、およびその他のIaC形式をカバーしており、すでに他社と一線を画しています。また、Snykが提供するものであれ、お客様の組織が提供するカスタムポリシーであれ、開発ライフサイクル全体にわたってIaCにおけるより多くの独自の設定ミスを発見するために、私たちはセキュリティの深化に継続的に投資していくつもりです。来年には、DriftCTLのプラットフォームへの統合や、管理対象（および非管理対象）リソースの変更を検出する機能など、エキサイティングな新機能が予定されています。

また、開発者体験にもこれまで以上に注力し、お客様のチームの要件や好みに応じたワークフローを提供しています。これには、Snyk CLI の改善、デベロッパーフレンドリーな修正を直接開発環境に組み込むJetbrains IDEsの新しいプラグイン、Terraform Plan情報のセキュリティを強化するSnykのTerraform Cloud統合（現在パブリックベータ版）が含まれています。

2022年はSnyk Infrastructure as codeにとってイベント盛りだくさんの年になるでしょう。

Snykの社員一同、皆様が素晴らしい冬休みを過ごし、幸せな（そして安全な）新年を迎えられることを願っています。

#最後に
Snykでは公式SNSを開設しました。ぜひ[Twitter](https://twitter.com/snykjp)と[Facebook](https://www.facebook.com/snykJP/)のフォローをお願いします。

またSnykの日本語公式ウェブサイトも公開しました。[https://www.snyk.io/jp](https://www.snyk.io/jp) 
ぜひ応援よろしくお願いします！

なお、Snykは無料でお試しいただけます。ぜひお試しください。

https://qiita.com/SnykSec/items/aa80a976eb17299fff62


Snykを活用したブログは、ぜひQiitaアドカレ2021もご参照ください。

https://qiita.com/advent-calendar/2021/snyk