修正对 blob 数据的匿名读取访问(Azure 资源管理器部署)

您所在的位置:网站首页 修正的图标 修正对 blob 数据的匿名读取访问(Azure 资源管理器部署)

修正对 blob 数据的匿名读取访问(Azure 资源管理器部署)

2024-06-21 13:27| 来源: 网络整理| 查看: 265

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

修正对 blob 数据的匿名读取访问(Azure 资源管理器部署) 项目05/14/2024

Azure Blob 存储支持对容器和 blob 进行可选的匿名读取访问。 但是,匿名访问可能会带来安全风险。 建议禁用匿名访问,以获得最佳安全性。 禁止匿名访问有助于防止意外匿名访问导致的数据泄露。

默认情况下,始终会禁止对 blob 数据的匿名访问。 Azure 资源管理器存储帐户的默认配置禁止用户配置对存储帐户中的容器和 blob 的匿名访问。 此默认配置不允许所有对 Azure 资源管理器存储帐户的匿名访问,无视单个容器的访问设置。

不允许对存储帐户进行匿名访问时,Azure 存储会拒绝针对 blob 数据的所有匿名读取请求。 用户以后无法为该帐户中的容器配置匿名访问。 已配置匿名访问的所有容器将不再接受匿名请求。

警告

为容器配置了匿名访问时,任何客户端都可以读取该容器中的数据。 匿名访问会带来潜在的安全风险,因此,如果你的方案不需要匿名访问,建议禁止对存储帐户进行匿名访问。

Azure 资源管理器与经典存储帐户的修正

本文介绍如何使用 DRAG(检测-修正-审核-治理)框架持续管理使用 Azure 资源管理器部署模型的存储帐户的匿名访问。 所有常规用途 v2 存储帐户、高级块 Blob 存储帐户、高级文件共享帐户和 Blob 存储帐户都使用 Azure 资源管理器部署模型。 某些较旧的常规用途 v1 帐户和高级页 Blob 帐户可能使用经典部署模型。

如果存储帐户使用经典部署模型,建议尽快迁移到 Azure 资源管理器部署模型。 使用经典部署模型的 Azure 存储帐户将于 2024 年 8 月 31 日停用。 有关详细信息,请参阅 Azure 经典存储帐户将于 2024 年 8 月 31 日停用。

如果目前无法迁移经典存储帐户,则应立即修正对这些帐户的匿名访问。 若要了解如何修正经典存储帐户的匿名访问,请参阅修正对 blob 数据的匿名读取访问(经典部署)。 有关 Azure 部署模型的详细信息,请参阅资源管理器和经典部署。

关于匿名读取访问

默认情况下,系统始终禁止对数据进行匿名访问。 有两个单独的设置会影响匿名访问:

存储帐户的匿名访问设置。 Azure 资源管理器存储帐户提供允许或禁止对帐户进行匿名访问的设置。 Microsoft 建议禁止对存储帐户进行匿名访问,确保安全性最高。

当在帐户级别允许匿名访问时,无法对 blob 数据进行匿名读取访问,除非用户采取额外步骤显式配置了容器的匿名访问设置。

配置容器的匿名访问设置。 默认情况下,容器的匿名访问设置被禁用,这意味着对容器或其数据的每个请求都需要授权。 仅当允许了对存储帐户进行匿名访问时,具有适当权限的用户才能修改容器的匿名访问设置以启用匿名访问。

下表总结了这两个设置如何共同影响对容器的匿名访问。

容器的匿名访问级别设置为“专用”(默认设置) 容器的匿名访问级别设置为“容器” 容器的匿名访问级别设置为“Blob” 禁止对存储帐户进行匿名访问 无法对存储帐户中的任何容器进行匿名访问。 无法对存储帐户中的任何容器进行匿名访问。 存储帐户设置替代容器设置。 无法对存储帐户中的任何容器进行匿名访问。 存储帐户设置替代容器设置。 允许对存储帐户进行匿名访问 无法对此容器进行匿名访问(默认配置)。 可以对此容器及其 blob 进行匿名访问。 可以对此容器中的 blob 进行匿名访问,但无法对容器本身进行匿名访问。

如果允许对存储帐户进行匿名访问并为特定容器配置了匿名访问,则服务会接受在不带 Authorization 标头的情况下传递的读取该容器中的 blob 的请求,该 blob 的数据会在响应中返回。

检测来自客户端应用程序的匿名请求

如果你禁止对存储帐户的匿名读取访问,系统可能会拒绝对当前配置了匿名访问的容器和 blob 的请求。 禁止对存储帐户的匿名访问这一设置将替代该存储帐户中各个容器的访问设置。 禁止对存储帐户的匿名访问后,将来对该帐户的任何匿名请求都会失败。

为了了解禁止匿名访问对客户端应用程序造成的影响,建议你为该帐户启用日志记录和指标,并分析一段时间间隔内的匿名请求的模式。 使用指标来确定对存储帐户的匿名请求数,并使用日志来确定匿名访问了哪些容器。

使用指标资源管理器监视匿名请求

若要跟踪对存储帐户的匿名请求,请在 Azure 门户中使用 Azure 指标资源管理器。 若要详细了解指标资源管理器,请参阅使用 Azure Monitor 指标资源管理器分析指标。

按照以下步骤创建跟踪匿名请求的指标:

导航到 Azure 门户中的存储帐户。 在“监视”部分下,选择“指标” 。

选择添加指标。 在“指标”对话框中,指定以下值:

将“作用域”字段设置为存储帐户的名称。 将“指标命名空间”设置为“Blob”。 此指标仅报告对 Blob 存储的请求。 将“指标”字段设置为“事务”。 将“聚合”字段设置为“求和”。

新指标显示给定时间间隔内针对 Blob 存储的事务数之和。 生成的指标如下图所示:

接下来,选择“添加筛选器”按钮,为匿名请求创建基于指标的筛选器。

在“筛选器”对话框中,指定以下值:

将属性值设置为“身份验证”。 将“运算符”字段设置为等号 (=)。 通过从下拉列表中选择或输入将“值”字段设置为“匿名”。

在右上角,选择要查看指标的时间间隔。 还可以通过指定从 1 分钟到 1 个月的时间间隔,来指示请求聚合粒度。

配置指标后,匿名请求将开始显示在图形上。 下图显示了在过去 30 分钟内聚合的匿名请求。

你还可以配置警报规则,让系统在针对你的存储帐户发出的匿名请求达到一定数量时通知你。 有关详细信息,请参阅使用 Azure Monitor 创建、查看和管理指标警报。

分析日志以识别接收匿名请求的容器

Azure 存储日志会捕获有关针对存储帐户发出的请求的详细信息,包括请求的授权方式。 可以分析这些日志,以确定接收匿名请求的容器。

若要记录针对 Azure 存储帐户发出的请求以评估匿名请求,可以使用 Azure Monitor 中的 Azure 存储日志记录。 有关详细信息,请参阅监视 Azure 存储。

Azure Monitor 中的 Azure 存储日志记录支持使用日志查询来分析日志数据。 若要查询日志,可以使用 Azure Log Analytics 工作区。 若要详细了解日志查询,请参阅教程:Log Analytics 查询入门。

在 Azure 门户中创建诊断设置

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

在包含你的 Azure 存储帐户的订阅中创建一个新 Log Analytics 工作区。 配置存储帐户的日志记录后,日志将在 Log Analytics 工作区中提供。 有关详细信息,请参阅在 Azure 门户中创建 Log Analytics 工作区。

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

在“监视”部分中,选择“诊断设置”。

选择“Blob”以记录针对 Blob 存储发出的请求。

选择“添加诊断设置”。

为该诊断设置提供一个名称。

在“类别详细信息”下的“日志”部分,选择要记录的请求类型。 所有匿名请求都是读取请求,因此请选择“StorageRead”以捕获匿名请求。

在“目标详细信息”下选择“发送到 Log Analytics” 。 选择你的订阅以及前面创建的 Log Analytics 工作区,如下图所示。

创建诊断设置后,今后会根据该设置记录对存储帐户发出的请求。 有关详细信息,请参阅创建诊断设置以收集 Azure 中的资源日志和指标。

有关 Azure Monitor 的 Azure 存储日志中可用字段的参考,请参阅资源日志。

查询匿名请求的日志

Azure Monitor 中的 Azure 存储日志包括用于对存储帐户发出请求的授权类型。 在日志查询中,根据 AuthenticationType 属性筛选以查看匿名请求。

若要检索过去 7 天针对 Blob 存储发出的匿名请求的日志,请打开你的 Log Analytics 工作区。 接下来,将以下查询粘贴到新的日志查询中并运行该查询:

StorageBlobLogs | where TimeGenerated > ago(7d) and AuthenticationType == "Anonymous" | project TimeGenerated, AccountName, AuthenticationType, Uri

还可以基于此查询配置警报规则,以接收有关匿名请求的通知。 有关详细信息,请参阅使用 Azure Monitor 创建、查看和管理日志警报。

对匿名请求的响应

当 Blob 存储收到匿名请求时,如果满足以下所有条件,该请求将成功:

允许对存储帐户进行匿名访问。 目标容器配置为允许匿名访问。 请求用于读取访问。

如果其中任一条件不满足,请求将失败。 失败时的响应代码取决于是否使用支持持有者质询的服务版本发出匿名请求。 服务版本 2019-12-12 及更新版本支持持有者质询:

如果使用支持持有者质询的服务版本发出匿名请求,服务会返回错误代码 401(未授权)。 如果使用不支持持有者质询的服务版本发出匿名请求,并且不允许对存储帐户进行匿名访问,服务会返回错误代码 409(冲突)。 如果使用不支持持有者质询的服务版本发出匿名请求,并且允许对存储帐户进行匿名访问,服务会返回错误代码 404(未找到)。

有关持有者质询的详细信息,请参阅持有者质询。

修正存储帐户的匿名访问

评估对存储帐户中容器和 blob 的匿名请求后,可以通过将帐户的 AllowBlobPublicAccess 属性设置为 False 来采取措施修正整个帐户的匿名访问。

存储帐户的匿名访问设置会替代该帐户中容器的单个设置。 如果禁止对存储帐户的匿名访问,则任何配置为允许匿名访问的容器将不再可匿名访问。 如果已禁止对帐户进行匿名访问,则不需要再禁用对单个容器的匿名访问。

如果你的方案要求某些容器可供匿名访问,则应将这些容器及其 blob 移到为匿名访问保留的单独存储帐户中。 然后,你可以禁止对任何其他存储帐户的匿名访问。

修正匿名访问需要 Azure 存储资源提供程序的 2019-04-01 或更高版本。 有关详细信息,请参阅 Azure 存储资源提供程序 REST API。

禁止匿名访问的权限

若要为存储帐户设置 AllowBlobPublicAccess 属性,用户必须有权创建和管理存储帐户。 提供这些权限的 Azure 基于角色的访问控制 (Azure RBAC) 角色包含 Microsoft.Storage/storageAccounts/write 操作。 具有此操作的内置角色包括:

Azure 资源管理器所有者角色 Azure 资源管理器参与者角色 存储帐户参与者角色

角色分配的范围必须设定为存储帐户级别或更高级别,以禁止对存储帐户进行匿名访问。 有关角色范围的详细信息,请参阅了解 Azure RBAC 的范围。

注意,请仅向需要创建存储帐户或更新其属性的权限的那些管理用户分配这些角色。 使用最小特权原则确保用户拥有完成任务所需的最少权限。 有关使用 Azure RBAC 管理访问权限的详细信息,请参阅 Azure RBAC 最佳做法。

这些角色未提供通过 Microsoft Entra ID 访问存储帐户中数据的访问权限。 但是,它们包含 Microsoft.Storage/storageAccounts/listkeys/action,可以授予对帐户访问密钥的访问权限。 借助此权限,用户可以使用帐户访问密钥访问存储帐户中的所有数据。

Microsoft.Storage/storageAccounts/listkeys/action 本身通过帐户密钥授予数据访问权限,但不授予用户更改存储帐户的 AllowBlobPublicAccess 属性的能力。 对于需要访问你的存储帐户中的数据但不能更改该存储帐户配置的用户,请考虑分配存储 Blob 数据参与者、存储 Blob 数据读取者或读取者和数据访问等角色。

注意

经典订阅管理员角色“服务管理员”和“共同管理员”具有 Azure 资源管理器所有者角色的等效权限。 “所有者”角色包含所有操作,因此具有这些管理角色之一的用户也可以创建存储帐户和管理帐户配置。 有关详细信息,请参阅 Azure 角色、Azure AD 角色和经典订阅管理员角色。

将存储帐户的 AllowBlobPublicAccess 属性设置为 False

若要禁止对存储帐户的匿名访问,请将帐户的 AllowBlobPublicAccess 属性设为 False。

重要

禁止对存储帐户的匿名访问这一设置会替代该存储帐户中所有容器的访问设置。 禁止对存储帐户的匿名访问后,将来对该帐户的任何匿名请求都会失败。 在更改此设置之前,请务必按照检测来自客户端应用程序的匿名请求中所述的步骤,了解可能对匿名访问存储帐户中数据的客户端应用程序的影响。

Azure 门户 PowerShell Azure CLI 模板

若要在 Azure 门户中禁止对存储帐户的匿名访问,请执行以下步骤:

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

在“设置”下找到“配置”设置。

将“允许 Blob 匿名访问”设置为“禁用”。

若要通过 PowerShell 禁止对存储帐户的匿名访问,请安装 Azure PowerShell 版本 4.4.0 或更高版本。 接下来,为新的或现有的存储帐户配置 AllowBlobPublicAccess 属性。

以下示例创建一个存储帐户并将 AllowBlobPublicAccess 属性显式设置为 false。 请记得将括号中的占位符值替换为你自己的值:

$rgName = "" $accountName = "" $location = "" # Create a storage account with AllowBlobPublicAccess set to false. New-AzStorageAccount -ResourceGroupName $rgName ` -Name $accountName ` -Location $location ` -SkuName Standard_GRS ` -AllowBlobPublicAccess $false # Read the AllowBlobPublicAccess property for the newly created storage account. (Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName).AllowBlobPublicAccess

若要通过 Azure CLI 禁止对存储帐户的匿名访问,请安装 Azure CLI 2.9.0 或更高版本。 有关详细信息,请参阅安装 Azure CLI。 接下来,为新的或现有的存储帐户配置 allowBlobPublicAccess 属性。

以下示例创建一个存储帐户并将 allowBlobPublicAccess 属性显式设置为 false。 请记得将括号中的占位符值替换为你自己的值:

az storage account create \ --name \ --resource-group \ --kind StorageV2 \ --location \ --allow-blob-public-access false az storage account show \ --name \ --resource-group \ --query allowBlobPublicAccess \ --output tsv

若要通过模板禁止对存储帐户的匿名访问,请创建一个 AllowBlobPublicAccess 属性设置为 false 的模板。 以下步骤说明了如何在 Azure 门户中创建模板。

在 Azure 门户中,选择“创建资源”。

在“搜索市场”中键入“模板部署”,然后按 ENTER。

依次选择“模板部署(使用自定义模板进行部署)”、“创建”、“在编辑器中生成自己的模板”。

在模板编辑器中,粘贴以下 JSON 以创建新帐户,并将 AllowBlobPublicAccess 属性设置为 false。 请记得将尖括号中的占位符替换为你自己的值。

{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "variables": { "storageAccountName": "[concat(uniqueString(subscription().subscriptionId), 'template')]" }, "resources": [ { "name": "[variables('storageAccountName')]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-06-01", "location": "", "properties": { "allowBlobPublicAccess": false }, "dependsOn": [], "sku": { "name": "Standard_GRS" }, "kind": "StorageV2", "tags": {} } ] }

保存模板。

指定资源组参数,然后选择“查看 + 创建”按钮以部署模板,并创建配置了 allowBlobPublicAccess 属性的存储帐户。

注意

禁止对存储帐户的匿名访问不会影响该存储帐户中承载的任何静态网站。 $web 容器始终可供公共访问。

更新存储帐户的匿名访问设置后,可能需要长达 30 秒的时间才能完全传播所做的更改。

批量修正的示例脚本

以下示例 PowerShell 脚本针对订阅中的所有 Azure 资源管理器存储帐户运行,并将这些帐户的 AllowBlobPublicAccess 设置设为 False。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3