11)Trying to figure out how to Create a Blob without credentials (using BlobContainerPermissions)
- 質問:
- 回答:
SAS(Shared Access Signature)を使用することで可能になります。
- 解説:
ブロブストレージでは、コンテナーと呼ばれるフォルダの中にデータを配置することになります。コンテナーに対して共有ポリシーを設定可能で、誰でもアクセス可能にしたりアカウントの所有者のみがアクセスできるように設定できます。
しかし、この共有ポリシーの設定では、特定の人たちに特定のコンテナーのみにアクセスをさせたい場合も、コンテナーすべてに対してアクセス可能な、アカウントの所有者の権限を割り当てる必要があります。そのため、特定のコンテナ内のファイルのみにアクセスさせたいような要望を満たすことができません。
この問題に対してSASという機能が有効です。SASはコンテナーやブロブ単位でアクセスを制御することが可能です。使用するためには次のような記述を行います。
// ブロブの取得 var blob = container.GetBlobReference("test.txt"); // SASの設定 var sas = blob.GetSharedAccessSignature(new SharedAccessPolicy() { // 権限の設定 Permissions = SharedAccessPermissions.Read |SharedAccessPermissions.Write, // 権限の有効期間の設定(5分間は有効) SharedAccessExpiryTime = DateTime.UtcNow + TimeSpan.FromMinutes(5) }); // SAS設定済みのURIを表示 Console.WriteLine(blob.Uri.AbsoluteUri + sas);
Development Storageを使用してSASを設定した場合は次のようになります。
SASを設定しない場合は、次のようなURIとなります。これは、アカウント所有者のみがアクセス可能な設定となっていた場合、アカウント所有者以外はアクセスできません。
http://127.0.0.1:10000/devstoreaccount1/testcontainer/test.txt
一方、SASを設定した場合は、クエリ文字列が付与された次のようなURIになり、アカウント所有者のみがアクセス可能な設定となっていた場合も、このURIを知る人がアクセス可能になります。
http://127.0.0.1:10000/devstoreaccount1/testcontainer/test.txt?se=2010-10-31T14%3A19%3A10Z&sr=b&sp=rw&sig=RBTIS5DnpbxWwv2ku7X0kzfyqmcMcx6NW3Q6s9nnOr0%3D
これによりアカウント所有者の権限を付与しなくても特定の人達に特定のコンテナーのみにアクセスを許可することが可能です。
12)Multiple Storage Access Keys
- 質問:
ストレージサービスのアカウントキーが複数あるのはなぜですか?[初級][管理]
- 回答:
アプリケーションで使用しているキーを変更する際に、アプリケーションを停止させずに変更するためです。
- 解説:
Windows Azureのストレージサービスに対して無制限でアクセスするためにはアカウントキーをアプリケーションに設定する必要があります。現在、このアカウントキーはプライマリとセカンダリの2つが用意されています。一般的にアプリケーションはプライマリのアカウントキーをサービス設定ファイルに設定します。
例えばアカウントキーがプライマリのみしかない場合、アプリケーションを一旦停止させた上で、アカウントキーを再作成して反映させた上で、アプリケーションを再起動しなければいけません。
一方、アカウントキーが2つある場合は、まずアプリケーションに設定されているアカウントキーをセカンダリに切り替えた上で、サービスを止めずにプライマリのアカウントキーを再作成します。そして、再度プライマリにアカウントキーを戻すことで変更が完了します。そのため、アプリケーションを停止する必要がありません。
このような運用を意図して2つのアカウントキーが用意されているようです。
13)CDN over HTTPS?
- 質問:
- 回答:
現在は使用できません。
- 解説:
CDNとは、ネットワーク経由でデータを大量配信するためのネットワークです。キャッシュ技術の使用やネットワークの各地にデータ配信ポイント(エッジサーバ)が用意することにより高速でのデータ配信が可能になります。ストレージサービスで提供されていて東京にもエッジサーバが用意されてます。この機能を使用することで画像データ等の通信遅延が発生するようなデータなどが高速で配信されて、世界中のかなりの場所に対して平等にデータ配信が可能になります。また、Silverlightのxapファイルなどを配置することで高速でサービス提供が可能になるなど使い方は発想次第です。
ただし現在はHTTPでのアクセスのみがサポートされていて、HTTPSでのアクセスはサポートされていないので注意が必要です(今後サポート予定です)。
14)Antivirus in Windows Azure
- 質問:
Windows Azureではウイルス対策が必要ですか?[中級][管理]
- 回答:
必要ありません。
- 解説:
フォーラムでは必要ないと断言していますが、現在は実装されていないため必要です。しかし、今後実装予定で実装後はユーザーの対処が必要なくなるため、将来的に必要がなくなるということです。
では、現状での対処についてですが、オンプレミスのようにサーバにウイルス対策ソフトをインストールできないため特殊な対処が必要になります。フォーラムの当該スレッドではスタンドアロンで動作してコマンドラインで動作するウイルス対策ソフトをワーカーロールで動作させることを提案されていて、Norman Malware Cleanerが紹介されていました。ただし、提案者も実際には試してみたことがないそうです。