#azure #storage #account #policy #retention
#azure #Хранение #Учетная запись #политика #сохранение
Вопрос:
Я использую приведенный ниже код для отслеживания политики хранения в учетных записях хранения. Кажется, у меня правильный псевдоним, но когда я вижу отчет о соответствии, отображается «100% Соответствие 0 из 0». Та же проблема с версиями и политиками частных ссылок. У меня есть политики для учетных записей хранения, аналогичные этим, но они фактически возвращают количество целевых учетных записей хранения, с той лишь разницей, что они не ссылаются на псевдоним blob services, как это есть. Спасибо за любые ответы.
resource "azurerm_policy_definition" "sa-ensure-versioning-enabled-policy" {
name = "sa-ensure-versioning-enabled-policy-definition"
policy_type = "Custom"
mode = "All"
#management_group_name = var.management_group_name
display_name = "Ensure versioning enabled policy"
metadata = <<METADATA
{
"version": "1.0.0",
"category": "Storage"
}
METADATA
policy_rule = <<POLICY_RULE
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
{
"not": {
"field":"Microsoft.Storage/storageAccounts/blobServices/default.isVersioningEnabled",
"equals": "true"
}
}
]
},
"then": {
"effect": "[parameters('effect')]"
}
}
POLICY_RULE
parameters = <<PARAMETERS
{
"effect": {
"type": "String",
"metadata": {
"displayName": "Effect",
"description": "'Audit' allows a non-compliant resource to be created, but flags it as non-compliant. 'Deny' blocks the resource creation. 'Disable' turns off the policy."
},
"allowedValues": [
"audit",
"deny",
"disabled"
],
"defaultValue": "audit"
}
}
PARAMETERS
}
resource "azurerm_policy_assignment" "sa-ensure-versioning-enabled-policy-assignment" {
name = "sa-ensure-versioning-enabled-policy-assignment"
scope = data.azurerm_subscription.current.id
policy_definition_id = azurerm_policy_definition.sa-ensure-versioning-enabled-policy.id
description = "Storage Account ensure delete retention policy."
display_name = "Ensure versioning enabled policy"
parameters = <<PARAMETERS
{
"effect": {
"value": "audit"
}
}
PARAMETERS
}
Добавлен этот код, чтобы заставить политику работать должным образом.
{
"mode": "All",
"policyRule": {
"if": {
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
"then": {
"effect": "auditIfNotExists",
"details": {
"type": "Microsoft.Storage/storageAccounts/blobServices",
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"existenceCondition": {
"field": "Microsoft.Storage/storageAccounts/blobServices/deleteRetentionPolicy.enabled",
"equals": "true"
}
}
}
},
"parameters": {}
}
Ответ №1:
Кажется, это ошибка ia в Azure, описанная здесь: https://github.com/Azure/azure-policy/issues/377 . По-видимому, Microsoft.Storage / storageAccounts / blobServices еще не работает. В ETA для решения указано сентябрь 2020 года, но эта дата и некоторые предыдущие уже прошли.
Комментарии:
1. Можем ли мы гарантировать, чтобы включить мягкое удаление для больших двоичных объектов с помощью политики Azure?
2. Теперь это происходит с небольшой помощью roleDefinitons, пожалуйста, смотрите Код выше.
Ответ №2:
Любые политики, которые ссылаются на Microsoft.Storage / storageAccounts / blobServices, также должны работать, используя приведенный ниже код.(удаление хранения, управление версиями и т. Д.) Теперь Это работает с использованием политики, приведенной ниже:
"mode": "All",
"policyRule": {
"if": {
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
"then": {
"effect": "auditIfNotExists",
"details": {
"type": "Microsoft.Storage/storageAccounts/blobServices",
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"existenceCondition": {
"field": "Microsoft.Storage/storageAccounts/blobServices/deleteRetentionPolicy.enabled",
"equals": "true"
}
}
}
},
"parameters": {}
}