给定此ARM模板:https://github.com/Azure/azure-quickstart-templates/blob/master/101-redis-cache/azuredeploy.json
如何强制在启用诊断设置的情况下部署Redis缓存?
是否仅当Azure团队提供适当的别名时才有可能?
Redis缓存的当前别名集:
{
"Microsoft.Cache/Redis/redisConfiguration": {
"maxfragmentationmemory-reserved": "300",
"maxmemory-reserved": "200",
"maxmemory-delta": "200",
"maxclients": "7500",
"rdb-backup-enabled": "true",
"rdb-backup-frequency": "60",
"rdb-backup-max-snapshot-count": "1",
"rdb-storage-connection-string": "DefaultEndpointsProtocol=https;AccountName=blobnubldepenclsstgwu2;AccountKey=[key hidden]"
},
"Microsoft.Cache/Redis/provisioningState": "Succeeded",
"Microsoft.Cache/Redis/enableNonSslPort": false,
"Microsoft.Cache/Redis/sku.capacity": 1,
"Microsoft.Cache/Redis/redisVersion": "4.0.14",
"Microsoft.Cache/Redis/sku.family": "P",
"Microsoft.Cache/Redis/hostName": "rc-nuRed-epe-ncls-stg-wu2.redis.cache.windows.net",
"Microsoft.Cache/Redis/sku.name": "Premium",
"Microsoft.Cache/Redis/sslPort": 6380,
"Microsoft.Cache/Redis/port": 6379,
"Microsoft.Cache/Redis/sku": {
"name": "Premium",
"capacity": 1,
"family": "P"
},
"Microsoft.Cache/Redis/subnetId": "/subscriptions/d0ee6b93-7d29-45db-aabf-784018016241/resourceGroups/rg-grp-epe-ncls-stg-wu2/providers/Microsoft.Network/virtualNetworks/AZ-BIZ-10.32.223.0-26/subnets/AZ-BIZ-10.32.223.16-28",
"Microsoft.Cache/Redis/staticIP": "10.32.223.24",
"Microsoft.Cache/Redis/minimumTlsVersion": "1.2",
"Microsoft.Cache/Redis/shardCount": 2,
"Microsoft.Cache/Redis/zones": [
"3"
]
}发布于 2020-10-21 00:51:38
您需要使用auditIfNotExists或deployIfNotExists策略。auditIfNotExists将引导您开始了解如何在没有诊断设置的情况下检测资源,但是deployIfNotExists路由的复杂性要高得多,因此需要更多关于特定应用程序的信息才能解决问题。
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Cache/redis"
}
]
},
"then": {
"effect": "auditIfNotExists",
"details": {
"type": "Microsoft.Insights/diagnosticSettings",
"existenceCondition": {
"allOf": [
{
"field": "Microsoft.Insights/diagnosticSettings/metrics.enabled",
"equals": "true"
},
{
"field": "Microsoft.Insights/diagnosticSettings/metrics[*].retentionPolicy.enabled",
"equals": "false"
}
]
}
}
}
}请记住,截至今天(2020年10月20日),Redis还没有任何" log“选项。如果您计划将此选项应用于另一个资源,则还需要检查log选项,您的存在条件将如下所示
"existenceCondition": {
"allOf": [
{
"field": "Microsoft.Insights/diagnosticSettings/logs.enabled",
"equals": "true"
},
{
"field": "Microsoft.Insights/diagnosticSettings/logs[*].retentionPolicy.enabled",
"equals": "false"
},
{
"field": "Microsoft.Insights/diagnosticSettings/metrics.enabled",
"equals": "true"
},
{
"field": "Microsoft.Insights/diagnosticSettings/metrics[*].retentionPolicy.enabled",
"equals": "false"
}
]
}
}这将使您能够审计诊断日志。如果要创建修正,则需要向策略中添加roleDefinition和deployment,并将效果更改为deployIfNotExists。仅仅是警告、诊断设置可能很难补救,因为它们还需要存在存储帐户、事件中心或其他资源。如果这个问题已经存在,并且可以静态定义,那么这个问题就更容易解决。但是,如果需要采取补救措施来动态提供这些支持基础架构,则还必须围绕基础架构名称的全局唯一性以及其他问题创建规则。
如果你打算走deployIfNotExists路线,这里是“冰山一角”的文档,你需要知道才能开始。https://docs.microsoft.com/en-us/azure/governance/policy/concepts/effects#deployifnotexists
https://stackoverflow.com/questions/64435453
复制相似问题