Создание подписи общего доступа Azure - PullRequest
0 голосов
/ 17 июня 2019

Я создаю подпись общего доступа (SAS) для одного из контейнеров больших двоичных объектов, версия v 2, на портале Azure.Я пытаюсь загрузить файл из внешнего интерфейса, для которого требуется SAS.Проблема в том, что SAS истекает каждый день.Есть ли способ автоматического обновления SAS с помощью кода или есть способ выполнить проверку подлинности с помощью Azure AD.Итак, в основном у меня есть интерфейс, где пользователь входит в систему с помощью Azure AD, теперь я хочу использовать его сеанс, чтобы позволить ему загружать данные в хранилище Azure.Поскольку он уже авторизован, я чувствую, что должен быть способ генерировать SAS на лету для его сеанса.

1 Ответ

0 голосов
/ 17 июня 2019

Подписи общего доступа полезны для предоставления ограниченных разрешений вашей учетной записи хранения для клиентов , которые не должны иметь ключ учетной записи.

Если вы - те, кто записывает данные в учетную запись хранения, сделайте это на стороне сервера. Если вы сделаете это, вы можете проверить, что пользователь вошел в систему. Если это так, разрешите своему бэкэнду записывать данные в учетную запись хранения, используя один из ключей доступа (или, что еще лучше, управляемый идентификатор.

Конечно, вы могли бы запросить интерфейсный токен SAS от серверной части, например, от API. Это можно просто реализовать, например, с помощью функции Azure. А токен SAS может использовать кратковременное время истечения. В конце концов, вы по-прежнему открываете части учетной записи хранения для всех, кто может получить доступ к веб-интерфейсу.

С краткосрочным истечением, даже если SAS скомпрометирован, он действителен только в течение короткого времени. Эта практика особенно важна, если вы не можете ссылаться на сохраненную политику доступа. Краткосрочные сроки истечения также ограничивают объем данных, которые могут быть записаны в большой двоичный объект, ограничивая время, доступное для его загрузки

Источник: Использование подписей общего доступа (SAS)

Взято из той же статьи:

В следующем примере кода создается учетная запись SAS, которая действительна для служб Blob и File, и предоставляет клиенту разрешения на чтение, запись и список разрешений для доступа к API уровня обслуживания. Учетная запись SAS ограничивает протокол HTTPS, поэтому запрос должен быть сделан с HTTPS.

static string GetAccountSASToken()
{
    // To create the account SAS, you need to use your shared key credentials. Modify for your account.
    const string ConnectionString = "DefaultEndpointsProtocol=https;AccountName=account-name;AccountKey=account-key";
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConnectionString);

    // Create a new access policy for the account.
    SharedAccessAccountPolicy policy = new SharedAccessAccountPolicy()
        {
            Permissions = SharedAccessAccountPermissions.Read | SharedAccessAccountPermissions.Write | SharedAccessAccountPermissions.List,
            Services = SharedAccessAccountServices.Blob | SharedAccessAccountServices.File,
            ResourceTypes = SharedAccessAccountResourceTypes.Service,
            SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
            Protocols = SharedAccessProtocol.HttpsOnly
        };

    // Return the SAS token.
    return storageAccount.GetSharedAccessSignature(policy);
}
...