Azure Storageでは、リソースに対して時間や実行権限を限定して提供するための仕組みが用意されています。
これは共有アクセス署名、Shared Access Signature(以下SAS)と呼ばれ、Azure Storageのキーを共有することなく外部のユーザーやサービスに対して特定のリソースに絞ってアクセス許可を発行することができます。
設定可能な制限
主に制限が可能な範囲は以下の通りです。
1. 操作への制限
読み取りや書き込み、削除といったリソースに対する操作についての制限をかけることが可能です。
必要最小限の権限を提供することでセキュリティの強化へ貢献します。
2. 期間に対する制限
操作が可能な期間を設定することが可能です。
有効期限だけでなく、開始日時についても設定が可能となっています。
期限が過ぎるとアクセスが拒否されるようになるため、一時的なアクセス制限を通してリソースを安全に共有することができます。
3. IPアドレスによる制限
特定のIPアドレスに限定してSASを使用可能にすることができます。
4. プロトコルによる制限
HTTPSプロトコルを使用したアクセスのみを許可することができます。
データの安全な転送が実現可能です。
SASの種類
SASには3つの種類があり、これらの特性を活かしてユースケースに応じて使い分けることが可能です。
1. アカウントSAS
Azure Storage内の複数サービスにわたるリソースへのアクセス権を提供するSASです。
Blob、Queue、Table、Filesといったサービス全てへのアクセス権を付与することが可能です。
Azure Storage内の複数タイプのリソースに対してアクセス権を委任できるため、Azure Storageアカウントレベルでのアクセス制御が可能となります。
2. サービスSAS
Azure Storage内の特定のサービス(Blob、Queue、Table、Files)に対してアクセス権を提供するSASです。
単一のBlobやコンテナといった、アクセス範囲をより限定化して権限を委任することができます。
3. ユーザー委任SAS
Blob Storage、及びData Lake Storageに対して使用されるSASです。
アカウントSAS、サービスSASがストレージアカウントキーを使用して生成されるのに対して、ユーザー委任SASはAzure Active Directoryの認証と承認を使用して生成されます。
生成するユーザーのアイデンティティに基づいてリソースへのアクセス権を委任できるため、より細かなアクセス許可の設定が可能となっています。
ベストプラクティス
上記のようなSASの性質をふまえ、利用の際には下記点を踏まえるのが良いとされています。
- 有効期限を短期間に設定する
→使用が想定される期間のみ有効になるよう設定することで、リスクを最小限に抑えることができます。 - できるだけユーザー委任SASを使用する
→ストレージキーではなく、Azure Active Directoryの認証情報を使用することでアクセス権限がより細分化され、セキュリティの向上に寄与します。 - HTTPSを使用する
→第三者に傍受されないよう、常にHTTPSを使用した発行が望ましいです。 - 最小限の権限を設定する
→必要最低限の権限を付与することで、意図せぬ侵害等の脅威に備えることができます。
さいごに
大変便利な機能である一方で、使い方を誤ると重大なインシデントを発生させる可能性も十分にあります。
安全に取り扱えるよう、これらの特性を踏まえたうえで使用していくことが推奨されます。

