Azure SAS和权限

时间:2017-04-25 23:56:06

标签: azure azure-storage-blobs

GetSaSForBlobContainer (适用的容器中,SharedAccessBlobPermissions.List | SharedAccessBlobPermissions.Read);

public static string **GetSaSForBlobContainer**(CloudBlobContainer blobContainer, SharedAccessBlobPermissions permission)
    {
        var sas = blobContainer.GetSharedAccessSignature(new SharedAccessBlobPolicy()
        {
            Permissions = permission,
            SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-5),//SAS Start time is back by 5 minutes to take clock skewness into consideration
            SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(15),
        });
        return string.Format(CultureInfo.InvariantCulture, "{0}{1}", blobContainer.Uri, sas);
    }

- 当我尝试这个时,我的stroge帐户中的容器访问是私有的。我可以使用Internet Explorer在容器中列出blob吗?我尝试使用blob和容器访问类型,失败总是:

  

  AuthenticationFailed      服务器无法验证请求。确保正确形成Authorization标头的值,包括签名。 RequestId:2c504f81-0001-00ea-3815-be7271000000时间:2017-04-25T22:47:20.9382490Z         签名不匹配。使用的字符串是rl 2017-04-25T22:38:15Z 2017-04-25T22:58:15Z / blob / onlineeducation / $ root 2015-12-11      

但是当我尝试这个时,我可以看到斑点,

 foreach (IListBlobItem blob in blobs)
{
   CloudBlockBlob blob1 = new CloudBlockBlob(blob.Uri);
   string name = blob1.Name;

}

1-)当我创建GetSaSForBlobContainer并且我的容器访问类型是私有的时,我不明白会发生什么(对于Internet Explorer和代码)?

2-)当我在未经许可的情况下获得引用我的私有容器,然后创建blob uri + SAS。例如,我会看到我的容器会发生什么?或者我只能编写引用的blob(我的blob权限只能写)..

3 - 会发生什么,容器uri + sas - Blob uri + sas(读取权限)=>我可以只上传文件,还是可以在Internet Explorer中查看容器。

4-)这里有什么不同,

  • 我的容器中的容器访问类型是私有我得到了continer 的引用,没有任何permssion和SAS ,然后使用r ead permssion和SAS 。

  • 容器访问类型在我的存储中私有我通过permssion和SAS 获取容器的引用,然后使用 read permssion创建blob URI和SAS

1 个答案:

答案 0 :(得分:3)

  

当我尝试这个时,我的stroge帐户中的容器访问权限是   private.Can我可以使用Internet Explorer在容器中列出blob吗?一世   尝试使用blob和容器访问类型,失败始终是

要解决此问题,请首先在您的SAS中添加List作为权限,然后将&restype=container&comp=list添加到您的请求网址。有关此问题的更多说明,请参阅此主题:Azure Shared Access Signature - Signature did not match

  

1-)当我创建GetSaSForBlobContainer时,我不明白一件事   我的容器访问类型是私有的将发生什么(对于Internet   资源管理器和代码)?

除非你用它做什么,否则什么都不会发生:)。根据SAS中包含的权限,拥有此SAS URL的用户将能够执行某些操作。例如,如果您创建具有List权限的SAS,则用户将只能列出该容器中的Blob。他们甚至无法下载blob(因为SAS必须包含Read权限)。

  

2-)当我未经许可获得我的私人容器时,和   然后创建blob uri + SAS。例如,我会看到我会发生什么   容器?或者我只能编写引用的blob(我的blob权限   只是写)..

不,您无法看到您的容器,因为SAS仅适用于容器。再次因为您包含Read权限,您将只能阅读blob内容。您将无法上传blob。

  

3 - 会发生什么,Container uri + sas - Blob uri + sas(Permission   是读)=>我可以只上传文件还是可以看到容器   在Internet Explorer中尝试时。

不,如果获得Read权限,则无法上传文件。您甚至无法使用Read权限查看blob列表。为此,您需要List权限。

关于#4,在您实际使用该SAS URL之前没有区别。在第一种情况下,您将收到错误,在第二种情况下,您将能够看到blob。