Skip to main content

コンテナを安全に扱う

著者
Headshot of Tales Casagrande

Tales Casagrande

feature safe containers

2022年6月22日

0 分で読めます

この記事の執筆者は Tales Casagrandeです。 Snyk Ambassadorは、セキュリティに関する専門知識を積極的に共有しています。ぜひ今日から参加してみませんか。 登録はこちら!

海運業界では、コンテナの形式にISO 668が採用されています。これは、コンテナを安全に積み重ねるための標準規格です。

世界中の人々にさまざまな用途で使われる、異なるアプリケーションを実行する複数のコンテナで構成されたアプリケーションを想像してみてください。

ソフトウェアにおけるコンテナの安全性

現代のソフトウェアは、船と大きく変わりません。プロジェクト内で複数のマイクロサービスを「積み重ね」、環境の開発とセキュリティを担当するチームがいます。そして、誰かが重大なミスをすれば、すべてを失う可能性があります。開発とセキュリティの観点から、コンテナについて考えてみましょう。

  • 本番環境に導入するイメージを信頼できますか?その出所は確かですか?

  • セキュリティ上の問題がないか、セキュリティテストを実施していますか?

  • 修正の優先順位はどのように決めていますか?

  • ベースイメージには、アプリケーションの実行に必要な最低限のものだけが含まれていますか?

  • 開発チームはベストプラクティスを常に把握していますか?

  • セキュリティチームは開発中に支援していますか?それとも、脆弱性が見つかったときに責任を追及するだけですか?

すべての質問に答えられなくても大丈夫です!このまま読み進めてください。いくつかヒントをご紹介します。

Snyk Containerで分析を始める

ここでの目的は、セキュリティチームと開発チームの間にある壁を取り払い、膨大なレポートを作成するのではなく、基準に基づいてコンテナの脆弱性に優先順位を付けるための情報を両チームに提供することです。

例として、意図的に脆弱性を含むテスト用アプリケーション(本番環境での使用は推奨されません)が含まれるsnyk-goofリポジトリを使いましょう。このアプリケーションをSnyk Containerで分析します。Snyk Containerを使えば、脆弱性の修正を簡単かつ効果的に自動化でき、開発者は問題への対応に集中できます。

まず、アカウントを作成してください(無料です!)。すでにアカウントをお持ちの場合は、ログインしてください。Projects > Add projectに移動します。

GitHub、Docker Hub、CLI、その他のオプションを表示するプロジェクト追加メニュー。「公開GitHubリポジトリを監視」がハイライト表示されています
公開GitHubリポジトリを監視するSnykのインターフェース。snyk/snyk-goofと「リポジトリを1件インポート」ボタンが表示されています

新しくインポートしたプロジェクトに分析結果が表示されるまで、数分かかる場合があります。Snykではコード、ライブラリ、コンテナを分析できます。今回はコンテナに注目します。

Dockerfileとpackage.jsonのコード解析結果を表示するSnykプロジェクトダッシュボード。深刻度別の件数と直近のテスト日を確認できます

Dockerfileを見てみましょう。重大なインフラの問題を抱えたコンテナを、沖合まで輸送しますか?そうは思いませんよね。いくつか質問してみましょう。

  • どこから始められるでしょうか?

  • これらの問題には、それぞれどの程度の優先順位を付けるべきでしょうか?

では、対応計画を立てるために、次の点を検討しましょう。

  • 誰かがこれらの欠陥を悪用する可能性はありますか?

  • この欠陥を悪用できる悪意のあるコード(既存のエクスプロイト)が、すでにインターネット上に存在しますか?

  • ソーシャルメディアで、この欠陥について話題にしている人はいますか?

  • 修正プログラムはありますか?

各脆弱性には、共通脆弱性評価システム(CVSS)によるスコアが付与されています。このスコアの算出には、攻撃対象領域、攻撃の複雑さ、ユーザーの関与、必要な権限などの基準が含まれます。

OpenSSLとcurlのパッケージに関する脆弱性の検出結果を表示したダッシュボード。深刻度、スコア、悪用状況、修正版が示されています。

Snyk Containerは、それぞれの脆弱性について役立つ情報を数多く提供します。

python3.5-minimalの重大なディレクトリトラバーサルの脆弱性を示すセキュリティパネル。CVE-2019-9948と修正済みパッケージのバージョンが表示されている。

この例では単一のイメージを扱っていますが、大規模な環境を想像してみてください。どのような状況になるでしょうか?先ほどの質問に基づいて、ベースラインを作成できます。

脆弱性の件数と深刻度を基準に、Node.jsイメージを比較してベースイメージのアップグレードを推奨する表。

この画像は、Snyk Codeによるベースイメージのアップグレード推奨を示しています。これらのアップグレードによってリスクを低減できるため、別のベースイメージを探したり、アップグレードを試みたりする時間を節約できます。

Snyk CLIで同じ分析を実行する

今回はグラフィカルユーザーインターフェースを使って分析しました。しかし、開発チームはコマンドラインやIDEで作業することが多いため、別途ログインする手間をなくし、Snyk CLIで同じ分析を実行してみましょう。

Snykコンソールでインテグレーション > CLIに移動し、お使いの環境に応じた手順に従ってください。先ほどと同じプロジェクト:snyk-goofを使います。

snyk-goof GitHubリポジトリのgit cloneが完了し、オブジェクトの転送とファイルの更新が100%に達したことを示すターミナル。

それでは、イメージをビルドしましょう。

Node.jsアプリケーションのDockerビルドが成功したことを示すターミナル画面。キャッシュされたビルド手順とイメージ名library/java-goofが表示されている

ここからが楽しいところです!CLIを使って分析を始めましょう。

「snyk container test snyk-goof」コマンドと、snyk-goofのコンテナ依存関係を分析しているメッセージが表示されたターミナル
Node.jsのベースイメージで1,033件の脆弱性が検出されたことと、アップグレードおよび代替イメージタイプの推奨事項を示すターミナル出力。

コンソールとCLIでは、異なる日にテストしたため結果に少し違いがありますが、Snyk CLIで実行した分析でも、同じベースイメージのアップグレードが推奨されています。

メトリクスに基づく分析のメリット

新たな脆弱性は絶えず発見されます。すべての問題の修正に立ち止まるわけにはいきません。優先順位を付け、自動化し、影響が最も深刻になり得る箇所に取り組む必要があります。メトリクスに基づく分析によってチーム間のノイズを減らし、コンテナを安全に運用する方法をすばやく見つけられます。

開発者ファーストのコンテナセキュリティ

Snykは、コンテナイメージとKubernetesワークロードの脆弱性を検出し、自動的に修正します。

続きを読む

blog feature snyk container custom base recommendations
Blog

Evo Agentic AppSecのご紹介:AI開発のスピードに追随するセキュリティ

AIを活用した開発は、従来のセキュリティワークフローを上回るスピードで進んでいます。SnykのAgentic AppSecは、セキュリティエージェントが脆弱性を継続的に検出、修正、検証し、人が基準を定められるようにします。

feature insights context
Blog

自律型攻撃はすでに始まっている。防御もそのスピードに追いつかなければならない。

自律型攻撃者によって、防御に使える時間は短くなっています。継続的な検出、修復、検証、予防で、セキュリティチームが攻撃に歩調を合わせる方法をご紹介します。

feature insights context
Blog

予防は、本質的に解決済みの問題なのでしょうか?

エージェントが生成するコードの予防策はアーキテクチャ上解決されていますが、開発を遅らせることなくセキュリティを守る制御を選ぶことが、依然として課題です。