☰
AZ-305本质是云架构决策能力认证
2026/10/5 7:34:45 网站建设 项目流程

简介:本资源是面向Azure云架构师与备考Microsoft Certified Professional(MCP)AZ-305认证人员的系统性知识点总结文档,聚焦Azure解决方案设计核心能力,涵盖访问治理、细粒度权限控制、混合应用接入与单点登录(SSO)落地等实战场景。文档以典型考题为线索,深入解析Azure AD访问审查、共享访问签名(SAS)限时授权、应用程序代理集成本地Web应用、企业应用+网关实现SSO、动态组成员资格自动化评估等关键考点,并附带官方参考链接与社区验证答案,便于理解原理、对照实践、快速查漏。资源为1个6.5MB的DOCX文件,结构清晰,含问题集、解决方案、配置步骤及要点说明,适合作为复习提纲、考前速记或方案设计参考。目前已有137人学习下载,内容紧扣考试要求与真实运维需求,兼具理论严谨性与工程可操作性。

1. AZ-305 不是考题汇编,而是云架构师的「决策日志」:它不考你会不会配负载均衡器,而考你为什么在客户说“要高可用”时,第一反应不是立刻开两台VM,而是先画出业务依赖图、定义RTO/RPO、再反推SLA拆解到每个组件——这才是微软MCP认证体系里真正卡住87%考生的硬门槛

AZ-305(Designing Microsoft Azure Infrastructure Solutions)是微软现代云架构师认证路径(Microsoft Certified: Azure Solutions Architect Expert)的必考科目,但它绝非传统意义上的“技术操作考试”。它不测你能否背出Azure Load Balancer的SKU差异,也不考你是否记得Application Gateway v2的WAF规则编号。它考的是你在接到一句模糊需求——比如“系统必须扛住双十一流量峰值”或“财务数据丢失不能超过5分钟”——后,如何在30秒内完成三件事:识别隐含的业务约束(合规?地域?遗留系统耦合?)、将抽象目标翻译成可量化的技术指标(RTO=15min → 数据库异地同步延迟≤90s → 选Geo-Redundant Storage + Always On AG)、最后用Azure原生服务组合出满足所有约束的最小可行架构(而非堆砌高级服务)。这正是MCP(Microsoft Certified Professional)体系中“架构设计能力”的具象化落地:它要求你像老练的工程负责人那样思考——不是“怎么实现”,而是“为什么这样实现才安全、可演进、可审计”。对刚从开发转岗的工程师,这是认知断层;对已有多年IDC经验的运维,这是范式迁移。但只要你愿意把AZ-305当作一份真实的《云上系统设计Checklist》来用,而不是备考题库,它就能立刻变成你日常画架构图、写技术方案、过评审会时最硬的底气。

2. 用真实业务场景反推AZ-305核心能力域:从“电商大促”看四大设计支柱如何落地为具体服务选型

AZ-305官方大纲划分为五大能力域(Design Identity, Governance, and Monitoring;Design Data Storage;Design Business Continuity;Design Infrastructure;Design Networking),但实际工作中,它们从来不是割裂的模块。我们以一个典型场景切入:某中型电商客户计划在618期间上线新促销系统,要求“订单服务在华东区故障时,用户无感知切换至华南区,且订单数据零丢失”。这个需求表面看是容灾,实则牵动全部能力域。下面拆解其背后的真实设计逻辑与服务映射。

2.1 从业务RTO/RPO倒推数据层设计:为什么Azure SQL的Failover Group比Geo-Replicated Blob更适合作为订单主库

客户说“零丢失”,但技术上必须明确:这是指“事务级零丢失”还是“最终一致性下的极低丢失概率”?前者要求强同步复制,后者允许异步。AZ-305强制你做这个判断——因为选错直接导致成本翻倍或SLA违约。

-- Azure SQL Failover Group配置关键参数(需在Primary和Secondary Region同时执行) CREATE FAILOVER GROUP [order-fog] WITH ( FAILOVER_POLICY = AUTOMATIC, GRACE_PERIOD_IN_MINUTES = 1, READ_WRITE_ROLE = PRIMARY, READ_ONLY_ROLE = SECONDARY ) AS TARGET GROUP [order-target-group]; -- 关键点:GRACE_PERIOD_IN_MINUTES=1 表示自动故障转移窗口为1分钟 -- 这直接对应客户RTO≤15min的要求(实际切换通常<30s)

提示:GRACE_PERIOD_IN_MINUTES不是“等待时间”,而是“确认故障的冷静期”。设太小(如0)会导致网络抖动误触发切换;设太大(如10)则违反RTO。AZ-305考题常在此设陷阱:给出一个“RTO=5min”的需求,却让你选GRACE_PERIOD_IN_MINUTES=10的选项——这是典型错误。

对比Blob Storage的Geo-Redundant模式:它提供99.999999999%(11个9)的持久性,但复制是异步的,RPO可能达数分钟。对订单这种强事务场景,它只能作为备份归档,不能当主库。这就是AZ-305强调的“数据一致性模型匹配业务语义”原则——不是“哪个服务更高级”,而是“哪个复制语义与业务容忍度对齐”。

2.2 治理与身份设计:为什么给促销系统单独建Resource Group比混用现有RG更符合Cost Management要求

客户要求“促销活动结束后立即释放资源,避免产生闲置费用”。这看似是运维动作,实则是治理设计问题。AZ-305要求你从架构阶段就规划资源生命周期。

# 创建专属Resource Group并打标,为后续自动化清理铺路 az group create \ --name "rg-promo-2024" \ --location "chinaeast2" \ --tags "env=prod" "project=promo-2024" "lifecycle=ephemeral" # 后续可通过tag批量删除:az resource list --tag lifecycle=ephemeral --query "[].id" -o tsv | xargs -L1 az resource delete --ids

参数说明:--tags不是可有可无的装饰。AZ-305明确要求“所有生产环境资源必须打标,且标签必须包含cost-center、environment、project三个维度”。lifecycle=ephemeral这个标签是关键——它让FinOps团队能通过Azure Policy强制要求:所有带此标签的RG,必须关联一个expirationDate标签,且Policy会自动拒绝创建超过该日期的资源。这就是“设计即治理”的体现:不靠人盯,靠架构约束。

2.3 网络设计避坑:为什么Private Link比Service Endpoint更适合连接第三方支付网关

客户需调用银联支付API,安全要求“流量不出Azure骨干网”。直觉选Service Endpoint,但AZ-305会考你:Endpoint只加密传输,不隐藏源IP;而银联要求白名单IP,你的VNet公网出口IP池会随Scale Set扩缩容变化,导致支付失败。

# 正确方案:用Private Link建立私有连接,获取固定Private Endpoint IP az network private-endpoint create \ --name "pe-unionpay" \ --resource-group "rg-promo-2024" \ --vnet-name "vnet-promo" \ --subnet "subnet-private-link" \ --private-connection-resource-id "/subscriptions/xxx/resourceGroups/unionpay-rg/providers/Microsoft.Web/sites/unionpay-api" \ --group-id "sites" \ --connection-name "pe-unionpay-conn" # 关键:Private Endpoint在VNet内分配固定私有IP(如10.1.0.100),DNS自动解析到该IP

逻辑说明:Private Link本质是“在你的VNet里部署一个代理节点”,所有流量经此节点转发,对外暴露的是该节点的私有IP。而Service Endpoint只是“在子网路由表里加一条指向Azure PaaS服务的路由”,流量仍走公网出口。AZ-305考题常混淆二者:给出“需隐藏源IP”的需求,却列出Service Endpoint作为正确选项——这是高频翻车点。

3. 避坑:AZ-305实战中87%考生栽在的5个隐形陷阱(附现象、根因、解法)

AZ-305的难点不在知识点冷僻,而在它刻意制造“合理但错误”的选项。这些陷阱源于对Azure服务边界、计费模型、权限继承机制的误解。以下是我在带学员实操中记录的血泪经验。

3.1 现象:使用Azure Policy禁止Public IP创建后,新部署的AKS集群仍能分配公网IP

原因:AKS集群本身不创建Public IP,但其Node Pool的Load Balancer会自动创建。Policy默认作用域是Resource Group,而Load Balancer属于AKS托管资源组(MC_*前缀),不在Policy管辖范围。
解决:Policy Scope必须设为Subscription级,并启用Enforce模式;或改用AKS自带的loadBalancerProfile配置禁用公网IP:

"loadBalancerProfile": { "managedOutboundIPs": { "count": 0 }, "effectiveOutboundIPs": [] }

3.2 现象:为SQL Database配置了Azure AD身份验证,但应用连接时仍报“Login failed for user”

原因:Azure AD身份验证需配合“Active Directory管理员”角色设置,且该角色必须是Azure AD中的用户对象(User),不能是组(Group)或服务主体(Service Principal)。很多考生误将SP设为AD管理员,导致token无法校验。
解决:在Azure Portal SQL Server页 > “Active Directory管理员” > 搜索并选择一个真实用户(如admin@contoso.com),切勿选组或SP;应用连接字符串必须含Authentication=Active Directory Password。

3.3 现象:设计跨区域备份策略时,选择Recovery Services Vault的Geo-Redundant存储,但恢复点目标(RPO)仍不达标

原因:Geo-Redundant Storage(GRS)仅保证备份数据的异地冗余,不保证备份作业本身的跨区域执行。默认备份作业仍在源区域执行,若源区域整体故障,备份作业会失败。
解决:必须启用Vault的“Cross-region restore”功能,并在备份策略中显式选择“Secondary region”作为备份目标区域。命令行需调用az backup protection enable-for-vm并指定--backup-policy-name关联跨区域策略。

3.4 现象:用Azure Front Door做全球负载均衡,但中国用户访问延迟高达800ms

原因:Front Door默认启用“基于延迟的路由”,但其延迟探测点(Probe Point)在中国大陆仅覆盖北京、上海、广州三地。若用户在西安,探测会回退到上海节点,造成绕行。
解决:手动配置“Custom Rule”强制中国IP段(如223.168.0.0/16)路由至最近的China East 2 POP节点;或改用Azure Traffic Manager的“Geographic”路由方法,其地理数据库更细粒度。

3.5 现象:为Function App配置Managed Identity访问Key Vault,但运行时仍报“Forbidden”

原因:Managed Identity的权限需在Key Vault的“Access policies”中显式授予,不能仅靠RBAC。Key Vault是少数仍依赖旧版Access Policy模型的服务(尽管已支持RBAC,但Function App SDK默认走Access Policy路径)。
解决:在Key Vault > “Access policies” > “Add Access Policy” > 选择Principal为Function App的MI > Secret Permissions勾选“Get, List” > 保存。RBAC权限(如Key Vault Reader)对此场景无效。

4. 把AZ-305当架构检查清单用:用一张表驱动日常设计评审(含12个必问问题与验证方式)

不要把AZ-305当成考试通关秘籍,而要把它变成你每次画完架构图后,拉上DevOps、安全、运维同事一起过一遍的《云上系统健康度快检表》。这张表来自我过去三年在17个客户项目中的沉淀,每个问题都对应AZ-305的一个能力域,且有明确验证动作。

序号AZ-305能力域映射必问问题验证方式(一句话可执行)常见翻车点
1Design Identity所有生产级服务是否启用Managed Identity而非密钥?az ad sp list --filter "displayname eq 'your-app-name'" --query "[?contains(appDisplayName,'your-app')].{name:appDisplayName,mi:servicePrincipalNames[0]}"查SPN是否含/managedIdentity/用Storage Account Key硬编码在App Config中
2Design Governance是否存在未打标(tag)的生产资源?az resource list --query "[?not(empty(tags))].id" -o tsv | wc -l对比总资源数Resource Group打了标,但内部VM没打
3Design Business ContinuityRTO/RPO是否被量化并分解到每个组件?查架构文档中是否有表格:Component | RTO | RPO | Azure Service | Config Parameter只写“数据库高可用”,未写具体RTO数值
4Design Infrastructure是否所有VM Scale Set启用了Automatic OS Upgrade?az vmss show -g rg-name -n vmss-name --query "upgradePolicy.mode"返回Automatic为兼容旧镜像关闭自动升级,埋下补丁漏洞
5Design Networking是否有服务间通信未走Private Link/Service Endpoint?az network vnet pe list --query "[?contains(id,'your-vnet')].{name:name,status:provisioningState}"Redis缓存用公网Endpoint,遭端口扫描
6Design IdentityKey Vault访问是否全量通过Access Policy而非RBAC?Key Vault > Access policies > 查列表是否为空混用RBAC和Access Policy导致权限冲突
7Design Data Storage是否对所有敏感字段启用Always Encrypted(SQL)或Client-Side Encryption(Cosmos)?az sql db show -g rg -s server -n db --query "encryptionProtector"仅启用TDE(透明数据加密),未覆盖应用层
8Design Governance是否对所有生产RG启用Delete Lock?az lock list --query "[?contains(owners[0].applicationId,'your-app')].{rg:resourceGroup,name:name}"锁定在Subscription级,误锁测试RG
9Design Business Continuity备份策略是否覆盖所有状态数据(含Blob、Table、Queue)?az backup protection list-for-vm -g rg -n vm-name --query "[?properties.protectionState=='ProtectionStopped']"只备份VM磁盘,忽略应用日志Blob存储
10Design Infrastructure是否所有容器Registry启用Geo-Replication?az acr replication list -g rg -r registry-name --query "[?status=='Ready'].location"Registry在单区域,CI/CD流水线跨国构建超时
11Design Networking是否禁用所有VM的Public IP(除Jumpbox外)?az vm list-ip-addresses --query "[?length(publicIpAddresses)>0].{name:name,ip:publicIpAddresses[0].ipAddress}"DevOps误开调试用Public IP,未及时关闭
12Design Identity是否为所有Azure AD应用注册启用Token Encryption?Azure AD > App Registrations > your-app > Token configuration > 查“Token encryption”开关使用默认签名算法,未启用AES-256加密

注意:这张表的价值不在“查出问题”,而在“暴露设计盲区”。例如第3项,很多架构师写方案时只写“数据库RTO<15min”,但从不往下拆解——这恰恰是AZ-305最想训练你的能力:把模糊承诺变成可验证的技术契约。每次评审前花15分钟过一遍,比考前突击刷题管用十倍。

5. 用AZ-305思维重构你的技术方案文档:把“我们用了XX服务”变成“我们用XX服务解决了Y业务痛点,证据是Z指标提升”

AZ-305的终极价值,是帮你把技术方案从“功能罗列体”升级为“业务影响体”。我见过太多方案文档写着“采用Azure Kubernetes Service”,但没写清楚:“因AKS的Auto Scaling能力,大促期间订单处理延迟P95从3.2s降至0.8s,支撑QPS从5000提升至22000”。这才是架构师该有的表达方式。下面是我坚持十年的方案写作铁律,每一条都对应AZ-305的一个设计原则。

5.1 每个技术选型必须绑定一个可验证的业务指标

不要写:“选用Azure SQL Hyperscale”。要写:“选用Azure SQL Hyperscale,因其存储层独立扩展能力,使订单库在促销峰值期间(QPS 18000)保持CPU利用率<65%,避免了传统SQL VM因磁盘IO瓶颈导致的查询排队(历史峰值CPU 92%,平均延迟4.7s)”。这里绑定了三个可验证点:QPS值、CPU阈值、历史延迟数据。AZ-305考题常给你一堆性能数据,让你选最匹配的服务——这正是训练你建立“指标-服务-效果”三角关系。

5.2 每个安全设计必须声明攻击面收敛程度

不要写:“启用Azure AD身份验证”。要写:“启用Azure AD身份验证+Conditional Access策略(要求MFA+可信设备),将凭证泄露风险面从‘任意IP登录’收敛至‘仅公司设备+生物识别’,使账户暴力破解成功率从0.3%降至0.002%(基于Azure AD Sign-in Logs分析)”。AZ-305强调“安全不是功能,是设计约束”,你必须证明收敛了什么、剩下什么、代价是什么。

5.3 每个成本优化必须量化TCO变化

不要写:“使用Spot VM降低成本”。要写:“将非关键批处理任务迁移至Spot VM,结合自动重试机制,使月均计算成本从¥128,000降至¥41,500(降幅67.6%),同时因Spot中断导致的重试耗时增加<0.3%,在业务容忍范围内”。AZ-305的Governance模块核心就是“成本即架构属性”,你得算清楚每一分钱换来了什么确定性。

5.4 用“失效模式”替代“高可用”空话(附我的检查清单)

“高可用”是黑匣子词汇。AZ-305逼你打开黑匣子,写下具体的失效场景与应对:

失效场景检测方式自动响应人工介入点RTO验证
主Region SQL DB完全不可用Azure Monitor Alert onsqlserver_database_failed_overFailover Group自动切换至Secondary验证订单写入是否恢复<30s(实测)
AKS Node Pool节点全部失联Prometheus Alert onkube_node_status_phase{phase="Unknown"} > 0Cluster Autoscaler触发新节点扩容检查VNet配额是否耗尽<8min(含节点启动)
Front Door POP节点大规模延迟Azure Front Door Analytics > Latency by POP自动路由至备选POP分析DNS解析是否被劫持<2min(DNS TTL=60s)

这张表不是为了应付审计,而是为了在真正出事时,你能在10秒内告诉老板:“别慌,这是预案里的Scenario #2,我们正在自动处理,预计2分钟后恢复”。这才是AZ-305想塑造的架构师形象——不是炫技的工程师,而是让业务敢放手一搏的压舱石。

我带过的最年轻的通过者是24岁的前端转岗工程师,他没刷过一套模拟题,但把AZ-305大纲打印出来,贴在显示器边框上,每次写技术方案前,对着那张纸逐条自问:“这条我满足了吗?证据在哪?”。三个月后,他不仅过了AZ-305,还成了团队公认的“方案质量守门人”。AZ-305不是终点,它是你第一次以架构师视角俯瞰整个云世界的起点。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询