对象复制功能以异步方式将块状 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 日之前创建的帐户的属性值为 null 或 true 时,存储帐户可以参与跨租户的对象复制策略。 对于在该时间之后创建的帐户,该属性需要设置为 true。 设置 AllowCrossTenantReplication 属性不会对存储帐户造成任何停机。
修复新账户的跨租户复制问题
若要禁止新存储帐户的跨租户复制,请使用 Azure 门户、PowerShell 或 Azure CLI。 对于在 2023 年 12 月 15 日之后创建的新帐户,该属性默认为 false,即使未显式设置也是如此。
若要禁止存储帐户的跨租户对象复制,请执行以下步骤:
在 Azure 门户中,导航到 “存储帐户 ”页,然后选择“ 创建”。
填写新存储帐户的 “基本信息 ”选项卡。
在高级选项卡的Blob 存储部分,找到允许跨租户复制设置,然后取消选择框内的选项。
完成创建帐户的过程。
修复现有帐户的跨租户复制
若要禁止现有存储帐户的跨租户复制,请使用 Azure 门户、PowerShell 或 Azure CLI。
- Azure 门户
- PowerShell
- Azure CLI
若要禁止当前未参与任何跨租户策略的现有存储帐户的跨租户对象复制,请执行以下步骤:
在 Azure 门户中导航到你的存储帐户。
在 “数据管理”下,选择 “对象复制”。
选择“高级设置”。
取消选中 “允许跨租户复制”。 默认情况下,选中此框,因为存储帐户允许跨租户对象复制,除非显式禁止它。
选择“确定”,保存所做更改。
如果存储帐户当前正在参与一个或多个跨租户复制策略,则在删除这些策略之前,将无法禁止跨租户对象复制。 在此方案中,此设置在 Azure 门户中不可用,如下图所示。
禁止跨租户复制后,尝试将存储帐户配置为跨租户策略的源或目标将失败。 Azure 存储返回一个错误,指示存储帐户不允许跨租户对象复制。
如果不允许存储帐户进行跨租户对象复制,则使用该帐户创建的任何新对象复制策略都必须包含源帐户和目标帐户的完整 Azure 资源管理器 ID。 Azure 存储需要完整的资源 ID 来验证源帐户和目标帐户是否位于同一租户中。 有关详细信息,请参阅 指定源帐户和目标帐户的完整资源 ID。
仅使用 Azure 资源管理器部署模型的存储帐户支持 AllowCrossTenantReplication 属性。 有关哪些存储帐户使用 Azure 资源管理器部署模型的信息,请参阅存储帐户的类型。
允许或禁止跨租户复制的权限
若要设置存储帐户的 AllowCrossTenantReplication 属性,用户必须有权创建和管理存储帐户。 提供这些权限的 Azure 基于角色的访问控制 (Azure RBAC) 角色包含 Microsoft.Storage/storageAccounts/write 或 Microsoft.Storage/storageAccounts/* 操作。 具有此操作的内置角色包括:
这些角色未提供通过 Microsoft Entra ID 访问存储帐户中数据的访问权限。 但是,它们包含 Microsoft.Storage/storageAccounts/listkeys/action,可以授予对帐户访问密钥的访问权限。 借助此权限,用户可以使用帐户访问密钥访问存储帐户中的所有数据。
角色分配的范围必须限定为存储帐户或更高级别的级别,以允许用户允许或禁止存储帐户的跨租户对象复制。 有关角色范围的详细信息,请参阅了解 Azure RBAC 的范围。
请注意,仅向需要能够创建存储帐户或更新其属性的用户分配这些角色。 使用最小特权原则确保用户拥有完成任务所需的最少权限。 有关使用 Azure RBAC 管理访问权限的详细信息,请参阅 Azure RBAC 最佳做法。
注释
经典订阅管理员角色“服务管理员”和“共同管理员”具有 Azure 资源管理器所有者角色的等效权限。 所有者角色包括所有操作,因此具有这些管理角色之一的用户也可以创建和管理存储帐户。 有关详细信息,请参阅 Azure 角色、Microsoft Entra 角色和经典订阅管理员角色。
使用 Azure Policy 审核合规性
如果有大量存储帐户,可能需要执行审核,以确保这些帐户配置为防止跨租户对象复制。 若要审核一组存储帐户的合规性,请使用 Azure Policy。 Azure Policy 是一项服务,可用于创建、分配和管理将规则应用于 Azure 资源的策略。 Azure Policy 可帮助你确保这些资源始终符合公司标准和服务级别协议。 有关详细信息,请参阅 Azure Policy 概述。
创建具有 Audit 效果的策略
Azure Policy 支持的效果决定了针对资源评估某个策略规则时会发生什么情况。 当资源不符合要求但不会停止请求时,审核效果将创建警告。 有关效果的详细信息,请参阅了解 Azure Policy 效果。
若要使用 Azure 门户为存储帐户创建具有审核效果的跨租户对象复制设置的策略,请执行以下步骤:
在 Azure 门户中,导航到 Azure Policy 服务。
在“创作”部分下,选择“定义”。
选择“添加策略定义”以创建新的策略定义。
对于“定义位置”字段,选择“更多”按钮以指定审核策略资源所在的位置。
指定策略的名称。 还可以指定说明和类别。
在“策略规则”下,将以下策略定义添加到“policyRule”部分。
{ "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Storage/storageAccounts" }, { "not": { "field":"Microsoft.Storage/storageAccounts/allowCrossTenantReplication", "equals": "false" } } ] }, "then": { "effect": "audit" } }保存策略。
分配策略
接下来,将策略分配给资源。 策略的作用域对应于该资源及其下的所有资源。 有关策略分配的详细信息,请参阅 Azure Policy 分配结构。
若要在 Azure 门户中分配策略,请执行下列步骤:
- 在 Azure 门户中,导航到 Azure Policy 服务。
- 在“创作”部分下,选择“分配”。
- 选择“分配策略”以创建新的策略分配。
- 对于“作用域”字段,请选择策略分配的作用域。
- 对于“策略定义”字段,请选择“更多”按钮,然后从列表中选择你在上一部分定义的策略。
- 提供策略分配的名称。 说明是可选的。
- 让“策略强制实施”设置为“启用”状态。 此设置对审核策略没有影响。
- 选择“查看 + 创建”以创建分配。
查看相容性报告
分配策略后,你可以查看合规性报告。 审核策略的符合性报告提供有关哪些存储帐户仍允许跨租户对象复制策略的信息。 有关详细信息,请参阅获取策略合规性数据。
创建策略分配后,合规性报告可能需要几分钟才能生成。
若要在 Azure 门户中查看合规性报告,请执行以下步骤:
在 Azure 门户中,导航到 Azure Policy 服务。
选择“合规性”。
筛选你在上一步创建的策略分配名称的结果。 报告显示不符合政策规定的资源。
可以深入钻取报表以获取更多详细信息,包括不合规的存储帐户列表。
使用 Azure Policy 强制实施同一租户复制策略
Azure Policy 可以确保 Azure 资源符合要求和标准,从而为云治理提供支持。 若要确保组织中的存储帐户禁止跨租户复制,可以创建一个策略,防止创建允许跨租户对象复制策略的新存储帐户。 强制策略使用“拒绝”效果来防止创建或修改存储帐户的请求,以允许跨租户对象复制。 如果该帐户的跨租户对象复制设置不符合该策略,则拒绝策略也会阻止对现有帐户所做的所有配置更改。 有关“拒绝”效果的详细信息,请参阅 “了解 Azure Policy 效果”。
若要为跨租户对象复制创建具有拒绝效果的策略,请按照 使用 Azure Policy 审核合规性的相同步骤,但在策略定义的 policyRule 部分中提供以下 JSON:
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
{
"not": {
"field":"Microsoft.Storage/storageAccounts/allowCrossTenantReplication",
"equals": "false"
}
}
]
},
"then": {
"effect": "deny"
}
}
使用“拒绝”效果创建策略并将其分配给范围后,用户无法创建允许跨租户对象复制的存储帐户。 用户也不能对当前允许跨租户对象复制的现有存储帐户进行任何配置更改。 如果尝试这样做,将会导致错误。 存储帐户的 AllowCrossTenantReplication 属性必须设置为 false ,才能按照策略继续创建或配置更新帐户。
下图显示了在尝试创建一个允许跨租户对象复制的新存储帐户(这是新帐户的默认设置)时,如果策略的拒绝效果要求禁止跨租户对象复制,则会发生错误。