コンテナセキュリティを始めるのに有用なドキュメント3つと無料ツール5つの紹介

145件のシェア(ちょっぴり話題の記事)

「コンテナセキュリティってなんか必要そうやねんけど、実際なにすんの?」

先日、我らがDevelopers.IO Cafeにおいて、クリエーションライン株式会社 (CREATIONLINE, INC.)様と共催で、以下のイベントを開催しました。

あなたのコンテナ運用大丈夫?コンテナセキュリティの考え方と対応策 - connpass

全部で3セッションで構成されているのですが、私の方では、「コンテナセキュリティ関連OSSの紹介」と題して、コンテナセキュリティこれから検討始めようという方に向けて、そのとっかかりに有用なドキュメントと無料ツールを紹介させていただきました。

ドキュメントもツールもどれも有用なものなので、コンテナセキュリティについて不安や必要性を感じている人は、これらの中から実際に読んだり試してみたりしてもらえればと思います。

(祭) ∧ ∧
 Y  ( ゚Д゚)
 Φ[_ソ__y_l〉     コンテナセキュリティ マツリダワッショイ
    |_|_|
    し'´J

セッション資料

Speakerdeckに挙げたのはこちら。

この記事は、上記セッション資料を元にブログ記事として最構成したものです。関連情報の補足、およびリンク先の利用にはスライドよりこっちのほうが確実に便利なので、この記事中心に見てください。

このセッションで伝えたいこと

皆さん コンテナを運用する上で、セキュリティ上の 不安を感じていることと思います。コンテナセキュリティについて 具体的な対策を立てている方はおられますかね。

具体的な解決策としては、本日、先程説明いただいたaqua Container Securityなども有力な選択肢となります。

Aqua - Container Security, Serverless Security & Cloud Native Security

ただ、「実際に試してみるにしても、なんか大変そう…」という気持ちになる人も多いかもですね。そこで、「まずはOSSで気軽に試してもらいながら、コンテナセキュリティの必要性を肌で感じてもらいたい」、というのが本セッションの主旨となります。

本日紹介するものの一覧はこちら。

  • ドキュメント
    • Google Cloud コンテナセキュリティ
    • NIST Application Container Security Guide
    • CIS Docker Benchmarks
  • OSS
    • aqua MicroScanner
    • Clair
    • Trivy
    • Dockle
    • aqua kube-hunter

ここで、突然ドキュメントを紹介している理由がこちら。

一度、コンテナセキュリティについてのドキュメントでコンテナセキュリティの全体像を把握しておくことで、商用製品含めた各製品やツールの位置付けを捉えることができます。

ほな、いってみよ!

「Google Cloud コンテナセキュリティ」

Kubernetes Engine のコンテナ セキュリティ  |  Google Cloud

Google Cloudが提唱するコンテナ環境を保護するための考え方をまとめたドキュメントで、以下の3つの分野で、それぞれどういった対処が必要かが、紹介されています。

  • インフラストラクチャのセキュリティ
  • ソフトウェアのサプライチェーン
  • ラインタイムセキュリティ

コンテナの実行により、根本的に異なるセキュリティモデルが必要になることが解説されています。

このドキュメントの素晴らしさは、コンテナ環境におけるセキュリティの考慮事項が非常にコンパクトにまとめられていることにつきます。10分ぐらいで読めつつ、コンテナセキュリティの概観を即座に掴むことができるので、コンテナセキュリティ気になる方は、まずはこれを読むことをオススメします。

「NIST Application Container Security Guide」

Application Container Security Guide | NIST

National Institute of Standards and Technology(NIST)がまとめた、アプリケーションコンテナテクノロジーのセキュリティ上の問題に関する報告書です。全部で63ページの英語のドキュメント。

セキュリティ上の脅威を回避するためにセキュリティ対策を実施すべき領域として5つの分野を指摘し、それぞれの対応策も提示されています。

  • イメージリスク
  • レジストリリスク
  • オーケストレーターリスク
  • コンテナリスク
  • ホストOSリスク

コンテナを扱う上での代表的なセキュリティリスクが、ベンダーニュートラルに幅広く全体網羅されているので、非常に汎用性が高く原理原則を俯瞰するのに最適なドキュメントです。

ボリュームがたっぷりな英語のドキュメントなので正直ちょっとひくけれど、それぞれの項目で記載されている内容は具体的かつ簡潔なので、ある程度コンテナについて経験があるかたはすらすら読んでしまえるんじゃないでしょうか。

今後、いろんなコンテナセキュリティ製品がでてきたときも、このドキュメントの知識をベースにすることで、その製品のできることできないことや特徴を把握しやすくなると思うので、一読をオススメします。

「CIS Docker Benchmarks」

CIS Docker Benchmarks

Dockerコンテナやそのホスト環境に対して、セキュリティ上注意しておくべき項目を説明したガイドライン。全部で220ページほどの分量で、診断項目の分類は以下の通り。

  • Host Configuration
  • Docker daemon configuration
  • Docker daemon configuration files
  • Container Images and Build File
  • Container Runtime
  • Docker Security Operations
  • Docker Swarm Configuration

ドキュメント自体はかなり膨大で、Dockerそのものと、それをホストするホストOS側の設定についても細かく触れられているのが特徴です。

Docker社では、このガイドラインに則りDocker環境を診断するツールとしてdocker/docker-bench-securityを提供しているので、ドキュメント読むのめんどくさい!というひとは、まずはこちらのツールを試してみるのが早いんじゃないでしょうか。

以下のページで詳細に解説されているので、合わせて参考にしていただければ。

「aqua MicroScanner」

aquasecurity/microscanner

aqua社が提供するOSSのコンテナイメージ静的脆弱性診断ツール。利用までのステップは以下の通り。

  • 利用に必要なトークンの取得
  • Dockerfileに4行追加
    • 脆弱性スキャン用バイナリを取得して中で実行

便利なツールではあるんですが、Dockerfileを書き換える必要があるので、日常的なスキャン設定やCI/CDパイプラインへの組込にはあまり適さないです。

細かい利用方法は、こちらを参照ください。

「Clair」

coreos/clair: Vulnerability Static Analysis for Containers

CoreOS社開発のコンテナイメージ脆弱性スキャンツール。ビルトインデータソースが豊富。

Debian Security Bug Tracker, Ubuntu CVE Tracker, Red Hat Security Data, Oracle Linux Security Data, Amazon Linux Security Advisories, SUSE OVAL Descriptions, Alpine SecDB, NIST NVD

  • https://github.com/coreos/clair/blob/master/Documentation/drivers-and-data-sources.md

GitHubのREADMEも非常に充実していて情報量が多い。実行には、PostgreSQLが必要。導入手順はこちらを参照。

対象の脆弱性スキャン対象データベースも非常に多く機能が充実しているのですが、導入してスキャンするまでのハードルが、他のツールに比べて高く感じました。

参考資料

JAWS-UGコンテナ支部で用意されているハンズオンをやるのが、最初のとっかかりには良さそうなので、ぜひ一度こちら参考にしていただくのをオススメします。

また、AWSブログにも、terraformで、スキャン環境一式をterraformで作る記事もありますので、興味ある方はこちらもどうぞ。

「Trivy」(オススメ)

knqyf263/trivy: A Simple and Comprehensive Vulnerability Scanner for Containers, Suitable for CI

作者はスッキリごん!(@knqyf263)さん。シンプルで実行が簡単なコンテナイメージの脆弱性スキャンツール。

インストール、脆弱性スキャン共にものすごい簡単です。例えば、Macの場合、インストールはこちら。

$ brew install knqyf263/trivy/trivy

脆弱性スキャンはこちら。

$ trivy <your_container_image_uri>

こんだけです。最初の実行時は、実行環境に脆弱性に関わるデータベースを構築するため時間がかかりますが、その後は早い。

README.mdも非常に充実してます。

各オプションの解説だけじゃなく、メジャーどころのCI(Travis CI, CircleCI)への組込コード例や、プライベートリポジトリへの認証設定方法、他の脆弱性私見検知ツールとの比較まであるので、コレ眺めているだけでも楽しい。

ワンライナーで実行可能、かつ対応する脆弱性データベースが豊富で非常にオススメです。是非一度触ってみてください。

参考資料

試してみたブログはこちら。

Clairに引き続き、TrivyもJAWS-UGのハンズオンがあります。こっちも要チェックやで!

「Dockle」(オススメ)

goodwithtech/dockle: Container Image Linter for Security, Helping build the Best-Practice Docker Image, Easy to start

作者は、Tomoya AMACHI(@tomoyamachi)さん。こちらもイメージ名指定だけで脆弱性検出が可能なツールです。

インストールと利用方法は、Trivy同様非常にシンプル。Macの場合、インストールはこちら。

$ brew install goodwithtech/dockle/dockle

脆弱性検出方法はこちら。めっちゃ簡単。

$ dockle [YOUR_IMAGE_NAME]

Trivyと大きく違うところは脆弱性スキャンの対象。Trivyは、主にCVEなどの脆弱性データベースがスキャン対象になっていたのとは違って、DockleはDockerfileのベストプラクティスやCISベンチマークが検出対象になっています。

  1. Build Best practices Docker images
  2. Build secure Docker images

特に、Docker Benchでは対応していないCIS Benchmarkに対応しているのは素晴らしい。

また、オリジナルのチェックポイントも充実しています。

Dockleも非常に使いやすく、独自のポイントでイメージのセキュリティ検査やDockerfileのベストプラクティスも実施してくれるため、非常にオススメです。特にキャラが違うTrivyとの併用が良いですね。

参考資料

作者の@tomoyamachiさんが、関連記事を挙げています。

また、DockerHub上位800イメージに対する、DockleとTrivyの診断結果がまとめられたページもあります。これをみると、それぞれのツールで、どんな脆弱性試験結果が検出できるのか一覧できるため、こちらも一読することをオススメします。

aqua kube-hunter

aquasecurity/kube-hunter: Hunt for security weaknesses in Kubernetes clusters

aqua社が開発した、kubernetes環境に対する脆弱性試験ツールです。kubernetesクラスターやワーカーノードに対して、ワンライナーで30項目以上の脆弱性試験が可能です。

これも、実行方法はめちゃくちゃ簡単。自前でKubernetes環境を構築したり、ワーカーノードを作成している場合に、その脆弱性を検査するのに非常に有用です。

参考資料

基本的な使い方とツールの概要は、こちらのブログにまとめているので、合わせて参照ください。

まとめ「まずは、コンテナセキュリティを身近に感じてもらうためのきっかけに」

以上、3種のドキュメントと5種のツールを紹介しました。

コンテナセキュリティって一言でいっても、対策には従来のアプリケーションとは根本的に違う観点が必要です。コンテナのイメージに含まれるパッケージの脆弱性ももちろん脅威の対象になりえますが、それをホストするサーバー自体の管理、イメージに含まれてしまう機密情報、外部ネットワークの適切な遮断と制御、不適切なイメージの混入に対する防御など、実施項目は多岐にわたります。

結局は、それら一つ一つに対して適切な対策をとっていく必要があるんですが、正直全体像がわかりにくくて、なにか始めるにしても最初の一歩が億劫だと思います。

そういうときに、まずは今日紹介したドキュメントを参考にしてもらいつつ、最初に手元にあるイメージに対して脆弱性検査をし、そのスキャン結果を確認することで、「おうふ、こんなん出てるで。さて、これええのかな?」と必要性を検討するための材料としてみてください。

なにかえげつないのがでてきたら、それはチャンスです。

それでは、今日はこのへんで。濱田(@hamako9999)でした。