防止跨 Microsoft Entra 租用戶進行物件複寫

物件複寫會以非同步方式將區塊 Blob 從一個儲存體帳戶中的容器複製到另一個儲存體帳戶中的容器。 當您設定物件複寫原則時,您會指定來源帳戶和容器,以及目的地帳戶和容器。 設定原則之後,Azure 儲存體會自動將來源物件的建立、更新和刪除作業結果複製到目的地物件。 如需 Azure 儲存體中物件複寫的詳細資訊,請參閱區塊 Blob 的物件複寫

獲得授權的使用者可以設定物件複寫原則,其中來源帳戶會位在一個 Microsoft Entra 租用戶,而目的地帳戶則會位在其他租用戶,前提是允許跨 Microsoft Entra 租用戶進行跨租用戶複寫。 如果您的安全性原則要求您限制只能將物件複寫到位於相同租用戶中的儲存體帳戶,您可以不允許建立原則,其中來源和目的地帳戶位於不同的租用戶。 根據預設,會針對所有在 2023 年 12 月 15 日後建立的新儲存體帳戶停用跨租用戶物件複寫,除非您明確地允許此複寫。

本文說明如何為您的儲存體帳戶補救跨租用戶物件複寫。 也會說明如何建立原則,以對新的和現有的儲存體帳戶強制執行跨租用戶物件複寫。

如需有關如何設定物件複寫原則的詳細資訊,包括跨租用戶原則,請參閱設定區塊 Blob 的物件複寫

補救跨租用戶物件複寫

若要防止跨 Microsoft Entra 租用戶進行物件複寫,請將儲存體帳戶的 AllowCrossTenantReplication 屬性設定為 false。 如果儲存體帳戶目前未參與任何跨租用戶的物件複寫原則,則將 AllowCrossTenantReplication 屬性設定為 false,將會禁止後續以此儲存體帳戶作為來源或目的地,來設定跨租用戶的物件複寫原則。 不過,如果儲存體帳戶目前參與一或多個跨租用戶物件複寫原則,在您刪除現有跨租用戶原則之前,不允許將 AllowCrossTenantReplication 屬性設定為 false

針對在 2023 年 12 月 15 日後建立的儲存體帳戶,預設不允許跨租用戶原則。 不過,預設不會針對在 2023 年 12 月 15 日後建立的現有儲存體帳戶設定 AllowCrossTenantReplication 屬性,且不會傳回一值,直到您明確設定此屬性為止。 對於在 2023 年 12 月 15 日前建立的帳戶,當其屬性值為 nulltrue 時,儲存體帳戶可以參與跨組用戶的物件複寫原則。 針對在該時間後建立的帳戶,屬性必須設定為 true。 設定 AllowCrossTenantReplication 屬性不會對儲存體帳戶引發任何停機。

補救新帳戶的跨租用戶複寫

若要禁止新儲存體帳戶的跨租用戶複寫,請使用 Azure 入口網站、PowerShell 或 Azure CLI。 針對在 2023 年 12 月 15 日後建立的新帳戶,屬性會預設為 false,即使未明確設定也一樣。

若要要禁止儲存體帳戶的跨租用戶物件複寫,請遵循下列步驟:

  1. 在 Azure 入口網站中,瀏覽至 [儲存體帳戶] 頁面,然後選取 [建立]

  2. 填寫新儲存體帳戶的 [基本] 索引標籤。

  3. 在 [進階] 索引標籤的 [Blob 儲存體] 區段中,找出 [允許跨租用戶複寫] 設定,然後取消核取此方塊。

    Screenshot showing how to disallow cross-tenant object replication for a new storage account

  4. 完成建立帳戶的程序。

補救現有帳戶的跨租用戶複寫

若要禁止現有儲存體帳戶的跨租用戶複寫,請使用 Azure 入口網站、PowerShell 或 Azure CLI。

若要禁止目前未參與任何跨租用戶原則的現有儲存體帳戶跨租用戶物件複寫,請遵循下列步驟:

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

  2. 在 [資料管理] 下,選取 [物件複寫]

  3. 選取 [進階設定]

  4. 取消核取 [允許跨租用戶複寫]。 預設會核取此方塊,因為除非您明確禁止,否則會允許儲存體帳戶的跨租用戶物件複寫。

    Screenshot showing how to disallow cross-tenant object replication for an existing storage account

  5. 選取 [確定] 以儲存您的變更。

如果儲存體帳戶目前參與一或多個跨租用戶複寫原則,您在刪除這些原則之前,無法禁止跨租用戶物件複寫。 在此案例中,Azure 入口網站中的設定無法使用,如下圖所示。

Screenshot

在您禁止跨租用戶複寫之後,嘗試以儲存體帳戶作為來源或目的地來設定跨租用戶原則失敗。 Azure 儲存體會傳回錯誤,表示不允許儲存體帳戶的跨租用戶物件複寫。

當禁止儲存體帳戶的跨租用戶物件複寫時,您使用該帳戶建立的任何新物件複寫原則,都必須包含來源和目的地帳戶的完整 Azure Resource Manager 識別碼。 Azure 儲存體需要完整資源識別碼來確認來源和目的地帳戶是否位於相同的租用戶中。 如需詳細資訊,請參閱指定來源和目的地帳戶的完整資源識別碼

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

允許或禁止跨租用戶複寫的權限

若要設定儲存體帳戶的 AllowCrossTenantReplication 屬性,使用者必須具有建立及管理儲存體帳戶的權限。 提供這些權限的 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 原則對合規性進行稽核

如果您有大量的儲存體帳戶,您可以執行稽核來確定這些帳戶已設定為防止跨租用戶物件複寫。 若要稽核一組儲存體帳戶的合規性,請使用 Azure 原則。 Azure 原則是一項服務,可讓您用來建立、指派和管理將規則套用至 Azure 資源的原則。 當您使用 Azure 原則時,這些資源會符合您的公司標準及服務等級協定規範。 如需詳細資訊,請參閱 Azure 原則概觀

建立具有稽核效果的原則

Azure 原則支援的效果可判斷對資源評估原則規則時所發生的情況。 當資源不符合規範時,此稽核效果會建立一則警告,但不會停止要求。 如需有關效果的詳細資訊,請參閱了解 Azure 原則效果

若要使用 Azure 入口網站對儲存體帳戶的跨租用戶物件複寫設定建立具有稽核效果的原則,請遵循下列步驟:

  1. 在 Azure 入口網站中,瀏覽至 [Azure 原則] 服務。

  2. 在 [編寫] 區段底下,選取 [定義]

  3. 選取 [新增原則定義] 以建立新的原則定義。

  4. 在 [ 定義位置] 欄位中,選取 [更多] 按鈕以指定稽核原則資源所在的位置。

  5. 指定原則的名稱。 您可以選擇性指定說明和類別。

  6. 在 [原則規則] 底下,將下列原則定義新增至 [policyRule] 區段。

    {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.Storage/storageAccounts"
          },
          {
            "not": {
              "field":"Microsoft.Storage/storageAccounts/allowCrossTenantReplication",
              "equals": "false"
            }
          }
        ]
      },
      "then": {
        "effect": "audit"
      }
    }
    
  7. 儲存原則。

指派原則

接著,將原則指派給資源。 原則的範圍會對應至該資源及其底下的任何資源。 如需原則指派的詳細資訊,請參閱 Azure 原則指派結構

若要使用 Azure 入口網站指派原則,請遵循下列步驟:

  1. 在 Azure 入口網站中,瀏覽至 [Azure 原則] 服務。
  2. 在 [編寫] 區段底下,選取 [指派]
  3. 選取 [指派原則] 以建立新的原則指派。
  4. 在 [範圍] 欄位中,選取原則指派的範圍。
  5. 在 [原則定義] 欄位中,選取 [更多] 按鈕,然後從清單中選取您在上一節中定義的原則。
  6. 提供原則指派的名稱。 描述是選擇性的。
  7. 將 [原則強制執行] 的設定保留為 [已啟用]。 此設定不會影響稽核原則。
  8. 選取 [檢閱 + 建立] 以建立指派。

檢視合規性報告

指派原則之後,您可以檢視合規性報告。 稽核原則的合規性報告提供仍然允許跨租用戶物件複寫原則的儲存體帳戶相關資訊。 如需詳細資訊,請參閱取得原則合規性資料

在建立原則指派之後,可能需要幾分鐘的時間,合規性報告才會變成可用狀態。

若要在 Azure 入口網站中檢視合規性報告,請遵循下列步驟:

  1. 在 Azure 入口網站中,瀏覽至 [Azure 原則] 服務。

  2. 選取 [合規性]

  3. 篩選您在上一個步驟中建立的原則指派名稱結果。 報告會顯示不符合原則的資源。

  4. 您可以向下切入報告以取得其他詳細資料,包括不符合規範的儲存體帳戶清單。

    Screenshot showing compliance report for audit policy for blob cross-tenant object replication

使用 Azure 原則強制執行相同的跨租用戶複寫原則

Azure 原則可藉由確保 Azure 資源遵循需求和標準,以支援雲端治理。 為了確保您組織中的儲存體帳戶禁止跨租用戶複寫,您可以建立原則來防止建立新的儲存體帳戶,允許跨租用戶物件複寫原則。 強制原則會使用「拒絕」效果來防止要求建立或修改儲存體帳戶,以允許跨租用戶物件複寫。 如果現有帳戶的跨租用戶物件複寫設定與此原則不相容,「拒絕」原則也會防止對現有帳戶進行所有設定變更。 如需有關「拒絕」效果的詳細資訊,請參閱了解 Azure 原則效果

若要針對跨租用戶物件複寫建立具有「拒絕」效果的原則,請遵循使用 Azure 原則對合規性進行稽核中所述的相同步驟,但在原則定義的 [policyRule] 區段中提供下列 JSON:

{
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.Storage/storageAccounts"
      },
      {
        "not": {
          "field":"Microsoft.Storage/storageAccounts/allowCrossTenantReplication",
          "equals": "false"
        }
      }
    ]
  },
  "then": {
    "effect": "deny"
  }
}

當您建立具有「拒絕」效果的原則,並將其指派給某個範圍之後,使用者將無法建立允許跨租用戶物件複寫的儲存體帳戶。 使用者也不能對目前允許跨租用戶物件複寫的現有儲存體帳戶進行任何設定變更。 嘗試這麼做會導致錯誤。 儲存體帳戶的 AllowCrossTenantReplication 屬性必須設定為 false,才能繼續建立帳戶和更新設定,並且符合原則規範。

下圖顯示當具有「拒絕」效果的原則需要禁止跨租用戶物件複寫時,如果您嘗試建立允許跨租用戶物件複寫 (新帳戶的預設值) 的儲存體帳戶,會發生什麼錯誤。

Screenshot showing the error that occurs when creating a storage account in violation of policy

另請參閱