使用 PowerShell 和 Portal 生成 Azure SAS Token

在Azure中,您可以使用幾種不同的方法來委派對資源的訪問權限。其中一種方式是通過共用存取簽章(SAS)令牌進行。SAS令牌是一種細粒度控制客戶端如何訪問Azure數據的方式。您可以控制許多內容,例如客戶端可以訪問的資源、客戶端的權限、令牌的有效期等等。

其中一個常見的使用情境是通過使用帳戶SAS來保護Azure存儲賬戶。

在本文中,您將學習如何通過Azure門戶和PowerShell創建Azure SAS令牌。完成後,您將擁有一個SAS令牌,可以將其傳遞給各種客戶端命令,以進行Azure存儲管理的身份驗證和授權。

先決條件

本文中將進行一些不同的實際操作。如果您希望跟著進行,請確保滿足以下先決條件。

  • Azure訂閱。如果您尚未擁有,可以申請試用訂閱
  • Azure存儲賬戶。請參考創建存儲賬戶以獲取更多信息。
  • Az PowerShell 模組(可選)。僅在使用 PowerShell 生成共用存取簽章(SAS)令牌時需要
  • 如果使用 PowerShell 生成 SAS 令牌,需要使用 Windows PowerShell 5.1 或 PowerShell Core 6+

使用 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 Storage服務。其他服務包括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/