Webinar解説「クラウドネイティブ時代に必要なセキュリティ」

安田 良明 解説:
(ISC)²認定主任講師/株式会社ラック 安田 良明 氏
CISSP, SSSP

(ISC)²

Webinar開催日:2020年6月17日
スピーカー: 福田 鉄平, Open Source Engineer, Aqua Security.

Webinar視聴のご視聴はこちら

みなさん、こんにちは。(ISC)²認定講師の安田 良明です。少しずつですが、日本でも内閣官房の「新型コロナウイルス感染症対策」Webサイトで公開している業種別の感染拡大予防ガイドラインにより、観客動員されたイベントの開催や店内飲食の規制緩和による会食が行われることでストレスを発散する場所が提供されてきました。僕も少しずつですが、県外レジャーや県外のサーキットに足を運びストレスを発散することができるようになってきました。

しかし、未だCOVID-19の影響は僕らの生活様式を変化させ続けていますが僕の身の回りの環境はすべてが悪い方向に変化しているわけではありません。社会生活、仕事の仕方に何かしらの変化が発生していますが、新しい選択肢ができたことで、より豊かな社会生活や今まで以上にやりやすい仕事の環境を手に入れることができました。通勤、通学から解放されテレワークやオンライン学習が最高!進捗を管理できる仕組みを作れない上司による無駄な進捗会議から解放されて最高!など快適な生活を送られている方も多いかと思います。みなさんの New Normal なご経験談(成功談/失敗談/変化無し)を共有できる機会を作れれば新しいサービスを考案するヒントになるのではと思っている今日この頃です。

そんな中、第18回目に配信された(ISC)²日本語Webinarのアーカイブ視聴を行いました。第18回目のWebinarでは、日本の中でも多くの組織がクラウドネイティブな環境への移行の第一歩を踏み出そうとしていますが、それらの組織に対して「Aqua Security 福田 鉄平」様のご経験に基づき、セキュアなクラウドネイティブ環境を構築するための知見や指針を共有していただきました。クラウドネイティブという用語はインターネット記事でよく見かけるようになってきましたが、僕は曖昧に理解しているところがありました。そのため、クラウドネイティブの要件について基礎的な解説を学ぶことで、クラウドネイティブの要件(クラウド上で実行、インフラから分離されたアプリケーション、疎結合のマイクロサービスおよび更新容易性・スケーリング・耐障害性を備えたオーケストレーション)を正しく理解することができました。

クラウドネイティブによりもたらされる新たな技術の恩恵は、組織に拡張性に優れた柔軟なアプリケーションの構築を行う機会を提供します。しかし、新たな技術には新たな脅威が存在するため、適切なコンテナイメージの作成・配布ができない場合は設定ミスによるコンテナの権限昇格や脆弱なKubernetes・Dockerの設定による不正アクセスの脅威などが存在することを知る機会にもなりました。また、セキュアなクラウドネイティブ環境を構築するための知見や指針を共有していただく中で、攻撃の複雑化・自動化の実態を通じ、開発期間中に脆弱性を見つけ、既知の脆弱性が無いコンテナを本番環境にデプロイすることの重要性を理解することができました。サイバーセキュリティフレームワークで区分されている検知、対応、復旧の取り組みだけではなく、いかに識別、防御に専念しないといけないのかを身につまされる思いで福田様のWebinarを聞いていました。

クラウドネイティブに関する共通知識の多くは「CCSP: Certified Cloud Security Professional」で取り扱われておりますが、今回はCISSPの共通知識でもクラウドネイティブセキュリティに関する知識と技術に関連する「DevOps」の考え方に紐付けて解説していきます。「DevOps」の共通知識では、本番と同様のシステムで開発とテストを実施する環境を準備し、システムを本番環境に展開する前に実際の動作やパフォーマンスを確認する必要があります。また、市場占有率を維持・拡大するため迅速に顧客の要望に対応するため開発と運用プロセスは自動化が不可欠となるため、継続的なインテグレーションとテスト、継続的なデプロイと検証の環境を構築する必要があります。そのため、ウォーターフォール開発などとは違い、DevOpsの場合、自動テストを初期に行う必要が生じ、モニタリングもライフサイクルの初期に移行し、リリース時のデリバリリスクを低くすることを余儀なくされます。最終的に、これらすべての環境を積み上げることで、本番環境へのリリースタイミングの決定を経営陣やビジネスオーナーが実現できるようにする困難な情報セキュリティの取り組みの1つとなります。

今回は2020年6月17日に行われた「Aqua Security」様のWebinar「クラウドネイティブ時代に必要なセキュリティ」について、「ソフトウェア開発セキュリティ」で取り扱われているCISSP的な考え方にリンクさせながら解説を行います。なお、クラウドネイティブセキュリティについては、すべてのCISSPのドメインに関連性がありますが、アイデンティティとアクセス管理に関するWebinar解説の中でも特に「サービスの識別、認証、認可、アカウンタビリティ」の重要性について解説していますので、過去のWebinar解説を合わせて読んでいていただけると幸いです。さらに、CCSPのドメインでも関連性がありますので、「CCSPチャレンジセミナー」もご視聴していただくことを推奨致します。

CISSPは、「ソフトウェア開発セキュリティ」で紹介されている数々のCBK(共通知識分野)を理解することで、組織のビジネスニーズを正確に理解したうえで組織が必要とするソフトウェアをセキュアに開発する共通知識を学ぶことができます。さらに、一度セキュリティ込みで開発されたアプリケーションは、運用、保守、廃棄のライフサイクルを通じて、セキュリティを保証し続けることが、CISSPの共通知識では要求されております。特にライフサイクルを通じて、セキュリティを保証する活動については、リソースのセキュアなプロビジョニング(アイデンティティとアクセス管理(IAAA※1)、SLA、変更管理、構成管理など)や組織が業務活動を行う際に持続的な監視プロセスを導入することでリアルタイムのリスク管理、継続的な情報システムの認可を行うことが可能となります。

それらの共通知識を身に着けたCISSPはセキュリティを後付けにせずソフトウェア開発プロセスの一部として企画の段階からソフトウェア開発ライフサイクルにセキュリティを組み込むことが実現できます。CISSPには「Built-in Security」 のコンセプトをすべての組織の活動に適用することが期待されています。ソフトウェア開発セキュリティにおけるセキュリティを組み込むアプローチの1つはセキュリティの自動化になります。セキュリティの自動化により人の介入を最小化することが可能となり、本番環境にデリバリされるアプリケーションやその他のシステムの品質を厳格にコントロールすることが実現できます。

それでは、福田様のwebinarで紹介されている「クラウドネイティブ時代に必要なセキュリティ」について解説をしていきます。僕たちの身近な社会経済や業務環境を支えるITシステムではオンプレミスからオフプレミス、いわゆるクラウドに移行されているものが増えてきました。それは、日本の中でも数年前から「クラウドファーストストラテジー」の考え方が定着しはじめ、オンプレミスの設備投資モデル(CapEx)からクラウドの運用コストモデル(OpEx)のコストモデルに魅力を感じる経営陣が増えてきたことや、市場ニーズに迅速に対応するためにはハードウェアベースのソリューションの遅さから脱却する必要があったプロダクトマネージャーがクラウドのメリットに魅力を感じて次々にクラウドベースのITシステムを構築していったことが1つの要因と考えられます。

しかし「クラウドファーストストラテジー」は新しいコンセプトではなく、既に2011年に米国で提唱されており連邦政府のIT予算を削減する戦略として「FEDERAL CLOUD COMPUTING STRATEGY※2」としてホワイトハウスから発表されています。また、近年の米国においては、「From Cloud First to Cloud Smart」が「米国行政予算管理局:Office of Management and Budget」から打ち出され「Cloud First」から「Cloud Smart」に舵を切ることで、すべての職員、調達、セキュリティの3つの分野にフォーカスしたクラウドの活用を一層加速させようとしています。既に米国ではクラウドでITシステムを稼働させることを最優先で検討する段階から、クラウドのメリットを理解しITシステムを構築する際、積極的にクラウドのメリットを活用しよう段階に移り変わっています。

そのような流れの中で福田様のテーマとなっている「クラウドネイティブ」というキーワードが世の中で自然と使われだし、ITインフラとしてクラウドを使う前提で稼働させるアプリケーションや運用環境も含めクラウドで実現させていこう組織が増えてきており、「クラウドネイティブコンピューティングファンデーション」からクラウドネイティブの定義も公開されました※3。

僕自身、今でこそ自社プロダクトをコンテナベースのクラウドネイティブで構築・運用していますがクラウドネイティブ技術に伴う新たな脅威に対応するのは容易ではありません。クラウドネイティブ技術の1つであるマイクロサービス開発を採用することでシステムを小さいサービスの単位で開発しやすくなりましたが、その反面、それぞれのサービスを連携させることで1つのプロダクトの機能を実現させる必要があるため、たとえ小さいサービスの1つでも脆弱性が存在していれば、他のサービスに悪影響を及ぼす可能性があります。そのためすべてのサービスの既知の脆弱性の存在に丁寧に向き合う必要があるためコードを修正するたびにチェックをかけ脆弱性がない前提でデプロイしていく仕組みづくりが要求されました。

マイクロサービスの仕組みの効果は絶大で、ビジネス面では迅速な機能追加・変更が容易になったことで迅速に市場ニーズに対応できるようになりました。特定のサービスで障害が発生したとしても影響範囲を最小化することができること、サービスごとに負荷分散や拡張性を持たせることが柔軟にできるようになったおかげでSLA対応も実現できています。しかし、これらのサービスを適切に運用管理するためにはコンテナイメージの維持管理やKubernetes自体の設定管理が要求されるようになりました。

まさに福田様が解説しているコンテナの設定ミスやコンテナ自体に脆弱性が残ってしまうことは常に存在する脅威であり、コンテナイメージは1度作成したら終わりではなく、顧客ニーズ、OSや既知の脆弱性に対応するため適切なコンテナイメージのインテグレーション、デプロイが必要になります。例として僕のプロダクト環境の場合、イミュータブルインフラストラクチャを採用しているため、軽微な変更があった場合は本番環境のコードの修正や脆弱性パッチを適用することはせず、変更を加えたコンテナイメージを新たに作成、デプロイし、本番環境にデリバリをしています。その際、新しいコンテナイメージに脆弱性が無いかをチェックする必要があるため、コンテナイメージを作成する段階において継続的なインテグレーション(CI)のプロセスにセキュリティチェックを自動的に動作させる仕組みが必要になります。

CISSPではどんなITシステムでも人が作る以上脆弱性が存在することを前提にしなければなりませんので、コードをたとえ1行でも変更する場合や問題が無いと思われるOSイメージをpullしてコンテナイメージを作成する場合でも、人に依存するチェック作業を減らし、自動的にチェックする仕組みづくりをしなければ丁寧な脆弱性を取り除く仕組みを具体的・現実的に実装・運用することはできません。

さらに福田様のプレゼンテーションで僕自身がクラウドネイティブセキュリティの取り組みでこれは今すぐに必要だなと思ったセキュリティの取り組みはコンテナイメージの自動動的スキャンです。CISSPのソフトウェア開発セキュリティではアプリケーション開発期間中に静的解析と動的解析の両方を組み合わせることで既知の脆弱性を取り除くことが可能と解説していますし、今や一般的なテストアプローチの1つになります。同様にDevOpsの場合コンテナイメージのCI/CDにおいても同様に静的スキャン、動的スキャンを実施しなければなりません。そのためCIの中で静的スキャンを組み込むことは一般的な取り組みになっていると思いますが、継続的なデプロイ(CD)時にコンテナイメージを自動的に動的スキャンする仕組みは存在しないため、自分で動的スキャンの仕組みを実装するか、手動でコンテナイメージをsandboxで動作させて異常な挙動や通信は排除する取り組みが必要となります。コンテナイメージの動的スキャンの必要性は理解しているものの、自動化する仕組みが存在しないため数が多いコンテナイメージ(Windows/Linux)の維持管理はコストが高いためリスク受容してしまう組織も多いのではないかと思いました。

今回は「アプリケーション開発セキュリティ」の共通知識を元にWebinar解説を行いましたが、CISSPではどのようなソフトウェア開発手法であれソフトウェア開発ライフサイクルにセキュリティのプロセスを統合することが不可欠です。今回はクラウドの内容が中心となりましたが、クラウドはあくまでもビジネス上の選択肢の1つのため、すべての組織がクラウドネイティブに向かうことは無いと思います。ただ、もし、みなさんの組織でクラウドネイティブに進まれる場合は、クラウドネイティブに潜む新しい脅威の分析を行い、費用対効果に優れたセキュリティを実装していただいたいと思います。

CISSPにはソフトウェア開発環境にリスク管理プロセスを導入することが期待されており、サードパーティーから調達するあらゆるソフトウェア(ライブラリ含む)から保証を得る仕組みを経営陣に提供することが共通知識の中で取り扱われております。そのためにも、より一層市場ニーズに応えたい経営陣、プロダクトマネージャーの開発のスピードに対応できるDevOps環境を実現し、手動だと抜け漏れをするセキュリティチェックを透過的に自動化しCI/CDの特にCIの早い段階から組み込むことでクラウドネイティブの課題を乗り越えられると思います。

繰り返しになりますが冒頭で触れた通り、福田様のプレゼンテーションで攻撃の複雑化・自動化の解説がありました。クラウド環境の特徴として本番環境を公開してしまえば、世界中からアクセスが可能となります。今や攻撃者は世界中を自動スキャンするだけではなく自動で侵入する攻撃ツールも使用し数分でパブリッククラウドへの侵入が成功する可能性があることも把握できました。オンプレミスのITシステムでは、信頼されたネットワークの中でITシステムを稼働させるため、監視、防御、復旧の多層防御による人の対応が効果的でした。しかしクラウドネイティブではインターネット上でITシステムを稼働させるため侵入されてから攻撃が成功するまでの時間軸が圧倒的に短時間となり、検知して対応したとしても組織のリスクが受容できない可能性があります。そのためクラウドネイティブに潜む新しい脅威を把握し、侵入されない前提で識別、防御を含めたセキュリティコストの適切な配分を経営陣とともにCISSPは行う必要があります。

他にもWebinar解説で触れない内容がありました今回はここまでとします。たくさんの共通知識が「ソフトウェア開発セキュリティ」にはありますので、是非CISSPトレーニングをご受講いただき、グローバルな考え方に触れていただければ幸いです。もちろん、CCSPトレーニングもオススメです。

 いかがでしたでしょうか。今回は、「Aqua Security」様のWebinar「クラウドネイティブ時代に必要なセキュリティ」について、ソフトウェア開発セキュリティに焦点を合わせてCISSPの共通知識分野に紐付けて考えてみました。Webinarではクラウドネイティブセキュリティに潜む具体的な脅威の解説やKubernetesの設定ミスをチェックするツールなど具体的なソリューションをOSS※4含めて解説が行われておりますので是非、Webinarを視聴してみてください。

最後に、(ISC)²が提供するWebinarは、(ISC)²メンバーまたはそれ以外の方、どなたでも視聴することができますので、是非、みなさんの組織で有効活用していただきたいと思います。Webinarはオンライン視聴だけではなく、Webinarの講演資料やスポンサー様が公開しているホワイトペーパー等をオフラインで確認することもできますので、お時間があるときにWebinarのトピックを(ISC)² CBK(共通知識分野)に紐付けて読み解いていくことが可能です。また、(ISC)²メンバーでない方は、Webinarを通じて、グローバルスタンダードにおけるCBK(共通知識分野)に触れていただければと思います。さらに、興味がわきましたら、CISSPチャレンジセミナー、CCSPチャレンジセミナーにお越しいただけると嬉しいです。

※1 IAAA(Identification and Authentication, Authorization and Accountability)
識別、認証、認可、アカウンタビリティ

※2 FEDERAL CLOUD COMPUTING STRATEGY
Vivek Kundra U.S. Chief Information Officer
FEBRUARY 8, 2011
THE WHITE HOUSE
federal-cloud-computing-strategy.pdf

※3クラウドネイティブの定義
Cloud Native Computing Foundation
https://github.com/cncf/foundation/blob/master/charter.md

※4 Aqua Security
Full lifecycle security for containers and cloud-native applications
https://github.com/aquasecurity