Azure Blob 儲存體 將大量非結構化物件資料儲存在容器中。 它經常成為外洩、勒索軟體及公開暴露事件的目標。 本文提供針對 blob 容器、blob 及Azure Data Lake Storage階層命名空間的安全性建議。
Note
本文將介紹 Azure Blob 儲存體 特有的安全實務。 關於帳號層級的安全指引,請參見「保護你的 Azure 儲存體 帳號」。
網路安全
使用 Azure Front Door 為自訂網域、靜態網站及任何公開提供的 Blob 內容提供前端:在 Azure Front Door 使用受控憑證終止 TLS、啟用 WAF,並限制儲存體帳戶的公用網路存取,讓只有 Front Door 能夠連線到來源。 Azure 儲存體 自家的自訂網域功能不支援託管 TLS 憑證,而 Front Door 則新增了 WAF 保護、速率限制和日誌功能,這是匿名容器存取所缺乏的。 更多資訊請參閱 Use Azure Front Door with Azure 儲存體 blobs。
在未使用時停用靜態網站端點:啟用靜態網站功能時,
$web容器即使false為allowBlobPublicAccess,仍可公開讀取。 對於不需要的帳號,請關閉靜態網站功能。 欲了解更多信息,請參閱Azure 儲存體中的靜態網站託管。
身分識別與存取權管理
匿名公開存取
在儲存帳號中停用匿名公開讀取權限:將屬性設定
allowBlobPublicAccess為false,使帳號中的任何容器都無法成為公開,無論容器層級的設定如何。 如需詳細資訊,請參閱概觀:修復 Blob 資料的匿名讀取存取。稽核並補救任何現有的匿名存取:請使用 補救 Blob 資料的匿名讀取存取中的指引,找出允許公開存取的容器,並將其轉換為私有存取,或改為使用以 SAS 為基礎的明確授權共用。
Blob 層級 SAS 與 ABAC
針對 Blob 存取,優先使用使用者委派 SAS,而非服務 SAS:使用者委派共用存取簽章 (SAS) 是以 Microsoft Entra 認證簽署。 撤銷使用者委派金鑰會立即讓從中發出的所有 SAS 失效,提供服務 SAS 與帳戶 SAS 所缺乏的撤銷路徑。 如需詳細資訊,請參閱建立使用者委派 SAS。
使用預存存取原則來限制服務 SAS 的範圍,以便撤銷:如果您必須使用服務 SAS,請將其與容器上的預存存取原則建立關聯。 接著你可以修改或刪除該政策,撤銷所有引用它的 SAS。 若沒有政策,服務 SAS 只能透過輪換帳號金鑰來撤銷,這會影響帳號內其他所有 SAS。 如需詳細資訊,請參閱 定義預存存取原則。
使用 blob 索引標籤來透過 ABAC 進行條件存取:結合 blob 索引標籤與屬性基礎存取控制(ABAC)條件,以授予具有特定標籤值的 blob 僅讀存取權限——例如
Classification=Public。 此方法允許單一角色指派服務多個呼叫者,且不允許存取敏感標籤資料。 如需詳細資訊,請參閱 使用 ABAC 條件授權 Blob 存取。
資料保護
使用 blob 加密範圍來隔離特定容器或 blob 的加密:加密範圍允許你在單一帳號內以容器層級或 blob 層級的細緻度套用不同的金鑰或金鑰輪換政策。 此功能對於共用帳號但需要每個租戶金鑰控制的多租戶工作負載非常有用。 欲了解更多資訊,請參閱 Blob 儲存體 的加密範圍。
對於伺服器上絕不能以明文形式出現的 blob 資料,請使用用戶端加密:在上傳前先在用戶端加密 blob 內容。 SDK 可與 Azure Key Vault 或 Managed HSM 整合進行金鑰管理。 結合伺服器端的 CMK,提供分層保護。 更多資訊請參閱 blobs 的用戶端加密。
不可變性與 WORM
為受管制資料設定基於時間的保留政策:套用容器層級或版本層級的時間級保留,以防止 blob 在固定期間內被修改或刪除。 版本層級的不變性提供更細緻的控制,且你可以在個別版本上啟用或擴充。 如需詳細資訊,請參閱使用不可變儲存體儲存業務關鍵 Blob 資料。
針對法律或調查需求,使用法律保留來進行無限期保留:法律保留可防止內容遭到刪除,直到授權使用者明確解除保留為止,且沒有固定期限。 如需詳細資訊,請參閱使用不可變儲存體儲存業務關鍵 Blob 資料。
鎖定保留政策使其不可修改:擁有適當權限的使用者可以縮短或刪除已解鎖的保留政策。 鎖定保單使得保留期成為單向承諾。 請先驗證原則的持續時間,再進行鎖定。 欲了解更多資訊,請參閱 「容器的不可變性政策配置」。
物件複製與複製操作
限制物件複製至你控制的來源帳號:設定目標帳號允許的來源帳號清單,讓只有已知且受信任的來源帳號能推送資料。 更多資訊請參閱 「設定物件複製」。
防止跨租戶物件複製:禁止來源帳號與目的地帳號分別位於不同 Microsoft Entra 租戶的複製政策。 此限制阻止授權使用者將複寫設定至外部租戶。 欲了解更多資訊,請參閱 防止 Microsoft Entra 租戶間的物件複製。
限制允許的複製操作範圍:設定帳號僅允許同一租戶或同一訂閱的來源帳號進行複製操作。 此配置阻擋了常見的外洩路徑——從私人帳號複製到攻擊者控制的帳號。 欲了解更多資訊,請參閱 允許的複製作業範圍。
備份及復原
啟用 blob 版本管理以保留寫入和刪除時的舊版本:啟用版本控制後,每次寫入或刪除操作都會產生新版本,並保留先前的狀態。 您可以定址並還原版本。 如需詳細資訊,請參閱 Blob 版本設定。
啟用 blob 和容器的軟刪除:軟刪除會保留已刪除的 blob 和容器一段固定期限,讓你能在這段時間內還原它們。 分別設定容器層級和 blob 層級的軟刪除,並啟用兩者。 如需詳細資訊,請參閱 Blob 的虛刪除和容器的虛刪除。
為區塊 Blob 帳戶啟用時間點還原:時間點還原會搭配版本設定和軟刪除,將一系列區塊 Blob 還原至特定的過去時間點。 此功能對勒索軟體復原非常有幫助。 時間點還原需要您啟用版本設定、Blob 虛刪除和變更摘要。 如需詳細資訊,請參閱區塊 Blob 的時間點還原。
啟用用於稽核與鑑識分析的變更摘要:變更摘要是依序且不可變更的記錄,用來記錄帳戶中 Blob 的每一次變更。 除了能實現即時還原外,它還能提供持久的稽核紀錄以供調查使用。 欲了解更多資訊,請參閱Azure Blob 儲存體中的變更訂閱支援。
Azure Data Lake Storage
Data Lake Storage 為 Blob 儲存體 新增了階層式命名空間及類似 POSIX 的存取控制清單(ACL)。 ACL 與 RBAC 搭配運作——透過 RBAC 授予較粗粒度的存取權限,並在檔案系統中使用 ACL 進一步細化權限。
粗粒度存取使用 RBAC,細粒度存取則使用 ACL:在容器或帳戶層級指派內建的 blob RBAC 角色,以賦予廣泛存取權限。 接著,對目錄和檔案使用存取控制(ACL)限制容器內的存取。 不要只用 ACL 來管理使用者在整個容器間所需的權限。 RBAC 在評估和審計上更有效率。 欲了解更多資訊,請參閱 Azure Data Lake Storage 中的存取控制模型。
對目錄套用預設 ACL 以繼承新子項目的權限:預設 ACL 會套用在設定 ACL 後建立的檔案和目錄。 在目錄層級設定它們,以避免管理個別檔案的 ACL。 欲了解更多資訊,請參閱 Azure Data Lake Storage 中的存取控制清單。
在帳號建立時啟用階層命名空間:你無法在現有帳號上啟用階層命名空間,除非遷移。 如果你知道某個工作負載使用 Data Lake Storage 的語意,請一開始就啟用它,而不是之後再遷移。 欲了解更多資訊,請參閱 Azure Data Lake Storage 階層命名空間。
記錄和監視
停用匿名存取後,針對匿名存取命中發出警示:將
allowBlobPublicAccess設為false時,請篩選儲存體記錄檔中的AuthenticationType == "Anonymous",並針對任何命中發出警示。 這些命中情況表示用戶端設定錯誤,或是有探測嘗試。 如需詳細資訊,請參閱監視 Azure 儲存體。啟用並對 Defender for Storage 惡意軟體掃描判定採取行動:啟用惡意軟體掃描時,請設定自動回應(blob 刪除、隔離標籤或下游工作流程抑制),
MalwareScanningResult避免將已識別的惡意 blob 提供給消費者。 欲了解更多資訊,請參閱 Defender 儲存版中的「回應惡意軟體掃描結果」。追蹤 blob 索引標籤的變異以控制分類漂移:如果你使用 blob 索引標籤來驅動 ABAC 存取條件,這些標籤的變更會直接改變誰能讀取 blob。 記錄
SetBlobTags針對敏感容器的操作,並發出警示。 欲了解更多資訊,請參閱「管理與查找 Azure Blob 儲存體 與 blob index tags 的資料」。
相關資安文章
- 保護你的 Azure 儲存體 帳戶 - 跨領域 Azure 儲存體 安全指引。
- 保護你的 Azure 檔案儲存體 - 檔案共享安全。
- 保護 Azure 佇列儲存體 - 佇列專屬安全性。
- 保護你的 Azure 資料表儲存體 - 特定資料表的安全。