保存されているアクセス ポリシーを調べる
保存されているアクセス ポリシーを使用すれば、サーバー側でのサービス レベルの共有アクセス署名 (SAS) をさらに制御できます。 アクセス ポリシーを保存すると SAS がグループ化され、ポリシーにより制限される署名について、さらなる制限が与えられます。 保存されているアクセス ポリシーを使用して、署名の開始時刻、有効期限、またはアクセス許可の変更や、発行後の取り消しを行うことができます。
次のストレージ リソースで、保存されているアクセス ポリシーがサポートされます。
- BLOB コンテナー
- ファイル共有
- キュー
- テーブル
保存されるアクセス ポリシーの作成
SAS のアクセス ポリシーは、開始日時、有効期限、署名のアクセス許可で構成されます。 これらすべてのパラメーターを署名 URL で指定し、保存されているアクセス ポリシー内では何も指定しないか、すべてを保存されているアクセス ポリシーで指定し、URI では何も指定しないか、またはこの 2 つの組み合わせを使用できます。 ただし、SAS トークンと保存されているアクセス ポリシーの両方で同じパラメーターを指定することはできません。
保存されているアクセス ポリシーを作成または変更するには、リソースの Set ACL
操作 (「Set Container ACL」、「Set Queue ACL」、「Set Table ACL」、または「Set Share ACL」を参照) を呼び出して、要求本文でアクセス ポリシーの条件を指定します。 次に示すように、要求の本文には署名対象の一意の識別子 (最大 64 文字) とアクセス ポリシーの省略可能なパラメーターが含まれます。
注意
保存されているアクセス ポリシーをコンテナー、テーブル、キュー、または共有に設定したときには、有効になるまでに最大で 30 秒かかる場合があります。 この時間中、保存されているアクセス ポリシーに関連付けられている SAS に対する要求は、アクセス ポリシーがアクティブになるまで、状態コード 403 (禁止) で失敗する可能性があります。 テーブル エンティティ範囲の制約 (startpk
、startrk
、endpk
、および endrk
) は、保存されているアクセス ポリシーで指定することはできません。
次は、C# .NET と Azure CLI を使用し、アクセス ポリシーを保存する例です。
BlobSignedIdentifier identifier = new BlobSignedIdentifier
{
Id = "stored access policy identifier",
AccessPolicy = new BlobAccessPolicy
{
ExpiresOn = DateTimeOffset.UtcNow.AddHours(1),
Permissions = "rw"
}
};
blobContainer.SetAccessPolicy(permissions: new BlobSignedIdentifier[] { identifier });
az storage container policy create \
--name <stored access policy identifier> \
--container-name <container name> \
--start <start time UTC datetime> \
--expiry <expiry time UTC datetime> \
--permissions <(a)dd, (c)reate, (d)elete, (l)ist, (r)ead, or (w)rite> \
--account-key <storage account key> \
--account-name <storage account name> \
保存されているアクセス ポリシーの変更または取り消し
保存されているアクセス ポリシーのパラメーターを変更するには、リソースの種類に対してアクセス制御リスト操作を呼び出して、既存のポリシーを置き換えます。 たとえば、既存のポリシーがリソースに対する読み取りおよび書き込みアクセスを許可している場合、以後のすべての要求に対して読み取りアクセスのみを許可するように変更できます。
保存されているアクセス ポリシーを取り消すには、それを削除するか、署名された識別子を変更することで名前を変更するか、有効期限を過去の値に変更します。 署名対象の識別子を変更すると、既存の署名と保存されているアクセス ポリシーとの関連付けが解除されます。 有効期限を過去の値に変更すると、関連付けられているすべての署名が期限切れになります。 保存されているアクセス ポリシーを削除または変更すると、それに関連付けられているすべての SAS が直ちに影響を受けます。
単一のアクセス ポリシーを削除するには、リソースの Set ACL
操作を呼び出して、コンテナーに保持する一連の署名対象の識別子を渡します。 リソースからすべてのアクセス ポリシーを削除するには、空の要求本文を指定して Set ACL
操作を呼び出します。