クラウドエンジニアブログ

BLOB Storageのセキュア管理

岡村 亘

岡村 亘

今回は様々なシーンで活用される BLOB Storage について書きたいと思います。
最近では Azure Portal からアクセスポリシーの設定や IP 制限もできるようになっていますので、より便利になりました。

アクセスポリシーと Shared Access Signature(SAS)の組み合わせにより、適切かつセキュアな管理が可能になります。
ここでは、特定される外部とのファイルの受け渡しで利用するシーンを想定して、その設定方法をご紹介したいと思います。

ストレージアカウント作成時にセットされるアクセスキー(Access keys)については、その情報が外部に漏れてしまった場合、侵害されるリスクが生じることになるため、管理については十分な注意が必要です。

そこで、アクセスキーを利用せずに管理・接続が可能になるSASを代替手段として活用します。また、その上位で管理できるアクセスポリシーを組み合わせることで、SAS のみで運用することで生じるリスクも軽減することが可能になります。

それでは早速、設定方法と管理について見ていきましょう。

1.ストレージアカウントの作成

まずはストレージアカウントを作成します。
今回は検証用としてアカウントの種類は「BLOB ストレージ」を選択しています。

ストレージアカウント
ストレージアカウント

ストレージアカウントについての詳細は以下にてご確認ください。

参考:Azure ストレージアカウントについて

https://docs.microsoft.com/ja-jp/azure/storage/common/storage-create-storage-account#manage-your-storage-account

2.コンテナーの作成

続いて新しくコンテナーを作成します。ここでのポイントはアクセスの種類です。
アクセスの種類については3種類あります。

  • プライベート
    コンテナーと BLOB にストレージアカウント所有者のみアクセス可能。
  • BLOB
    BLOB に匿名要求で読み取り可能だが、コンテナーデータは利用不可。
  • コンテナー
    全てのコンテナーと BLOB を匿名要求で読み取り可能。

ここでは匿名要求を受け付けずに、ストレージアカウント所有者のみがアクセス可能な「プライベート」に設定しておきます。

コンテナーの作成

詳細については、以下サイトでもご確認いただけます。

参考:コンテナーと BLOB への匿名読み取りアクセスを管理する

https://docs.microsoft.com/ja-jp/azure/storage/blobs/storage-manage-access-to-resources

3.Shared Access Signature(SAS)の生成

次に SAS を生成します。
SAS の詳細については下記サイトを参考にしてください。

参考:Shared Access Signatures(SAS)の使用

https://docs.microsoft.com/ja-jp/azure/storage/common/storage-dotnet-shared-access-signature-part-1

ここで、使用できるリソースの種類や権限・許可プロトコル、SAS の有効期限に加えて、アクセス可能な IP を指定することができます。

それぞれの設定を確認し、「SAS の生成」を押下することで、下段にて SAS トークン・SAS URL が発行されます。

Shared Access Signature(SAS)の生成

この発行した SAS を提示することで、指定した接続元 IP アドレスからの接続に限定された形でアクセスを許可することができます。

4.接続の確認

作成したコンテナーにテスト用 TEXT ファイルをアップロードし、実際にアクセスして確認してみましょう。

まずは、SAS 生成時に指定した IP アドレスとは異なる IP アドレスから接続してみます。

接続の確認

上記の通り、指定した IP アドレス以外からの接続については、正しくエラーとなっていることが確認できます。
続いて、SAS 生成時に指定した IP アドレスを接続元の環境として接続してみます。

接続の確認

今回は想定した接続元からのアクセスとなり、正常にアップロードしたファイルが確認できました。

5.アクセスポリシーによる管理

ここまで紹介してきた SAS 管理においても、リスクが潜んでいます。

今回生成した SAS には一定の有効期限を設定しています。
もちろん、有効期限を過ぎたキーは使用できなくなるため、運用を考慮して可能な場合は短く設定することが望ましいと言えます。

しかしながら、有効期限内において生成した SAS が万一侵害されてしまった場合、既に使用中の SAS を無効にしなければならないケースが想定されます。

このような場合に有効となるのが、アクセスポリシーの設定です。アクセスポリシーについては、各コンテナーに対して設定することも可能です。

現在 Azure ポータルから設定できるのは、パーミッションと有効期限になっています。

アクセスポリシーによる管理

設定方法も公開されていますので、下記を参考にしてください。

参考:Stored Access Policy は、サーバーサイドで SAS の更なるコントロールを提供(英文)

https://azure.microsoft.com/ja-jp/updates/manage-stored-access-policies-for-storage-accounts-from-within-the-azure-portal/

この設定を施しておくことで、万一使用中の SAS を無効にしなければいけないケースにおいても、ポリシーの有効期限を無効化する等して、SAS を使ったアクセスを遮断することが可能になります。

今回は確認を挟みながらのご紹介のため、このタイミングでアクセスポリシーをご紹介していますが、予め運用方針が決まっている場合は先に設定しておくことをお勧めいたします。

まとめ

今回は BLOB 活用において最低限理解しておきたい概念を中心にご紹介しましたが、この考え方をベースに様々な応用が公開されています。
Azure ポータルから設定可能な範囲も拡大していますので、より便利に安心して使っていけると良いですね。

参考:Azure Storage セキュリティガイド

https://docs.microsoft.com/ja-jp/azure/storage/common/storage-security-guide

次回予告

  • 「Azure AD Domain Services」まとめ

【総合】お問い合わせ

ソリューションに関する全般的なお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録