DevSecOpsも実現できる。コンテナアプリを脅威から簡単・確実に守る方法コンテナセキュリティ、5つの勘所とは?

Web/モバイルアプリケーションが重要な顧客接点となっている近年、ITサービス開発・改善のスピードを獲得するべく、コンテナ活用に乗り出す企業が増えている。だが重要なのは「スピード」だけではない。セキュリティも確実に担保しなければ自社の社会的信頼を失墜させてしまう。ではスピードやポータビリティといったコンテナのメリットを享受しながら確実にセキュリティを担保するためにはどうすればよいのか? コンテナセキュリティに詳しいソフトバンク コマース&サービスの竹石渡氏に話を聞いた。

» 2018年12月07日 10時00分 公開
[PR/@IT]

開発・改善のスピードを重視するあまり、セキュリティがおろそかに……

 デジタルトランスフォーメーションのトレンドが進展し、ビジネスがソフトウェアの戦いに変容して久しい。テクノロジーを使った新たな体験価値、より良い利便性を生み出す「企画力」と、ニーズに合わせて迅速にソフトウェアに落とし込む「スピード」がビジネス差別化の一大要件となり、今やWebサービス系に限らず、金融、流通など多くの業種でDevOpsに取り組む企業が増えつつある。

 こうした中、DevOps実践のキーテクノロジーとして、企業の注目を集めているのがDockerやKubernetesに象徴されるコンテナ技術やコンテナ管理ソフトウェアだ。言うまでもなく、開発スピードを上げるだけでは、今求められているアプリケーションを迅速にエンドユーザーに届けることはできない。「開発したアプリケーションを本番環境にデプロイするまでのリードタイム」をいかに短縮できるかがカギになる。

 その点、コンテナ技術は「ホストOS上の他のプロセスから隔離されたアプリケーション実行環境」を構築する技術。コンテナによってアプリケーションをパッケージ化することで、開発したアプリケーションを開発環境とは構成が異なる本番環境にもそのままデプロイできるようになる。つまり、従来は人手中心で行っていたデプロイ作業を、コンテナとコンテナ管理ソフトウェアを使って標準化・自動化することで、本番環境に展開するスピードを大幅に高めることができる。これを生かし、CI/CDを実践する企業も増えつつあるなど、コンテナとコンテナ管理ソフトウェアの活用は、「ソフトウェアの戦い」を勝ち抜く上での一大要件となっているのだ。

 ただ、コンテナへの注目度が増し、そのメリットも広く認識されつつある中で、コンテナのセキュリティリスクも顕在化しつつある。ソフトバンク コマース&サービスの竹石渡氏は次のように話す。

ALT ソフトバンク コマース&サービス
ICT事業本部MD本部 技術統括部
テクニカルマーケティングセンター
ビジネス開発課/CISSP 竹石渡氏

 「新しいテクノロジーが登場すると、攻撃者は必ず狙ってくるものです。コンテナ技術も例外ではありません。例えばコンテナに仮想通貨マイニングマルウェアを仕込んでDocker Hubにプッシュすることで、不特定多数にマルウェアをばらまき収益を上げているグループも存在するなど、悪用されるケースは次第に増えつつあるようです」

 特に懸念されるのは、DevOpsやコンテナに対する注目度は高まっているものの、具体的な取り組みについては手探り状態という企業が少なくないことだという。「つまりコンテナ環境を構築することがまず優先され、その分セキュリティに対する意識が薄くなっているケースが目立つ」のだという。

 ITサービス開発・提供のスピードアップ――すなわちビジネス展開のスピードアップはコンテナ導入の大きなメリットだ。だがスピードを重視するあまり、セキュリティを担保できず情報漏えいなどを起こしてしまうようでは、ビジネスどころか自社の社会的信頼・ブランドを失墜させてしまう。コンテナのメリットを生かし切り、収益向上、競争力強化につなげるためには、コンテナセキュリティを確実に担保することが大前提となるのだ。

NISTによる「コンテナ、5つのリスク」

 では、コンテナセキュリティはどのように担保していけばいいのか。そこで竹石氏が参考として紹介するのが、NIST(米国立標準技術研究所)が提供しているアプリケーションコンテナセキュリティガイド「SP 800-190」だ。SP 800-190は2017年9月に公表されたコンテナセキュリティのベストプラクティスで、コンテナの「5つのリスクと対策」を解説している。

 1つ目は「イメージリスク」だ。具体的には、コンテナイメージに潜む脆弱性、アクセス制御など設定の不備、コンテナイメージへの埋め込みマルウェア、暗号化せずに保存されるシークレット情報、信頼されないコンテナイメージの利用などを指している。

 2つ目は「レジストリリスク」。コンテナイメージを配布するレジストリへの安全でない接続、レジストリ上での古く脆弱性の残ったイメージの配布、不十分な認証とアクセス制御の不備などが挙げられている。

 3つ目は「オーケストレータリスク」。これはコンテナをデプロイ/管理するためのツールに関連するリスクであり、無制限の特権アクセス、権限のない者によるアクセス、コンテナ内部トラフィックの不十分な分離、機密情報を扱うワークロードの混在、オーケストレーターのノードの信頼性などを指す。

 4つ目は「コンテナリスク」。ランタイムソフトウェアに潜む脆弱性、各コンテナからの無制限なネットワークアクセス、信頼できないコンテナのランタイム設定、アプリケーションの脆弱性などを指す。

 5つ目は「ホストOSリスク」。ホストOSそのものが備えるリスクであり、攻撃領域の広さ、カーネルを共有するリスク、OSコンポーネントの脆弱性、不適切なユーザーアクセス権限、ファイルシステムの書き換えなどを挙げている。

 「NIST SP 800-190では、こうしたリスクに対してベストプラクティスを推奨しています。例えば『一般的な脆弱性スキャンツールではなく、コンテナに特化した脆弱性スキャンツールを使うこと』『コンテナレベルでファイアウォールを設置すること』『情報機密度のレベルに応じてグルーピングすること』などです。全ての対策を俯瞰すると、必要性に基づいた確実なアクセス制御と、コンテナに特化したセキュリティ対策の実施が柱になると言えるでしょう」

コンテナセキュリティを担保する機能を包括的にカバー「Aqua Container Security Platform」

 ただ前述のように、コンテナ活用自体もいまだ手探り状態にある中で、以上のようなコンテナに特化したセキュリティ対策を行うことは難しいのが現実だ。そこでソフトバンク コマース&サービスが提供しているのが、Aqua Security Softwareが開発・提供している「Aqua Container Security Platform」(以下、Aqua)だ。

 Aquaはコンテナアプリケーションの開発(Build)、出荷(Ship)、運用(Run)というライフサイクル全体のセキュリティを担保することで、まさしく“コンテナセキュリティのベストプラクティス”実践を支援するツールだ。

 開発元のAqua Security Softwareは、2015年にイスラエルで設立されたベンチャー企業で、McAfeeやCA Technologies、Imperva出身のエンジニアが共同創業者やチーフアーキテクトを務めている。創業3年目だが、AWS、Microsoft、IBM、Googleといった主要なクラウドプロバイダーとパートナーシップを結び、すでに多くのエンタープライズ企業がAquaの採用を決めている。この他、Kubernetesテクノロジーパートナー、CNCFメンバーである他、Pivotal Cloud Foudry、Docker、VMware、Splunkなどが戦略的バートナーとなっており、今後もパートナーは増えていく見込みだという。

 このように、Aquaが多くのベンダー、ユーザー企業から注目されている理由として、竹石氏は「NISTのベストプラクティスを満たしていることもありますが、“コンテナの利点を生かしながら、セキュリティを確実に担保するための3つの要素”に、包括的に応えた製品であることが挙げられます」と話す。

 1つ目の要素は「セキュリティチェックの自動化」だ。開発サイクルを速める上では、セキュリティが足かせになりやすい。実際、セキュリティ面の問題で手戻りが発生するケースも多い。その点、後述する各種機能によってセキュリティチェックを自動化し、DevOpsのプロセスの中にチェックプロセスを埋め込めばDevSecOpsを実践できる。すなわちCI/CDのパイプライン全体を確実・効率的に守ることで、コンテナならではのスピードを阻害せずに、“セキュリティのシフトレフト”(手戻りを防ぐことで、スケジュール全体を前倒しすること)を支援できるわけだ。

ALT 図1 CI/CDのパイプライン全体を確実・効率的に守ることで、コンテナならではのスピードを阻害せずに、“セキュリティのシフトレフト”を実現できる《クリックで拡大》

 2つ目は「コンテナに特化したセキュリティを実施」できること。具体的には、後述する各種機能により、コンテナの不変性の維持、コンテナの特性を加味した脆弱性スキャン、コンテナファイアウォールによるアクセス制御、状況可視化とコンプライアンス対応などを実現する。

 3つ目は「複数のプラットフォームに対応」していること。インフラを選ばずポータビリティに優れたコンテナのメリットを生かせるよう、プラットフォーム、クラウド、OSに関わらずアプリケーションを単一の方法で守ることができる。さらに竹石氏は、「脆弱性スキャン、アクセス制限、暗号化など、NIST SP 800-190が掲げるリスク1つ1つに対処するために複数のツールを使うようでは運用負荷が高まってしまいます。その点、Aquaはこれらを単一のツールで行えるため、運用負荷削減にも大きく役立つのです」と付け加える。

ALT 図2 多彩なプラットフォーム、クラウドサービス、OS、オーケストレーターに対応。多くの企業やSIerの開発現場に、“包括的なコンテナセキュリティ機能”をスムーズに導入できる《クリックで拡大》

 ただ単にコンテナセキュリティを担保するのではなく、スピードやポータビリティといったコンテナ本来のメリットを阻害せず、自動化によって運用負荷や人的ミスを抑えながら、確実にセキュリティ脅威からコンテナを守る――いわば、開発とサービス提供に集中できる環境を整えられることが、Aquaが支持される大きな理由と言えるだろう。

コンテナアプリを確実に守る7つの機能

 では具体的にはどのような機能を持っているのだろうか。Aquaは「イメージスキャン」「ロールベースのアクセス制御(RBAC)」「シークレット管理」「イメージアシュアランス(保全性保証)」「ランタイムプロテクション」「コンテナファイアウォール」「コンプライアンス」という大きく7つの機能を備えている。

イメージスキャン

 これは既知の脆弱性、マルウェア、設定関連の問題、およびハードコードされたシークレットについて、コンテナ環境で使用されるイメージをスキャンする機能だ。脆弱性情報については、脆弱性情報データベースやベンダーのアドバイザリなど、複数ソースの情報を集約したクラウドサービス「Aqua Cyber Intelligence」を活用しているという。スキャンはレジストリ内、ビルドなどのタイミングで実施でき、後述するさまざまなレジストリ、CI/CDツールと連携させることが可能だ。これにより、例えば「ビルドの段階でマルウェアが発見されたら、デプロイできない」といった仕組みも作ることができる。

イメージアシュアランス

 イメージのスキャン結果を評価して、ホスト上で実行できるかどうかを判断する「イメージアシュアランスポリシー」を定義し、その判断に基づいてアクションを実行する機能。ポリシーは、共通脆弱性評価システム CVSS (Common Vulnerability Scoring System ※1)、共通脆弱性識別子CVE(Common Vulnerabilities and Exposures ※2)、機密データ、スーパーユーザー権限などのパラメータに基づいて定義できる。例えば「スキャンしたイメージのCVSSスコアがいくつ以上ならデプロイさせない」といったポリシーを設定できる。

※1 情報システムの脆弱性に対するオープンで包括的、汎用的な評価手法。脆弱性の深刻度を一定の基準で定量的な手法で比較可能とするもの/※2 個別製品中の脆弱性に一意の識別番号を付けることで、脆弱性とその対策情報、関連情報を正しくひも付けるためのもの

ランタイムプロテクション

 実行時にコンテナを監視して、疑わしいプロセスの振る舞いを検知し、ブロックする機能。コンテナの挙動から学習したデータを使って、必要最低限の権限および機能を提供することで、イメージの不変性を維持する。

コンテナファイアウォール

 コンテナのネットワーク接続を可視化し、許可された接続をホワイトリストに登録することで、不正な接続を防ぐルールを生成する機能。

ロールベースのアクセス制御

 クラスター、デプロイメント、ホスト、アプリケーションごとにユーザー特権を強制し、職務の分離とコンプライアンスを保証する機能。

シークレット管理

 実行中のコンテナに、パスワードやSSHキーなどの秘密情報を注入できる機能。「Hashicorp Vault」など各種シークレット管理ツールと連携させ、シークレット管理ツールから秘密情報を取り出し、アクセス制御ルールに基づいて自動的にコンテナに注入することができる。

コンプライアンス

 イメージスキャンの結果から発見された脆弱性と、推奨される修正のレポートを生成する機能。コンテナの実行時にホストやコンテナ上で発生するセキュリティーイベントの監査証跡も保持する。

Aquaを使って「サービス開発・提供に安心して集中できる環境」を

 なお、Aquaは「Aqua Enforcer」と「Aqua Consoleサーバー」というコンポーネントで構成される。Aqua Enforcerはホスト上のコンテナとして動作し、コンテナの動作を監視。イメージアシュアランスとランタイムポリシーを実施し、監査とコンプライアンスのためにAqua Consoleサーバーにイベント情報を送信するというイメージだ。

ALT 図3  Aqua Container Security Platformの全体概要図《クリックで拡大》

 前掲の図2のように、連携可能なレジストリとしてDocker Hub、Amazon ECR、Google GCR、CoreOS Quay、JFrog Artifactory、Azure ACRなどに、オーケストレーターはKubernetes、Docker Swarm、Red Hat OpenShift、Rancher、Mesos、Amazon ECSなどに対応。この他、SIEM(Security Information and Event Management)のSplunkや、開発現場に深く浸透しているコミュニケーションツール、Slackとも連携できる。

 このように多彩なパートナーを持ち、多数の製品と連携できる点も強みだが、竹石氏は、「コンテナセキュリティに必要な機能をここまで包括的に提供していること、またコンテナ稼働中にスキャニングできる――すなわちビジネスを止めずにセキュリティを担保できることが、Aquaの大きなアドバンテージだと思います」とまとめる。

 「今やWebサービス系にとどまらず、多くの業種でより良い体験価値をスピーディーに作ることが重視されていますが、セキュリティは経営課題である以上、リスクヘッジも重要です。企業として信頼を確実に守るためには、“脅威からサービスを守る仕組み”を開発・運用プロセスに埋め込むことが肝要だと考えます。開発を内製化しているユーザー企業の方はもちろん、サービス開発を支援しているクラウドインテグレーター、SIerの方にも、Aquaによる“サービス開発・提供に安心して集中できる環境整備”を、ぜひご検討いただければと思います」

Copyright © ITmedia, Inc. All Rights Reserved.


提供:ソフトバンク コマース&サービス株式会社
アイティメディア営業企画/制作:@IT 編集部/掲載内容有効期限:2019年1月15日

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。