使用PowerShell建立Azure Storage的SAS Token訪問Azure Blob檔案

衡子發表於2016-02-05

Azure的儲存包含Storage Account、Container、Blob等具體的關係如下:

我們常用的blob儲存,存放在Storage Account的Container裡面。

目前有三種方式可以把Blob裡的內容共享給其他使用者,這三種方式是:

1.把Container的屬性設定為公共容器

2.把Blob屬性設定為公共公共Blob

設定好後,blob就可以通過wget的方式下載下來。

3.通過SAS Token的方式實現在一定時間段內的檔案共享

SAS是shared access signature (SAS),可以實現檔案共享。

SAS Provider Service通過旁路的方式生成SAS的token,客戶通過這個SAS Token實現在一定時間內,一定許可權的訪問。

下面將採用powershell的方式生成SAS Token,給客戶訪問的許可權。

有一個檔案:

Get-AzureStorageBlob -Container hengweisoft -Blob googlechrome.dmg
Container Uri: https://portalvhds6mlqtd15wqmm7.blob.core.chinacloudapi.cn/hengweisoft
Name BlobType Length ContentType LastModified SnapshotTime
---- -------- ------ ----------- ------------ ------------
googlechrome.dmg BlockBlob 65936251 application/octet-stream 2015/7/6 8:09:00 +00:00

其中hengweisoft這個Container是private的Container。

$keys = Get-AzureStorageKey -StorageAccountName portalvhds6mlqtd15wqmm7
$ctx = New-AzureStorageContext -StorageAccountName portalvhds6mlqtd15wqmm7 -StorageAccountKey $keys.Primary
$startTime = Get-Date
$endTime = $startTime.AddHours(2.0)
New-AzureStorageBlobSASToken -Container hengweisoft -Blob googlechrome.dmg -context $ctx -Permission rwd -StartTime $startTime -ExpiryTime $endTime

通過這個命令可以生成一串SAS的Token:

?sv=2015-02-21&sr=b&sig=Ifn6JFOinaLQpYGKCKsYiUieQ58WdExxV2Z52Nx%2Fdjs%3D&st=2016-02-05T09%3A36%3A57Z&se=2016-02-05T11%3A36%3A57Z&sp=rwd

將這一串Token連線到Blob的URL上:

https://portalvhds6mlqtd15wqmm7.blob.core.chinacloudapi.cn/hengweisoft/googlechrome.dmg?sv=2015-02-21&sr=b&sig=Ifn6JFOinaLQpYGKCKsYiUieQ58WdExxV2Z52Nx%2Fdjs%3D&st=2016-02-05T09%3A36%3A57Z&se=2016-02-05T11%3A36%3A57Z&sp=rwd

這個檔案在2個小時之內是可以進行不需要認證的訪問的。

可以通過:

wget "https://portalvhds6mlqtd15wqmm7.blob.core.chinacloudapi.cn/hengweisoft/googlechrome.dmg?sv=2015-02-21&sr=b&sig=Ifn6JFOinaLQpYGKCKsYiUieQ58WdExxV2Z52Nx%2Fdjs%3D&st=2016-02-05T09%3A36%3A57Z&se=2016-02-05T11%3A36%3A57Z&sp=rwd"

 

直接獲得這個檔案。

相關文章