Loading...
Loading...
Use this skill whenever writing, reviewing, or refactoring Terraform code that provisions Azure resources. The skill enforces Microsoft Cloud Security Benchmark (MCSB) controls, CIS Azure Foundations Benchmark v2.0 rules, Azure Well-Architected Framework Security Pillar recommendations, and all Terraform IaC best practices that prevent Microsoft Defender for Cloud security recommendations from being raised. Activate whenever the user mentions Azure, azurerm provider, ARM, Defender for Cloud, Terraform on Azure, AKS, App Service, Storage, Key Vault, SQL, PostgreSQL, MySQL, Redis, Service Bus, Event Hub, Cosmos DB, API Management, or any Azure PaaS in a Terraform context — even if they don't explicitly ask about security or MDC.
npx skill4agent add yisusvii/azure-terraform-defender azure-terraform-defenderazurerm| Topic | File | Covers |
|---|---|---|
| Storage Accounts | | |
| Key Vault | | |
| Databases | | SQL, PostgreSQL, MySQL Flexible, Cosmos DB |
| Containers | | AKS, ACR, Defender for Containers |
| Networking | | NSG, VNet, Firewall, Bastion, DDoS, Private Endpoints |
| App Service | | Web apps, Function apps |
| VMs | | Linux/Windows VMs, disk encryption, backup |
| Identity & IAM | | Managed identities, RBAC, Defender plans, policy |
| Monitoring | | Log Analytics, diagnostic settings, activity alerts |
| PaaS (misc) | | Redis, Service Bus, Event Hub, API Mgmt, Automation |
| Terraform Patterns | | Provider config, state, secrets, naming, modules |
| Full MDC Remediation | | Complete MDC alert → Terraform fix table |
tags = {
environment = var.environment # dev | staging | prod
cost-center = var.cost_center
owner = var.owner_email
managed-by = "terraform"
workload = var.workload_name
created-date = formatdate("YYYY-MM-DD", timestamp())
}identity {
type = "SystemAssigned"
}public_network_access_enabled = falseazurerm_monitor_diagnostic_settingreferences/monitoring.mdazurerm_storage_accountreferences/storage.mdhttps_traffic_only_enabled = true
min_tls_version = "TLS1_2"
allow_nested_items_to_be_public = false
shared_access_key_enabled = false
cross_tenant_replication_enabled = false
infrastructure_encryption_enabled = true
network_rules {
default_action = "Deny"
bypass = ["AzureServices"]
}
blob_properties {
delete_retention_policy { days = 30 }
container_delete_retention_policy { days = 30 }
versioning_enabled = true
}azurerm_key_vaultreferences/keyvault.mdsoft_delete_retention_days = 90
purge_protection_enabled = true
enable_rbac_authorization = true
network_acls {
default_action = "Deny"
bypass = ["AzureServices"]
}azurerm_mssql_serverreferences/databases.mdminimum_tls_version = "1.2"
public_network_access_enabled = false
azuread_administrator {
login_username = var.aad_admin_login
object_id = var.aad_admin_object_id
azuread_authentication_only = true
}azurerm_mssql_server_extended_auditing_policyazurerm_mssql_server_vulnerability_assessmentazurerm_postgresql_flexible_serverreferences/databases.mdgeo_redundant_backup_enabled = true
authentication {
active_directory_auth_enabled = true
password_auth_enabled = false
tenant_id = data.azurerm_client_config.current.tenant_id
}log_checkpointslog_connectionslog_disconnectionsconnection_throttlingazurerm_kubernetes_clusterreferences/containers.mdrole_based_access_control_enabled = true
local_account_disabled = true
azure_policy_enabled = true
azure_active_directory_role_based_access_control {
managed = true
azure_rbac_enabled = true
}
microsoft_defender {
log_analytics_workspace_id = var.log_analytics_workspace_id
}references/appservice.mdhttps_only = true
site_config {
minimum_tls_version = "1.2"
ftps_state = "Disabled"
remote_debugging_enabled = false
}
auth_settings_v2 {
auth_enabled = true
require_authentication = true
}references/compute-vms.mdencryption_at_host_enabled = true
secure_boot_enabled = true
vtpm_enabled = true
disable_password_authentication = true # Linux onlyreferences/paas-misc.mdhttps_traffic_only_enabled = falseallow_nested_items_to_be_public = trueshared_access_key_enabled = truepurge_protection_enabled = falsesoft_delete_retention_days < 7enable_rbac_authorization = falsepublic_network_access_enabled = trueaccess = "Allow"direction = "Inbound"source_address_prefix = "*""Internet"role_based_access_control_enabled = falselocal_account_disabled = falseadmin_enabled = trueclient_secretrole_definition_name = "Owner"azurerm_role_assignmenthttps_only = falsesite_config { remote_debugging_enabled = true }site_config { ftps_state = "AllAllowed" }cors { allowed_origins = ["*"] }enable_non_ssl_port = truelocal_auth_enabled = truelocal_authentication_enabled = truelocal_authentication_disabled = falseencrypted = falseazurerm_automation_variable_*encryption_at_host_enabled = falsesensitive = trueazurerm~> X.Y~> X.Y.terraform.lock.hclsensitive = trueprevent_destroy