Изучение хранимых политик доступа
Хранимая политика доступа обеспечивает дополнительный уровень контроля над подписанными URL-адресами уровня обслуживания (SAS) на стороне сервера. Установление групп политик доступа, связанных с SAS, и обеспечение более строгих ограничений для подписей, ограниченных этой политикой. Вы можете использовать хранимую политику доступа для изменения времени начала, истечения срока действия или разрешений для подписи или отзыва его после выдачи.
Следующие ресурсы хранилища поддерживают хранимые политики доступа:
- Контейнеры BLOB-объектов
- Общие папки
- Очереди
- Таблицы
Создание хранимой политики доступа
Политика доступа для SAS состоит из времени начала, времени истечения срока действия и разрешений для подписи. Вы можете указать все эти параметры в URI подписи и ни в одной из хранимых политик доступа; все данные о хранимой политике доступа и ни в одном из URI; или некоторые сочетания двух. Однако нельзя указать заданный параметр как для маркера 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
с пустым текстом запроса.