Shared Access Signature を検出する
Shared Access Signature (SAS) は、1 つ以上のストレージ リソースを指し、特別なクエリ パラメーターのセットを格納するトークンを含む署名付き URI です。 トークンは、クライアントがリソースにアクセスする方法を示します。 クエリ パラメーターの 1 つである署名は、SAS パラメーターで作成されており、SAS の作成に使用されたキーで署名されています。 この署名は、ストレージ リソースへのアクセスを承認するために、Azure Storage によって使用されます。
共有アクセス署名の種類
Azure Storage では、次の 3 種類の Shared Access Signature がサポートされています。
ユーザー委任 SAS: ユーザー委任 SAS は、Microsoft Entra の資格情報と、SAS に指定されたアクセス許可によって保護されます。 ユーザー委任 SAS は、BLOB ストレージにのみ適用されます。
サービス SAS: サービス SAS は、ストレージ アカウント キーを使用してセキュリティで保護されます。 サービス SAS は、次の Azure Storage サービスのリソースへのアクセスを委任します。Blob storage、Queue storage、Table storage、または Azure Files。
アカウント SAS: アカウント SAS は、ストレージ アカウント キーを使用して保護されます。 アカウント SAS は、1 つ以上のストレージ サービスのリソースへのアクセスを委任します。 サービスまたはユーザー委任 SAS を介して実行できるすべての操作は、アカウント SAS を介しても実行できます。
Note
Microsoft では、セキュリティのベスト プラクティスとして、より簡単に侵害される可能性があるアカウント キーを使用するのではなく、可能な限り Microsoft Entra の資格情報を使用することをお勧めします。 アプリケーションの設計において、Blob Storage へのアクセスのために Shared Access Signature が必要な場合は、セキュリティを強化するために、可能な限り、Microsoft Entra の資格情報を使用してユーザー委任 SAS を作成してください
Shared Access Signature のしくみ
SAS を使用して Azure Storage に格納されているデータにアクセスする場合は、2 つのコンポーネントが必要です。 1 つ目は、アクセスするリソースの URI です。 2 つ目は、そのリソースへのアクセスを承認するために作成した SAS トークンです。
https://medicalrecords.blob.core.windows.net/patient-images/patient-116139-nq8z7f.jpg?sp=r&st=2020-01-20T11:42:32Z&se=2020-01-20T19:42:32Z&spr=https&sv=2019-02-02&sr=b&sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D
などの 1 つの URI で、次のように SAS トークンから URI を分離できます。
- URI:
https://medicalrecords.blob.core.windows.net/patient-images/patient-116139-nq8z7f.jpg?
- SAS トークン:
sp=r&st=2020-01-20T11:42:32Z&se=2020-01-20T19:42:32Z&spr=https&sv=2019-02-02&sr=b&sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D
SAS トークン自体は、複数のコンポーネントで構成されています。
コンポーネント | 説明 |
---|---|
sp=r |
アクセス権を制御します。 追加には a 、作成には c 、削除には d 、リストには l 、読み取りには r 、書き込みには w の値を指定できます。 この例は読み取り専用です。 この例の sp=acdlrw では、使用可能なすべての権限が付与されます。 |
st=2020-01-20T11:42:32Z |
アクセスを開始する日付と時刻。 |
se=2020-01-20T19:42:32Z |
アクセスを終了する日付と時刻。 この例では、8 時間のアクセスを許可します。 |
sv=2019-02-02 |
使用するストレージ API のバージョン。 |
sr=b |
アクセスされるストレージの種類。 この例で、b は BLOB 用です。 |
sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D |
暗号化署名。 |
ベスト プラクティス
Microsoft では、SAS 使用の潜在的なリスクを軽減するために、次のガイダンスを提供しています。
- 安全に SAS を配布し、中間者攻撃を防ぐには、常に HTTPS を使用します。
- 最も安全な SAS は、ユーザー委任の SAS です。 これによりコードにストレージ アカウント キーを格納する必要がなくなるため、可能な限り使用してください。 資格情報を管理するには、Microsoft Entra ID を使用する必要があります。 このオプションは、ご使用のソリューションでは使用できない可能性があります。
- 有効期限を最も小さい有効な値に設定してみてください。 これで、SAS キーが侵害されても、悪用されるのが短時間で済む可能性があります。
- 最低限必要な特権の規則を適用します。 必要なアクセス権だけを許可します。 たとえば、このアプリには読み取り専用アクセスで十分です。
- SAS が適切な解決策ではない状況もあります。 SAS を使用するリスクが許容できない場合は、ユーザーとそのストレージへのアクセスを管理するための中間層サービスを作成します。