前回は、業務システムの開発にWindows Azureを選定した経緯を説明した。今回はWindows Azureを利用する上で実施したアプリケーションアーキテクチャ上の対策をいくつか紹介する。

執筆者紹介

三宅和之(MIYAKE Kazuyuki) - ソフトウェアプロセスエンジニアリング


ソフトウェアプロセスエンジニアリング(SPEI) 代表取締役COO。PMP及びCMA。信託銀行のクオンツアナリストから要求アナリストへ転身しSPEIを設立。「要件定義とアーキテクチャからシステム開発を変革する」をテーマに活動しているSPEIでは、主に要件定義・プロジェクトマネジメントを担当。近年はクラウド時代に最適な要求プロセスとは何かを追求すべくプロジェクトに邁進している。近著に『要求の「基本」原則』(発行:技術評論社)がある。

3つの対策(1) - SQL Azureデータベースの暗号化

パブリッククラウドの利用で必ず議論になるのがデータの保護だろう。本プロジェクトでも個人情報を扱うため、データの暗号化は最優先の要件だった。

暗号化と言っても様々な箇所で対応が必要になる。ネットワークの暗号化については、Windows AzureではSSLで比較的容易に実現できる。工夫が必要となるのはSQL Azureデータベースに格納されるデータの暗号化だ。何もしなければSQL Azureに格納されるデータは暗号化されない。また、オンプレミスのSQL Server 2008で提供されている透過的暗号化(TDE)のような仕組みもSQL Azureでは提供されていない。

今回実装したデータベース暗号化の方法は顧客との機密事項に該当するため詳しくは説明できないが、以下のような方針で実現した。

  • SQL Azureデータベースに格納される個人情報は全て特定のアルゴリズムで暗号化
  • エンコード/デコードは特定のWeb Roleのみが可能

SQL Azureに直接アクセスしてもデータを復号化できない設計のため、メンテナンス負荷は上がってしまう。しかし、今回はセキュリティを強化するために運用負荷を多少犠牲にする方針を採用した。

大規模な個人情報漏洩事故が絶えない中、(求められる対策のレベルは異なるにせよ)クラウド上に保管されるデータの暗号化は避けて通ることはできないはずだ。データベースの暗号化はパブリッククラウドサービスにぜひ標準で組み込んで欲しい仕組みのひとつである。