Microsoft AZ-500: 数据、存储和数据库安全 — 学习指南
属于 Microsoft Azure Security Engineer Associate AZ-500 — 学习指南. 使用经过验证的答案练习: Microsoft 考试中心, 或参加限时模拟考试: ExamRoll.io.
概述
Azure 数据、存储和数据库安全的核心在于最小化信任、隔离数据平面、无处不在的加密,以及通过可审计的访问路径来实施最小权限原则。本节将解释如何加固 Azure Storage、Azure SQL 和 Azure Cosmos DB,选择正确的身份和密钥策略,以及防止数据泄露。所描述的每项控制措施都附有其背后的操作原理,以便您能够在生产环境中论证和维护这些配置。
保护 Azure 存储帐户和数据访问
存储帐户的授权和共享
- 适用于 Azure Storage 的 Azure RBAC:优先选择基于 Azure AD 的授权方式(针对 Blob 和 Queue),通过内置角色(如 Storage Blob Data Reader/Contributor)进行管理。原因:通过条件访问实现基于令牌、有时间限制的访问,并在 Entra ID 中记录日志;避免使用永久性的帐户密钥,并支持即时 (just-in-time) 分配。
- 共享密钥:帐户的主/辅密钥授予完整的数据平面权限。应在代码中禁用密钥,并经常轮换。原因:共享密钥是持有者机密(bearer secrets),没有用户绑定或条件访问策略;一旦泄露,将导致数据完全暴露。
- SAS 类型:
- 服务 SAS:授予对特定资源(blob、file、queue、table)的范围性访问权限,并可限制权限、IP、协议和时间。原因:为无法使用 AD 令牌的应用程序提供精确的最小权限。
- 帐户 SAS:作用范围更广(例如,跨多个服务);请谨慎使用。原因:一旦泄露,会扩大爆炸半径。
- 用户委托 SAS:使用 Azure AD 和用户委托密钥为 Blob 颁发。原因:与 Azure AD 身份和条件访问策略绑定;具有更强的可审计性和吊销能力。
- 存储访问策略:为容器/共享上的 SAS 定义可重用的约束(过期时间、权限);吊销或更新策略会使其下颁发的所有 SAS 失效。原因:无需重新生成嵌入在客户端中的令牌即可实现集中吊销。
示例:使用 Azure AD 为 blob 生成用户委托 SAS
az storage blob generate-sas \
--account-name mystorage \
--container-name data \
--name report.csv \
--permissions r \
--expiry 2026-12-31T23:59Z \
--as-user \
--auth-mode login
按类型划分的服务安全
- Blob/Queue/Table:在支持的服务(Blob、Queue)上使用 Azure AD RBAC。将 AllowBlobPublicAccess 设置为 false,要求使用 HTTPS,并启用版本控制和软删除。原因:消除匿名暴露路径,并实现数据可恢复性。
- Azure Files:将 Azure AD Kerberos 用于 SMB,并与 Entra ID(或 AD DS 集成)结合使用,强制执行最小权限的共享/文件权限。要求使用 SMB 加密。原因:通过 SMB 实现与身份绑定的访问和传输安全;用户空间中不存储共享密钥。
- Table 服务:使用具有严格 IP/时间限制的 SAS,并避免使用帐户 SAS。原因:服务级别的粒度不够丰富;需要积极地限定范围。
所有存储服务的网络隔离
- 存储防火墙规则:仅在 Private Link 不可行时,才限制为选定的公共 IP 范围。原因:减少攻击面,但流量仍通过公共互联网传输。
- 私有终结点:优先为 Blob、Queue、Table 和 Files 使用 Private Link。将私有 DNS 区域映射到特定于资源的名称。将公共网络访问设置为“已禁用”(Disabled)。原因:流量保留在 Azure 骨干网络上;通过私有 DNS 验证资源身份;缓解向仿冒服务的数据泄露风险。
- 服务终结点和策略:如果无法选择 Private Link,请启用服务终结点并应用服务终结点策略,以限制到特定存储帐户的出站流量。原因:即使流量通过虚拟网络出口,也能对其进行约束;限制将数据发送到攻击者拥有的帐户的风险。
需要标准化的操作设置
- 强制仅使用 HTTPS,最低 TLS 版本为 1.2。
- 如果使用 AD,则禁用对 Blob 和 Queue 的共享密钥访问(取决于功能支持情况)。
- 在关键容器/共享上设置不可变策略,以满足法规保留要求并增强对勒索软件的恢复能力。
加密和密钥管理
静态加密层
- 服务管理的密钥 (SMK):由 Azure 管理的默认服务器端加密。原因:零操作开销;适用于多种工作负载。
- 客户管理的密钥 (CMK):用于 Storage、SQL 和 Cosmos DB 的密钥,存储在 Key Vault 或 Managed HSM 中。原因:外部化的信任边界,客户可以控制轮换/吊销,并提供合规性证据。
- 基础结构加密(双重加密):使用独立密钥的附加加密层。原因:在存储介质加密被绕过或某个加密边界被攻破时提供深度防御。
密钥轮换和操作
- SMK 会自动轮换;无需任何操作。
- CMK 的轮换方式是:创建一个新的密钥版本,授予包装/解包权限,然后将资源重新指向最新版本(或在支持的情况下使用无版本密钥引用)。原因:可实现无中断的轮换,并产生可审计的变更。
- 使用 Key Vault 的软删除和清除保护来保护密钥;通过 RBAC 控制管理平面,通过访问策略或 RBAC(对于 Managed HSM,使用 RBAC)控制数据平面。原因:防止破坏性的密钥丢失,并强制执行最小权限。
示例:为存储帐户设置 CMK
az storage account update \
--name mystorage \
--resource-group rg-secure \
--encryption-key-source Microsoft.Keyvault \
--encryption-key-vault /subscriptions/<subId>/resourceGroups/rg-secure/providers/Microsoft.KeyVault/vaults/mykv \
--encryption-key-name stor-cmk
加密范围
- 当不同的数据集需要不同的密钥时,在 Storage 中使用基于容器的加密范围。原因:分割爆炸半径,并支持差异化的密钥生命周期。
数据库平台安全:Azure SQL 和 Azure Cosmos DB
Azure SQL 身份验证和访问
- Microsoft Entra 身份验证:创建服务器级别的 Azure AD 管理员;使用包含的数据库用户 (CREATE USER FROM EXTERNAL PROVIDER)。原因:避免使用 SQL 登录名/密码,并启用条件访问和 PIM。
- 包含的用户:身份存在于数据库中,而不是 master 数据库中。原因:简化异地还原和故障转移,无需重新预配登录名。
- 防火墙规则:避免宽泛的客户端 IP 规则;首选禁用公共网络访问的 Private Link。如果需要 IP 规则,请将范围限定到确切地址并自动执行审查。原因:缩小攻击面,减少通过公共终结点被发现的风险。
- 专用终结点:通过带有私有 DNS 的 VNet 路由所有数据平面流量。原因:消除公共暴露,并简化数据外泄防护。
- 身份验证模式:使用 Active Directory 集成(适用于已加入域的设备)或交互式/设备代码流来获取令牌;服务工作负载应使用托管标识。原因:消除密码,并启用令牌生命周期/策略。
数据保护功能
- 透明数据加密 (TDE):默认开启;加密数据/日志/备份。原因:无需更改应用程序即可保护静态介质。将 TDE 与 CMK 结合使用以实现外部化控制。
- Always Encrypted:对敏感列进行客户端加密,密钥存储在 Key Vault 中。原因:防止 SQL 操作员或引擎看到明文;用于 PII/PCI 字段。
- 动态数据屏蔽 (DDM):为非特权用户模糊化查询结果。原因:减少偶然的数据暴露,但不是一个安全边界;与 RBAC 结合使用。
- 审核:发送到 Log Analytics、Event Hubs 或存储。原因:为调查和合规性创建不可变的轨迹。
示例:启用服务器级审核到 Log Analytics
az sql server audit-policy update \
--name sql-secure \
--resource-group rg-secure \
--state Enabled \
--log-analytics-workspace /subscriptions/<subId>/resourceGroups/rg-secure/providers/Microsoft.OperationalInsights/workspaces/la-secure
Microsoft Defender for SQL
- 漏洞评估 (VA):建立基线并扫描架构/配置;导出到存储;与 DevSecOps 门禁集成。原因:通过明确的修复指导实现持续的健康检查和漂移检测。
- 威胁检测:检测 SQL 注入、异常登录、来自不熟悉位置的登录、权限滥用。原因:托管式检测,运营开销低;补充了网络控制。
- 警报响应:路由到 Logic Apps、电子邮件、SIEM。创建 playbook 用于分类、用户暂停、令牌吊销和防火墙收紧。原因:代码化的响应可减少平均遏制时间。
Azure Cosmos DB 安全
- 密钥和令牌:主/辅密钥是高权限的;定期轮换。数据平面操作首选 Azure AD RBAC,使用如 Cosmos DB Built-in Data Contributor/Reader 等角色。原因:基于身份的访问,支持条件访问和审计。
- 网络控制:IP 防火墙允许列表用于应急;专用终结点作为默认路径;如果可行,禁用公共访问。原因:保证路径控制和终结点验证。
- 加密:默认静态加密;启用 CMK 以获得额外控制。原因:满足外部加密要求和职责分离。
- 诊断日志和指标:启用 DataPlaneRequests、ControlPlaneRequests 和特定于 API 的类别(例如,MongoRequests)。原因:为访问模式、限制和异常请求提供端到端的可观察性。
监控、分类和外泄控制
由 Key Vault 支持的机密和连接字符串
- 使用托管标识在运行时检索机密/密钥;切勿在代码或设置中存储机密。原因:消除了应用程序中的凭据扩散和机密轮换问题。
- App Service/Functions Key Vault 引用
ConnectionStrings__Sql=@Microsoft.KeyVault(SecretUri=https://mykv.vault.azure.net/secrets/sql-connstr/)
- 在可能的情况下,优先使用 Azure AD 访问令牌访问 SQL,而不是基于机密的连接字符串。原因:策略和吊销能力更强。
信息保护和数据分类
- Microsoft Purview Information Protection 敏感度标签:为文档和电子邮件应用带有加密和使用权限的标签;与自动标记功能集成。原因:提供超越存储边界的持久保护。
- SQL Information Protection (Azure SQL):使用内置的数据发现和分类功能,为列推荐标签,并导出到 Purview。原因:在整个数据资产中实现集中治理和一致的策略。
数据外泄控制和安全访问模式
- 优先使用 Private Link:用于 Storage、SQL 和 Cosmos DB。禁用公共终结点。原因:阻止来自公共互联网的访问,并强制流量源自经批准的 VNet。
- 出口筛选:使用 Azure Firewall 的 FQDN 标签和 DNAT 规则,仅允许必需的 Azure 终结点;在 Private Link 不可行的情况下,添加服务终结点策略。原因:出站流量白名单可阻止数据泄露到攻击者控制的终结点。
- 资源实例规则:对于 Storage 防火墙,仅允许特定的受信任资源实例(例如,一个 Synapse 工作区)进行访问。原因:将访问权限绑定到已知的生产者/消费者,而不仅仅是网络。
- SAS 强化:尽可能使用用户委托 SAS,限制为 HTTPS 协议,限制 IP,使用最小权限和最短生命周期;与存储访问策略绑定以实现吊销。原因:减少令牌滥用,并简化紧急失效操作。
- AKS 和服务终结点:如果依赖服务终结点,请使用 Azure CNI,以便 Pod 获取 VNet IP 并继承终结点访问权限。原因:将容器流量桥接到 VNet 原生控制;否则,终结点不适用于经过 NAT 的 Pod 流量。
- 日志记录和分析:为 Storage、SQL 和 Cosmos DB 启用诊断日志,并发送到 Log Analytics;针对异常数据量、SAS 签发高峰和频繁的 403 错误创建警报。原因:及早检测数据外泄企图。
实践问题场景
Spotify 需要防止数据从开发人员子网和 AKS 工作负载外泄到未经授权的 Storage 和 SQL 终结点,同时使 CI/CD 管道能够运行集成测试。
为所有生产环境的 Storage 帐户和 Azure SQL 服务器禁用公共网络访问,并创建 Private Endpoints。 原因:强制所有数据平面流量通过 Private Link,消除公共入口/出口,并通过 VNet 和私有 DNS 实现严格的来源强制执行。
配置私有 DNS 区域,使用 A 记录将存储和数据库资源的 FQDN 映射到私有终结点 IP;链接所有必需的 VNet。 原因:防止 DNS 泄露到公共终结点,并确保客户端解析到预期的私有资源。
在 Storage 防火墙中,仅为生产环境的 AKS 集群和构建代理规模集标识添加资源实例规则;将默认操作设置为拒绝。 原因:即使在同一个 VNet 内,也只有经过批准的资源标识才能访问该帐户,从而阻止横向移动和来自不受信任工作负载的数据外泄。
在 AKS 上强制使用 Azure CNI,并启用带有服务终结点策略的服务终结点,以允许开发命名空间仅访问专用的非生产存储帐户。 原因:开发 Pod 获得 VNet IP,因此网络策略适用;终结点策略将任何非私有流量严格限制在经批准的帐户内。
在应用程序代码中,使用 Azure AD RBAC for Blob and Queue 替换共享密钥;在测试中不可避免需要共享时,签发具有存储访问策略和 1 小时过期的用户委托 SAS。 原因:与身份绑定的令牌是可审计和可吊销的;如果令牌在构建日志中暴露,短生命周期的 SAS 可将风险降至最低。
启用 Defender for SQL 的威胁检测和漏洞评估功能;将警报和 SQL 审计日志路由到中央 Log Analytics 工作区,并使用自动化的 Logic Apps 进行分类处理(禁用用户、吊销会话、添加临时防火墙拒绝规则)。 原因:托管检测功能可加速遏制 SQL 注入和异常访问,而 playbook 则使响应过程标准化并提速。
使用 Key Vault 的 CMK 保护 TDE 和 Storage 加密范围;启用软删除和清除保护;每季度轮换密钥,并将资源引用更新到最新的密钥版本。 原因:具有安全轮换功能的外部化加密控制满足合规性要求,并降低了操作错误的风险。
使用 SQL Information Protection 对 Azure SQL 中的敏感列进行分类,并将其载入 Microsoft Purview;为下游导出应用 MIP 敏感度标签。 原因:持久性标签随数据提取一起传输,限制了滥用,并使 DLP 工具能够在各种工具和设备上强制执行控制。
使用 Azure Firewall 锁定出口流量,仅允许构建/测试所需的 Azure 服务,对 Storage 和 SQL 使用 FQDN 标签,并拒绝通配符出站 HTTP(S) 流量。 原因:积极的安全模型确保流量只能到达经批准的终结点,防止数据流向攻击者的域。
这一系列操作可防止公共访问,限制了谁和什么可以访问数据,将访问权限与身份而非机密绑定,并使监控和快速响应操作化——所有这些都在通过范围限定、有时间限制的例外情况来保持开发人员的速度。
← 计算、容器和端点安全 · 所有领域 · 密钥管理、加密技术和证书 →
练习这些题目 → · 在 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.
通过考试 →