Windows Azure のセキュリティとプライバシー

プライバシーについて

2012年5月にWindows Azureのプライバシーに関する声明が更新されました。

あくまでマイクロソフトと、顧客である我々(Windows Azureの契約者)との話であることに注意が必要です。冒頭にもある通りWindows Azureを使用して提供しているアプリケーション等が扱うデータ等のプライバシーポリシーはマイクロソフトではなくそのサービス、アプリケーションのベンダーが責任を負います。

マイクロソフトはWindows Azure上に保存・アップロードされるデータはサービスを提供する目的でのみ使用される(使用というとあれですがGeoレプリケーションしありとかそういう使用かな)とのこと。ただ文中にもありますがGeoレプリケーションなど暗黙的に保存されてるデータの場所が国をまたがる場合があるのでそのあたりも気を付けましょう。なおプレビュー版(CTPやベータなど)は若干ポリシーが異なります。

セキュリティについて

こちらにまとまってます。

また、各クラウドのセキュリティアセスメントを登録し、だれでも参照できるCSA (Cloud Security Alliance)といったサイトがあるのですが、こちらのSTAR (Security Trust and Assurance Registry)にWindows Azure(とOffice 365、Dynamics CRM)が登録されています

このサイトからおなじみのWindows Azureのセキュリティに関する状況を参照・確認(ダウンロード)することができますので便利ですね。また今後登録されるクラウドコンピューティング提供者が増えると比較したりする際の情報取りまとめサイトとして成長されることが期待されます。

※但しこのCSA自体は第三者機関による認証等はないので、登録される情報はあくまで各クラウドベンダーの自己申告です。とはいえ少し探しにくいこの手の情報にまとめてアクセスできるのはいいですね。

法律関連

よく導入検討時などに言われる米国愛国者法(いわゆるパトリオット法)などの懸念や誤解については以下のサイトがよくまとまっています。

心配な方はよく読んでくださいね。

また特に大事なところとしては準拠法と管轄裁判所ですね。

準拠法と管轄裁判所は日本

グローバルに展開するクラウドの場合、準拠法や管轄裁判所が米国などの海外になっている場合があります。マイクロソフトのOffice 365の場合は、準拠法は日本法、管轄裁判所は基本的に東京地方裁判所となっています。

※上記サイトより引用

Windows Azureなど契約する際に利用するMicrosoft Online Services Customer Portal のオンラインサブスクリプション契約の条件には以下の通り記載があります。

10. 雑則
  1. 準拠法   本契約は日本の法律を準拠法とします。1980 年国際物品売買契約に関する国連条約およびその付属文書は、本契約には適用されません。本製品は、著作権およびその他の知的財産権関連法ならびに国際条約により保護されています。

  2. 紛争の解決   本契約の強制履行を求めて提訴する場合は、東京地方裁判所に提起しなければなりません。上記にかかわらず、いずれの当事者も、知的財産権の侵害または秘密保持義務の違反に関する差止請求を行う場合には、任意の管轄裁判所において行えるものとします。

オンライン サブスクリプション契約 ご契約条件 より引用

というわけでマイクロソフトのオンラインサービス関連はかなり日本ユーザーにやさしい柔軟な対応をしてもらえるようです。

 

余談

各ページ、シンプルで集約されつつあってわかりやすくなりましたね。後はもろもろ足らない部分の日本語化、Windows AzureだけじゃなくGFSやMIcrosoft Online Services全般の情報もどこからか集約して見れるとうれしいな。というか必要だと思います。

Windows AzureはAutoScaleの夢を見るか?

ちょっと前の話題ではありますが、Microsoft patterns & practicesが提供するEnterprise Library 5.0にWindows Azure Integration Packが追加されています。(現状はPreview版のようですが)

Integration PackとしてはWindows AzureのほかにもSilverlightなどがありますね。

さてこのWindows Azure Integration Packとやらは何ができるんでしょう?

EntLib vNext teaserUsing Enterprise Library 5.0 in Windows Azure(PDF) を見るとEnterprise Libraryで提供されているロギングや暗号化、データアクセス、コンフィグレーションなどのアプリケーションブロックがAzure上でも利用できるようになっているようです。

でEnterprise Libraryなので簡単なコンフィグレーションで環境の差異が吸収できるようになってたりするっぽいですね。なのでこのIntegration Packを使うとOnPremiseからAzureへ、AzureからOnPremiseへの移行とかがしやすくなりそうです。(というかその辺が目的でしょうか)

で、それはそれでいいとして。

目玉としてはWindows Azureに特化した部分としてWindows Azure Autoscaling Application Block(WASABi)が追加されたことです。

わお!素晴らしいですね!こいつを使うとCPU負荷などの利用状況や時間帯などルールを評価してアクション(つまりオートスケール等)ができるようです。

WASABi

まぁカスタムアクションやルールの定義も自由度高いので、そのあたりは柔軟にできそうですね。というかそのためのライブラリだし。

image

想定されるMaxとMinを指定してインスタンス数が予想外に増えないように・下がらないようにルール作ったり、スパイクに対応させたり。
判定材料はCPU負荷などいろいろ構成できますと。

ということでWindows Azureは公式標準機能ではありませんがオートスケールを手に入れたようです。まだPreviewなので、要望がある方は是非Voteってください。

実際に試したい方はNuGetにあがっているのでそちらからもどうぞ。

以下余談です。

このWASABiを使うと確かにオートスケールできそうです。でもWASABiを使ってるアプリケーションのみですよね。単発のLOBなアプリケーションとかならいいんでしょうけど、適用する場所、やり方、運用、ITのあり方なんかは別でちゃんと考えたほうがいいと思います。似たようなことはSystemCenterでもできるわけですし、なんでそっちでも出来るかとかは考える価値はあるかと思います。

まぁ釈迦に説法と思われますが。

あとオートスケールいうならゼロインスタンス機能くれよーーこればっかりはAzure側で対応してくれなきゃ無理!!

Windows Azure Platform Training Kit May 2011 Update

リリースされてました。

変更点は以下の通りです。

  • [Updated] Building Windows Azure Application with Cache Service lab updated to the production release of the Windows Azure AppFabric Caching service
  • [Updated] Rafiki demo updated to the production release of the Windows Azure AppFabric Caching service
  • [Updated] Working with Drives exercise added to the Exploring Windows Azure Storage lab
  • [Updated] Caching Content from Hosted Services exercise added to the Windows Azure Content Delivery Networks lab
  • Applied several minor fixes in content and updated Service Bus labs to the new portal experience

Windows Azure AppFabric ServiceBus はCTPにいろいろ機能が追加されているのでこちらも要チェックですねぇ。

CDNやらCachingやら特性知っておかないといざ使おうとして嵌るので、早めにつぶしておきたいですが。

Windows Azure アプリケーションの構成とか

Windows Azureのアプリケーションを作る際、どのようにロールを構成してエンドポイントを設定して…というのは結構悩みどころかなという気がするんですが皆様いかがでしょうか。

単純にSQL Azure(DB)+Webサーバーx n 台あればいいYO!という構成だと(インフラ的なところで)悩むところはあまりないのですが、Worker Role絡んだり、WebフロントエンドとバックエンドとDBと…とかになってくると意外とはまりそうですね。ええ、はまってますとも。

ということで今日はWindows Azureの構成とパッケージング、エンドポイントあたりをダラダラと考察したいと思います。

続きを読む

WCF Data Services で HTTPレスポンスヘッダにアクセスしたい

だいぶ前にWCF Data ServicesでForm認証をやりましたが、Cookieで認証してるんだからいずれCookieの期限が切れるわけです。

で、ASP.NETではCookieの自動更新を有効にするためのフラグ(slidingExpiration)があり、このフラグをtrueにしておくことで期限が半分過ぎた後にアクセスがあると、新しいCookieを発行してくれるようになります。
(レスポンスヘッダの”Set-Cookie”に新しいCookieが付与される)

<authentication mode="Forms">
  <forms name="sample" timeout="1440" cookieless="UseCookies" slidingExpiration="true" />
</authentication>

さてブラウザ等はこの辺の処理を自動的にやってくれますが、アプリだと手動でやらないといけませんね。
ではEntityFrameworkではどうでしょう?

うーんそのまんまだとCookieどころかHTTPのレスポンスさえ見れませんね。
じゃぁどうしよう?と調べたところエンティティをQueryOperationResponseにキャストしてあげると良いみたいです。こんな感じ↓

ServiceReference1.Entities context = new ServiceReference1.Entities(new Uri("http://localhost/test.svc"));
context.MergeOption = MergeOption.NoTracking;
context.IgnoreMissingProperties = true;

var nodes = context.Users;

QueryOperationResponse<ServiceReference1.Users> response = nodes.Execute() as QueryOperationResponse<ServiceReference1.Users>;
if (response.Headers.Keys.Contains("Set-Cookie"))
{
    //response.Headers["Set-Cookie"] に新しいCookieが入ってる
}

foreach (var user in response)
{

	Console.WriteLine(user.DisplayName);
}

Cookieの有効期限が半分以上過ぎてからアクセスすると、レスポンスヘッダにちゃんとSet-Cookieが付与されているのがわかりますね。
あとはこの値をゴニョゴニョしておけばOKです。
※WCF Data Servicesで認証Cookie以外のCookieははかないと思いますが…一応注意ください。

これでForm認証するWCF Data Servicesとクライアントはばっちり?ですね!

誰も知らなかったWindows Azure CDN

タイトルはホッテントリメーカーで生成しました。内容とはあまり関係ないと思われます。

さてWindows Azure CDNが新しくなったので、試してみました。

目玉としては、

  • Web/VMロールでCDNサポート
  • HTTPSなエンドポイントをサポート

だと思うので(QueryStringでどうのこうのもありそうですが検証が大変そうなので今回は置いておきます)、それぞれ見てみようと思います。

続きを読む

WCF Data Services の続き

前回のPOSTで書き忘れたこと。

インターセプターを使えば特定の列だけ値を変える等できます。OData and Authentication – Part 7 – Forms Authentication にも記載されていますが、たとえば認証されているときだけセンシティブな情報を返すとか。

認証ユーザーやロールに応じて1つのWCF Data Services で柔軟に操作範囲を変えたりできるのはすごく便利ですね。

あと忘れてましたがASP.NET開発環境だとうまくフォーム認証が動きませんでした。(.adxが見れない?)このあたりあまり情報なくてちょっと諦め気味…
面倒だけどデバッグはIISのワーカープロセスにアタッチする等したほうがいいのかも…?
またSQL Serverへの接続は手抜きですが、アプリケーションプールのユーザー等にアクセス権限無いと無駄に怒られますので注意。

最後に追加でいろいろリンクを置いておきます。

WCF Data Services で フォーム認証を利用する

ちと調べてて悩んでたので一応吐き出しておきます。

WCF Data Services を使うとOData形式等で強力なデータ連携が可能になります。
特に Entity Framework や LINQとの相性は抜群です。

でもむやみやたりにデータ公開したくないわけで。特にクラウドに置いたりする場合は。
じゃやっぱり認証かけたいよね、ということで今回は以下のケースで考えてみます。

  • 認証は必要だけど、最初だけの認証にしたい
  • クライアントアプリケーション内で(プログラムで)処理したいので、最初の認証以降はプログラム内で処理したい
  • フェデレーションもいいんだけど認証プロバイダも弄りたいというかカスタム認証プロバイダ使いたいです

イントラネット等でWindows統合認証が使えるならこんな苦労はないのかも知れませんが、プログラム内から操作する方法だと取れる手法は限られてきます。

で、今回はお手軽にフォーム認証を使って Cookie ベースで制限をかけたいと思います。(まぁなんというか、やってることは OData and Authentication – Part 7 – Forms Authentication と変わりません。)

※ Cookie ベースならまぁローカルに保存してても許してくれそうですし。

続きを読む

ASP.NET MVC3 RTM!

ASP.NET MVC3がやっとRTMになりました。(RTWじゃなくてRTMなんですね)

さて例によって Windows Azure 上でASP.NET MVC3を使おうとすると、アセンブリ参照をごそごそ追加してローカルコピーをTrueにしないといけないわけです。

※詳しくは 割と普通 さんの 記事「ASP.NET MVC3 RTMをWindows Azureで動かす!!~懇切丁寧な解説付き~」を参照ください

続きを読む