Azure storage 获取Azure存储帐户lvel SAS的到期日期?
我正在寻找在Azure存储帐户上查找任何过期或即将过期SAS签名的方法 使用C#我已经检查了CloudStorageAccount类的所有公共属性和方法,我还查看了ILSpy和Azure资源管理器中的此类-只是看不到检索SAS过期日期/时间的方法Azure storage 获取Azure存储帐户lvel SAS的到期日期?,azure-storage,Azure Storage,我正在寻找在Azure存储帐户上查找任何过期或即将过期SAS签名的方法 使用C#我已经检查了CloudStorageAccount类的所有公共属性和方法,我还查看了ILSpy和Azure资源管理器中的此类-只是看不到检索SAS过期日期/时间的方法 void Main() { CloudStorageAccount account = new CloudStorageAccount(new StorageCredentials(GetName(), GetKey(
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。
谢谢如果您想知道您的帐户级别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();
}
static void Main(字符串[]args)
{
CloudStorageAccount=new CloudStorageAccount(new StorageCredentials(“,”),true);
var accesspolicy=new-SharedAccessAccountPolicy()
{
权限=SharedAccessAccountPermissions.Read,
Services=SharedAccessAccountServices.Blob,
SharedAccessExpiryTime=DateTime.UtcNow.AddDays(1),
ResourceTypes=SharedAccessAccountResourceTypes.Object
};
var accountSAS=account.GetSharedAccessSignature(accesspolicy);
控制台写入线(accountSAS);
Console.ReadKey();
}
结果:
如您所见,se
参数在那里,指示此sas将在1天后过期
因此,您可以使用此sas访问您的Blob:
如果您想知道您的帐户级别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();
}
static void Main(字符串[]args)
{
CloudStorageAccount=new CloudStorageAccount(new StorageCredentials(“,”),true);
var accesspolicy=new-SharedAccessAccountPolicy()
{
权限=SharedAccessAccountPermissions.Read,
Services=SharedAccessAccountServices.Blob,
SharedAccessExpiryTime=DateTime.UtcNow.AddDays(1),
ResourceTypes=SharedAccessAccountResourceTypes.Object
};
var accountSAS=account.GetSharedAccessSignature(accesspolicy);
控制台写入线(accountSAS);
Console.ReadKey();
}
结果:
如您所见,se
参数在那里,指示此sas将在1天后过期
因此,您可以使用此sas访问您的Blob:
您好,我不知道如何为已创建的帐户级别SA设置此设置。我的对象类型是CloudStorageAccount,但它不公开任何称为SignedExpiry或se的内容。此外,将是一个对这个帐户的SA数,所以我如何得到他们所有?CloudStorageAccount=new CloudStorageAccount(new-StorageCredentials(GetName(),GetKey()),true);嗨@Dave,我已经更新了我的答案,请检查一下。嗨@Stanley,谢谢更新的代码示例。我稍微修改了它以使用SharedAccessStartTime,但我仍然不知道如何获得多个帐户级别的SA
我今天向该容器添加了三个新SA,它们如下:start=2019-11-06 expires=2019-11-07?sv=2019-02-02&ss=b&srt=sco&sp=r&se=2019-11-07T20:39:12Z&st=2019-11-06T12:37:12Z&st=2019-11-06 expires=2019-11-08?sv-02-02&ss=b&srt=sco&sp=r&se=2019-11-08T20:39:12Z&st=2019-11-06T12:37:12Z&br>sv=2019-02-02&ss=b&srt=sco&sp=r&se=2019-11-09T20:39:12Z&st=2019-11-06T12:37:12Z&
但代码只返回一个,而不是其中任何一个。嗨,@Dave,我不太确定多帐户级别的SAS,你能告诉我更多吗?似乎SAS中的开始时间和结束时间对你来说都是正确的。你好,不了解如何为已创建的帐户级别SA设置此设置。我的对象类型是CloudStorageAccount,但它不公开任何称为SignedExpiry或se的内容。此外,将是一个对这个帐户的SA数,所以我如何得到他们所有?CloudStorageAccount=new CloudStorageAccount(new-StorageCredentials(GetName(),GetKey()),true);嗨@Dave,我已经更新了我的答案,请检查一下。嗨@Stanley,谢谢更新的代码示例。我稍微修改了它以使用SharedAccessStartTime,但我仍然不知道如何获得多个帐户级别的SA
我今天向该容器添加了三个新SA,它们如下:start=2019-11-06 expires=2019-11-07?sv=2019-02-02&ss=b&srt=sco&sp=r&se=2019-11-07T20:39:12Z&st=2019-11-06T12:37:12Z&st=2019-11-06 expires=2019-11-08?sv-02-02&ss=b&srt=sco&sp=r&se=2019-11-08T20:39:12Z&st=2019-11-06T12:37:12Z&br>sv=2019-02-02&ss=b&srt=sco&sp=r&se=2019-11-09T20:39:12Z&st=2019-11-06T12:37:12Z&
但代码只返回一个,而不是其中任何一个。嗨,@Dave,我不太确定多帐户级别的SAS,你能告诉我更多吗?似乎SAS的开始时间和结束时间在你的情况下都是正确的。你的目的是什么?在上面的代码中获取sas令牌的过期时间?您的目的是什么?在上面的代码中获取sas令牌的过期时间?