Help us understand the problem. What is going on with this article?

Azure BLOB Storage + SAS URL を使ったベストプラクティスの例

More than 1 year has passed since last update.

こんな人に向けた記事

AzureのBLOB Storageを使ってセキュアでかつ上手な使い方をしたいけどMSDNは書いてあることが大量なので簡単に必要なことだけまとめてあると楽でいいなーと思っていた人。

SAS使わないでGatewayにStorageKey保存して利用しようとしてセキュリティざるなのでダメに決まってるだろうとレビュアーに怒られたけど、どうすればいいかわからない人にも。

関連記事

この記事で使われているシーケンス図はseqdiag利用マニュアルで作成しています。

今回の例でやっていること

sasurl.png

Gatewayが複数のファイルをアップロードするシナリオに向けた設計例となります。
Gatewayに限った設計ではなく、「利用者」と読み替えてもらうことで汎用的に使えるものです。

ただファイルをアップロードさせるだけでなく、エンタープライズシステムで利用するために以下の点を考慮した設計になっています。それぞれの点についてどのような方式・設計で実現しているか記載します。

SASを使ったセキュリティ

  • 超簡単に書くとURLのクエリーストリングに利用期間等の権限がついていて、そのURLそのものを検証できるシグネチャ付きで提供できるもの。期間などを書き換えるとシグネチャと一致しないのでNGとなるので、短い期間でSAS発行することで他人に知られたときにはそのURLは既に期限切れになっているので安全ですよっていう、ざっくりいうとそんなものです。

  • 上記の内容について、ちゃんとした文書が必要な人は、諦めてMSのページを見ましょう。

  • FIXER社の技術ブログの日山さんの記事も非常に参考になると思います。

送信途中の状態をシステムで把握可能(送信中に障害で停止した、なども把握したい)

  • SAS URLを発行するタイミングでシステムにはファイル名とステータスを登録する。(登録時はURL発行済)
  • アップロード完了報告の際に対象のファイルが全てBLOBにアップロード済か検証しステータスを更新する。(ファイル登録未済 OR 完了)
  • 必要れあればダッシュボードやバッチなどでこのステータスを使って見たい情報を出したりアラート設定したりする。

ファイルが複数ある場合にも対応

  • 最初の要求でFileCountを一緒に登録させる

ファイルを色々な条件で検索したい

  • DBにファイル名以外の属性も登録して管理する
    • 検索さえ出来れば良いのでSQL DatabaseでもCosmosDBでも好きなデータストアを使ってよい

応用例

アップロード完了報告の際にキュー登録するとかして、Web JobsでこのファイルをFFMpegで連結してMediaServicesにエンコード用登録する処理をKickする、といったことをが出来ます。やたら具体的な例ですね。
FFMpegみたいな外部PGM使わないなら、今は極力Fnctions使っておきましょう。

利用事例

社名は出せませんが私が提供した会社さま複数社で元気に稼働中です。

yukio_tokuyoshi
Microsoft Certified Solutions Associate:Cloud Platform, Database Specialist
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした