Azure StorageのSASとstored access policy
AZ-500の勉強がてら
SASってなに
SASは、Azure Storageの共有アクセス署名(Shared Access Signature)のこと。
URIの末尾に署名を付与する形。Docsによれば、以下。
署名は、SHA256 アルゴリズムを使用して署名対象文字列とキーを計算した後に、Base 64 エンコードを使用してエンコードした HMAC 値です。
SASの種類
SASにはいくつか種類がある。
SAS | auth | scope |
---|---|---|
service SAS | storage account key | storage account |
account SAS | storage account key | single resource |
user delegation SAS | Azure AD | single resource |
MS的にはAzure ADを利用するユーザー委任SASを使うのがベストプラクティスだとしている。
ただし、ユーザー委任SASはAzure Blob Storage
あるいはAzure Data Lake Storage Gen2
のみでサポートされる。
stored access policy とは
日本語版Docsだと保存されているアクセスポリシーというダサい訳語があてられている。
これは、サービスSASをさらに制御するための仕組みだ。
機能提供が開始された当初のMSの記事を見ると、こう書いてある。
A stored access policy provides additional control over service-level SAS on the server side. Establishing a stored access policy serves to group shared access signatures and to provide additional restrictions for signatures that are bound by the policy. You can use a stored access policy to change the start time, expiry time, or permissions for a signature, or to revoke it after it has been issued.
あとからアクセス許可を変更したりできる的なことが書いてある。
revoking a stored access policy
Docsを見ると、“保存されているアクセスポリシー”をあとから変更するには、すでに適用したポリシーを削除するか、署名された識別子を変更して名前を変更するか、有効期限を過去の値にする、と書かれている。
To revoke a stored access policy, you can delete it, rename it by changing the signed identifier, or change the expiry time to a value in the past.
既定で拒否、明示的な許可のシステム
また、アクセスポリシーは明示的な「許可」のシステムであるので、ポリシーが競合を起こすことはなさそうだ。
つまり、一度発行してしまった許可を取り消すには、その許可自体を変更する必要がある。あとから”拒否”のポリシーを追加するような運用はできない。