制作現場で素材のやり取り(写真やpsd・aiデータなど)の容量の大きなデータをやり取りする場合、今はDropboxやOneDriveなどのオンラインストレージサービスを使うことが多いと思います。
さてMicrosoft AzureのBLOBストレージの機能をうまく使えば、「特定の人たちの間で一定期間、データの共有やアップロード・ダウンロードができる」自前のDropboxやOneDriveのような仕組みを作ることができる、というのをお聞きしたので今回はそれを実際に試してみました!
SAS(Shared Access Signature)を利用する
Azure BLOBストレージは容量無制限なので、この機能を他人と共有できれば自前でDropboxやOneDriveのような仕組みを作ることができます。
しかしながら、Azure BLOBストレージを使うにはアカウント キーが必要になってきます。アカウント キーを第三者に渡すのって現実的ではありませんよね…。
Azure BLOBストレージには、該当のパブリックではないリソースに対して限定的に「参照・更新・削除」を可能とするための機能SAS(Shared Access Signature:共有アクセス署名)があります。
SASはアカウント キーを知らせずに、自分のストレージ アカウントのオブジェクトへの制限付きアクセスを他のクライアントに許可することができるとのこと。
https://azure.microsoft.com/ja-jp/documentation/articles/storage-dotnet-shared-access-signature-part-1/
今回はこの機能を利用するのですが、「Microsoft Azure Storage Explorer」を使えば一切スクリプトを書かずにSASが利用できます!
これは便利!!
https://zuvuyalink.net/nrjlog/archives/2668
というわけで、設定手順です。
Azureポータル画面で新規のストレージアカウントを作成
まずはAzureポータル画面でストレージアカウントを作成します。
[新規] > [データ + ストレージ] > Storage を選択。
「デプロイ モデルの選択」は今回は「リソースマネージャー」で。
ストレージアカウントの「名前」と「リソースグループ」を入力して作成。
「sharearea2016」という名前のストレージアカウントを作成しました。
https://zuvuyalink.net/nrjlog/archives/1612
本来であればコンテナーの準備までAzureポータル画面で行うのですが、ストレージアカウントの作成のみでOK。
Microsoft Azure Storage Explorerでコンテナーを作成
ここから先は、Azureポータル画面を使わずに「Microsoft Azure Storage Explorer」のみで設定していきます。
「Microsoft Azure Storage Explorer」を起動してみると、先ほど追加したストレージアカウント「sharearea2016」が追加されています。
(作ったストレージアカウントがいないときは更新してみましょう)
左メニューの下にAcctionタブがあるのでクリックするとCreate Blob Containerがあるのでクリック。
作成したいコンテナー名を入力。
今回は「project201603」というコンテナーを作成しました。
SAS(Shared Access Signature)の設定
この時点では、まだコンテナー「project201603」は共有で利用することができないので、利用できるように設定していきます。
赤枠内のManage Access Policiesをクリック。
「Add」をクリック
IDは自動で生成されています。
Start time(開始)とExpiry time(有効期限)を入力。
該当コンテナーをDropbox的に使う場合、参加ユーザー全員が「参照・更新・削除」など全ての機能を使えた方がいいので、赤枠内の部分全部にチェック入れておきます。
Time zoneは国内なら「local」でよいかと。
これでSASの設定が完了!
共有するSAS(Shared Access Signature)のURLを発行する
赤枠内のGet Shared Access Signatureをクリック。
Access policyの部分で先ほど設定したSASのIDが選べるので選びます。
設定した内容が読み込まれたのを確認したら「Create」をクリック。
表示される「URL」を使用します。
これでコンテナー「project201603」が共有で利用できるようになりました!
本当に他のユーザーがコンテナー内を見れるか確認するために、画像「Desert.jpg」をいれておきます。
実際にSASをMicrosoft Azure Storage Explorerで利用してみる
では、発行したSASのURLを利用してみます。
別のMicrosoftアカウントで「Microsoft Azure Storage Explorer」にログインしてみました。
先ほどのMicrosoftアカウントとうってかわり、コンテナーは空っぽです。
Storage Accountsを選ぶと、ActionタブにAttach Storage using SASが表示されるのでクリック。
SAS URIに、さきほど発行されたURLを入力してOKをクリック。
Service SASのところにコンテナー「project201603」が表示され、中には先ほど別のMicrosoftアカウントでいれた画像「Desert.jpg」があります。
キチンと共有できました!
画像をアップロードしてみる
権限的には共有者も「参照・更新・削除」できるようにしていたので、実際にデータをコンテナー内にUPできるのか試してみます。
「Koara.jpg」をアップロードしてみましたが、キチンとアップロードできました!
削除ももちろんできます。
有効期限が切れたらどうなる…?
SASの設定で有効期限を決めることができますが、切れたらどのような表示になるのか確認してみます。
あえて有効期限が切れたあとに「Microsoft Azure Storage Explorer」を起動してみます。
共有者のMicrosoftアカウントでは、上部にメッセージが出てコンテナー名は表示されていますが中が見えなくなっています。
もちろん、各種操作もできなくなりました。
大元のMicrosoftアカウントはどうでしょう?
こちらはキチンと見えるし、操作も変わらずできます。
このように、有効期限がくると自動で権限者(大元のアカウント)以外の人は該当コンテナーにアクセスできなくなります。
最後に
SASについては、@kazumihirose さんに概念を教えていただきました。毎度ありがとうございます!
さて、このSASという方法は、共有者に対して一々データを消したり権限を外したりという手間が省けることが便利でいいなぁと実際に試してみて思いました。
BLOBストレージは容量無制限なので、外からアクセスはできなくなってもデータ自体はバックアップ扱いで残し続けることも可能ですし、再度有効期限を設定すれば共有として使えます。
使い方の工夫として、「期間限定で画像などの配布をしたい場合」などにも使えるのではないでしょうか?
この使い方はちょっとオモシロイと思うので、自前のDropbox的な仕組みを作りたい方はぜひ試してみてください!