Snyk IaCのスキャン機能を強化:AzureとAWSのInfrastructure as Codeに対応
2021年2月23日
0 分で読めます以前、Infrastructure as Code(IaC)についての記事で、SnykのIaCスキャンを使えば、テンプレートがプロビジョニングに進む前に問題を検出できることを紹介しました。エンジニアリングチームは、脆弱性や問題からプラットフォームをより確実に保護できるよう、IaCスキャンポリシーの範囲を継続的に拡大しています。
この記事では、IaCスキャンツールを紹介し、Azure、GCP、AWSのInfrastructure as Codeなど、最近追加された機能を確認するとともに、チームでDevSecOpsの取り組みに活用する方法を解説します。
IaCをスキャンする理由
IaCテンプレートには、さまざまなデプロイ環境でアプリケーションをどのような状態で実行するかが宣言的に記述されています。Dockerfileなどのアーティファクトと同様に、手動デプロイに伴う経験則や一連の手順を取り込み、標準化された再現可能な手順にまとめた、自動化された運用手順書のようなものだと考えています。実行前にレビューやテストを行えるのも利点です。また、コードレビューや承認などのソフトウェア開発の原則を、インフラストラクチャコードにも適用できます。Snykのスキャンツールは、既存のIaCテンプレートを厳選されたポリシーとベストプラクティスに照らして自動レビューし、検出された問題の詳細な説明と修正方法を含むレポートを作成します。
IaCに関する懸念の多くは、従来の意味での「脆弱性」ではありません。通常、IaCの利用者はゼロデイ脆弱性によってIaCの定義が突然侵害されることよりも、セキュリティチームやアーキテクチャチームが定めたポリシーや標準への準拠を重視します。そのため、コードの変更時にテストするのが一般的であり、プッシュやプルリクエストのタイミングでパイプライン内のテストを実行するパターンとよく合います。
しかし、Kubernetesは万全の計画を台無しにすることがあります。たとえば、すべてのKubernetesバージョンで悪用可能と判明したKubernetes Serviceの中間者攻撃の脆弱性です。CVE-2020-8554として指定されたこの脆弱性は、2020年12月8日に公表されました。この記事を書いている時点では、この脆弱性に対するパッチはまだありません。Snyk IaCによるモニタリングを設定していたユーザーには、更新されたポリシーが速やかに追加され、独自にスキャンを実行していなくても、継続的なSnyk GitHubスキャン機能の一環としてアラートが自動的に届き始めました。

IaCやSnykのスキャンの仕組みについて詳しく知りたい方は、Infrastructure as Code Toolsの記事をご覧ください。
Infrastructure as Codeのセキュリティスキャンに最近追加された機能
Snyk IaCが当初スキャン対象としていた問題は、Kubernetes、Helm Charts、TerraformのAWSリソースでした。リリース以降、Snykのエンジニアは新しいポリシーを継続的に追加してスキャン範囲を広げています。最近追加された主な機能は次のとおりです。
TerraformのAWS Infrastructure as Code
次のような領域をカバーする100以上のポリシー:
S3のアクセス制御とログ記録
Lambda、EC2、EKSにおける機密データに関する各種チェック(ハードコードされたシークレットや不適切な設定など)
さまざまなサービスで保存データが暗号化されていない状態を検出
IAM権限に関する不適切なプラクティス
TerraformのAzure Infrastructure as Code
Azureにも対応し、次の項目をカバー:
ログ記録のベストプラクティス
App Serviceのベストプラクティス
MySQL:SSLとアラートに関する問題
次のようなPostgreSQLに関する各種問題:
SSL
接続のスロットリング
ログ記録
ストレージアカウントのアクセスと暗号化に関する問題
Google Cloud Platform(GCP)
新たにGCPリソースも対象となり、次の項目をカバー:
IAMユーザーの割り当て
GCPのKubernetes関連の問題
Kubernetes
新しいポリシーにより、KubernetesとHelmのリソースに対するカバレッジもさらに充実しています。具体的には次のとおりです。
コンテナのチェック項目:
SSHポートの公開
ホストデバイスのマウント
livenessプローブの欠落
など
外部IPを持つサービス(前述のCVE-2020-8554スキャン)
次のようなPSPのチェック:
過度に許可範囲の広いボリュームマウント
Seccomp
AppArmorに関する問題
コンテナプロセスでのroot GIDの許可
IaCコードのスキャンは簡単
Snykは、セキュリティを簡単に活用できるようにすることを大切にしています。開発者のワークフローに合ったツールを提供することで、脆弱性やセキュリティ上の問題を発生源で解消し、積極的に対処できるよう支援できると考えています。
Snyk.ioで無料アカウントを作成すれば、すぐにIaCテンプレートのスキャンを始められます。
Snykが今年取り組んできた内容については、同僚のJim ArmstrongとDaniel Bermanが最近公開したこちらの記事をご覧ください。2020年にSnykが発表したCloud Native関連の機能やお知らせをまとめています。
2021年をこれまでで最も安全な年にしましょう!
ソースコードの段階からインフラを保護
Snykはワークフロー内のIaCセキュリティとコンプライアンスを自動化し、構成ドリフトや不足しているリソースを検出します。
