Azure ストレージアカウントでファイルを共有

こんにちは。APの佐藤 和(さとう のどか)です。

私はAzureのハンズオントレーニングの講師の仕事を行ことがあるのですが、その際、コンテンツ(テキストや手順書、ハンズオン用のスクリプトなど)を受講者のみなさんに配布しなければならないことがしばしばあります。

世の中には様々なファイル共有サービスがあるので、それを使えばいいだろう・・・という話なのですが、せっかくAzureトレーニングの一環としてコンテンツを配布するのですから、Azureの機能を使って資料を配布するようにしています。

まずは基本。ストレージアカウントで資料を展開

Azure ストレージアカウントは汎用性をもたせるため、様々な種類のストレージを提供しています。今回は、この中でBLOBストレージを使ってファイルを共有します。

手順は以下の通り。

  1. Azure Portalから ストレージ アカウントを作成。
  2. 作成したストレージ アカウントを選択。
  3. サービス から BLOB を選択。
  4. 上部の[+コンテナー] をクリックして新しいコンテナーを作成。
    この時、[パブリックアクセスレベル] BLOBを選択します。
  5. 作成したコンテナーをクリックしたら、[アップロード]をクリック
  6. あとはファイルをアップロードするだけです。

 

アップロードしたファイルのURLの形式は次の通りです。
https://<ストレージアカウント名>.blob.core.windows.net/<コンテナ名>/<ファイル名>
これで、普通にブラウザを開いて上記のURLを入力すると、普通にファイルをダウンロードすることができました。特にセキュリティ要件もなく、不特定多数の方にファイルを展開するのであれば、これで十分です。
ファイルのアップロードも、Azure Storage Explorer(https://azure.microsoft.com/ja-jp/features/storage-explorer/)を使えばブラウザを開く必要もないので簡単ですね。

SASを使ってもう少し高度なファイル共有

不特定多数の方にファイルを共有するのはよいけど、期間限定で配布をしたい、httpsのアクセスのみを有効にしたいときにはSAS(Shared Access Signature)の機能を使うと便利です。

 

SASを利用するときには、初めにコンテナのアクセスレベルを「プライベート」に設定します。これが「BLOB」や「コンテナー」のままですと、せっかくSASキーを入力することなく普通にダウンロードできてしまいますので要注意です。

SASを生成するには、対象となるファイルを選択し、コンテキストメニュー(右側の「…」をクリックし、コンテキストメニューから「SAS の生成」をクリックします。

SASを作成すると、キーとURLが生成されます。このURL(長いっ!)を入力するとファイルのダウンロードができるようになります。

こちらのBLOB SAS URL を入力すると、こんな感じでアクセスできます。

有効期限が切れると、Signature not valid in the specified time frame と表示され、アクセスできなくなります。

 

このSASキー、よく見てみると有効期限などが平文でURLに埋め込まれています。

試しに、URLの内容をいじってみたのですが、少しでも改ざんするとキーとしては無効となり、Sigunature did not match. と表示されてアクセス拒否となります。

したがって、有効期限切れのファイルに無理やりアクセスするといった試みは失敗するようになっています。

 

SASは他にも様々な条件をつけることができます。今回のように単純にファイルのダウンロードだけを目的としたストレージアカウントの使い方であれば、IPアドレス制限も使えます。特定のIPアドレス(範囲指定も可能)からのダウンロードのみを許すというもので、ダウンロードさせたい相手のIPアドレスが分かっていれば(!?)相手を特定してダウンロードさせることも可能です。Azureストレージアカウントには「ファイアウォールと仮想ネットワーク」という設定項目があり、こちらの機能を使用しても接続可能なIPアドレスの指定ができるのですが、「ファイアウォールと仮想ネットワーク」の機能が、ストレージアカウント全体に対する設定となるのに対して、こちらはBLOBストレージ内の特定のファイル単位で指定することが可能です。

 

ただ、やはりこのサービス。URLが長くなるのが難点です。URLをメールなどで送る場合には有効なのですが、教室の白板で手書きをして受講者にURLを共有する場合は、URL短縮サービスなどと組み合わせた方が良さそうですね。

 

これとは別に Azure ADを使った認証シナリオもあるのですが、まだこちらは試し切れていませんので、後日試してみた後でご紹介いたしたいと思います。

 

それでは、また。

 

Grant limited access to Azure Storage resources using shared access signatures (SAS)
https://docs.microsoft.com/ja-jp/azure/storage/common/storage-sas-overview