你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Blob 存储是云的Microsoft对象存储解决方案。 Blob 存储经过优化,可存储大量非结构化数据。 非结构化数据是不遵循特定数据模型或定义的数据,如文本或二进制数据。
本文中的指南提供了与 Azure Well-Architected 框架支柱原则相对应的架构建议。 The guidance in this article provides architectural recommendations that are mapped to the principles of the Azure Well-Architected Framework pillars.
Reliability
可靠性支柱的目的是通过 建立足够的复原能力和从故障快速恢复来提供持续的功能。
可靠性设计原则 为各个组件、系统流和整个系统提供高级设计策略。
工作负荷设计清单
根据可靠性设计评审核对清单开始实施您的设计策略。
使用故障模式分析:通过考虑内部依赖关系(例如虚拟网络、Azure Key Vault、Azure 内容分发网络或 Azure Front Door 终结点的可用性)来最大限度地减少故障点。 如果工作负荷访问 Blob 存储所需的凭据从密钥保管库中丢失,或者工作负荷使用基于已移除的内容分发网络的终结点,可能会发生故障。 在这些情况下,工作负荷可能需要使用备用终结点进行连接。 有关故障模式分析的一般信息,请参阅关于执行故障模式分析的建议。
定义可用性和恢复目标:查看 Azure 服务级别协议 (SLA)。 派生存储帐户的服务级别目标 (SLO)。 例如,SLO 可能会受到所选冗余配置的影响。 考虑区域中断的影响、数据丢失的可能性以及中断后恢复访问所需的时间。 另请考虑你标识为故障模式分析一部分的任何内部依赖项的可用性。
配置数据冗余:为了获得最大的持久性,请选择跨可用性区域或全球区域复制数据的配置。 为了实现最大可用性,请选择允许客户端在主要区域中断期间从次要区域读取数据的配置。
这仅适用于异地冗余存储(GRS)和异地区域冗余存储(GZRS)配置。 设计应用程序以处理中断可减少最终用户的停机时间。 Designing applications to handle outages reduces downtime for end users.
探索可帮助你实现恢复目标的功能:使 Blob 可恢复,以便在其损坏、被编辑或误删除时能够恢复。
创建恢复计划:考虑数据保护功能、备份和还原操作或故障转移程序。 为潜在的数据丢失和数据不一致以及故障转移的时间和成本做好准备。 有关详细信息,请参阅有关设计灾难恢复策略的建议。
监视潜在的可用性问题:订阅 Azure 服务运行状况仪表板以监视潜在的可用性问题。 使用 Azure Monitor 和诊断日志中的存储指标调查警报。
Configuration recommendations
Recommendation | Benefit |
---|---|
请为您的账户配置冗余功能。 若要获得最大可用性和持久性,请使用 区域冗余存储(ZRS) 或 GZRS 配置帐户。 |
冗余可保护你的数据免受意外故障的影响。 ZRS 和 GZRS 配置选项可跨不同的可用性区域复制,并使应用程序能够在服务中断期间继续读取数据。 有关详细信息,请参阅持久性和可用性(按中断方案)和持久性和可用性参数。 |
在启动故障转移或故障回复之前,通过检查上次同步时间属性的值来评估数据丢失的可能性。 此建议仅适用于 GRS 和 GZRS 配置。 | 此属性有助于通过启动帐户故障转移来估计可能丢失的数据量。 上次同步时间之前写入的所有数据和元数据在次要区域中可用,但在上次同步时间之后写入的数据和元数据可能会丢失,因为它不会写入次要区域。 |
作为备份和恢复策略的一部分,启用 容器软删除、 blob 软删除、 版本控制以及 时间点还原 选项。 | 软删除功能允许存储帐户恢复已删除的容器和 Blob 数据。 版本控制选项会自动跟踪对 Blob 所做的更改。 使用此选项可将 Blob 还原到以前的状态。 时间点还原选项可防止意外删除或损坏 Blob,并允许你将块 Blob 数据还原到较早的状态。 有关详细信息,请参阅数据保护概述。 |
配置 Azure Blob 的保管库备份作为备份策略的一部分。 | 保管库备份使你能够保护块 Blob 数据免受勒索软件、其他恶意攻击或源数据丢失的影响。 数据将复制并存储在备份保管库(异地数据副本)中,可以保留长达 10 年。 如果源帐户发生任何数据丢失,你可以触发恢复到备用帐户并访问你的数据。 了解有关使用 Azure 备份进行保管库备份的支持情况的更多信息。 |
安全性
安全支柱的目的是为工作负荷提供 保密性、完整性和可用性 保证。
安全设计原则通过对 Blob 存储配置的技术设计应用方法,为实现这些目标提供了高级设计策略。
工作负荷设计清单
根据安全性设计评审清单开始制定你的设计策略。 确定漏洞和控制以提高安全态势。 扩展策略以根据需要包含更多方法。
查看 Azure 存储的安全基线:若要开始,请先 查看存储的安全基线。
使用网络控制来限制入口和出口流量:禁用到存储帐户的所有公共流量。 使用帐户网络控制授予用户和应用程序所需的最低访问权限级别。 有关详细信息,请参阅如何实现存储帐户的网络安全性。
减少攻击面:防止匿名访问、帐户密钥访问或通过非安全(HTTP)连接进行访问可以减少攻击面。 要求客户端使用最新版本的传输层安全性 (TLS) 协议发送和接收数据。
在不使用密码或密钥的情况下授权访问权限:与共享密钥和共享访问签名相比,Microsoft Entra ID 提供更高的安全性和易用性。 仅向安全主体授予执行其任务所需的权限。
保护敏感信息:保护敏感信息,例如帐户密钥和共享访问签名令牌。 虽然通常不建议使用这些形式的授权,但应确保轮换、过期并安全地存储它们。
启用安全传输所需的选项:为所有存储帐户启用此设置可确保针对存储帐户发出的所有请求都必须通过安全连接进行。 通过 HTTP 发出的任何请求都失败。
保护关键对象:应用 不可变策略 来保护关键对象。 策略保护出于法律、符合性或其他业务目的存储的 Blob 不被修改或删除。 配置保留期(设定时间段或直到管理员解除限制)。
当活动出现异常时,会触发安全警报。 警报通过电子邮件通知订阅管理员,其中包含可疑活动的详细信息,以及有关如何调查和修正威胁的建议。 The alerts notify subscription administrators via email with details of suspicious activity and recommendations on how to investigate and remediate threats.
Configuration recommendations
Recommendation | Benefit |
---|---|
禁用对容器和 Blob 的匿名读取访问。 | 允许对存储帐户进行匿名访问时,具有相应权限的用户可以修改容器的匿名访问设置,以允许匿名访问该容器中的数据。 |
在存储帐户上应用 Azure 资源管理器锁。 | 锁定帐户可防止删除帐户并导致数据丢失。 |
禁用存储帐户公共终结点的流量。 仅当 Azure 外部的客户端和服务需要直接访问存储帐户时,才启用公共终结点。 启用 限制对特定虚拟网络的访问的防火墙规则。 Enable firewall rules that limit access to specific virtual networks. | 从零访问开始,然后以增量方式授权客户端和服务所需的最低访问级别,以最大程度地降低为攻击者创建不必要的打开风险。 |
使用 Azure 基于角色的访问控制(RBAC)授予访问权限。 | 使用 RBAC 时,不会泄露任何密码或密钥。 安全主体(用户、组、托管标识或服务主体)通过Microsoft Entra ID 进行身份验证,以返回 OAuth 2.0 令牌。 该令牌用于授权针对 Blob 存储服务的请求。 |
禁止共享密钥授权。 这会不仅禁用帐户密钥访问,而且还禁用服务和帐户共享访问签名令牌,因为它们基于帐户密钥。 | 仅允许通过 Microsoft Entra ID 授权的安全请求。 |
建议不要使用帐户密钥。 如果必须使用帐户密钥,请将 密钥存储在 Key Vault 中,并确保定期重新生成它们。 | Key Vault 允许在运行时检索密钥,而不是使用应用程序保存密钥。 密钥保管库可以轻松轮换密钥,而无需中断应用程序。 定期轮换帐户密钥可降低向恶意攻击公开数据的风险。 |
建议不要使用共享访问签名令牌。 评估是否需要共享访问签名令牌来保护对 Blob 存储资源的访问。 如果必须创建一个,请在创建和分发 共享访问签名最佳做法 之前查看此列表。 | 最佳做法有助于防止共享访问签名令牌泄露,并在发生泄漏时快速恢复。 |
配置存储帐户 ,以便客户端可以使用最低版本的 TLS 1.2 发送和接收数据。 | TLS 1.2 比 TLS 1.0 和 1.1 更安全、更快速,后者不支持新式加密算法和密码套件。 |
请考虑使用自己的加密密钥来保护存储帐户中的数据。 有关详细信息,请参阅用于 Azure 存储加密的客户管理的密钥。 | 客户管理的密钥提供更大的灵活性和控制。 例如,可以将加密密钥存储在 Key Vault 中,并自动轮换它们。 |
Cost Optimization
成本优化侧重于 检测支出模式、优先考虑关键领域的投资,并优化其他领域 以满足组织的预算和业务需求。
成本优化设计原则提供高级设计策略,用于实现这些目标,并在与 Blob 存储及其环境相关的技术设计中做出权衡。
工作负荷设计清单
根据投资的成本优化设计评审核对清单开始实施您的设计策略。 微调设计,使工作负荷与为工作负荷分配的预算保持一致。 设计应使用正确的 Azure 功能,监视投资,并查找随时间推移进行优化的机会。
确定用于计算帐单的计量:计量用于跟踪帐户(数据容量)中存储的数据量,以及用于写入和读取数据的作的数量和类型。 还有与可选功能使用相关的计量,例如 Blob 索引标记、Blob 清单、更改源支持、加密范围和 SSH 文件传输协议 (SFTP) 支持。 要了解更多信息,请参阅 Blob 存储的收费方式。
了解每个计量的价格:请确保使用相应的定价页,并在该页中应用相应的设置。 有关详细信息,请参阅 查找每个计量的单价。 考虑与每个价格相关的操作数量。 例如,与写入和读取相关的价格适用于10,000次操作。 若要确定单个操作的价格,将标价除以10,000。
估算容量和作成本:可以使用 Azure 定价计算器对与数据存储、入口和出口相关的成本建模。 使用字段比较与各种区域、帐户类型、命名空间类型和冗余配置相关的成本。 对于某些方案,可以使用Microsoft文档中提供的示例计算和工作表。 例如,可以 估算存档数据的成本 ,或者 估算使用 AzCopy 命令传输 Blob 的成本。
为容量选择计费模型:评估使用 基于承诺的模型 是否比使用基于消耗的模型更具成本效益。 如果不确定所需的容量量,可以从基于消耗的模型开始,监视容量指标,然后稍后进行评估。
选择帐户类型、冗余级别和默认访问层:创建存储帐户时,必须为每个设置选择一个值。 所有值都会影响事务费用和容量费用。 创建帐户后,除了帐户类型之外的所有设置都可以更改。
选择最经济高效的默认访问层:除非为每个 Blob 上传指定了一个层,否则 Blob 会从默认访问层设置推断其访问层。 对存储帐户的默认访问层设置的更改适用于帐户中尚未显式设置访问层的所有 Blob。 如果已收集大量 Blob,此成本可能会很高。 有关层更改如何影响每个现有 Blob 的详细信息,请参阅 更改 Blob 的访问层。
将数据直接上传到最经济高效的访问层:例如,如果帐户的默认访问层设置为热,但出于存档目的上传文件,请将较冷层指定为存档层或冷层作为上传作的一部分。 上传 Blob 后,使用生命周期管理策略根据使用情况指标(例如上次访问的时间)将 blob 移动到最经济高效的层。 提前选择最佳层可以降低成本。 如果更改已上传的块 Blob 的层级,那么在首次上传时,您需要支付写入到初始层级的费用,然后再支付写入到所需层级的费用。
制定管理数据生命周期的计划:利用访问层和生命周期管理来优化事务和容量成本。 使用频率较低的数据应放在较冷的访问层中,而经常访问的数据应置于更温暖的访问层中。
确定需要哪些功能:某些功能(例如版本控制、Blob 软删除)会产生额外的事务和容量成本以及其他费用。 在选择要添加到帐户的功能时,请务必查看文章中的定价和计费部分,这些部分介绍了这些功能。
例如,如果启用 Blob 清单功能,系统会根据扫描的对象数计费。 如果使用 Blob 索引标记,则按索引标记数计费。 如果启用 SFTP 支持,则即使没有 SFTP 传输,也会按小时计费。 如果决定不使用某个功能,请确认该功能已禁用,因为在创建帐户时某些功能会自动启用。
Create guardrails: Create budgets based on subscriptions and resource groups. 使用治理策略来限制资源类型、配置和位置。 此外,使用 RBAC 阻止可能导致超支的动作。
Monitor costs: Ensure costs stay within budgets, compare costs against forecasts, and see where overspending occurs. You can use the cost analysis pane in the Azure portal to monitor costs. 还可以使用 Excel 或 Power BI 将成本数据导出到存储帐户并分析该数据。
注意容量的意外增加,这可能表明你正在收集大量日志文件、Blob 版本或软删除的 Blob。 制定一个策略,用于将对象过期或转换到更具成本效益的访问层。制定一个计划,用于将对象过期或将对象移动到更实惠的访问层。 Enable blob inventory reports, and use tools such as Azure Databricks or Azure Synapse Analytics and Power BI to analyze cost data. Watch out for unexpected increases in capacity, which might indicate that you're collecting numerous log files, blob versions, or soft-deleted blobs. Develop a strategy for expiring or transitioning objects to more cost-effective access tiers.Have a plan for expiring objects or moving objects to more affordable access tiers.
Configuration recommendations
Recommendation | Benefit |
---|---|
将小文件打包到较大的文件中 ,然后再将其移动到较冷的层。 可以使用 TAR 或 ZIP 等文件格式。 | 较冷的层具有更高的数据传输成本。 通过减少大型文件的数量,可以减少传输数据所需的操作次数。 |
从存档存储重新水化 Blob 时,使用标准优先级重新水化。 仅在紧急数据恢复情况下使用高优先级重新水化。 有关详细信息,请参阅将存档 Blob 解除冻结到联机层 | 从存档层进行高优先级重新水化可能导致账单金额高于正常水平。 |
通过选择适当的日志存储位置和管理日志保留期来降低使用资源日志的成本。 如果只是计划偶尔查询日志(例如,查询日志进行符合性审核),请考虑将资源日志发送到存储帐户,而不是将它们发送到 Azure Monitor 日志工作区。 可以使用无服务器查询解决方案(例如 Azure Synapse Analytics)分析日志。 有关详细信息,请参阅 优化不经常查询的成本。 使用生命周期管理策略删除或存档日志。 | 将资源日志存储在存储帐户中供以后分析可能是一种更便宜的选项。 使用生命周期管理策略管理存储帐户中的日志保留可防止随着时间的推移而生成大量日志文件,这可能会导致不必要的容量费用。 |
如果启用版本控制,请使用生命周期管理策略自动删除旧 Blob 版本。 | 对 Blob 的每次写操作都会创建一个新版本。 这会增加容量成本。 可以通过删除不再需要的版本来控制成本。 |
如果启用版本控制,请将频繁覆盖的 Blob 放入未启用版本控制的帐户中。 | 每次重写 blob 时,都会添加一个新版本,这会导致存储容量费用增加。 为减少容量费用,请将频繁覆盖的数据存储在单独的存储帐户中,并禁用版本控制。 |
如果启用软删除,请将频繁覆盖的 Blob 放入未启用软删除的帐户中。 设置保留期。 考虑从较短的保留期开始,以便更好地了解该功能如何影响你的计费。 建议的最短保持期为七天。 | 每次覆盖 Blob 时,都会创建新的快照。 由于创建这些快照不会出现在日志中,导致容量费用增加的原因可能难以访问。 为减少容量费用,请将频繁覆盖的数据存储在单独的存储帐户中,并禁用软删除。 保留期可防止软删除的 Blob 堆积并增加容量成本。 |
仅当 SFTP 用于传输数据时启用 SFTP 支持。 | 启用 SFTP 终结点需要按小时付费。 通过深思熟虑地禁用 SFTP 支持,然后根据需要启用它,可以避免被动费用在帐户中产生。 |
禁用不需要的任何加密范围以避免不必要的费用。 | 加密范围每月收取费用。 |
Operational Excellence
卓越运营主要侧重于 开发实践、可观测性和发布管理的各个过程。
卓越运营设计原则 提供了一个高级设计策略,用于实现这些运营需求目标。
工作负荷设计清单
根据 针对卓越运营的设计评审清单 启动设计策略,以定义与 Blob 存储配置相关的可观测性、测试和部署过程。
创建维护和紧急恢复计划:考虑数据保护功能、备份和还原操作以及故障转移程序。 为潜在的数据丢失和数据不一致以及故障转移的时间和成本做好准备。
监视存储帐户的运行状况:创建 存储见解 仪表板以监视可用性、性能和复原指标。 设置警报以在客户注意到你的系统中的问题之前找出和解决问题。 使用诊断设置将资源日志路由到 Azure Monitor 日志工作区。 然后,你可以查询日志来更深入地调查警报。
启用 Blob 清单报告:启用 Blob 清单报告以查看存储帐户内容的保留、法定保留或加密状态。 还可以使用 Blob 清单报告来了解数据的总大小、年龄、层分布或其他属性。 Use tools such as Azure Databricks or Azure Synapse Analytics and Power BI to better visualize inventory data and to create reports for stakeholders.
设置删除 blob 或将其移动到经济高效的访问层的策略:创建具有初始条件集的生命周期管理策略。 策略会根据你定义的条件自动删除 Blob 或设置 Blob 的访问层。 使用 Monitor 指标和 Blob 清单报表定期分析容器使用情况,以便优化条件以优化成本效益。
Configuration recommendations
Recommendation | Benefit |
---|---|
使用基础结构即代码 (IaC) 在 Azure 资源管理器模板(ARM 模板)、Bicep 或 Terraform 中定义存储帐户的详细信息。 | You can use your existing DevOps processes to deploy new storage accounts, and use Azure Policy to enforce their configuration. |
使用存储见解来跟踪存储帐户的运行状况和性能。 存储见解提供了所有存储帐户的故障、性能、可用性和容量的统一视图。 | 你可以跟踪每个帐户的运行状况和运行情况。 轻松创建仪表板和报表,利益相关者可以使用它们来跟踪存储帐户的运行状况。 |
Performance Efficiency
性能效率就是通过管理容量来保持用户体验,即使负载增加也不例外。 该策略包括缩放资源、识别和优化潜在瓶颈,以及优化峰值性能。
性能效率设计原则 提供了一个高级设计策略,用于根据预期使用量实现这些容量目标。
工作负荷设计清单
根据性能效率设计审查清单开始策略设计。 定义基于 Blob 存储配置的关键绩效指标的基线。
规划扩展:了解存储帐户的规模目标。
选择最佳存储帐户类型:如果工作负荷需要高事务速率、较小的对象和一致的低事务延迟,请考虑使用高级块 Blob 存储帐户。 在大多数情况下,标准通用 v2 帐户最合适。
减少客户端和服务器之间的旅行距离:将数据放置在最靠近连接客户端的区域(理想情况下在同一区域中)。 使用对象复制或内容分发网络来优化位于远程区域的客户端。 默认网络配置提供最佳性能。 仅修改网络设置以提高安全性。 通常,网络设置不会降低旅行距离,也不会提高性能。
选择有效的命名方案:通过在 blob 分区键(帐户、容器、虚拟目录或 Blob 名称)的开头使用哈希标签前缀,减少列出、查询和读取操作的延迟。 此方案主要受益于具有平面命名空间的帐户。
优化数据客户端的性能:选择最适合工作负荷的数据大小、传输频率和带宽的 数据传输工具 。 通过查看随每个工具发布的性能优化指南,考虑 影响延迟的因素,并微调性能。 Consider the factors that influence latency, and fine-tune performance by reviewing the performance optimization guidance that's published with each tool.
优化自定义代码的性能:请考虑使用存储 SDK,而不是自己为 Blob REST 操作创建包装器。 Azure SDK 针对性能进行优化,并提供微调性能的机制。 在创建应用程序之前,请查看 Blob 存储的性能和可伸缩性清单。 Consider using query acceleration to filter out unwanted data during the storage request and keep clients from needlessly transferring data across the network.
收集性能数据:监视存储帐户,以识别因限流而导致的性能瓶颈。 有关更多信息,请参阅使用监视存储见解监视存储服务。 同时使用指标和日志。 指标提供诸如限制错误等数据。 日志描述活动。 如果看到限制指标,你可以使用日志确定哪些客户端收到限制错误。 有关详细信息,请参阅 审核数据平面操作。
Configuration recommendations
Recommendation | Benefit |
---|---|
在放置依赖资源的同一区域中预配存储帐户。 对于未托管在 Azure 上的应用程序(例如移动设备应用或本地企业服务),请在靠近这些客户端的区域中找到存储帐户。 For more information, see Azure geographies. 如果来自不同区域的客户端不需要相同的数据,请在每个区域中创建一个单独的帐户。 如果来自不同区域的客户端只需要一些数据,请考虑使用对象复制策略将相关对象异步复制到其他区域中的存储帐户。 |
减少存储帐户与 VM、服务和本地客户端之间的物理距离可以提高性能并减少网络延迟。 降低物理距离也会降低 Azure 中托管的应用程序的成本,因为单个区域中的带宽使用量是免费的。 |
若要广泛使用 Web 客户端(流式传输视频、音频或静态网站内容),请考虑通过 Azure Front Door 使用内容分发网络。 | 内容被更快速地交付给客户端,因为它使用了 Microsoft 全球边缘网络,在全球拥有数百个本地和全球的存在点。 |
尽早在 Blob 的分区键中添加哈希字符序列(如三位数字)。 分区键是帐户名称、容器名称、虚拟目录名称和 Blob 名称。 如果打算在名称中使用时间戳,请考虑将秒值添加到该标记的开头。 For more information, see Partitioning. | 使用最接近分区键开头的哈希码或秒数可以减少列出查询和读取 Blob 所需的时间。 |
上传 Blob 或块时,使用大于 256 KiB 的 Blob 或块大小。 | 256 KiB 以上的 Blob 或块大小可利用平台中专门针对较大 Blob 和块大小的性能增强功能。 |
Azure policies
Azure 提供了一组与 Blob 存储及其依赖项相关的大量内置策略。 可以通过 Azure 策略审核上述一些建议。 例如,可以检查以下情况:
- 未启用对容器和 Blob 的匿名公共读取访问。
- Blob 存储的诊断设置设置为将资源日志流式传输到 Azure Monitor 日志工作区。
- 仅接受来自安全连接(HTTPS)的请求。
- 已启用共享访问签名过期策略。
- 已禁用跨租户对象复制。
- 共享密钥授权已被禁用。
- 网络防火墙规则已应用于该帐户。
若要进行全面的治理,请查看 存储的 Azure Policy 内置定义 ,以及可能影响计算层安全性的其他策略。
Azure 顾问建议
Azure Advisor is a personalized cloud consultant that helps you follow best practices to optimize your Azure deployments. 下面是一些建议,可帮助你提高 Blob 存储的可靠性、安全性、成本效益、性能和卓越运营能力。
Next step
有关 Blob 存储的更多信息,请参阅 Blob 存储文档。