觀點 · 資訊分享

Azure Storage 的 SAS 連結可以綁定使用者了:就算連結外流,沒登入指定帳號也打不開

Azure Storage 的「使用者綁定使用者委派 SAS」正式上線:分享連結時指定 Entra ID 身分,只有通過登入的那個人能用,不再是誰拿到連結誰就能存取。不另外收費,所有公有區域都能用。

發布
2026-09-09
篇幅
約 4 分鐘 · 1,912 字
結構
7 節 + 4 題常見問題
標籤
#Azure#Azure Storage#SAS#Entra ID#資料安全
Azure Storage 的 SAS 連結可以綁定使用者了:就算連結外流,沒登入指定帳號也打不開

一句話看懂:Azure Storage 的 SAS 連結現在可以綁定指定的 Entra ID 使用者,只有通過登入的那個人能用,連結就算被轉傳出去,別人也無法直接拿來存取。

Azure SAS 連結可綁定使用者資訊圖卡:分享連結時指定 Entra 身分,只有通過登入的那個人能用

先用白話講:SAS 是什麼?

想像你要讓朋友進你家的儲藏室拿東西,不想把家裡鑰匙交給他,所以請管理員開一張「限時進入券」:只能進這間儲藏室、只能用到明天。這張券就是 SAS(共用存取簽章)。

問題是,這種券通常誰拿到都能用,就像電影票沒有實名:朋友把券貼在群組裡,群組裡所有人都進得來。

這次微軟推出的使用者綁定版本,等於把票改成實名制:開票時就寫上「只限某位 Entra ID 使用者」,進門時還要出示身分證明,其他人拿到券也進不去。

發生什麼事

微軟在 9 月 9 日宣布「使用者綁定使用者委派 SAS」正式上線:

  • 是原有使用者委派 SAS 的延伸,後者已支援 Blob、檔案、資料表與佇列
  • 使用者委派 SAS 本身以 Entra ID 與 RBAC 產生,可追溯到產生它的人,有效期最長 7 天
  • 新版多了一道限制:產生時指定終端使用者的 Entra 身分,使用時對方要通過 Entra 驗證
  • 官方說它比帳戶 SAS、服務 SAS 與一般使用者委派 SAS 更安全
  • 所有公有區域都能用,不另外收費,只依儲存體帳戶類型收一般的交易費

怎麼開始用?

依官方部落格的步驟:

  1. 確認產生者有正確的 RBAC 角色:對應服務的 Data Contributor 與 Delegator
  2. 取得使用者委派金鑰
  3. 向終端使用者取得他的 OAuth 物件 ID 與租用戶 ID
  4. 照一般使用者委派 SAS 的步驟產生權杖,只是要多指定終端使用者(跨租用戶時也要指定租用戶)
  5. 把權杖交給要使用的應用程式或使用者,官方建議在應用程式之間自動傳遞,或透過 Key Vault 分享
服務 需要的角色
Blob Storage Blob Data Contributor、Storage Blob Delegator
檔案 Storage Files Data Contributor、Storage Files Delegator
資料表 Storage Table Data Contributor、Storage Table Delegator
佇列 Storage Queue Data Contributor、Storage Queue Delegator

給開發者的技術細節

  • 適用範圍:所有公有區域的 GPv2 儲存體帳戶,可透過 REST API、SDK、PowerShell、CLI 與入口網站使用
  • 跨租用戶:終端使用者在另一個租用戶時,必須在儲存體帳戶開啟 allowCrossTenantDelegationSas;不跨租用戶就保持關閉
  • 使用方式:因為對方要先登入 Entra,它比較適合組織內部或 B2B 分享,不適合直接貼在公開網頁給匿名訪客

我的看法

接案時常遇到「讓客戶下載報表、上傳檔案」這類需求,用 SAS 連結最方便,但風險也很明顯:連結被轉傳或貼到不該貼的地方,等於權限也被轉傳了。以前只能靠縮短有效期與縮小權限來降低風險,現在多了一個選擇:連結只給特定的人用。

不過它有前提:對方要有 Entra ID 帳號。所以我的想法是,企業內部系統、B2B 合作這種有明確帳號體系的場景,可以優先考慮;對外公開、一般使用者的下載,仍然要靠短效期、最小權限,以及盡量不要用 SAS 當成唯一防線。

名詞小辭典

  • SAS(Shared Access Signature):一段含簽章的權杖,讓持有者在限定的範圍與時間裡存取儲存體資源。
  • Entra ID:微軟的身分服務,以前叫 Azure AD,用來管理帳號與登入。
  • RBAC:角色型存取控制,用「角色」來決定誰能做什麼事。
  • 租用戶(Tenant):一個組織在 Entra ID 裡的獨立身分環境。

資料來源

常見問題

SAS 是什麼?
SAS(共用存取簽章)是一段特殊的連結權杖,讓別人在限定時間與限定範圍裡存取你的 Azure 儲存體資源,而不用把帳戶金鑰交出去。
跟以前的使用者委派 SAS 有什麼不同?
使用者委派 SAS 以 Entra ID 與 RBAC 產生,可追溯到產生它的人,最長 7 天。新的「使用者綁定」版本更進一步:產生時指定終端使用者的 Entra 身分,只有這位使用者通過驗證才能用。
對方在別的組織也能用嗎?
可以。終端使用者可以和你在同一個租用戶,也可以在不同租用戶。如果是跨租用戶,必須在儲存體帳戶開啟 allowCrossTenantDelegationSas 設定;不跨租用戶就維持關閉。
產生時需要什麼權限?
產生委派金鑰的人需要對應服務的 Data Contributor 與 Delegator 角色,例如 Blob 需要 Storage Blob Data Contributor 與 Storage Blob Delegator。
LINE