ITの最近のブログ記事

今日から本格的に始まったRSAコンファレンス。朝からキーノートを・・・と思ったのだけど、連夜の時差ぼけで寝坊してしまい、最初の2セッションを聞き逃した。お天気は朝から雨。肌寒い感じで、ちょっと気分もさえない感じ。とりあえず朝食で元気をつけて、会場に出かけた。

キーノートはちょうど中休み。とりあえず席を確保して残りのセッションを聞いてみた。最初は、シマンテックのCEOのプレゼン。

最近のテクノロジーのキーワードとして、ソーシャルメディア、クラウド、モバイルの3つを挙げて、こうした技術がIT(というよりも「情報経済」)の高度化をより加速していくだろうと予測。同時に、昨今の脅威の動向、とりわけ脅威のターゲットが鮮明になり、それにつれて手口も高度化していることなどに触れて、より総合的な対策が必要だと述べた。興味深かったのは、マルウエアのシグネチャ数が、2009年から2010年で倍増しており、もはやシグネチャベースの対応には限界が見えていることや、シマンテックとして、シグネチャベースに加えてレピュテーションベースのしくみも強化しているといった話。そして最も印象的だったのが、最後のしめくくりとして述べた言葉だ。「新しいIT技術はビジネスの推進に不可欠だ。ソーシャルメディア、クラウド、モバイルといった領域の技術は、ビジネスのあり方を大きく変えるだろう。我々(セキュリティの専門家)は、これらをブロックするのではなく、うまく使えるようにする(enableする)ことが必要だ。」というくだり。そう、これが日本のセキュリティ屋さんたちが一番考えるべき部分なのだろうと思う。

引き続き、表彰式をはさんで、暗号屋さんたちのパネル。こういうメンツのパネルを見られるのはRSAならではかもしれない。

中身は半分雑談っぽいもの。正直言うと眠気のせいでいまいち聞き取れなかった。おもしろかったのは、モデレータの質問。「皆さんは、いわゆる頭のいい人たちとして世間から見られているのだけど、これまでに何かおバカなことをしたことはありますか?」というもの。おもしろかった答えは、自分は100日のうち99日はバカげたことしか思い浮かばない・・・というもの。でも、100分の1の確率で素晴らしいことを思いつけるのだったらいいんじゃないかな・・・と。

最後は、先日、ホワイトハウスのセキュリティ責任者に任命された、ハワードシュミット氏の講演。

氏は、先日JNSAが提携発表したISFの代表でもあるのだけど、先日の来日予定がホワイトハウスのご指名の影響で急遽キャンセルになったのは残念。米国政府で、現在進められているセキュリティ関連部局の統合の話などを中心に語っていた。やはり政府のセキュリティ施策は縦割りの行政では難しいのだろう。このあたりは日本もなんとかしたいところなのだが・・・

さて、今朝はPC入りのバッグを提げて会場に行ったのだけど、これを持ち歩いているのは結構疲れる。すこし展示会を見てから一旦荷物を置きにホテルに帰ってきて、とりあえずこれを書いている。今回、ちょっと面白い傾向が見えてきた。セッションのテーマとしては「クラウド」がらみのものが多いのだが、展示会のブースで、"Cloud" を前面に出しているものは少なかったということだ。おそらくセキュリティ屋さん(米国ではユーザサイドな人が多い)の興味はクラウド周りにあるのだが、(というより、すでにかなり語りつくされた感もあるのだが・・・)ベンダサイドは、無理やり自分たちのソリューションをクラウドに結び付けても見向きされないことがわかっているから、むしろ、要素技術としての特徴をアピールするような方向にあるのではないかと思う。ともすれば米国発のキーワードに踊る(踊らされる)日本のベンダにも見習ってほしいあたりだ。

さて、天気も良くなってきたので、また少し出かけることにしよう。

今朝は、昨日とはうってかわって、曇り時々雨、肌寒いサンフランシスコ。今日からRSA関連のイベントが始まるのだけど、今日はまだ前哨戦。CSA(Cloud Seculity Alliance)のイベントが開かれる予定なのだけど、レジストレーション時点で満員御礼状態。とりあえず行ってみて、と思って行ったものの、会場への通路で、もう入れませんとブロックされてしまった。

仕方がないので、すごすごと一旦宿に引き上げてきたのだけど、その帰り道、なにやらお腹がごろごろ・・・。宿に帰ってトイレに駆け込むハメになった。完全にお腹がゆるんでいる。昨日、悪いものを食べた記憶もないのだけど。そういえば、昨夜、時差ぼけにあかして日記を書いている時に、テーブルの上にあるミントの飴を暇にあかしてなめていたのだけど、まさかそれとも思えないし。

とりあえず、朝食はやめにして、昼間で休養。調子がいまいちながらも、多少マシになったので、昼食をとって、また市内に出てみた。ここまで来たらアルカトラズ・・・と思ったのだけど、ツアーを予約しようと行ってみたら、この時期は少なくとも平日はやってないみたいで、ちょっとがっかり。で、しかたがないので、昨日も書いた、テレグラフヒルのコイトタワーまで行ってみることにした。

タワー行きのバスは、ピア39の近くから乗れる。なぜか39番のバスなのだけど。天気が悪いので視界はいまいちだったものの、雨は上がって霧も出ていなかったので、それなりの景色を見ることができた。

1933年に建てられたこのタワーについては、その経緯がプレートに刻まれている。中の回廊を飾るフレスコ画も当時の政府の芸術政策の後押しで書かれたものらしい。

売店で5ドルのチケットを買い、古ぼけた感じのエレベータに乗る。陽気なにーちゃんがガイド役だが、今日は暇だとこぼしていた。エレベータを降りて、37段(ガイドのにーちゃんいわく)の階段を登ると展望台。こんな感じで、窓から外が見える。

窓枠がちょっと邪魔だが、360度遮るものがない視界は、天気がよければとちょっと残念。ぐるっと見まわしてみたらゴールデンゲートブリッジ、アルカトラズ、ベイブリッジ、ダウンタウンと景色が楽しめる。

アルカトラズの前を巨大なコンテナ船が通っていく。遠近感で多少手前が大きく見えてはいるが、船の大きさも異様だ。

とりあえず、タワーを降りて、周囲を散策。ここはテレグラフヒルの0番地らしい。

バスがこないので、ぼちぼち歩いて降りることにしたのだけど、またしても勢いで宿まで歩き切ってしまった。丘越えすれば早いのだろうけど、体力がないので谷に沿って迂回したら結構時間がかかって、宿に帰ってくるころにはへとへとに疲れてしまった。またお腹の調子も悪化。とりあえず、全部出して(^^;)横になって一休み。

軽く寝たら少し体調も戻ったけど、食欲はない。すでに日が暮れかかっていたので、とりあえず、RSA会場の展示会オープニングとレセプションに行ってみた。

レセプションと言っても、展示会場のあちこちで飲み物や食べ物をサービスしているだけなのだけど。会場はそれなりの盛況。

セキュリティ系の「展示会」は、ほぼここに統合されてしまった感じなので、規模的には維持しているが、往年にくらべればちょっと寂しい感じもするのだけど。とりあえず、シエラネバダ一杯と少し食べ物をつついて、今日の夕食はおしまい。

帰りがけに、会場前の雰囲気がよさげだったので、とりあえず上の一枚を撮影。宿に帰って、ひと風呂浴びたら眠くなって、この時間にまた起きだしている。まぁ、時差ぼけを修正する気もないのだけど、今夜は少し早目に寝ることにしよう。明日はキーノートを一通り聞いて、それから展示会めぐりをしようかと。

SaaSのセキュリティといっても、表面について言うならば、いわゆるWebアプリのセキュリティだろうと思う。ユーザに委譲された範囲でのID管理はさておき、事業者側では、アプリケーションレベルでの脆弱性対策をしっかり考えておくべきだ。基本的には、不正入力に対するチェックをきちんと行って、インジェクション系の攻撃を防ぐことだ。ただ、一般のWebアプリとは異なり、基本的にマルチテナントでサービスを行うSaaSでは、ユーザ間のアクセス制御やリソースの分離にも神経を使う必要がある。たとえばデータベースを共用するような場合、アプリケーションからデータベースへのアクセス権限がユーザごとに分離されていないと、脆弱性に対する攻撃を正規のユーザが行った場合、被害は全ユーザに及んでしまう。基本的には、このようなことがないように、少なくともデータベースへのアクセス権限はユーザごとに管理できるようにしたい。

アクセスログの取得とユーザへの提供も重要だ。認証部分をSAMLなどで外出しできれば、認証ログについては、サードパーティーの認証サービスで対応できるが、データへのアクセスログはサービス事業者自身が提供しなければいけない。昨今の状況下では、情報の管理にアクセスログの取得が要求されるケースが多く、これが不可能なSaaSは、現実的には使いにくいのが正直なところだ。

SaaSの最も大きな特徴は、APIによるシステム連携が可能な点だと先に書いたが、多くの場合、このAPIは、XML Webサービス、つまりSOAPによって実装されている。表に見えるユーザインターフェイスとは違って、直接、コンピュータによってアクセスされるAPIは、自由度が高い分、リスクポイントも大きくなりがちだ。XML化されたデータの各要素がサーバサイドやクライアントサイドでどのように処理されるかによっては、不正入力が思わぬ副作用をもたらしてしまう。当然ながら、SQLインジェクションのような問題も生じることになる。最近は、Webベースのユーザインターフェイスにおいても、Ajaxのような非同期の仕掛けを使って、裏でサーバのAPIにアクセスしているケースもある。こうしたAPIの仕様は、たとえ公開されていなくても、ページのソースコードに記述されたスクリプトから簡単に読み解くことができるから、実際は公開APIとリスクの差はあまりない。ちなみに、ソース表示を禁止しても無駄である。そんなものは簡単に破ってしまうことができるからだ。

APIの問題はかなり複雑だ。単に、クライアントからサーバに渡された情報を、サーバ側がどう処理するかだけではなく、サーバからクライアントに渡されたデータをクライアントつまり、利用者側のシステムがどのように処理し、ユーザに表示するかも大きな要素だからだ。たとえば、なんらかの手段で、サーバ側から返されるデータに加工を加えることができれば、クライアントに対して副作用を引き起こすような内容を返すこともできる。サーバから持ってきた情報をそのまま使って、ユーザに表示したり、自前のデータベースに連携させたりする際に、この副作用が発生するとちょっと困ったことになる。つまり、ユーザは事業者のサーバから帰ってきた値を無条件に信用してはならないということだ。いや、すこしトーンを下げて言うならば、「信用しないほうが身のため」である。特に、ユーザインターフェイスへの表示や、データベース処理など副作用を起こしやすい処理に使う場合は、最悪の事態を想定して、きちんとサニタイズしておいたほうがいい。事業者、利用者の双方でこうした措置を講じることで、不測の事態が発生するリスクをかなり下げることができるだろう。

APIの話を除けば、SaaSレベルのセキュリティ問題の多くは事業者側の範疇にある。しかし、どうしても利用者側が逃れられないのが、自分たちのユーザの管理、つまり、事業者から買ったアカウント内部の管理だ。企業向けサービスの多くは、一定数のアカウントをグループ化して、利用者側で自由に管理ができるようになっている。契約数の範囲であれば、自由にアカウントの作成、変更、削除ができるほか、アクセス権限などの管理も自由にできるものが多い。また、そうでなければ一定規模以上の組織では使えないのも事実だ。だが、そうした権限委譲の結果、利用者側にも重い管理責任が生じる。たとえば、あるエンドユーザのパスワード管理が甘く、アカウントをクラックされ、情報を盗まれたとしても、一般にそれは事業者側の責任にはならない。事業者は、先にのべたように、ある利用者グループの不具合が他の利用者グループに影響しないようにする責任はあっても、利用者グループ内の問題には直接手出しができないからだ。

だから、SaaSの場合でもID管理はユーザ側の大きな責任である。この考え方は自社のシステムを使う場合とまったく同じである。しかし、自社システムの場合、必要に応じて自社の管理ポリシーに応じた機能を調達できるが、SaaSの場合、提供されている機能、たとえば、認証方法の選択肢や、パスワードなどの管理ポリシー(複雑性、変更頻度など)の強制の機能が不十分な場合も多い。ただ、先にもちょっと書いたが、多くの事業者のサービスで、SAMLやOpenIDといった標準的な方法で、認証を外部のサービスに委ねることができるようになっているから、これを利用して、自社のニーズに合ったシステムを自社に入れるか、認証サービス事業者のサービスを別途買うことで、自社のポリシーにあった仕様を満足する認証手段を得ることができる。自社で既にこうした連携が可能な認証手段を持っていれば問題ないが、新たに導入するのであれば、認証サービスを利用したほうが早いかもしれない。SaaS移行によって運用コスト削減をめざすのであれば、なおさらだ。ただ、認証サービスも一種のSaaSであり、「クラウド」の一部である。特に大規模なユーザは、そのサービスが本当に自社が要求する規模の負荷に対応できるのかや、安全を担保できるかなどをきちんと見ておく必要がある。認証サービス事業者には意外と小規模な事業者も多いから、今はよくても、将来的に収容するユーザ数が増えた場合に、きちんとスケールしない可能性もあるからだ。

さて、ここまでひととおりのセキュリティ問題を見てみた。既におわかりかと思うが、基本的な要素は、クラウドでも大きくは変わらない。ある意味、すべて応用問題なのだが、一方で、単純な応用ではなく少しひねって考えなければいけない問題もいくつかある。それは、おそらくは、クラウドの特質であるスケーラビリティを確保する手段に関連している。たとえば、マルチテナントモデルの採用によて、通常よりもリスクを高く見積もるべき問題もいくつかある。だが、テクノロジーが既出のものである以上、基本問題はすべて既出なので、考え方は大きくはかわらないと思う。

こうして整理してみることで、少しは漠然とした不安を整理することができたら幸いだ。

さて、技術的な問題はここまでとして、ちょっと厄介な問題にも触れておこう。4章では、いわゆる「想定外」がもたらす困難を考えてみる。

(3章終り:続く)

いまさらながらに、こんなことを書くのだけど、個人情報保護法騒ぎ、Winny騒ぎ、JSOX騒ぎ、そして昨今のクラウド騒ぎを見ながら、あらためて思ったことがある。つまり・・・・

ITリテラシの低いセキュリティ屋は「役に立たない」ということだ。

何の役にたたないかと言えば、「ビジネス=仕事」である。いまやITなしでは仕事ができないし、新しいIT技術をどんどん活用していくことが、ビジネス上での競争力に繋がる。20世紀終盤に言い尽くされてきた言葉のはずだが、これを台無しにしてしまった奴らがいる。それが、ITを知らない、「自称セキュリティ屋」たちである。

最新の技術を使いこなしていくことがIT活用の本来の姿であるとすれば、その足を引っ張りつづけることは「悪」以外の何者でもない。たとえば、しゃぁしゃぁと「ノートPC持ち出し禁止」などというばかげた主張をしてしまう奴らだ。いったい何のために買ったノートPCなんだろうか。リスクがあるならば、それを回避して「使う」方法をきちんと考え出すべきであり、「使うな」ということでは決してないだろう。ビジネスは「待ったなし」なのだから、新しい技術が使われ始めてから使い方を考えたのではもう遅い。先回りして、安全な使い方を研究しておくのが、本来のITセキュリティ屋の仕事のはずだ。

どうしてそんな変なことになってしまうのか。そういう連中を、そんな仕事につけた人たちの責任も大きいから、彼らだけを責めてもしかたがないのだが、そもそもITがわからなければ、ITのセキュリティポリシーやガイドラインを決められるはずもない。IT部門の技術畑の意見は聞いても。技術的な本質がわからないから当然疑心暗鬼になってしまう。理解するでもなく、全面的に彼らを信用するでもない。結局、意見は半分に聞いておいて、ありきたりのベストプラクティスにたよってしまう。それならばまだマシだが、最悪なのは自分が責任を負えないから、(ありえないルールを作って、それを破った)人の責任にしてしまおうという連中だ。持ち出し禁止を唱えるような輩はそんな連中が多いと私は思う。

世の経営者の皆さんに言いたい。セキュリティ屋にするなら、IT畑のエース級にきちんと教育を施して育てるのが一番いいと。間違っても総務端や法務畑の余った人材を回すべきではない。ITを使いたいと思わない人間にITのセキュリティをまかせてはいけない。それは会社のIT活用を阻害し、競争力を損なってしまうからだ。

いまさらながらだけど、ふとそんなことを考えながら、怒りがこみ上げてきたので・・・・書いてみた。

 

#リアルでのお仕事に関した愚痴ではないので、念のため・・・(苦笑)

さて、話をレイヤ別の技術に戻そう。ミドルウエアレイヤのサービスを提供するPaaSにおいては、そのうえで動作するアプリケーションが、提供される環境に大きく依存する一方で、利用者側にはある程度の自由度がある。これが、マルチテナントにおけるリスクを増加させていることは、間違いないだろう。このレイヤの障害やバグ、これがCIAにかかわるものであれば、いわゆるセキュリティ問題になるのだが、これらは基本的には事業者側の守備範囲である。利用者側の自由度を高めれば利便性が増し、利用者にとってのメリットは大きくなるが、逆に、使われ方を想定した対策も考えにくくなる。これはビジネスとセキュリティのバランス問題あろう。いわばイージーオーダー既製服であるPaaSサービスを考える上では、利用者、事業者ともに難しい部分だ。

このレイヤでは、一部制限されたネットワークアクセス、データベースやストレージ、Webサーバやアプリケーションサーバと開発用言語などが、すぐ利用できる形で提供される。誤って、もしくは不正に使われる可能性がある機能については、特に、それが外部や他の利用者に影響をあたえることがないように、制限を加えたり、監視機構を組み込んだりすることは必要だ。これらから得られる情報は、基本的には利用者に対して(必要であればNDA下で)開示されるべきだろう。それによって、利用者は自分たちの守備範囲への責任をはたしやすくなるからだ。

利用者側は自分たちが作るアプリケーションに責任を負う必要がある。PaaS上に構築されるアプリケーションは圧倒的にWebアプリが多いが、今後、XML Webサービスベースのアプリも増加してくると予想する。これは、PaaSを使うであろう利用者の多くが、一般ユーザを対象としたSaaS事業者やスケーラビリティを求める大規模ユーザであることを考えると必然だと思う。これらについてのセキュリティ問題は既出だから、当然、そうした問題を回避する方策が求められる。この部分は、もうひとつ上のレイヤで併せて見ることにしよう。

さて、最後のレイヤがSaaSである。これはいわば既製服だ。既製服にはスーツもあれば、ジャケット、ズボン、スカートなど単品もある。SaaSで提供されるサービスも同じような形だ。目的別の服を一揃えで提供しているサービスは使うほうも簡単だ。しかし、ちょっとヒネって着たい服があるように、サービスも違うものと組み合わせて使いたい場合もある。

スーツとして提供されるのが、既製のユーザインターフェイスやポータルアプリであり、単体として提供されるのが、個々の機能についてのAPIと考えてみるとなかなか暗示的だ。セキュリティもこの2面から考えてみることにする。

(続く)

事業者のセキュリティについて言えば、よく調べると案外詳細な(というか適切な)情報が公開されている。たとえば、大手SaaSプロバイダのホームページやオフィシャルブログなどを見てみるといい。大手のほとんどが海外事業者だから、それなりの英語力は必要だが、公開可能な部分については、きちんと公開しているという印象を受けている。

一方、ブラックボックスが怖いという、ある意味での「都市伝説」がささやかれているのだが、それは本当にそうだろうか。セキュリティ情報の公開については、様々な議論はあるが、リスクゼロがありえない以上、そのリスクを下げるために情報を非公開にするというのも正しい判断のひとつだと思う。しかし、それでは利用者が実際のところどうなのかがわからないと困るから、第三者の監査を受けたり、セキュリティ認証を受けたりして、きちんとやっていることを客観的に評価してもらうわけだ。大手プロバイダもその多くが、なんらかの認証を取得している。はたしてそれで不十分だ、と言えるのだろうか。もちろん、いざインシデントが発生した時の対応への不安はあるのだが、それは大なり小なり、すべてのアウトソーシングに共通する問題だと思う。先にも書いたように、責任の分界点設定と価格のバランスの問題としてとらえるべきだ。コストを下げるには、利用者側も応分のリスクをシェアしなくてはならない。その意味はリスクをとる、というよりは自前で対策を考えるということだ。もちろんそのコストが、アウトソースの追加コストに比べて大きいものならば、その部分を事業者に任せるという判断もあるだろう。リスクそのものが小さいならば、とりあえず無視しておく判断もある。このあたりは、事業者、利用者の双方で少し意識をかえる必要がありそうだ。

インシデントハンドリングについて言えば、ハウジング主体のデータセンタへのアウトソースと、いわゆる共用リソースを使うホスティング、そしてそれをさらに進めた仮想化サービスでは、難しさが異なる。利用者ごとの環境の分離が難しくなるにつれ、インシデントハンドリングも難しくなる。マルチテナントのサービスを展開する事業者は、リソースを共有しながら、どのようにユーザごとのインシデントハンドリングを行うべきかについて、考えておく必要があるし、そのための機構も必要ならば導入しておくべきだろう。インシデントハンドリングにおいて、対象以外のユーザのデータにもアクセスしてしまう可能性がある場合、あらかじめそれを契約などに明記しておくべきだし、ハンドリングにあたっては、秘密の保持とその方法論も明確にしておくべきだと思う。なかなか安いサービスでそこまで要求するのは難しいとすれば、ユーザ側でのアクセスログなどをどの程度とっておけるかという点も重要だ。大きなインシデントが発生した場合、契約への記載の有無にかかわらず、利用者側で発生したものではないという証拠をある程度揃えて、事業者に対応を迫ることも可能だろうと思う。サービスを使うにあたって、認証部分をそのプロバイダ独自の機能ではなく、SAMLやOpenIDといった標準的な方法で、自社の認証サーバやサードパーティの認証サービスにゆだねるのも良い方法だと思う。多くの大手プロバイダのサービスはこれができるようになっている。また、認証サービス事業者側でも、マルティファクタ認証のサポートや様々なレポーティング、監視機能などを提供できるだろう。

(続く)

OSの上には当然ながら、様々なアプリケーションが載るのだが、OSから見たアプリケーションとしてではなく、サービス側のプログラムから見ると、間にもう一枚レイヤが存在する。いわゆる、ミドルウエアのレイヤである。

たとえば、Webアプリを機能させるためには、当然ながらWebサーバが必要だが、これらは、独立したパッケージ(商用、オープンソースを問わず)を使用する。また、アプリを記述する言語やその処理系、データベースなども、アプリケーションとは独立して、その直下のレイヤを構成する。ここまでのレイヤをサービス化するとPaaSになるのだが、そのレベルは様々だ。必要最小限のカスタマイズもしくは制限を加えたOS環境のレベルから、ミドルウエアのレイヤをすべて統合して、アプリケーションから使いやすいAPIとして提供するものまであって、ユーザの目的によって使い分けられる。

このレイヤでも気になるのが、これらのパッケージの脆弱性問題である。とりわけ、ネットワークレイヤに直接接するインターフェイスとなるミドルウエアは、外部からの攻撃やそれに伴うマルウエアなどの侵入というリスクにさらされることになる。これらがサービスとして提供されるならば、その部分の脆弱性対策は事業者側の責任だ。また、このレイヤでは、利用者側の不注意による問題や、悪意による問題を発見、もしくは防止、軽減するための措置を講じることもできる。ある利用者の挙動が、他者に影響しないような方策を講じておくことは基本だが、個々のユーザに対して、監視機能やより安全にサービスを使える機能を提供できれば、それが事業者の付加価値となるだろう。

ユーザがデータを保存するのもこのレイヤだ。ユーザが最も気にするのが、こうした情報の漏えいや破損、逸失である。これらについては、事業者、利用者の両面で対策を考える必要がある。最もわかりやすい分け方は、事業者は自分たちのファシリティや従業者の問題によって情報漏えいや破壊が発生しない対策をきちんと講じておくことが必要だし、利用者側は、扱う情報をきちんと仕分けして、事業者を使うことによるリスクを許容できるもののみを保存する必要がある。もちろん、利用者側が補完的な対策、たとえば独自の暗号化による保護策などを必要に応じて講じることができれば、クラウドの利用範囲はより広がるだろう。また、サービスを使うにあたってのアカウントの管理はほぼ100%がユーザ側の責任である。これは、自社システムと、まったく同じ考え方で管理する必要があるだろう。

このレイヤから上でサービスを提供する事業者の多くが、マルチテナントモデルをとっている。つまり、複数の利用者グループで一つのOS環境を共有するものだ。マルチユーザOSにおけるアカウントのグループ権限管理を考えればわかりやすいだろう。事業者側がこの点で周囲すべきなのが、利用者グループ間のアクセス権限や利用リソースの管理強化である。ユーザアカウント(グループ)の管理は利用者側に委譲されており、基本的には利用者の責任だが、事業者は万一、利用者側の管理が不十分で問題が生じた際に、問題をその利用者内に封じ込めることができなくてはならない。

この問題は案外難しい。自社内のアクセス権限管理であれば、多少の悪意は考慮したとしても、管理を比較的ゆるやかにして、本当に重要なシステムは物理的に分離する、といったことも可能だ。しかし、マルチテナントの場合、悪意の存在はより深刻な問題になるだろうし、ユーザの質も様々なのだから、想定すべき事項やその程度は大きく異なる。たとえば、あるユーザがCPUやメモリを過剰に消費しないような対策も必要になるだろう。もちろん、それでもさばける能力を提供するのがクラウドではあるのだが、利用者には応分の負担をお願いしなければならないし、それが利用者側の不注意や意図しない不具合などによる場合は、特に日本の場合はモメるもとになるからである。脆弱性管理について言えば、ネットワークから攻撃可能な脆弱性だけでなく、システム内での権限昇格など、ローカルのアクセス制御に介入できるようなものやサービス妨害的なものについてもきちんと対策が必要である。当然ながらシステムへのアクセス権を持つユーザの悪意や不注意をより強く意識しなければばらないからだ。

(続く)

さて、ここまでの話は完全に事業者側の問題だが、ここから先は、サービスの形態によって対応責任の所在がかわるので注意が必要だ。

一般に、仮想化レイヤのすぐ上には、個々のゲストOSつまりは論理的な意味でのホストが存在する。一般にIaaS事業者のサービスでは、ここから上の管理はユーザの責任となる。OSそのもののセキュリティについては、いまさら言うまでもない。それを含めてOSのパッケージとして提供されるアプリケーションなどに関する脆弱性対策、OSアカウントやOSに対して論理的、物理的に割り当てられているリソースへのアクセス制御、ネットワークアクセスの制御、マルウエア対策などについてきちんと考え、必要な対策を実装していくこと。そしてその見直しを適時に行うことである。仮想化システム上のOSとて、問題はまったく同じだから、1台のサーバを管理するのと同じことをすればいい。仮想化環境は、一種の仮想データセンタであるともいえる。そういう意味では、個々の仮想ホストが攻撃を受け、侵入された際のリスク(たとえば踏み台攻撃)、ネットワーク的にはそれが物理的なものか論理的なものかというだけで、まったく違いはないだろうから、論理的にネットワークを分離するとか、仮想アプライアンスとしてのファイアウォールを導入するとかいう対策も考え方は同じだ。この部分の管理責任は、IaaS事業者との契約形態やユーザのシステム構成によるだろう。

もし、複数のゲストOSと仮想スイッチのような環境を含めて、ユーザに管理権限が委譲されているならば、ユーザの責任はより重くなる。仮想的なネットワークの管理も含めて行う必要があるからだ。しかし、これも一般のデータセンタへのアウトソーシングとは特にかわらない。問題が増えるとすれば、仮想化システムのバグ等で、たとえば設定ミス等が他のユーザにまで波及してしまうことだ。この点においては、事業者側が適切な対策を講じる必要があるし、もし、そのリスクがあまりに高いようであれば、この部分の管理権限は事業者自身が押さえてしまうことが必要だろうと思う。ユーザの自由度を下げることにはなるが、安全性やユーザ側での管理の負担は大幅に改善するだろう。

唯一増えるリスクは、ひとつ下のレイヤでの脆弱性の影響で、侵入されたホストから本来は許されない操作が可能になってしまう可能性だが、これについては前段で述べたとおりだ。事業者としては、仮想ホストの管理について、こうしたリスクを下げるために利用規約上にガイドラインを設け、必要に応じてその手段を提供することで、ユーザにゆだねた管理のレベルを最低限の水準以上に揃えるという対応も考えるべきだろう。これはユーザにとっても大きな手助けにもなる。

(続く)

一般には最下層ととらえられてしまっているのが、本来、先に書いたような分散環境の上に構築されるべき仮想化レイヤである。最初に断っておくが、私は、こうした分散環境をまったく持たない仮想化環境は、単なるサーバ統合以外のなにものでもなく、「クラウド」などとは呼べない代物だと思っている。少なくとも、複数DC間でのダイナミックな形での処理分散、多重化が行われている必要がある。もちろん、理想形は先に書いた形であるが、百歩譲っても、(地理的な意味での分散も含め)最低限の分散環境を持たないクラウドはありえない。

 

苦言はさておき、仮想化層で一般にリスクとされているのが、ハイパーバイザの脆弱性問題だ。既に過去において、本来完全に分離されているべき個々の仮想ホスト環境とハイパーバイザの機能が脆弱性によってアクセス可能になる、といった問題が発生している。仮想化が進めば、そうした問題を悪用するマルウエアなどが出てくる可能性もあるし、ハイパーバイザを経由してバックヤードに存在する共有リソースが狙われる可能性もある。

こういうと、危なげに聞こえるのだが、このリスクはどれだけのものなのだろうか。たしかに、個々のホストが独立している環境に比べれば新たなリスクではある。だが、一方で独立したホストでも脆弱性問題は存在するし、それを狙ったマルウエアが蔓延するリスクもある。大変なのはむしろこうしたホストの管理であり、それは仮想化環境でもそうでなくてもかわらない。ハイパーバイザの問題については、事業者がどれだけ真面目に脆弱性対策や監視を行っているか、という点に尽きそうに思う。また、たとえば、仮想化ホストの場合、事業者側でテンプレート的な仮想環境を用意しておき、ユーザに提供するjことも可能だ。このテンプレートの中に、標準で必要最小限のセキュリティ機能を入れておくことで、仮想ホスト全体のセキュリティベースラインを揃えることもできるし、必要に応じて集中監視、制御も一つのコンソールからできる。サーバ貸しでも同じことはできるが、単純にファイルのコピーですむ仮想化システム上での作業とは違い、手間がかかるから、コストも高くなりそうだ。

あとは、仮想化環境上で、ユーザのリソース(ストレージやネットワーク、CPU、メモリほか)をきちんと管理し、相互に影響しないように分離することだろう。つまり、あるホストに問題がおきても、他のホストに影響しないように設計されていなくてはならない。しかし、これも、なにも仮想化環境だけの話ではないし、仮想化環境ならば、論理的に構成が可能なので、より作業は容易になるだろうと私は思っている。

そういう意味ではこのレイヤの問題もほぼクリアになっているだろうと私は思う。「脆弱性対策」という意味では、いわゆるベストプラクティスを淡々とこなしていくしかないのだろう。対策とモニタリング、そして最新情報の入手と対応の見直しというマネジメントサイクルがきちんと成熟した形で実装されている事業者ならば・・・の話ではあるのだが。そういう意味では、(個人的にはあまり信用していないのだが・・・)ISO27001(ISMS)認証などは、利用者にとってはひとつの判断材料になるだろうと思う。

(続く)

まずは、レイヤ別の整理をしてみよう。クラウドの基盤が大規模分散環境、その上の仮想化基盤であるとするならば、まずはそれらに対する脅威、脆弱性とそのインパクトについて整理してみよう。言うまでもなく、このレイヤは事業者の守備範囲だ。

まず、分散環境だが、ネットワークを使う以上は、ネットワークからの攻撃の脅威にさらされることは間違いないだろう。ただ、VPNのような形でデータセンタ間のネットワークを作るのだとすれば、盗聴や侵入などの脅威はかなり低い(あえてゼロとはいわないが)と見ていいだろう。注意すべきなのは、マネジメント系システムへのアクセス制御だ。ここに侵入されないようにしないと、リスクは重大なものになる。ネットワーク的なアクセス制限をかけた上で、複数の認証機構を用意しておくことが望まれる。また、複数のセンターに分散する環境では、各センター内の基盤システムの運用は分離したほうがいい。このレイヤの保守・運用は基本的にはセンター単位でクローズした形で行い、管理機能は拠点で集中管理するような形がリスクが最も低いだろう。さらに、各センターに置くデータは暗号化もしくは秘密分散的な形で難読化して、鍵を管理拠点のみで管理しておくことで、データ漏えいのリスクは各センターのレベルではなくなる。管理拠点(複数)以外は管理機能にアクセスできないようにしておくべきだ。また、管理上の不正行為も大きなインパクトがあるので、管理拠点が複数あるならば、相互監視を、また、単一の拠点ならば、管理と監視の職務権限分離を行っておくべきだ。もちろん、各センタのファシリティの安全管理も十分に行っておく必要があるが、先に書いたようなセンタ間の機能分離が行われていて、さらにシステムが複数拠点に分散、冗長化されている前提では、ひとつのセンターでのインシデントはサービスダウン的なもに限られるので、システム全体に与えるリスクは性能の低下くらいだ。これは、災害対策的にも有効である。

 ちなみに、こうした形態での分散環境が提供されている「クラウド」事業者は、現在のところ私が知るかぎりではGoogleのみだ。単に、検索エンジンのおまけとしてのサービスだから安い、というよりは、もともとこうしたコンセプトで設計されたシステムだからこそできていることなのかもしれない。気になるのは、セキュリティだが、このあたりはまだ想像の域を出ない。公式ブログによれば、今年(2010年)にはGoogle Appsに対して米国政府基準である FISMA (連邦情報セキュリティ管理法)対応認定を取得するとの話だ。ちなみに、誤解している人が多くいそうなので付け加えれば、同時に表明されている米国政府向けのコミュニティクラウドとFISMA対応の話は別物だ。FISMAは一般のエンタープライズユーザ向けのシステムもカバーする。一方、政府向けクラウドはそれに加えて、より高度な要求に対応すると公式ブログには書かれている。こうした独自システムのセキュリティを測るには、このような認証や第三者監査による情報にたよるほかない。事業者には、是非積極的な取得や情報開示を求めたい。

(続く)