Получить срок действия учетной записи хранения Azure lvel SAS? - PullRequest
1 голос
/ 01 ноября 2019

Я ищу способ найти любые подписи SAS с истекшим или истекающим сроком действия в учетной записи хранения Azure .

Используя C # Я изучил все общедоступные свойства и методы класса CloudStorageAccount, я также посмотрел на этот класс в ILSpy и обозревателе ресурсов Azure - просто не вижу способа получить дату истечения срока действия SAS /время.

void Main()
{   
    CloudStorageAccount account = new CloudStorageAccount(new 
         StorageCredentials(GetName(), GetKey()), true);
    account.Dump();

    CloudBlobClient client = account.CreateCloudBlobClient();

    foreach (CloudBlobContainer container in client.ListContainers())
    {
        var sabp = new SharedAccessBlobPolicy();
        var sas = container.GetSharedAccessSignature(sabp);
        Console.WriteLine(container.Name);
        Console.WriteLine(sas);
        Console.WriteLine();
    }   
}

internal string GetName() {return @"myaccountname";}
internal string GetKey() {return @"myaccountkey";}

Нет ошибок, но также нет способа (я вижу) получить SAS на уровне учетной записи.
Примечание Мне не нужен SAS для больших двоичных объектов, кроме SASустановить против контейнера. Спасибо

1 Ответ

0 голосов
/ 04 ноября 2019

Если вы хотите узнать, истек или истекает срок действия вашей учетной записи SAS на основе этого документа , вы можете просто проверить параметр SignedExpiry. в SAS его имя se.

Попробуйте приведенный ниже код, чтобы получить SAS уровня учетной записи с разрешением на чтение объекта blob и сроком его жизни 1 день:

    static void Main(string[] args)
    {
        CloudStorageAccount account = new CloudStorageAccount(new StorageCredentials("<storage  account name>", "<storage key>"), true);

        var accesspolicy = new SharedAccessAccountPolicy()
        {
            Permissions = SharedAccessAccountPermissions.Read,
            Services = SharedAccessAccountServices.Blob,
            SharedAccessExpiryTime = DateTime.UtcNow.AddDays(1),
            ResourceTypes = SharedAccessAccountResourceTypes.Object
        };
        var accountSAS = account.GetSharedAccessSignature(accesspolicy);

        Console.WriteLine(accountSAS);

        Console.ReadKey();

    }

Результат:

enter image description here

Как видите, параметр se присутствует и указывает, что срок действия этого sas истекает через 1 день.

Таким образом, вы можете использовать этот sas для доступа к своим BLOB-объектам: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...