【Microsoft Azure】共有アクセス署名(SAS)を理解する

こんにちは。今日は、Microsoft Azureに登場するSASキーという概念について、理解を深めるために調べたことをメモしておきます。

SASキーとはなにか?

公式ページに詳細な説明がありますが、簡単にまとめると以下が概要になります。

  • Shared Access Signatureキーの略で、日本語にすると「共有アクセス署名」。
  • Azure Storageリソースへの制限付きアクセス権を付与するURI。(一定期間、特定リソースのみ、など)
  • Azure Storageにセキュアにアクセスする方法として、Front End Proxyを経由させる方法があるが、リクエスト数の増大に対してFront End Proxyのスケーラビリティにも配慮する必要がある。SASを利用すると、認証されたユーザは、決められたポリシーに基づいてリソースに自由にアクセスできるようになる。
Front End Proxyを経由させる経路(公式ページより)
SASを利用する経路(公式ページより)
  • Azure Storageではユーザ委任、サービス、アカウントの3種類のSASがサポートされている。(後述)
  • SASには、アドホック、保存されているアクセスポリシーによるサービスの2つの形式がある。(後述)
  • ユーザ委任、アカウントSASはアドホックSASである必要がある。

SASって実際どんなもの?

上記で概要は分かりましたが、そもそもSASって実際にどんなものか?どうやって設定するのか?種類・形式の違いといったところまではよく分からないぞ・・と思ったので、まずは実際に設定をしてみようと思います。

SASは、ストレージアカウントの”Shared Access Signature”ブレードから設定可能です。(こちらは、アドホックなSAS発行形式の手順になります)

設定画面を見ると、以下のような情報を細かく設定可能なことが分かります。

  • 利用できるサービス
  • 利用できるリソースの種類
  • 利用できる操作
  • アクセス可能な期間
  • アクセス可能なIPアドレス
Azure PortalのStorage Account画面

利用できるリソースの種類を選択すると、「SASと接続文字列を作成する」ボタンが押せるようになります。

ボタンを押すと、以下のようにいろいろな情報が表示されました。

なるほど、設定でチェックしたサービスの分だけ、SAS URLが生成されています。アカウントキー情報を持たないクライアントが各サービスに接続する場合は、ここに表示されているURLを介することで、指定期間直接アクセスできるようになるわけですね。

また、SASトークンと各URL・接続文字列の関係ですが、見てみると、接続文字列や各URLはSASトークンを含む形になっているようです。

URL:ストレージのURL/?SASトークン

SASの種類を理解する

上にも書きましたが、SASには複数の種類が存在します。ここでは、これらの違いについて調べてみました。

ユーザ委任のSAS

概要をまとめると、以下の通りです。

  • Azure Blob storage と Azure Data Lake Storage Gen2 でサポートされている
  • ユーザ委任のSASを利用してBlobサービスリソースにアクセスすると、SASの作成に利用されたAzure ADの資格情報を利用して承認される
  • 許可されるアクセスは、Azure ADのRBACアクセス許可と、SASに明示的に指定されたアクセス許可の和集合で決定される。(RBACでは許可されているが、SASでは許可されていない場合は、そのリソース・サービスへのアクセスは許可されない。逆もしかり。)
  • この方式では、SAS署名時に、Azure AD資格情報に依存した、ユーザ委任キーを利用して署名される
  • セキュリティのベスト プラクティスとして、より侵害されやすいアカウント キーを使用するのではなく、可能な限り Azure AD 資格情報を使用することが推奨される
  • 現在、”保存されているアクセスポリシー”では、ユーザー委任の SAS ではサポートされていない

作成方法などの詳細は、こちらのMicrosoft公式ドキュメントから確認可能です。

アカウントSAS

概要は以下の通りです。

  • ストレージアカウント単位でのSASを作成可能
  • 一度に1つのストレージアカウント内の複数のサービスへのアクセスを委任可能
  • アカウントSASはストレージアカウントキーを使用して保護される。このため、クライアントがストレージアカウントキーを持っている必要がある。
  • 現在、”保存されているアクセスポリシー”では、アカウント SAS ではサポートされていない

サービスSAS

概要は以下の通りです。

  • サービス SAS は、Blob、Queue、Table、または File サービスのいずれか1つのストレージサービスのリソースへのアクセスを委任
  • アカウントSASと同様、ストレージアカウントキーを使用して保護される。このため、クライアントがストレージアカウントキーを持っている必要がある
  • 他のSASとは異なり、”保存されているアクセスポリシー”(*)を継承したSASを作成可能。

保存されたアクセスポリシーとは、ストレージアカウントに作成した各ストレージコンテナ個別に設定しているアクセスポリシーのこと。

SASのベストプラクティスは?

Microsoft公式ドキュメントによると、以下のように利用することが推奨されているようです。

  • 常にHTTPSを利用
  • 可能な限り最もセキュリティが高いユーザ委任SASを利用
  • SAS侵害時のSAS失効計画をたてておく
  • 必要に応じてクライアントにSASの自動更新をさせる
  • SASの開始時刻の、マシン時刻とのタイムラグを考慮しておく
  • セキュリティのため最小限のリソースに絞ってアクセス許可する
  • Azure MonitorやStorage Log Analyticsで動作をモニタリングできるようにしておく

以上、Microsoft AzureのSASについて調べて分かったことのまとめでした。

本日も最後までご覧いただきありがとうございました!

0

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US

アバター
Yuu113
初めまして。Yuu113と申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。