如何在 R 中使用带有“sp”前缀的 AzureStor 生成有效的 sas 令牌?

How to generate a valid sas token with AzureStor in R with "sp" prefix?

提问人:MaskofIllusion 提问时间:11/17/2023 最后编辑:MaskofIllusion 更新时间:11/22/2023 访问量:74

问:

我一直在尝试使用以下代码生成有效的 sas 令牌。 并且肯定已经被我自己和其他几个人仔细检查过了。出于某种原因,当我通过此过程创建令牌时,我会得到一个以开头的令牌,但是当我在门户上生成它时,我会得到一个以 .storage_account_namestorage_account_keysvsp

我尝试过用 etc 更改日期,但即使是文档也表明这是可以接受的,所以我不确定还有什么其他参数或输入应该有所不同。有谁知道我在生成有效的 sas 令牌时缺少什么?as.POSIXctSys.Date()

library(AzureStor)

sas_token <- get_service_sas(
    account = config[["storage_account_name"]],
    resource = resource_name,
    key = config[["storage_account_key"]],
    service = "blob",
    permissions = "r",
    resource_type = "b",
    protocol = "https",
    start = Sys.time(),
    expiry = Sys.time() +1 
)
r azure-storage

评论

0赞 Gaurav Mantri 11/17/2023
sv 和 sp 等参数的顺序并不重要。重要的是,这些参数存在于 SAS 令牌中。如果在使用 SAS 令牌时未遇到任何错误,则 SAS 令牌有效。

答:

0赞 SPT 12/5/2023 #1

同意 @Gaurav Mantri 如果在使用 SAS 令牌时未遇到任何错误,则 SAS 令牌有效。

根据本文档,在存储帐户 SAS 令牌中,有两种类型。

  1. 帐户 SAS:由存储帐户密钥保护的帐户 SAS 授权访问存储服务的资源。它支持委派对 Blob 容器、表、队列和文件共享的读取、写入和删除等操作。可以通过get_account_sas调用获取帐户 SAS 来实现类似于用户委派 SAS 的访问。
  2. 服务 SAS:与帐户 SAS 相比,服务 SAS 提供更精确的访问控制。它支持创建 SAS 令牌,以独占方式授予对容器中指定 blob 或文件共享中文件的访问权限。若要生成服务 SAS,可以使用 get_service_sas 调用。

还可以在门户中签入门户:在门户中为帐户生成 SAS 令牌时,它将提供以开头的 SAS 令牌,而当你为任何特定容器生成令牌时,它将提供以开头的 SAS 令牌svsp

您可以尝试按照上述文档生成带有get_account_sas的 SAS 令牌。

get_account_sas("mystorage", "access_key", start=Sys.Date(), expiry=Sys.Date() + 7)

0赞 SumanthMarigowda-MSFT 12/8/2023 #2

字符串中各部分的顺序 sv=&ss=&srt=&...&sig= 没关系。重要的是每个部分的价值。您可以在此处看到 C++ SDK 也像 R SDK 一样首先返回 sv。

我建议将 SDK 生成的值与 Azure 上生成的值之间的 ss、srt、sp 部分进行比较,可能是参数设置不正确。