使用PowerShell和门户生成Azure SAS令牌

有几种不同的方法可以在Azure中委派对资源的访问权限。其中一种方法是通过Shared Access Signature (SAS)令牌。SAS令牌是一种精细控制客户端如何访问Azure数据的方式。您可以控制许多方面,例如客户端可以访问哪些资源,客户端具有哪些权限,令牌有效期多长等等。

SAS令牌的一个常见用途是通过使用account SAS来保护Azure存储账户。

在本文中,您将学习如何通过Azure门户和PowerShell创建Azure SAS令牌。完成后,您将获得一个SAS令牌,然后可以将其传递给各种客户端命令,以进行Azure存储管理的身份验证和授权。

先决条件

在本文中,您将亲自学习如何执行一些不同的任务。如果您想跟着操作,请确保您已满足以下先决条件。

  • Azure订阅。如果您还没有,请申请试用订阅
  • Azure存储账户。请参考创建存储账户以获取更多信息。
  • Az PowerShell 模块(可选)。只有在使用 PowerShell 生成 Shared Access Signature 令牌时才需要此模块
  • Windows PowerShell 5.1 或 PowerShell Core 6+(如果通过 PowerShell 生成 SAS 令牌)

使用 Azure 门户生成 SAS 令牌

生成 SAS 令牌的最直接方法是使用Azure 门户。通过使用 Azure 门户,您可以以图形方式导航各种选项。

要通过 Azure 门户创建令牌,首先导航到要访问的存储帐户,在设置部分下点击共享访问签名。您可以在下面看到这可能是什么样子的示例。

可以授予许多权限以生成 SAS 令牌并设置开始/结束时间。对于本文,您将分配完全权限并保留默认的过期时间为八小时。如果您想了解每个权限的详细信息和解释,请查看Microsoft 文档

保留所有默认复选框,然后点击生成 SAS 和连接字符串按钮,如下所示。

Generating SAS Token from the Azure Portal

令牌生成后,您将在生成 SAS 和连接字符串按钮下方的框中看到其列表,如下所示。

Copying the generated SAS token

此时,您可以复制 SAS 令牌并将其值粘贴到需要使用它的任何地方。

使用 PowerShell 生成 SAS 令牌

为了避免必须登录 Azure 门户,或者,如果您一次为多个存储账户生成 SAS 令牌,您可以使用 PowerShell。PowerShell 使用 Azure 的 REST API 来调用 Azure 生成令牌。

要通过 PowerShell 创建 SAS 令牌,首先打开 PowerShell 控制台并使用 Connect-AzAccount 进行身份验证。一旦验证成功,然后找到您想要访问的存储账户。下面是一个查询名为 demo_account 的存储账户所在的 demo_rg 资源组的示例。使用 $context 的值,然后将其传递给生成令牌的命令。

$context = (Get-AzStorageAccount -ResourceGroupName 'demo_rg' -AccountName 'demo_account').context

找到存储账户上下文后,使用 New-AzStorageAccountSASToken 命令创建 SAS 令牌。下面的示例显示生成一个 SAS 令牌,该令牌赋予存储账户和所有子组件完全权限。

New-AzStorageAccountSASToken -Context $context -Service Blob,File,Table,Queue -ResourceType Service,Container,Object -Permission racwdlup

通过 New-AzStorageAccountSASToken 创建 SAS 令牌时,该令牌将在一小时内有效。如果您希望延长此时间,可以使用 ExpiryTime 参数。

限制 SAS 令牌权限

使用 SAS 令牌的一个原因是为其他方提供有限时间和权限集的访问权限。上一个示例生成了具有完全访问权限的 SAS 令牌。赋予完全访问权限并不总是最佳方案。

参数Service定义了对一个或多个服务的访问。例如,使用blob只允许访问Azure Blob 存储服务。其他服务包括FileTableQueue

参数ResourceType限制对特定类型资源的访问。例如,将container作为值允许仅访问容器资源。其他有效的资源类型为ServiceObject

参数Permission允许您定义允许的权限。根据需要指定一个或多个权限。值rwd等同于赋予读取写入删除权限。其他有效的权限值为(l)ist(a)dd(u)pdate(p)rocess

使用 SAS 令牌

生成的 SAS 令牌有多种用法。其中一种最常见的用法是在存储上下文中使用。存储上下文是一种“打包”凭据的方式,然后将其传递给各种命令。

A common way to use the SAS token is via PowerShell. Using the New-AzStorageContext command that’s part of the Az PowerShell module. You can see an example below using the SAS token to upload a file to an existing storage container.

$StorageAccountName = 'foo'
 $ContainerName = 'bar'
 Create a storage context
 $sasToken = ''
 $StorageContext = New-AzStorageContext $StorageAccountName -SasToken $sasToken
 Upload a file
 $storageContainer = Get-AzStorageContainer -Name $ContainerName -Context $StorageContext
 $storageContainer | Set-AzStorageBlobContent –File 'C:\file.txt' –Blob 'file.txt'

概要

创建 SAS 令牌可以通过几种不同的方式完成。在本文中,您学习了其中几种最常见的方式。一旦创建,SAS 令牌可以以许多不同的方式使用,但决定使用哪种方式取决于您。

Source:
https://adamtheautomator.com/azure-sas-token/