Shared Access Signature について理解する
ベスト プラクティスとして、外部のサード パーティ製アプリケーションとはストレージ アカウント キーを共有しないようにする必要があります。 そのようなアプリが内部のデータにアクセスする必要がある場合は、ストレージ アカウント キーを使わずに接続を保護する必要があります。
信頼されていないクライアントの場合は、Shared Access Signature (SAS) を使用します。 SAS は、URI に添付できるセキュリティ トークンを含む文字列です。 SAS を使用して、ストレージ オブジェクトへのアクセスを委任し、アクセス許可やアクセスの時間範囲などの制約を指定することができます。
たとえば、顧客に SAS トークンを付与して、顧客が Blob Storage 内のファイル システムに画像をアップロードできるようにすることができます。 それとは別に、それらの画像を読み取るためのアクセス許可を Web アプリに付与できます。 どちらの場合も、アプリケーションがタスクを実行するために必要なアクセスのみを許可します。
Shared Access Signature の種類
"サービス レベル" の SAS を使用すると、ストレージ アカウント内の特定のリソースへのアクセスを許可できます。 たとえば、ファイル システム内のファイルのリストの取得や、ファイルのダウンロードをアプリに許可するには、この種の SAS を使います。
"アカウント レベル" の SAS を使用すると、サービス レベルの SAS で許可できるすべてのものに加えて、他のリソースや機能へのアクセスを許可できます。 たとえば、アカウント レベルの SAS を使用すると、ファイル システムの作成を許可できます。
通常、SAS は、自分のストレージ アカウントに対して他のユーザーがデータの読み取りや書き込みを行うサービスに対して使用します。 ユーザー データを格納するアカウントには 2 つの一般的な設計があります。
- 認証を実行するフロントエンド プロキシ サービス経由で、クライアントがデータのアップロードとダウンロードを行います。 このフロントエンド プロキシ サービスには、ビジネス ルールを検証できるという利点があります。 ただし、サービスが大量のデータまたは大量のトランザクションを処理する必要がある場合、需要に合わせてこのサービスをスケーリングするのは複雑であったりコストがかかったりすることがあります。
- 軽量サービスでは、必要に応じてクライアントの認証が行われます。 次に、SAS が生成されます。 SAS を受け取ったら、クライアントはストレージ アカウントのリソースに直接アクセスできます。 SAS では、クライアントのアクセス許可とアクセス期間が定義されています。 これにより、すべてのデータをフロントエンド プロキシ サービス経由でルーティングする必要がなくなります。