何が違う? 何が必要? マイクロサービス/サーバレス時代のセキュリティ:Oracle Code Tokyo 2019
従来のモノリシックなアーキテクチャに代わって着目されている「マイクロサービス」や「サーバレス」。これらの新しいアーキテクチャについて、セキュリティの観点からどのようなことに留意すべきなのだろうか。
ハードウェアはもちろん、OSとミドルウェア、その上で動作するアプリケーションを自力でデプロイしてようやくサービスを展開し、さまざまな依存関係に悩みながら運用していく……。そのような従来のアーキテクチャに代わって着目されているのが、「マイクロサービス」や「サーバレス」だ。
互換性はもちろん、拡張性や可用性、チューニングにアップデートといった、従来、考慮しなければならなかったさまざまな「面倒ごと」から解放されてコードをすぐに展開できる利点を評価し、先端を行く企業の中には、これまでのモノリシックなアーキテクチャをマイクロサービスに分解したり、サーバレスを取り入れたりしようという試みが増えている。
だが、これらの新しいアーキテクチャに盲点はないのだろうか。中でも、無視できないセキュリティの観点からどのようなことに留意すべきなのだろうか。
2019年5月17日に開催された「Oracle Code Tokyo 2019」のセッション「Serverless時代におけるセキュリティ戦略」では、そのような重たいテーマが、アスタリスク・リサーチの代表取締役 エグゼクティブ・リサーチャ、岡田良太郎氏と、SecureWorks Japan 主席上級セキュリティアドバイザーの古川勝也氏による軽妙な掛け合いを通して語られた。
マイクロサービス、サーバレスがもたらすメリットと課題とは
岡田氏は冒頭、サーバレスの利点を「コードだけ、関数だけを置いておけば動くため、サーバのことやスケーラビリティについてはクラウドのプラットフォーマーに任せ、自分たちで考えなくて済むこと」と説明した。逆に言えば、プラットフォーム側に何か問題があれば、その上のサービス全てに障害が起きてしまうことにもなる。
これはセキュリティの観点から見ても大きな変化だ。古川氏は「マイクロサービス/サーバレスはゲームチェンジャーであり、セキュリティ屋としても追い掛けていかなければならないことが多い。まだ始まったばかりの領域だが、それだけに課題も多い」と述べた。
設計段階でのセキュリティ「シフトレフト」「セキュアバイデザイン」が今まで以上に重要に
古川氏は、具体的には、設計段階でのセキュリティが今まで以上に重要になるとみている。
「セキュリティ対策は“防御”のアプローチから始まったが、今や素早く脅威を検知し、迅速に対応するところまで含めて考えなければならない。最近は『シフトレフト』という形で、設計の段階でセキュリティ対策を意識していくことが推奨されているが、マイクロサービス/サーバレス時代では特に、この考え方が大事になる。設計/開発段階でのセキュリティを強化しないと、早く見つけて対処したり、フォレンジックで原因を究明したりといったことができなくなる恐れがある」(古川氏)
岡田氏はマイクロサービスの一例としてNetflixのサービスアーキテクチャを紹介し、「あらゆる処理を、APIを呼んで行うことで、例えば画像表示の機能1つが落ちてしまっても全体は落ちることなく、システム全体のリライアビリティーをまあまあ確保できることが利点だ」とした。
既存のシステムを分割してマイクロサービス化すれば、それぞれが独立して実行されるため、メンテナンスも他の部分のことを考えずに独立して行えるし、開発のリポジトリも分割され、コンパクトになる。コードをバージョンアップするにせよ、問題を修正するにせよ、サービス全体にまたがって調整を行う必要がない。多くの企業が、モノリシックなアーキテクチャをマイクロサービスに分解しようとしているのも、こんな利点があるからだという。
「一方で、これに伴ってコードレビューの単位も極端に短くなってくる。このため、セキュリティ脆弱(ぜいじゃく)性診断を行うとしたら、オーダーの方法も変わってくるのではないか」(岡田氏)
古川氏はさらに、「加えて、各関数に認証、認可の機能を持たせなければならない。開発者側でそのことをしっかり意識し、セキュアバイデザインの考え方で認証、認可の機能を入れておかないと、後から何か起きたときの原因究明が困難になる」と指摘した。
設計段階でのセキュリティが足りないとどうなるか――「デス・スター」の場合
機能の追加や修正がすぐ行える一方、マイクロサービス/サーバレスによってソフトウェアの仕様とリポジトリの在り方、グランドデザインの在り方、さらには実装チームや組織の在り方が全く変わってくる。その恩恵を受ける上で、ソフトウェアをどのように管理し、安全性をどのように担保するか。
岡田氏が設計段階でのセキュリティが足りないモノリシックの例として挙げたのは、映画『スター・ウォーズ』シリーズに出てきた、敵方、帝国軍の宇宙要塞「デス・スター」だ。「デス・スターは非常に強い要塞だが、セキュアバイデザインやシフトレフトが足りておらず、設計にSingle Point of Failure(SPoF)があった」(岡田氏)
デス・スターのように密結合のシステムならばコントロールしやすく、防御しやすそうに思えるが、たった1つの問題でメルトダウンしてしまう恐れがある。ただし、その原因は追及しやすい。一方マイクロサービス/サーバレスでは、他者と共存共栄しなければシステムの安定運営は維持できない。ただし、分散処理というメリットがある――岡田氏は、モノリシックとマイクロサービス/サーバレス、双方の利点と課題を整理した。
「コンプライアンスのため」よりも「より良いサービスを作るため」のセキュリティを
国内を見渡すと、新興のWebサービス業界でこそマイクロサービス/サーバレスの波が広がり始めたが、全体からすればモノリシックなアーキテクチャがまだ大半を占めている。その今ですら、セキュリティ企業の調査によると、サイバー攻撃を受けてから侵害に気付くまでに多くの時間を要しており、特に日本は他国に比べ気付くのが遅いのが実情だ(参考)。
「モノリシックで設計しており、データやログなどが全て手元にあるにもかかわらず、『やばい』と気付いて調べることに対して日本はとても無頓着だ」(岡田氏)
背景の一つには、ISMSやPCI DSSといったコンプライアンスへの準拠が「運用管理者やセキュリティ担当者のやること」と受け止められがちな日本特有の風土もあるだろう。
岡田氏はその上で、やや過激に「『コンプライアンスがあるから頑張らなければいけない』という現場ならやめた方がいい。システムに対する愛着を持ち、良いものをどんどんデリバリーするため、信頼できるOpsチームのいる現場でコーディングできることが理想では」と述べた。古川氏も、そうした信頼関係の上で「それぞれが『ここは自分たちが責任を持ってやる』『向こうが作ったものを信頼してつなげる』という責任感のチェーンが必要ではないか」とした。
さらに古川氏は、マイクロサービス/サーバレスの世界における信頼関係の重要さについて付け加えた。
「セキュリティ業界の中には、『他者を信じない』スタイルの人もいる。そうした人にとって、どことも連携しない、ある意味『スタンドアロン』な環境は心地よいが、何かしら事故が起きたときに柔軟に対応できなかったり、新しいことをしたくても動きが鈍くてできなかったりするなどの課題もある。新しいビジネスをスピードアップさせていくには、システム設計においても、プラットフォーマーをはじめ、いろいろなところを信頼し、連携する設計にしないといけない。セキュリティの側面からは、そこのバランスをどう保つかが肝だ」(古川氏)
他者であるクラウドプラットフォーマーを信頼する上でセキュリティの観点からはどのようなポイントに留意すべきなのだろうか。
「まず、他者を信頼してつながる以上、他者に依存する部分が増えることは認識しなければならない。どのスタックまでトレースできる必要があるか、どこまで調べる必要があるかが重要になる。もし自分のサービスで問題が生じたとき、相手方がどのコンポーネントでどう処理したかといった事柄を開示してくれないと、対処しようがないことになる」(岡田氏)
そして岡田氏は、「クラウド上に構築したシステムやデータはクラウド事業者のものになる」という事実を指摘した元CIA CISO(最高情報セキュリティ責任者)の言葉を引き合いに出し、「他者のプラットフォームに乗ったとき、自分たちの動かしているサービスや蓄積したデータは、基本的には預けた相手の持ち物になるという意識を持たないと、大きな悲劇に陥る可能性がある」とした。
デリバリースピード重視の裏で、いざというときのために備えるモニタリングがおろそかに
さらに岡田氏は、「マイクロサービス/サーバレスによって何のスピードを担保したいかが、サービス設計の鍵になるのではないか」と述べた。
マイクロサービス/サーバレスによって、ぱっとサービスを作ってすぐデリバリーしたり、すぐにアップデートできたりするようになったが、不具合やサイバー攻撃など何か障害が起きたときには原因の調査に非常に多くの時間がかかるようにもなった。これはつまり、デリバリースピードを重視するか、障害時の調査スピードを重視するかのバランスを考えて設計することも重要だといえるだろう。
岡田氏は最後にあらためて、マイクロサービス/サーバレスのセキュリティにおける最大の問題点を指摘した。
「マイクロサービスもサーバレスも大いに結構だが、『どうやってモニタリングするか』が空白になっている。早く作って早くデリバリーしたサービスの中で起こる障害を検知し、集約し、対応するためのループをどうやって回していくかが大きな課題。クラウドプラットフォーマーが提供していく機能の中で注目すべきポイントだ」(岡田氏)
古川氏もこれに同意し、「作るスピード重視でマイクロサービス/サーバレスに突っ込んでいくと、モニタリング技術の欠如が大問題になる」と述べた。ただ、あくまで今は過渡期であるのも事実。技術も未成熟な中で中途半端に手を付けるよりも、今の時点ではそのリスクを許容しつつ、信頼関係とのバランスを取りながらじっくり調べるというのが現実的な落としどころになりそうだ。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- サーバレスコンピューティングとは何か、その典型的ユースケースとは
注目が集まるサーバレスコンピューティング。本連載では、その概要とユースケース、コンテナオーケストレーションやPaaSとの使い分け方などを分かりやすく解説した、Cloud Native Computing Foundationのホワイトペーパーを完訳してお届けする。第1回は、「サーバレス」の意味と典型的なユースケースに関する部分を掲載する。 - マイクロサービス
マイクロサービスとは、単一のアプリを「粒度の小さなサービスの集合として開発する」というアプリ開発のスタイルであり、さまざまなメリットがある。 - 感染から被害発生までわずか18分――CrowdStrikeが「1分で検知し、10分で調査を進め、60分で脅威から修復」を推奨
CrowdStrikeは「2019年版CrowdStrike グローバル脅威レポート」で、2018年に対応、阻止した約3万件の侵害事件を基に、侵入の糸口となる端末にマルウェアが感染してからシステム内で横展開が成功するまでの時間を「ブレークアウトタイム」と定義し、攻撃者グループの国ごとに比較した。