Microsoft AZ-204: Azure 存储与 Blob 存储 — 学习指南
属于 Microsoft Azure Developer Associate AZ-204 — 学习指南. 使用经过验证的答案练习: Microsoft 考试中心, 或参加限时模拟考试: ExamRoll.io.
概述
Azure Storage 为非结构化和结构化数据提供持久、可大规模扩展的云存储。对于应用程序开发,重点在于选择正确的存储帐户类型、配置冗余以满足 RTO/RPO 目标、选择合适的 blob 类型和访问层以优化成本/性能,以及使用 Azure AD 和 SAS 保护访问安全。使用生命周期策略来自动化跨层的数据移动,在适当的时候直接从 Blob 存储提供静态网站服务,并在需要文件语义或基于消息的解耦时应用 Azure Files 和 Queue Storage。
存储帐户类型和冗余基础
通用 v2 (GPv2) 是适用于大多数工作负载的标准帐户类型。它支持 blob、文件、队列和表、所有访问层、生命周期管理以及最新的功能。旧版的 BlobStorage 帐户仅提供 Blob 服务和分层功能,但缺乏 GPv2 所拥有的广泛功能和成本优化;新部署应首选 GPv2。FileStorage 帐户是专用于 Azure Files 的高级、基于 SSD 的帐户,可为企业文件工作负载(例如,配置文件共享、业务线应用)提供一致的低延迟 IOPS 和吞吐量。当您需要 SMB/NFS 共享的高级性能时,请选择 FileStorage;否则,默认选择 GPv2。
冗余选项决定了数据在不同故障域中的持久性和可用性:
- LRS (本地冗余存储) 在单个数据中心内同步存储三个副本。成本最低,但没有区域或地域保护。适用于开发/测试、临时工作负载,或当您拥有更高层的复制时。
- ZRS (区域冗余存储) 在一个区域内的多个可用区之间同步复制,可防止区域性中断,具有高可用性且 RPO 为零。适用于需要在区域内具备弹性的生产环境。
- GRS (异地冗余存储) 在主区域存储三个同步副本(类似 LRS),并异步复制到配对的次要区域(在该区域为 LRS)。典型的 RPO 小于 15 分钟;次要区域默认不可读。当您不需要读取访问权限但需要灾难恢复时选择此项。
- RA-GRS (读取访问异地冗余存储) 通过 -secondary 终结点增加了对次要区域的读取访问权限。当您需要跨地域的灾难容错能力、在主区域发生故障期间处理只读工作负载,或在可接受最终一致性的情况下进行地理邻近读取时使用。
当您同时需要区域故障保护和跨地域灾难恢复时,请考虑在解决方案级别将本地的 ZRS 与额外的异地复制帐户模式配对使用。规划帐户故障转移测试,了解 DNS 终结点切换,并验证应用程序重试策略,以处理异地事件期间的最终一致性和时钟偏差。
Blob 数据模型、分层和生命周期管理
Blob 有三种类型,具有不同的语义。块 blob 针对大型对象(如图像、视频和备份)的流式传输和随机读取进行了优化。上传内容被分块并提交,从而实现了并行上传和高效重试。追加 blob 针对仅追加的工作负载(如遥测和日志捕获)进行了优化;只允许追加操作,这简化了并发性。页 blob 提供 512 字节对齐的页面,用于随机读/写 I/O,并支持 Azure VM 磁盘使用的 Azure 虚拟硬盘 (VHD);它们是 IaaS 磁盘和大型随机 I/O 工作负载唯一支持的 blob 类型。
Blob 访问层控制成本和性能。热层针对频繁访问进行了优化,具有最低的读/写延迟和最高的存储成本。冷层针对至少保留 30 天的不频繁访问数据,存储成本较低,但事务/读取成本和最低保留费用较高。存档层是用于长期保留的成本最低的层;对象处于脱机状态,读取前必须重新解冻到热层或冷层。可以请求标准或高优先级解冻,以成本换取速度。您可以在帐户级别设置默认访问层(热层或冷层),并可按 blob 覆盖;存档层只能按 blob 设置。
生命周期管理策略可自动化数据移动和保留,以控制成本并满足治理要求。在帐户级别,定义规则以:
- 在上次修改 N 天后,将 blob 或 blob 版本/快照转换到冷层或存档层
- 在达到年龄阈值后删除 blob、快照或版本
- 按容器前缀和 blob 索引标记进行筛选,以定位特定数据集(例如,标记 env=prod 和 policy=retention-7y)
将生命周期规则与版本控制和软删除相结合,以防止意外删除,同时仍强制执行保留策略。请记住,存档层有最低保留期和提前删除费用;设计策略时应尽量减少不必要的解冻操作。
为了进行变更跟踪和下游处理,请启用存储帐户更改源,以使用一个有序、不可变的 blob 创建、更新、删除和复制操作日志。这支持合规性以及需要“恰好一次”或“至少一次”语义并带有检查点的异步处理器。
Blob 存储中的静态网站托管功能会公开一个特殊的 $web 容器,通过专用的 Web 终结点提供服务。配置索引和错误文档,并直接发布静态资产。静态网站终结点提供对网站内容的匿名读取访问,独立于 blob 的公共访问设置;通过 blob 终结点的访问可以保持禁用状态。对于自定义域和全局加速,请使用 Azure Front Door 或 Azure CDN 作为终结点的前端。静态网站终结点不支持专用终结点;在需要私有访问的情况下,请使用边缘服务来保护和加速交付。
安全性、身份和受控数据访问
Azure Storage 默认使用 Microsoft 托管的密钥,通过 256 位 AES 对静态数据进行加密。若要实现更严格的控制,可以启用存储在 Azure Key Vault 或 Managed HSM 中的客户管理的密钥 (CMK),以管理密钥轮换和职责分离;请授予存储帐户的托管身份包装/解包密钥的权限。对于受高度管制的工况,可以启用基础结构加密以应用第二个独立的加密层。如果需要端到端的加密控制,请将服务器端加密与客户端加密结合使用。
Azure AD 授权将数据平面与 Blob 和 Queue 服务以及 Files REST API 的 RBAC 集成在一起。向托管身份、用户或组授予最小权限角色,例如 Storage Blob Data Reader 或 Storage Blob Data Contributor。在代码中,使用 DefaultAzureCredential 获取 OAuth 2.0 令牌,避免嵌入密钥。对于 Azure Files 的 SMB 访问,请使用 Active Directory 启用基于身份的身份验证:将存储帐户加入本地 AD DS(对于混合身份,通过 Azure AD Kerberos)或 Azure AD DS,并使用 NTFS ACL 和 RBAC(例如 Storage File Data SMB Share Contributor)进行共享级别的授权。确保使用 SMB 3.x 并启用传输中加密,并考虑使用 Private Endpoints、VPN 或 ExpressRoute 来穿越阻止 445 端口的网络。
共享访问签名 (SAS) 可以在不暴露帐户密钥的情况下,委托有范围限制、有时间限制的访问。服务 SAS 授予对特定服务和资源(例如单个 blob 或容器)的访问权限,并具有精确的权限和开始/到期时间。帐户 SAS 在帐户级别运行,可跨越多个服务(blob、文件、队列、表)和服务 API(如列出或创建)。用户委托 SAS 特定于 Blob 存储,并使用通过 Azure AD 为具有相应 RBAC 的主体获取的用户委托密钥进行签名;它消除了对密钥的依赖,并将访问控制集中在 Azure AD 中。应用约束,包括 IP 范围、允许的协议(仅限 HTTPS)和较短的生命周期。存储访问策略可以集中管理 SAS 约束,并通过更新或删除策略来实现撤销;它们适用于服务 SAS 和帐户 SAS。用户委托 SAS 不使用存储访问策略;通过使用户委托密钥过期或删除 Azure AD 角色分配来撤销。始终优先选择 SAS 而不是帐户密钥,当您的应用程序可以获取 Azure AD 令牌时,优先选择用户委托 SAS。
Azure Files 和 Queue Storage 精要
Azure Files 提供完全托管的 SMB 共享以及适用于 POSIX 场景的 NFS 选项。使用 SMB 共享进行直接迁移(lift-and-shift)和实现应用兼容性。Premium FileStorage 帐户可提供可预测的低延迟性能,而标准共享对于通用文件数据而言经济实惠。通过 SMB 客户端或 REST API/SDK 管理共享和文件。Azure File Sync 通过在 Windows Server 上缓存云共享来启用混合文件服务,从而提供本地性能、将冷数据分层到云、实现多站点同步以及备份/异地灾难恢复,且无需传统的 NAS 更新周期。将基于 Azure AD 的身份与 NTFS ACL 相结合以强制执行最低权限,并使用 Private Endpoints 来控制数据泄露风险。
Azure Queue Storage 可实现解耦、有弹性的应用程序工作流。每条消息最大可达 64 KB(更大的负载应引用 Blob URI)。消息的生存时间 (TTL) 决定了其自动过期时间;可以指定一个从几秒到七天不等的正值,或使用 -1 表示永不过期。当工作进程检索一条消息时,该消息在其可见性超时期间会变为不可见。如果处理失败且消息在超时前未被删除,它将重新出现以供另一个使用者处理。调整可见性超时以使其超过最坏情况下的处理时间,并使用幂等处理程序和指数退避来减少争用。跟踪 dequeue count 以检测毒信;当它超过阈值时,将消息移动到专用的毒信队列进行隔离和分析。Azure Functions 队列触发器使用 -poison queue 自动实现此模式。对于需要更高吞吐量或有排序保证的 FIFO 需求,请考虑使用 Service Bus 队列;否则,Azure Queue Storage 是一个轻量级且经济高效的选择。
实际问题场景
国家地理(National Geographic)必须发布一个高流量的摄影微型网站,该网站具有无服务器图像处理、成本优化的存储以及为本地编辑工具提供混合访问的功能。他们还需要为合作伙伴机构提供安全的、有时间限制的共享链接,并为后台处理提供强大的消息处理能力。
- 创建具有 RA-GRS 的 GPv2 存储帐户
- 原因:GPv2 开启了 Blob、Files 和 Queue 服务,并提供生命周期和分层功能。RA-GRS 提供跨区域灾难容错能力,并在区域性事件期间提供对次要终结点的读取访问,以保证以读取为主的资产的连续性。
- 启用静态网站托管并将站点资产部署到 $web 容器
- 原因:Blob 静态网站无需管理 Web 服务器,可从热层(Hot tier)提供低延迟读取,并可全局扩展。稍后可与 Azure Front Door 配合使用,以实现自定义域、WAF 和边缘缓存。
- 将原始 RAW 图像存储为块 Blob;将一次写入的遥测数据存储为追加 Blob
- 原因:块 Blob 支持大型并行上传和高效交付 Web 优化的派生内容。追加 Blob 简化了来自处理管道的并发日志写入,且不会产生冲突。
- 定义生命周期策略,在 30 天后将原始文件移至冷层(Cool),180 天后移至存档层(Archive);删除超过一年的版本
- 原因:自动化分层根据访问模式降低存储成本,同时保留合规性副本。版本和快照清理可控制数据膨胀,无需手动干预。
- 使用 Azure AD 和用户委托 SAS 保护合作伙伴的数据访问
- 原因:在共享服务中将 Storage Blob Data Reader 角色分配给托管标识,获取用户委托密钥,并生成具有 IP 限制的、仅限 HTTPS 的短期 SAS 令牌。这避免了分发帐户密钥,并将授权与 Azure AD 绑定。
- 通过 Key Vault 和基础结构加密启用客户管理的密钥
- 原因:CMK 满足更严格的合规性和轮换要求,而双重加密为敏感媒体提供了深度防御。
- 集成 Azure Queue Storage 以通过 Azure Functions 队列触发器进行后台图像处理;设置可见性超时以超过最大处理时间,并配置毒信处理
- 原因:队列将上传路径与计算解耦。可见性超时可防止重复工作,并且 Functions 运行时会自动将失败的项目路由到
-poison queue进行调查。
- 通过 Azure Files 发布编辑工具,使用 premium FileStorage 帐户和 Azure File Sync 同步到本地 Windows Server
- 原因:编辑人员通过 AD 获得具有 NTFS ACL 和基于身份验证的低延迟 SMB 访问,而 Azure File Sync 提供本地缓存和云分层。高级层(premium tier)确保了交互式工作负载的一致性能。
- 使用 Azure Front Door 作为静态网站的前端,并启用缓存和自定义 HTTPS
- 原因:边缘 POP 在全球范围内降低延迟,自定义域满足品牌要求,WAF 在不更改存储后端的情况下增强了安全性。
- 启用存储帐户更改源并将其存档到合规性存储中
- 原因:一个不可变的、有序的 Blob 更改日志支持下游分析、审计和重放,以实现可复现的内容管道。
← Azure Functions 与无服务器计算 · 所有领域 · Azure Cosmos DB →
练习这些题目 → · 在 ExamRoll.io 上限时练习 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
通过考试 →