You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更可扩展地自动化获取支持Azure存储加密CMK的Azure策略定义?

自动化列出支持Azure存储加密客户托管密钥的Azure策略方案需求

我希望自动化列出所有支持Azure存储加密客户托管密钥的Azure策略。目前我直接在Azure门户中搜索这些策略,希望能实现自动化以频繁检查状态。我想到的快速方案是使用PowerShell或C#结合ArmClient API,基于字符串匹配查询policyDefinitions,但这种方法无法覆盖诸如使用缩写“CMK”、不同语言下描述文本变更等边缘情况。请问是否存在更具可扩展性的方案或替代方法?


现有临时方案

PowerShell脚本示例

Get-AzPolicyDefinition | Where-Object { $_.Properties.Description -like "*customer managed keys*"}

ARM API端点示例

/providers/Microsoft.Authorization/policyDefinitions?$filter=properties/description+contains+'customer+managed+keys'

更具可扩展性的解决方案

1. 利用策略元数据标签过滤

多数官方Azure策略会在元数据中标记功能属性或分类,比如存储类策略的元数据会包含"category": "Storage",部分CMK相关策略还会在元数据中添加专属标记。结合元数据+多关键词匹配的方式,能避免纯文本描述的局限性:

Get-AzPolicyDefinition | Where-Object {
    $_.Properties.Metadata.Category -eq "Storage" -and
    ($_.Properties.DisplayName -match "CMK|Customer Managed Keys" -or
     $_.Properties.Metadata.Features -contains "CustomerManagedKeys")
}

对应的API过滤请求:

/providers/Microsoft.Authorization/policyDefinitions?$filter=properties/metadata/category eq 'Storage' and (properties/displayName contains 'CMK' or properties/displayName contains 'Customer Managed Keys')

2. 解析策略规则逻辑匹配

直接检查策略的policyRule内容,判断是否涉及存储账户加密密钥源的强制配置(比如要求Microsoft.Storage/storageAccounts/encryption.keySource设为Microsoft.KeyVault),这种方式完全不依赖文本描述,准确性最高:

Get-AzPolicyDefinition | Where-Object {
    $_.Properties.PolicyRule -match "Microsoft.Storage/storageAccounts/encryption.keySource" -and
    $_.Properties.PolicyRule -match "Microsoft.KeyVault"
}

3. 使用Azure策略内置别名筛选

Azure策略提供预定义别名,可通过Microsoft.Storage/storageAccounts/encryption.keySource别名直接定位相关策略,这种方式官方且稳定:

/providers/Microsoft.Authorization/policyDefinitions?$filter=properties/policyRule/any(r: r/if/any(i: i/field eq 'Microsoft.Storage/storageAccounts/encryption.keySource'))

4. 维护官方策略ID清单

微软官方的CMK相关存储策略有固定ID,可定期从官方文档提取并维护ID清单,直接通过ID精准查询:

$cmkPolicyIds = @(
    "/providers/Microsoft.Authorization/policyDefinitions/xxxx-xxxx-xxxx-xxxx",
    "/providers/Microsoft.Authorization/policyDefinitions/yyyy-yyyy-yyyy-yyyy"
)
Get-AzPolicyDefinition -Id $cmkPolicyIds

内容的提问来源于stack exchange,提问作者greg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 01:16:06