保存されているアクセス ポリシーの定義
格納されたアクセス ポリシーを使用すると、サーバー側でサービス レベルの共有アクセス署名 (SAS) を追加で制御できます。 保存されているアクセス ポリシーを設定することで、共有アクセス署名をグループ化し、ポリシーによって規定された署名を詳細に制限できます。
保存されているアクセス ポリシーを使用して、署名の開始時刻、有効期限、アクセス許可を変更できます。 保存されているアクセス ポリシーを使用して、発行済みの署名を取り消すこともできます。
次のストレージ リソースで、保存されているアクセス ポリシーがサポートされます。
- BLOB コンテナー
- ファイル共有
- キュー
- テーブル
Note
コンテナーに格納されているアクセス ポリシーは、コンテナー自体またはコンテナーに含まれる BLOB にアクセス許可を付与する共有アクセス署名に関連付けることができます。 同様に、ファイル共有に格納されているアクセス ポリシーは、共有自体またはファイルに対するアクセス許可を付与する共有アクセス署名に関連付けることができます。
保存されているアクセス ポリシーは、ユーザー委任 SAS またはアカウント SAS ではサポートされていません。
保存されているアクセス ポリシーを作成または変更する
共有アクセス署名のアクセス ポリシーは、開始日時、有効期限、および署名のアクセス許可で構成されます。 次のいずれかのオプションを指定するか、それらを組み合わせることができます。
- これらのパラメーターはすべて署名 URI に対し、格納されているアクセス ポリシーでは何も指定しません
- 格納されているアクセス ポリシーに対するこれらのパラメーターはすべて、URI に対してなし
ただし、SAS トークンと格納されているアクセス ポリシーの両方にパラメーターを指定することはできません。
保存されているアクセス ポリシーを作成または変更するには、リソースの Set ACL
操作 (「Set Container ACL」、「Set Queue ACL」、「Set Table ACL」、または「Set Share ACL」を参照) を呼び出して、要求本文でアクセス ポリシーの条件を指定します。 要求の本文には、選択した一意の署名付き識別子 (最大 64 文字) が含まれます。 要求の本文には、次のように、アクセス ポリシーの省略可能なパラメーターも含まれます。
<?xml version="1.0" encoding="utf-8"?>
<SignedIdentifiers>
<SignedIdentifier>
<Id>unique-64-char-value</Id>
<AccessPolicy>
<Start>start-time</Start>
<Expiry>expiry-time</Expiry>
<Permission>abbreviated-permission-list</Permission>
</AccessPolicy>
</SignedIdentifier>
</SignedIdentifiers>
コンテナー、テーブル、キュー、または共有に対して、一度に最大 5 つのアクセス ポリシーを設定できます。 各 SignedIdentifier
フィールドが一意の Id
フィールドを持ち、1 つのアクセス ポリシーに対応しています。 一度に 5 つ以上のアクセス ポリシーを設定しようとすると、サービスから状態コード 400 (無効な要求) が返されます。
注意
コンテナー、テーブル、キュー、または共有に格納されているアクセス ポリシーを作成または更新すると、変更が有効になるまでに最大 30 秒かかる場合があります。 この間、格納されているアクセス ポリシーに関連付けられている共有アクセス署名に対する要求は、アクセス ポリシーがアクティブになるまで、状態コード 403 (禁止) で失敗する可能性があります。
格納されているアクセス ポリシーのテーブル エンティティ (startpk
、startrk
endpk
および) に対してendrk
範囲制限を指定することはできません。
格納されているアクセス ポリシーを変更または取り消す
格納されているアクセス ポリシーのパラメーターを変更するには、リソースの種類に対してアクセス制御リスト (ACL) 操作を呼び出して、既存のポリシーを置き換えます。 その操作で、新しい開始時刻、有効期限、またはアクセス許可のセットを指定します。
たとえば、既存のポリシーがリソースに対する読み取りおよび書き込みアクセスを許可している場合、以後のすべての要求に対して読み取りアクセスのみを許可するように変更できます。 この場合、フィールドで ID
指定された新しいポリシーの署名付き識別子は、置き換えるポリシーの署名付き識別子と同じになります。
保存されているアクセス ポリシーを取り消すには、それを削除するか、署名された識別子を変更することで名前を変更するか、有効期限を過去の値に変更します。 署名対象の識別子を変更すると、既存の署名と保存されているアクセス ポリシーとの関連付けが解除されます。 有効期限を過去の値に変更すると、関連付けられているすべての署名が期限切れになります。 保存されたアクセス ポリシーを削除したり変更したりするとすぐに、それに関連付けられているすべての共有アクセス署名に影響が及びます。
1 つのアクセス ポリシーを削除するには、リソースの Set ACL
操作を呼び出します。 コンテナーで保持する署名付き識別子のセットを渡します。 リソースからすべてのアクセス ポリシーを削除するには、空の要求本文を指定して Set ACL
操作を呼び出します。