Azure BlobにSAS(Shared Access Signature)を使用してアクセスする

お疲れ様です。
自分の部屋を少しずつアップデートして楽しんでいる宮﨑です。

 
今回はこちらの記事(Azure Storage Explorerにストレージアカウントを接続してみる)の途中で出てきて、さらっと流したSASについてです。

 

SAS(Shared Access Signature)とは

Shared Access Signature (SAS) を使用すると、ストレージ アカウント内のリソースへのセキュリティで保護された委任アクセスが可能になります。 SAS を使用すると、クライアントがデータにアクセスする方法をきめ細かく制御できます。 次に例を示します。

・クライアントがアクセスできるリソース。

・それらのリソースに対するアクセス許可。

・SAS が有効である期間。

Microsoft Shared Access Signatures (SAS) を使用して Azure Storage リソースへの制限付きアクセスを許可する

 
非公開なAzure Blob Storage を外部からセキュアにアクセスさせたい場合などに使用します。

 

SASの種類

zure Storage では、 3種類のShared Access Signature がサポートされています。

 
file

 
それぞれの種類の説明については上記のドキュメントを参考にしてください。今回はBlobに使用されるユーザ委任SASを使用します。

 

Azure BlobにSASを使用してアクセスする

 
file

 
匿名のアクセスを無効にしたテスト用のストレージアカウントを作成します。

 
file

 
コンテナーを作成します。

 
file

file
 
作成したコンテナにファイルをアップロードして、右の…、プロパティを選択します。

 
file

 
ファイルのURLが記載されているのでコピーしてブラウザでアクセスします。これでアクセス出来てしまったらそれはそれでまずいです。

 
file

 
匿名からのアクセスは無効にしているので無事に?アクセス出来ませんでした。

 
file

file

 
ファイル画面のSASの生成を選択します。

 
file

 
署名方法をユーザの委任キーにして、他の必要事項を選択した後、SASトークン及びURLを生成を選択します。生成されたURLをコピーして、ブラウザでログインします。

 
file

 
残念ながら見ることが出来ません。

 

RBAC を使用してアクセス許可を割り当てる

SASを使用してファイルにアクセスするにはもう1つ手順が必要です。一通り順番に説明したほうがよいのですが、あえて分けて説明させていただきます。

 
クライアントがユーザー委任 SAS を使用して Blob Storage リソースにアクセスすると、Azure Storage への要求は、SAS の作成に使用された Azure AD 資格情報で承認されます。 その Azure AD アカウントに付与されるロールベースのアクセス制御 (RBAC) アクセス許可と、SAS で明示的に付与されたアクセス許可によって、リソースへのクライアントのアクセスが決まります。 この方法により、セキュリティ レベルが強化され、アプリケーション コードにアカウント アクセス キーを格納する必要がなくなります。 このような理由から、Azure AD 資格情報を使用して SAS を作成することは、セキュリティのベスト プラクティスです。

 
ユーザー委任キーを要求するセキュリティ プリンシパルには、これを行うための適切なアクセス許可が必要です。 Azure AD セキュリティ プリンシパルには、ユーザー、グループ、サービス プリンシパル、またはマネージド ID を指定できます。ユーザー委任キーを要求するには、Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey アクションをセキュリティ プリンシパルに割り当てる必要があります。 次の組み込み RBAC ロールには、 Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey アクションが含まれます。明示的に、またはワイルドカード定義の一部として使用されます。
Microsoft BLOB データにアクセスするための Azure ロールを割り当てる

 
簡単に言うと、Microsoft Entra の資格情報を使ってユーザー委任SASを使用するには、Blobへのアクセス許可が含まれているロールを割り当ててくださいね、ということです。

 

BLOB データにアクセスするためのロールを割り当てる

file

 
ファイルが格納されているストレージアカウントを選択して、ロールの割り当ての追加を選択します。

 
file

 
Blobと検索して、今回は読み取りだけの権限で良いのでストレージBlobデータ閲覧者を選択します。

 
file

 
ユーザー委任キーを要求するAzure AD セキュリティプリンシパルには、ユーザー、グループ、サービスプリンシパル、またはマネージド ID を指定できるので、今回はユーザを指定します。
作成が完了したら再度ファイル画面のSAS生成画面に戻り、URLをコピーしてブラウザでログインしてみましょう。

 
file

 
無事にファイルにアクセス出来ました。お疲れ様でした。

 

まとめ

今回はAzureポータルで作成したが、PowerShellなどでも作成可能なので自主学習を進めます。また、便利な機能である分、漏洩した際は誰でも使用可能とリスクもあるので、使用する際のベスト プラクティスも熟読しておきます。最後まで読んでいただきありがとうございました。

Last modified: 2024-01-24

Author