Azure 儲存體 SAS 如何安全授權?
Azure 儲存體 SAS 安全授權指南,講解使用者委派 SAS、服務 SAS、帳戶 SAS、有效期限、權限範圍、IP 限制及撤銷策略。
Azure 儲存體 SAS 如何安全授權:先理解規劃目標
Azure 儲存體共用存取簽章(SAS)是一種把資源、權限及有效期限編碼在 URL 查詢參數中的委派方式。它可以讓應用程式或外部使用者在不取得儲存帳戶金鑰的情況下,於限定時間內存取指定資料;但 SAS 本身通常是持有者憑證,連結一旦外洩便可能被重用。因此安全設計的重點不是「生成一條 URL」而是最小權限、短時效、傳輸保護、記錄及撤銷預案。
權限最小化
只授予所需資源及操作,例如單一 Blob 的讀取或寫入,不要為下載任務授予刪除或列出容器權限。
時間與網絡限制
設定合理的開始及到期時間,並在可行時加入受限 IP 或 HTTPS 協議要求,避免長期有效的公開連結。
優先使用 Microsoft Entra 身分
以使用者委派 SAS 取代長期帳戶金鑰,配合 RBAC、受控身分及金鑰輪換,減少高權限秘密散落在程式碼及日誌。
SAS 的三種主要方式
使用者委派 SAS 由 Microsoft Entra 身分及 RBAC 授權簽發;服務 SAS 針對特定儲存服務資源;帳戶 SAS 可跨越多項服務,權限範圍較廣。應按照應用程式實際需要選擇,避免以方便為由使用過寬的帳戶 SAS。
簽發流程與保存
由後端驗證使用者及業務權限,再按請求生成短期 SAS;前端只取得完成單一工作所需的 URL。不要將 SAS 寫入原始碼、版本控制、分析追蹤或一般應用程式日誌,並避免在 query string 轉發到不相關的第三方服務。
事件處理與撤銷
SAS 沒有一個可像密碼般逐條查詢的中央清單。若使用儲存體存取政策,可透過更新或刪除政策來改變服務 SAS 的授權;對帳戶金鑰簽發的 SAS,則需輪換相關金鑰。發現外洩時應立即停用或輪換簽發根源、檢查記錄、縮短影響時間並重新發行。