你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将复制操作的源限制为存储帐户

出于安全原因,存储管理员可能需要限制可以从中将数据复制到安全帐户的环境。 限制允许的复制操作的范围有助于防止从不受信任的租户或虚拟网络中渗入不需要的数据。

本文介绍如何将复制操作的源帐户限制为目标帐户所在的同一租户中的帐户,或者具有指向与目标相同的虚拟网络的专用链接。

重要

“允许的复制操作范围”目前为预览版。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

关于允许的复制操作范围(预览版)

存储帐户的 AllowedCopyScope 属性用于指定可从中将数据复制到目标帐户的环境。 它在 Azure 门户中显示为配置设置“允许的复制操作范围(预览版)”。 默认情况下,不会设置该属性。在你显式设置此属性之前,它不会返回值。 它有三个可能的值:

  • (null)(默认值):允许从任何存储帐户复制到目标帐户。
  • Microsoft Entra ID:仅允许从与目标帐户相同的 Microsoft Entra 租户中的帐户进行复制。
  • PrivateLink:仅允许从具有与目标帐户相同的虚拟网络的专用链接的存储帐户进行复制。

该设置适用于复制 blob从 URL 复制 blob 操作。 使用复制 blob 的工具的示例包括 AzCopy 和 Azure 存储资源管理器。

当复制请求的源不符合此设置指定的要求时,请求将失败,并显示 HTTP 状态代码 403(已禁止)。

仅使用 Azure 资源管理器部署模型的存储帐户支持 AllowedCopyScope 属性。 有关哪些存储帐户使用 Azure 资源管理器部署模型的信息,请参阅存储帐户的类型

标识复制操作的源存储帐户

在更改存储帐户的 AllowedCopyScope 的值之前,请标识将会受更改影响的用户、应用程序或服务。 根据调查结果,可能需要将设置调整为包含所有所需复制源的范围,或者调整某些源存储帐户的网络或 Microsoft Entra 配置。

Azure 存储日志在 Azure Monitor 中捕获有关针对存储帐户发出的请求的详细信息,其中包括复制操作的源和目标。 有关详细信息,请参阅监视 Azure 存储。 启用并分析日志,确定可能因更改目标存储帐户的 AllowedCopyScope 而受到影响的复制操作。

在 Azure 门户中创建诊断设置

若要使用 Azure Monitor 记录 Azure 存储数据并使用 Azure Log Analytics 对其进行分析,必须先创建一项诊断设置,用于指示要记录其数据的请求类型和存储服务。 若要在 Azure 门户中创建诊断设置,请执行以下步骤:

  1. 在包含你的 Azure 存储帐户的订阅中创建新的 Log Analytics 工作区,或使用现有的 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 Monitor 的 Azure 存储日志中可用字段的完整参考,请参阅资源日志

若要检索过去七天内发出的复制 blob 的请求的日志,请执行以下步骤:

  1. 导航到 Azure 门户中的存储帐户。

  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 是要复制的源对象的完整路径,其中包括存储帐户名称、容器名称和文件名。 从 URI 列表中,确定如果应用了特定的 AllowedCopyScope 设置,复制操作是否会被阻止。

另外,还可以基于此查询来配置预警规则,以通知你有关帐户的复制 blob 请求。 有关详细信息,请参阅使用 Azure Monitor 创建、查看和管理日志警报

限制允许的复制操作范围(预览版)

如果确信可以安全地将复制请求的源限制在特定范围内,可以将存储帐户的 AllowedCopyScope 属性设置为该范围。

更改允许的复制操作范围的权限(预览版)

若要为存储帐户设置 AllowedCopyScope 属性,用户必须具有创建和管理存储帐户的权限。 提供这些权限的 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 角色、Azure AD 角色和经典订阅管理员角色

配置允许的复制操作范围(预览版)

使用具有必需权限的帐户,借助 PowerShell 或使用 Azure CLI 在 Azure 门户中配置允许的复制操作范围。

若要为 Azure 门户中的现有存储帐户配置允许的复制操作范围,请执行以下步骤:

  1. 导航到 Azure 门户中的存储帐户。

  2. 在“设置”下,选择“配置”。

  3. 将“允许的复制操作范围(预览版)”设置为以下选项之一:

    • 来自任何存储帐户
    • 来自同一 Microsoft Entra 租户中的存储帐户
    • 来自具有同一虚拟网络专用终结点的存储帐户

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

  4. 选择“保存”。

后续步骤