2017年09月08日

クラウドでのデータ分析を推奨する理由

私の仕事では日頃からデータ分析を仕事としているのですが、普段の行動で最も気をつけているのが、「データのセキュリティ」です。

【現状のデータ分析におけるリスク】

データ分析という仕事はお客さんのデータを預かり、これを様々な切り口で切って観察し、仮説をたてて検証する、というプロセスを何度も繰り返すのですけれど、ほとんどの場合でその預かるデータの機密性が非常に高い。それは当然で、ビジネスにおける様々な課題について、その意思決定を左右するような力をそのデータが持っているわけですから、これが軽々しく流出してよいわけがありません。

さて、そういう「虎の子」のデータを普段どうやって取り扱っているかというと、すべての局面で様々な対策をとっています。

*受け渡しから結果報告まで

まずは受け渡し。データを預からないことには始まりませんので、お客さんからデータを預かります。最近でこそ暗号化してメール添付やウェブストレージで受け渡しということが多くなってきましたが、まだまだポータブルハードディスクで現物渡し(もちろん、内部のデータは暗号化済み)とか、USBメモリに入れて郵送(これも暗号化、送付はトラッキング可能な方法で)というケースがあります。

そして実際の加工や分析の場面。預かったデータを取り扱うマシンはディスク暗号化、ログインのポリシーも強め(これを書くとセキュリティが下がるので書けません)、どのマシンに入っているかとか、誰が取り扱えるかなど、ちゃんと管理します。基本的には担当者のみがそのデータを扱うことができて、同じ社内でも担当の違うデータは扱えません。PCやポータブルハードディスクは施錠管理ですし、すべて暗号化してあるので、万が一盗難があった場合でも大丈夫にしてあります。

分析の結果をお客さんと共有する際も、昔は分析報告書を紙に印刷して現物納品というのが多かったのですが、最近はほとんどが電子ファイルでの納品で、ワードやエクセル、パワーポイントなどのドキュメントの他、分析コードや簡易ツールのコードなども電子媒体で納めることが多く、これらも暗号化してメール添付や暗号化して現物送付など、受け渡し方法に応じて対策をとっています。

*本当のリスクはどこにあるのか

さて、このように、どうしてもデータやそれに関する資料が動くものですから、それが行き来する度にリスクは発生します。「絶対安全」であることを目標としてもちろん対策をとっているのですけれど、理論的にはリスクに「絶対」はあり得ませんので、必ずリスクが存在します。

そして実は、このデータのリスクというのは私達のように外部でデータ分析の仕事を実施している会社にとどまりません。むしろ、私達はそれが本業ですから様々な対策をとっていますけれども、本当のリスクはお客さんの側にあると感じています。たとえば、データが暗号化されていない状態でPCに入っていないでしょうか。もしくは、会社内の計算サーバーがハダカの状態で足下に転がっていたりしないでしょうか。近年はSIにおけるデータのセキュリティというのは非常にうるさく言われていて、情報漏洩の事故が起きる度にセキュリティ投資が行われ、どんどん堅牢に(その一方で使いにくく)なっていますが、データ分析はアドホックに実施されることが多いので、堅牢なシステムからデータを一時的に吸い出して、手元のPCで操作するというケースが非常に多いです。堅牢すぎるシステムの中では、それが堅牢すぎるために、分析ができる環境を作る余地がありません。その結果、リスクが手元に集中します。

【クラウドの方が安全】

さて、そういう環境の中で最近にわかにクローズアップされてきたのが、クラウドです。Amazon Web Service、Google Cloud Platform、Microsoft Azureなど。2003年頃からビッグデータの時代に入り、今ではビッグデータの取り扱いはクラウドの力無しでは非常に難しい。しかし、プライベートクラウドならばまだしも、これらのオープンなクラウドでデータを取り扱うのは危険なんじゃないか。自社のデータが、その他大勢のデータと混在して置かれているのはリスクが高いんじゃないか。

数年前まではそういう話もよく聞きましたし、実際にクラウド事業者のセキュリティに関する関心度やレベル感もまちまちでしたので、そう言われても仕方がない面はありましたが、ビッグデータの波が一段落して、つまり、「ビッグデータ」がバズワードから本当に意味のあるものが選別されてきた頃から徐々に、ビジネスで使えるクラウドとは何かという部分でコンセンサスが取れてきて、各社、セキュリティの担保に非常に力を入れてきています。ですから、五年前まではまだ言えませんでしたが、今は確実に、「データはクラウドにある方が安全」です。受け渡しのリスク、盗難のリスク、暗号化してないリスクなど様々なリスクが、クラウドを利用することで解消されます。

*クラウドデータ分析のワークフロー

ここではGoogleのクラウドサービスであるGoogle Cloud Platformを例に挙げますが、他のクラウドでも、使いやすさや構築のしやすさが少し異なるだけで大体同じように使えます。

Google Cloud Platform、以下GCPと略しますが、ここではまず「プロジェクト」という単位で全てのデータが管理されます。この概念がデータ分析では好都合で、あるデータ分析プロジェクトが始まったら「プロジェクト」を作り、その中で全ての作業を行います。セキュリティもプロジェクト単位で設定できるので、誰がこのプロジェクトに参加するのか、それぞれどのデータをどのように扱えるのかなどを決めることができます。

次に、データ元はデータをそのプロジェクトにアップロードします。GCPでは様々なデータベースが備え付けられていますが、特別な操作をしない限りそれらのデータはプロジェクト以外からは参照できず、プロジェクトの参加者、さらに、参加者のうちでもデータを閲覧する権限を付与されたアカウントのみが、そのデータを見ることができます。

データを加工するのは、そのプロジェクトの中で利用される様々なサービスです。最近ではgoogleが用意している人工知能APIなどが強力で、テキスト解析や画像解析の前処理などは学習済み人工知能を用いて前処理ができます。また、bigqueryやdataprepなど、データをアドホックに操作加工できるツールもあり、さらには備え付けられていない処理はCompute Engineというサービスで計算サーバーを立ち上げ、それがプロジェクト内でデータを受け取り、加工し、またプロジェクト内のデータベースに返すことで処理することができます。

そのようにして加工されたデータを実際に分析するのも、Compute Engineで立ち上げた計算サーバーを利用したり、最近では機械学習のAPIを利用したりします。機械学習をAPI化したサービスはいま大流行していますから、google, amazon, microsoftの大手三社もこれからリリース合戦になりそうです。人工知能の花形である深層学習、googleではTensorflowもAPIで利用できますし、予測系でよく利用されているXGBoostなどもそのうちAPI化されるでしょう。APIになっているものはそれを利用し、そうでないものだけ計算サーバーをたててプログラミングする、そういう時代になってきました。

*クラウドが安全な一番の理由

そして、ここに述べた一連の作業において一番のポイントは、全ての作業が「プロジェクト」の中で完結するということです。データをローカルにコピーしないポリシーにすれば、全てのデータはクラウドのプロジェクト内に収まっており、そこから外に出ることはありません。ローカルにコピーする必要がなくなることは、データセキュリティ的にもリスクが小さくなり、機密情報の漏洩に怯える必要がなくなるため、精神衛生上も非常に良い効果をもたらします。ログインに二段階認証を義務づければ、第三者がアカウントを乗っ取って入ってくるリスクも非常に小さくなります。そして最後に、プロジェクトを削除することで、すべてのデータが無事に消えます。私達の側では、どのマシンでどのデータを扱っているかというトラッキングをする必要がなくなり、データを観察することに集中できますし、お客さん側ではプロジェクトが消えたことをもって全てのデータが安全に消去されたことを確認できるわけですから、安心です。

*特に、GCPの特徴

また、これはGCPの特徴なのですが、アカウント管理が非常に分析者向けにうまくできています。GCPにおけるプロジェクトへの参加は基本的に自身のGoogle Accountを用います。Google Accountというのはメールやカレンダー、ウェブストレージなどを束ねたそれらのすべてを使うためのもので、エンタープライズ向けにはGSuite(旧google for work)というサービス名で提供されています。エンタープライズ向けなので企業向けにしっかり管理されていて、これを導入している企業では毎日のようにメールやカレンダーツールとして利用しています。その毎日利用しているアカウントを用いて、GCPにログインすることができるのが、セキュリティを大きく向上させます。

その理由。エンタープライズ向けメールというビジネスの基幹とも言うべきツールですから、皆さんかなりセキュリティに気をつけています。多くの会社は二段階認証を用いていると思います。Google側も不審なログインには目を光らせています。そして、毎日使うものですから、アカウントに異常があったときに気付きやすい。気がつくのが早ければ早いほど、なにかあっても被害は小さくできます。

プロジェクト毎にアカウントを作ったりすると、どのプロジェクトでどのアカウント、どのパスワードだったかを管理しなければならず、そこにリスクが生じますが、毎日基幹で使うものは皆さん堅牢に使っても慣れますよね。

プロジェクトへの利用権の追加は基本的にはこのGoogle Accountを抜き差しするだけです。最近のデータ分析者はもちろんある程度こういう情報インフラの扱いに慣れているのですが、セキュリティ管理をするのが仕事ではなく、仕事はあくまでもデータの分析ですから、「google accountを入れるだけ」という簡単さでセキュリティが保たれることが非常に大事です。これが難しいと、専門のシステム担当者をつけなければならず、コストが高く付いてしまいますが、そういう面倒だけど大切な部分をGCPが肩代わりしてくれるのは、データ分析者にとっては非常にありがたいことです。

このように、データ分析プロジェクトとクラウドは非常に相性がいいんです。実は、これによって私はAWSでデータ分析を行うことのストレスから解放されました。AWSでは基本的にはことあるごとにIAMを作りますが、これはシステム開発的視点なんだと思います。作ったシステムが長期にわたって使われて、開発者はある段階でそこから抜けるので、特定のアカウントだけ消したい。でも、データ分析プロジェクトでは逆で、分析者は居続けるのだけれど、プロジェクトの方が完結すると消えてくれます。だから、GCPはデータ分析と非常に相性がいい。おそらくそのうち、私の会社のようなデータ分析をする企業は、ほとんどがGSuiteを利用して、GCPでデータ分析をするようになるのではないかなと思えるくらいです。

【分析クラウドの弱点】

しかし、このように万能に見えるクラウドデータ分析ですが、弱点もあります。

*グラフィカルツールの導入が遅れている

データ分析は、データを様々な形で観察し、そこからヒント(=仮説)を得て、検証するというプロセスを何度も何度も繰り返しますが、そこで非常に大切なのはビジュアリゼーション、可視化です。手元にデータがある場合には、ExcelやRstudio、Jupyterや、SPSS、Amosなど、視覚に訴えるツールが沢山ありました。これが、クラウドに移行したらコンソール作業しかできない、なんて状況になってしまったら、浮かぶアイデアも浮かばなくなってしまいます。データ分析に可視化の便利さは必要不可欠です。データをぱっと入れたらぱっと出てきてほしい。そこに、いちいち画像をダウンロードしたり、データをダウンロードして手元で可視化したりなどしていたら、クラウドで作業している意味がなくなってしまいます。

もっとも、これまでもグラフィカルツールが全く利用できないわけではありませんでした。昔はX-Serverなどがありましたが、最近ではウェブベースで画面が提供されます。Jupyterはそうですし、RstudioもRStudio Serverはウェブベースでの分析環境を提供してくれます。しかし、それをクラウドに仕込んで、遠隔からアクセスするにはhttpやhttpsのポートをあけるか、sshでトンネルするか・・・そういう作業は多くの分析者は苦手とするところなので、簡単に、セキュアに、ウェブの画面をこちらに飛ばしてくれるような環境が望まれます。

実はその動きは既に始まっており、GCPでは、Jypyterはcloud datalabというサービス名で最近提供され、簡単にウェブベースのクラウド分析プラットホームとして利用できるようになりました。一回だけコマンドラインで命令を入れる必要があるのですが、あとはブラウザに出てきたボタンを押してJupyterを利用することができます。

RStudioも、ローカルのRStudioを利用して、クラウドのRStudio Serverの仮想マシンを立ち上げ、アクセスすることを簡単にする試みが始まっています。(GoogleComputingEngineRからRのDockerで立ち上げる試み)このケースではまだ簡単にウェブアクセスができる部分が抜けているのですが、これも時間の問題でしょう。もちろん、ネットワークやクラウドを理解している人はセキュアなトンネルを掘ってその中を通してセキュアにアクセスすることは可能です。(私も次の記事でその方法について書く予定です。)

*プロジェクト管理ツールがない

大手三社のサービスをデータ分析プロジェクトの視点で眺めていると、プロジェクト管理ツールがないことに気付きます。ドキュメント管理やタスク管理、チャット、スケジューラーなどは、そのプロジェクトのために使えるツールが付いていると嬉しい。なぜなら、データ分析プロジェクトにおいてはドキュメント自体が機密情報満載ですし、タスクも詳細に記すと機密情報に触れざるをえなくなります。多くのプロジェクトでは外部のプロジェクト管理サービスを利用したり(その場合、機密情報は別で管理しなければならなかったり、セキュアであっても情報がプロジェクトの外に出てしまう)、Google Docsなど、同じアカウントで管理されているけれども、プロジェクトの外にあるリソースを利用しなければならなくなってしまう。これでは、「プロジェクト内で完結」の理想から外れてしまいます。

ですから、これらのツールがプロジェクトに紐付いて提供されることは、データ分析プロジェクトのセキュリティをさらに向上させ、分析者を分析以外のことで悩ませる時間が減ります。

なお、仮想マシンを立ち上げて、そこにプロジェクト管理ツールをインストールして利用するという手はもちろんあります。しかしその場合、管理ツールを管理するエンジニアを別にアサインする必要が出てきて、コスト高になります。繰り返しますが、データ分析者はそういったツールのセッティングやセキュリティに精通しているわけではないので、SaaSで提供されればそれに越したことはなく、それがプロジェクトに紐付いていてくれれば、「プロジェクト内で完結」します。

*遅いか、高いか

これはデータ分析のワークフローの特徴なのですが、データ分析にはデータをあれこれ眺めながらう〜んう〜んと考えている時間と、考えがある程度まとまって、分析の方針が決まって、えいやっと巨大なデータを加工したり、大量のCPUやメモリを使って大規模な計算を実施する時間があります。それが間欠的にやってきます。すると、考えている時間は計算リソースをほとんど使わず、計算している時間は大量に計算リソースを使うので、大きい方にあわせて計算機を動かしておくと、使っていないのにどんどん費用が嵩んでいきます。かといって、使っていない時間が勿体ないからと小さいリソースしか割り当てないと、いざ計算したいときには全然計算が終わらない、などというクラウドらしからぬ時間が勿体ない状況になってしまいます。

ですから、データ分析は仮想マシンを立ち上げて実施するのではなく、本当はSaaSで実施できるのが嬉しい。例えばR ServerのAPIが提供されていて、それにデータとリソース規模を入れてあげれば、裏で巨大なリソースが動いて、数時間後に答えが返ってくる、など。RStudio Serverの裏で自由にRのAPIが利用できるような環境になったらいいですね。TensorflowはAPI化されましたから、要望が多ければその可能性もあるでしょうし、そういう汎用分析APIがもっと多種多様にできてくると、クラウドデータ分析の利用価値がもっと高まります。


【最後に】

現状ではもちろん、お客さんの了解がなければデータをクラウドで分析することは許されませんので、ローカル環境を使うことがまだまだ多いです。しかし早晩、クラウドに置き換わっていくでしょう。クラウドのセキュリティがちゃんと認識され、ローカルに受け渡ししたりすることのリスクと同じ天秤に掛けられるようになってくれば、自然とデータはクラウドで取り扱われるようになっていきますし、ローカルで取り扱うリスクやコストが何倍にもなることが意識されていきます。その環境をgoogleが作るのか、AWSか、Azureか、はたまたアリババクラウドのような新興勢力が市場を根こそぎ持っていってしまうのか、ここから5年くらいが最も激動の時期になるんじゃないかなと、思っています。


posted by jinya at 21:45| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。