Azure 风控解除 微软云 Azure 账号健康检查配置
给你的 Azure 账号来次年度体检:别等蓝屏才想起血压仪
你家路由器密码还是 admin/admin?你家云账号的管理员邮箱,还绑着三年前离职同事的 Outlook?你那台标着「临时测试用」的 D4s_v3 虚拟机,已经连续 87 天没重启过,但月账单照常扣款——它不是在睡觉,是在梦游式烧钱。
Azure 不是魔法盒,它是你数字资产的总控台,也是所有隐患的放大器。账号健康 ≠ 网络畅通,而是一套包含权限、安全、成本、合规四维的「云上体检报告」。今天不翻台账,不背文档,我们直接打开 Azure Portal,像修车师傅抄起扳手那样,逐项拧紧螺丝。
第一关:权限体检——谁在偷偷当管理员?
Azure RBAC(基于角色的访问控制)不是选修课,是保命课。我们先查「特权账户泛滥症」:
- 全局管理员(GA)必须≤3人:超过这个数?立刻开个会,把其中两位降级为「用户管理员」或「云应用管理员」——GA 能删整个租户,不是用来批量审批请假单的。
- Owner 角色别乱撒:检查每个资源组下的 Owner 列表。发现某开发小哥对生产数据库服务器有 Owner 权限?立刻改用「SQL DB Contributor」+「Reader」组合授权。记住:最小权限不是抠门,是防误删。
- 临时权限要设闹钟:Azure AD 的 PIM(特权身份管理)不是摆设。所有临时提升的权限,必须设定时长(建议≤8小时),并强制开启审批流。没有审批记录?等同于没授权。
实操命令(PowerShell):Get-AzRoleAssignment | Where-Object {$_.RoleDefinitionName -eq "Owner" -and $_.Scope -notlike "*/providers/Microsoft.Management/managementGroups/*"} | Select DisplayName,SignInName,Scope
第二关:安全基线扫描——MFA 是底线,不是彩蛋
MFA(多因素认证)不是锦上添花,是 Azure 租户的呼吸面罩。重点查三类「裸奔账户」:
- 全局管理员 & 用户管理员账户:必须启用 MFA,且禁用短信验证(SMS 已被微软标记为「不推荐」)。优先用 Microsoft Authenticator 或 FIDO2 安全密钥。
- 服务主体(Service Principal):别让它们用密码永不过期。改用证书或托管标识(Managed Identity),并在 Key Vault 中轮换证书(有效期≤1年)。
- 过期证书预警:运行
az ad app credential list --id <app-id>,筛出 30 天内过期的证书,自动邮件通知负责人——别让凌晨三点的告警,来自一张过期的 SSL 证书。
顺手检查:Azure Security Center(现为 Microsoft Defender for Cloud)是否已启用「持续评估」?它的「安全建议」面板里,藏着 90% 的高危漏洞线索。
Azure 风控解除 第三关:资源健康度诊断——那些假装在工作的虚拟机
打开 Azure Advisor,别只看「推荐」,要看「为什么推荐」。重点盯三类「僵尸资源」:
- 低 CPU + 高账单 = 慢性失血:筛选过去 14 天平均 CPU <5%、内存使用率 <10% 的 VM。它们可能只是当年测试留下的遗孤。执行
az monitor metrics list --resource <vm-id> --metric "Percentage CPU" --start-time $(date -d "14 days ago" +%Y-%m-%dT%H:%M:%SZ) --end-time $(date +%Y-%m-%dT%H:%M:%SZ)验证。 - 无关联磁盘的孤儿盘:
az disk list --query "[?managedBy==null].{Name:name,SizeGB:diskSizeGb,Created:timeCreated}"。找到就删,每 GB SSD 存储每月约 ¥0.3,积少成多够买两杯咖啡。 - 未绑定公网 IP 的「幽灵」资源:如 Public IP 地址未关联任何负载均衡器或 VM?它们占着 IP 号段还收费。批量释放:
az network public-ip list --query "[?ipAllocationMethod=='Static' && resourceGroup!='RG-Network'].{Name:name,ResourceGroup:resourceGroup}"。
第四关:合规与日志——没有日志的云,等于没监控的厨房
问自己三个问题:
- Azure Activity Log 是否存满 90 天?默认只保留 90 天,但合规要求常需 180 天以上。立即配置 Diagnostic Settings,导出到 Log Analytics 工作区或专用存储账户。
- Azure Policy 是否启用「审计模式」?别一上来就设 Deny。先跑两周,用
Get-AzPolicyState查出违规资源,再开会定整改节奏——技术不是执法队,是协作者。 - Key Vault 访问策略是否遵循「零信任」?检查是否允许「所有应用」访问密钥。正确姿势:每个应用单独授权,且密钥权限仅限 get/list,绝不给 delete。
第五关:成本脉搏监测——别让账单成为惊喜盲盒
打开 Cost Management + Billing → Budgets,设置三层预算预警:
- 日常层:月度预算超 80% 时邮件告警(别等月底才发现超支);
- 项目层:为每个资源组设独立预算,绑定项目标签(如
Project=CRM-V2),让财务能精准溯源; - 紧急层:设置「单日消费 > ¥5000」实时短信告警——这通常是资源被误配或遭入侵的信号。
顺手启用「预留实例(Reserved Instances)」:如果你的生产 SQL 数据库连续运行超 1 年,RI 可省 40% 成本。别嫌麻烦,它比每天手动关 VM 更省心。
最后一步:生成你的专属健康报告
别依赖截图。用 Azure CLI 一键打包核心指标:
#!/bin/bash
echo "=== Azure 账号健康快照 ===" > health-report-$(date +%Y%m%d).txt
echo "时间:$(date)" >> health-report-$(date +%Y%m%d).txt
echo "" >> health-report-$(date +%Y%m%d).txt
echo "【权限】全局管理员数量:$(az ad user list --filter \"userType eq 'Guest' or accountEnabled eq false\" --query length -o tsv)" >> health-report-$(date +%Y%m%d).txt
echo "【安全】未启用 MFA 的 GA:$(az ad user list --filter \"assignedRoles/any(r: r/roleTemplateId eq '62e90394-69f5-4237-9190-012177145e10') and not signInNames/any(s: s/type eq 'emailAddress')\" --query length -o tsv)" >> health-report-$(date +%Y%m%d).txt
echo "【成本】昨日消费:$(az consumption budget list --query '[0].amount' -o tsv) 元" >> health-report-$(date +%Y%m%d).txt
把这份报告存进团队 Wiki,并约定:每季度首周周五下午,全体云负责人一起 Review。健康检查不是 IT 部门的 KPI,而是业务连续性的共同担保书。
记住:Azure 不会替你思考风险,但永远给你工具去看见风险。下次看到「资源健康状态:正常」的绿色图标时,请别松一口气——掀开它,看看背后有没有 17 个待处理的安全建议、3 台待回收的 VM、以及一个还在用弱密码的管理员账户。毕竟,真正的健康,从来不在表面,而在每一次主动的、带点强迫症的自我审视里。


