首页 > 解决方案 > 获取 Azure 存储帐户级别 SAS 的到期日期?

问题描述

我正在寻找一种方法来查找 Azure存储帐户上任何过期或过期的 SAS 签名。

使用 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。
注意我不想要任何 blob SAS,而是针对容器设置 SAS。谢谢

标签: azure-storage

解决方案


如果您想知道您的帐户级 SAS 是过期还是过期,基于此文档,您只需检查SignedExpiry参数即可。在 SAS 中,它的名字是se.

尝试以下代码以获得具有 blob 对象读取权限并具有 1 天生命周期的帐户级 SAS:

    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();

    }

结果 :

在此处输入图像描述

如您所见,se参数在那里并指示此 sas 将在 1 天后过期。

所以你可以使用这个 sas 来访问你的 blob: 在此处输入图像描述


推荐阅读