SAS の更新: アカウント SAS をすべてのストレージ サービスで使用可能に

このポストは、1 月 14 日に投稿された SAS Update: Account SAS now supports all storage services の翻訳です。

共有アクセス署名 (SAS) を使用すると、ストレージ アカウント キーを共有することなくストレージ アカウント内のデータへのアクセス権を委任することができます。マイクロソフトは 2015 年の後半に、Azure Blob Service と File Service をサポートする「アカウント SAS」という新たな種類の SAS トークンを発表しました

そして今回、このアカウント SAS が Azure Storage の TableQueue にも対応することになりました。この機能は Azure Storage サービスのバージョン 2015-04-05 に適用されます。

アカウント SAS は 1 つまたは複数のストレージ サービスでリソースへのアクセス権を委任するもので、ストレージ アカウント キーと同等の機能を使用できます。これにより BLOB コンテナー、テーブル、キュー、ファイル共有の作成や変更を行うアクセス権の委任、および Get/Set Service Properties や Get Service Stats などのメタデータ操作へのアクセス権の付与が可能です。なお、アカウント SAS では、Set Container ACL、Set Table ACL、Set Queue ACL、Set Share ACL など、セキュリティ管理を目的とするアクセス許可関連の操作へのアクセス権を有効化することはできません。

下に示すコード スニペットはアカウント SAS トークンの発行に使用するアクセス ポリシーを新規作成するもので、Blob および Table の各サービスに対する読み取り、書き込み、リスト生成、作成、削除のアクセス許可を扱っています。このアカウント SAS トークンは、有効化後 24 時間で期限が切れるように構成されています。

 SharedAccessAccountPolicy policy = new SharedAccessAccountPolicy()
{
   Permissions = SharedAccessAccountPermissions.Read | SharedAccessAccountPermissions.Write | SharedAccessAccountPermissions.List | SharedAccessAccountPermissions.Create | SharedAccessAccountPermissions.Delete,
     Services = SharedAccessAccountServices.Blob | SharedAccessAccountServices.Table,
    ResourceTypes = SharedAccessAccountResourceTypes.Container | SharedAccessAccountResourceTypes.Object,
       SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
          Protocols = SharedAccessProtocol.HttpsOrHttp
};  

// 上記の共有アクセス アカウント ポリシーを使用してストレージ アカウント SAS トークンを作成
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(‘YOUR CONNECTION STRING’);
string sasToken = storageAccount.GetSharedAccessSignature(policy);

詳細については、下記のドキュメントを参照してください。

マイクロソフトでは、共有ストレージ アカウント キーではなく SAS トークンを使用してストレージ ユーザーへのアクセス権の委任を行うことをお勧めします。ご不明な点がありましたら、この記事のコメント欄までお寄せください。