Хранимые политики доступа

Завершено

Хранимая политика доступа обеспечивает дополнительный уровень контроля над подписанными URL-адресами уровня обслуживания (SAS) на стороне сервера. Создание SAS хранимых групп политик доступа и предоставление дополнительных ограничений для подписей, связанных с политикой. Вы можете использовать хранимую политику доступа для изменения времени начала, истечения срока действия или разрешений для подписи или отзыва его после выдачи.

Следующие ресурсы хранилища поддерживают хранимые политики доступа:

  • контейнеров BLOB-объектов;
  • общих папок;
  • Очереди
  • Таблицы

Создание хранимой политики доступа

Политика доступа для подписанного URL-адреса состоит из времени начала, даты истечения срока действия и разрешений для подписи. Все эти параметры можно указать в URI подписи, не задавая ни одного из них в хранимой политике доступа; указать все в хранимой политике доступа, не задавая ни одного из них в URI; или использовать сочетание двух этих вариантов. Однако нельзя указать заданный параметр как для маркера SAS, так и хранимой политики доступа.

Для создания или изменения хранимой политики доступа вызовите операцию Set ACL для ресурса (см. Set Container ACL, Set Queue ACL, Set Table ACL или Set Share ACL) с текстом запроса, который указывает условия политики доступа. Текст запроса содержит уникальный подписанный идентификатор выбранного варианта, до 64 символов длиной и необязательные параметры политики доступа, как показано ниже.

Примечание.

Для ввода в действие хранимой политики доступа в контейнере, таблице, очереди или общей папки после настройки может потребоваться до 30 секунд. В течение этого времени запросы к SAS, связанным с хранимой политикой доступа, могут завершиться ошибкой с кодом состояния "403 — запрещено", пока политика доступа не станет активной. Ограничения диапазона сущностей таблицы (startpk, , endpkstartrkи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 с пустым текстом запроса.