您如何使用访问策略授予对容器的访问权限?

How do you grant access to a container using an Access Policy?

我不确定我目前是否理解访问策略的用途,或者至少不知道如何以编程方式使用它们。如果我创建了具有特定权限的存储访问策略,那么我如何以编程方式使用该访问策略?我可以这样创建它(取自 here):

var signedIdentifiers = new List<BlobSignedIdentifier>
{
    new BlobSignedIdentifier
    {
        Id = "SomeIdentifier",
        AccessPolicy = new BlobAccessPolicy
        {
            StartsOn = DateTime.UtcNow,
            ExpiresOn = DateTime.UtcNow.AddMinutes(30),
            Permissions = "w"
        }
    }
};

await containerClient.SetAccessPolicyAsync(permissions: signedIdentifiers);

我已经创建了访问策略,那么我现在如何使用该访问策略创建对该容器的访问?我需要以某种方式生成 SAS 吗?如果是这样,SAS 将如何确保它使用来自该访问策略的权限?它是一个列表这一事实表明可以创建多个策略。

So I've create the access policy, so how can I now create access to that container using that access policy? Do I need to generate a SAS somehow?

没错。您将需要使用此访问策略生成 SAS 令牌。如果要在 blob 容器上生成 SAS 令牌,则将使用 GenerateSasUri method and specify the access policy id (signed identifier) as BlobSasBuilder.Identifier.

If so, how will that SAS make sure it uses the permissions from that access policy?

当您创建一个使用访问策略的 SAS URL 时,您会注意到 si 查询参数中的 SAS URL 中的访问策略 ID(https://docs.microsoft.com/en-us/rest/api/storageservices/create-service-sas#specifying-the-signed-identifier).这将告诉 Azure 存储使用已签名的访问策略进行 SAS 令牌验证。

The fact it's a list suggests that more than one policy can be created.

没错。一个 blob 容器最多可以有 5 个访问策略。您可以在这里阅读更多相关信息:https://docs.microsoft.com/en-us/rest/api/storageservices/define-stored-access-policy.