將複製作業的來源限制為儲存體帳戶

出於安全性考量,對於可將資料複製到安全帳戶的環境,儲存體管理員可能必須對此進行限制。 藉由限制複製作業的允許範圍,可以阻擋來自不受信任租用戶或虛擬網路的非必要資料。

本文會說明如何將複製作業的來源帳戶限制為與目的地帳戶位於同一租用戶,或具有相同虛擬網路私人連結的帳戶。

重要

複製作業的允許範圍目前為預覽版。 請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

有關複製作業的允許範圍 (預覽)

儲存體帳戶的 AllowedCopyScope 屬性可用來指定能將資料複製到目的地帳戶的環境。 在 Azure 入口網站中,會顯示為 [複製作業的允許範圍 (預覽)] 組態設定。 預設情況下不會設定屬性,而且在您明確設定之後,才會傳回值。 屬性可能的值包含以下三種:

  • (null) (預設值):允許從任何儲存體帳戶複製到目的地帳戶。
  • Microsoft Entra ID:只有與目的地帳戶相同的 Microsoft Entra 租用戶,才允許從其中的帳戶進行複製。
  • PrivateLink:只有與目的地帳戶擁有相同虛擬網路私人連結的儲存體帳戶,才允許從其中的帳戶進行複製。

此設定適用於複製 Blob從 URL 複製 Blob 作業。 使用複製 Blob 的工具範例包括 AzCopy 和 Azure 儲存體總管。

若複製要求的來源不符合此設定的指定需求,要求將會失敗,並顯示 HTTP 狀態碼 403 (禁止)。

只有使用 Azure Resource Manager 部署模型的儲存體帳戶才支援 AllowedCopyScope 屬性。 如需哪些儲存體帳戶使用 Azure Resource Manager 部署模型的詳細資訊,請參閱儲存體帳戶類型

識別複製作業的來源儲存體帳戶

在變更儲存體帳戶的 AllowedCopyScope 值之前,請先識別可能會受此變更影響的使用者、應用程式或服務。 根據結果,可能必須將範圍設定調整為包含所有所需複製來源,或調整部分來源儲存體帳戶的網路或 Microsoft Entra 設定。

Azure 儲存體記錄會針對 Azure 監視器中對儲存體帳戶提出的要求,擷取其詳細資料,包括複製作業的來源與目的地。 如需詳細資訊,請參閱監視 Azure 儲存體。 啟用並分析記錄,以識別因變更目的地儲存體帳戶的 AllowedCopyScope,而可能受到影響的複製作業。

在 Azure 入口網站中建立診斷設定

若要使用 Azure 監視器來記錄 Azure 儲存體資料,並使用 Azure Log Analytics 進行分析,則必須先建立診斷設定,以指出要求的類型,以及想要記錄其資料的儲存體服務。 若要在 Azure 入口網站中建立診斷設定,請執行以下步驟:

  1. 在訂用帳戶中建立新的 log analytics 工作區,其中包含您的 Azure 儲存體帳戶,或使用現有的 log analytics 工作區。 設定儲存體帳戶的記錄後,Log Analytics 工作區中就會提供記錄。 如需詳細資訊,請參閱在 Azure 入口網站中建立 Log Analytics 工作區

  2. 在 Azure 入口網站中,瀏覽至您的儲存體帳戶。

  3. 在 [監視] 區段中,選取 [診斷設定]

  4. 選取您要記錄要求的 Azure 儲存體服務。 例如,選擇 [Blob] 以將要求記錄至 Blob 儲存體。

  5. 選取 [新增診斷設定]。

  6. 提供診斷設定的名稱。

  7. 在 [類別] 下的 [記錄] 區段中,選擇 [StorageRead]、[StorageWrite] 和 [StorageDelete],將所有資料要求記錄到選取的服務。

  8. 在 [目的地詳細資料] 底下,選取 [傳送至 Log Analytics 工作區]。 如下圖所示,選取您的訂用帳戶和稍早建立的 Log Analytics 工作區,然後選取 [儲存]。

    Screenshot showing how to create a diagnostic setting for logging requests.

建立診斷設定後,系統後續會根據該設定記錄儲存體帳戶的要求。 如需詳細資訊,請參閱建立診斷設定以收集 Azure 中的資源記錄和計量

複製要求的查詢記錄

Azure 儲存體記錄包含將資源從另一個來源複製到儲存體帳戶的所有要求。 記錄項目包括目的地儲存體帳戶的名稱、來源物件的 URI,以及能協助識別要求複製的客戶端資訊。 如需 Azure 儲存體記錄在 Azure 監視器中可用欄位的完整參考,請參閱資源記錄

若要取得過去七天內複製 Blob 之要求的記錄,請執行以下步驟:

  1. 瀏覽至您的儲存體帳戶。

  2. 在 [監視] 區段中,選取 [記錄]

  3. 將下列查詢貼入新的記錄查詢中,然後執行。 此查詢會顯示將資料複製到指定儲存體帳戶的要求中,最常參考的來源物件。 在下列範例中,將預留位置文字 <account-name> 取代為您的儲存體帳戶名稱。

    StorageBlobLogs
    | where OperationName has "CopyBlobSource" and TimeGenerated > ago(7d) and AccountName == "<account-name>"
    | summarize count() by Uri, CallerIpAddress, UserAgentHeader
    

查詢結果應該會類似以下內容:

Screenshot showing how a Copy Blob Source log query might look.

URI 是要複製之來源物件的完整路徑,其中包含儲存體帳戶名稱、容器名稱和檔案名稱。 如果套用了特定了 AllowedCopyScope 設定,則可從 URI 清單中判斷複製作業是否會遭封鎖。

您也可以根據此查詢來設定警示規則,以通知您帳戶的複製 Blob 要求。 如需詳細資訊,請參閱使用 Azure 監視器建立、檢視和管理記錄警示

限制複製作業的允許範圍 (預覽)

若您確信可以安全將複製作業的來源限制於特定範圍,則可以將儲存體帳戶的 AllowedCopyScope 屬性設定為該範圍。

變更複製作業允許範圍的權限 (預覽)

若要設定儲存體帳戶的 AllowedCopyScope 屬性,使用者必須具有建立及管理儲存體帳戶的權限。 提供這些權限的 Azure 角色型存取控制 (Azure RBAC) 角色包括 Microsoft.Storage/storageAccounts/writeMicrosoft.Storage/storageAccounts/* 動作。 具有此動作的內建角色包括:

這些角色無法透過 Microsoft Entra ID 提供儲存體帳戶中資料的存取權。 不過,這些角色包含 Microsoft.Storage/storageAccounts/listkeys/action,可授與帳戶存取金鑰的存取權。 使用此權限時,使用者可以使用帳戶存取金鑰來存取儲存體帳戶中的所有資料。

角色指派的範圍必須設定為儲存體帳戶或更高層級,以允許使用者限制帳戶的複製作業範圍。 如需角色範圍的詳細資訊,請參閱了解 Azure RBAC 的範圍

請小心將這些角色的指派限制為需要建立儲存體帳戶或更新其屬性的使用者。 使用最低權限原則,以確保使用者具有完成其工作所需的最低權限。 如需使用 Azure RBAC 管理存取權的詳細資訊,請參閱 Azure RBAC 的最佳做法

注意

傳統訂用帳戶管理員角色「服務管理員」和「共同管理員」含有 Azure Resource Manager 擁有者角色的相等權限。 擁有者角色包含所有動作,因此具有其中一個系統管理角色的使用者也可以建立和管理儲存體帳戶。 如需詳細資訊,請參閱 Azure 角色、Microsoft Entra 角色和傳統訂用帳戶管理員角色

設定複製作業的允許範圍 (預覽)

使用具有必要權限的帳戶時,在 Azure 入口網站中、透過 PowerShell 或使用 Azure CLI 設定複製作業的允許範圍。

若要在 Azure 入口網站中為現有的儲存體帳戶設定複製作業的允許範圍,請遵循下列步驟:

  1. 瀏覽至您的儲存體帳戶。

  2. 在 [設定] 底下,選取 [設定]

  3. 將 [複製作業的允許範圍 (預覽)] 設定為以下其一選項:

    • 從任何儲存體帳戶
    • 從相同 Microsoft Entra 租用戶中的儲存體帳戶
    • 從具有相同虛擬網路私人端點的儲存體帳戶

    Screenshot showing how to disallow Shared Key access for a storage account.

  4. 選取 [儲存]。

下一步