@microsoft/terraform-cdk-constructs 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/.jsii +54630 -26185
  2. package/API.md +72091 -23784
  3. package/lib/azure-actiongroup/index.d.ts +0 -10
  4. package/lib/azure-actiongroup/index.js +1 -11
  5. package/lib/azure-actiongroup/lib/action-group.d.ts +0 -10
  6. package/lib/azure-actiongroup/lib/action-group.js +6 -32
  7. package/lib/azure-actiongroup/lib/index.d.ts +1 -4
  8. package/lib/azure-actiongroup/lib/index.js +2 -5
  9. package/lib/azure-activitylogalert/index.d.ts +0 -10
  10. package/lib/azure-activitylogalert/index.js +1 -11
  11. package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +0 -10
  12. package/lib/azure-activitylogalert/lib/activity-log-alert.js +6 -32
  13. package/lib/azure-activitylogalert/lib/index.d.ts +1 -4
  14. package/lib/azure-activitylogalert/lib/index.js +2 -5
  15. package/lib/azure-aks/index.d.ts +0 -8
  16. package/lib/azure-aks/index.js +1 -11
  17. package/lib/azure-aks/lib/aks-cluster.d.ts +4 -13
  18. package/lib/azure-aks/lib/aks-cluster.js +13 -36
  19. package/lib/azure-aks/lib/index.d.ts +1 -10
  20. package/lib/azure-aks/lib/index.js +2 -21
  21. package/lib/azure-diagnosticsettings/index.d.ts +0 -6
  22. package/lib/azure-diagnosticsettings/index.js +1 -7
  23. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +0 -10
  24. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +6 -32
  25. package/lib/azure-diagnosticsettings/lib/index.d.ts +1 -7
  26. package/lib/azure-diagnosticsettings/lib/index.js +2 -8
  27. package/lib/azure-dnsforwardingruleset/index.d.ts +1 -0
  28. package/lib/azure-dnsforwardingruleset/index.js +18 -0
  29. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset-schemas.d.ts +24 -0
  30. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset-schemas.js +206 -0
  31. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.d.ts +174 -0
  32. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +214 -0
  33. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule-schemas.d.ts +24 -0
  34. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule-schemas.js +242 -0
  35. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.d.ts +193 -0
  36. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +193 -0
  37. package/lib/azure-dnsforwardingruleset/lib/index.d.ts +6 -0
  38. package/lib/azure-dnsforwardingruleset/lib/index.js +23 -0
  39. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link-schemas.d.ts +24 -0
  40. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link-schemas.js +199 -0
  41. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.d.ts +160 -0
  42. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +178 -0
  43. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.d.ts +9 -0
  44. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.js +133 -0
  45. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.d.ts +9 -0
  46. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.js +350 -0
  47. package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.d.ts +9 -0
  48. package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.js +397 -0
  49. package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.d.ts +9 -0
  50. package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.js +285 -0
  51. package/lib/azure-dnsresolver/index.d.ts +1 -0
  52. package/lib/azure-dnsresolver/index.js +18 -0
  53. package/lib/azure-dnsresolver/lib/dns-resolver-schemas.d.ts +24 -0
  54. package/lib/azure-dnsresolver/lib/dns-resolver-schemas.js +218 -0
  55. package/lib/azure-dnsresolver/lib/dns-resolver.d.ts +170 -0
  56. package/lib/azure-dnsresolver/lib/dns-resolver.js +236 -0
  57. package/lib/azure-dnsresolver/lib/inbound-endpoint-schemas.d.ts +24 -0
  58. package/lib/azure-dnsresolver/lib/inbound-endpoint-schemas.js +261 -0
  59. package/lib/azure-dnsresolver/lib/inbound-endpoint.d.ts +189 -0
  60. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +243 -0
  61. package/lib/azure-dnsresolver/lib/index.d.ts +6 -0
  62. package/lib/azure-dnsresolver/lib/index.js +23 -0
  63. package/lib/azure-dnsresolver/lib/outbound-endpoint-schemas.d.ts +24 -0
  64. package/lib/azure-dnsresolver/lib/outbound-endpoint-schemas.js +231 -0
  65. package/lib/azure-dnsresolver/lib/outbound-endpoint.d.ts +175 -0
  66. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +234 -0
  67. package/lib/azure-dnsresolver/test/dns-resolver.integ.d.ts +14 -0
  68. package/lib/azure-dnsresolver/test/dns-resolver.integ.js +117 -0
  69. package/lib/azure-dnsresolver/test/dns-resolver.spec.d.ts +9 -0
  70. package/lib/azure-dnsresolver/test/dns-resolver.spec.js +353 -0
  71. package/lib/azure-dnsresolver/test/inbound-endpoint.integ.d.ts +9 -0
  72. package/lib/azure-dnsresolver/test/inbound-endpoint.integ.js +151 -0
  73. package/lib/azure-dnsresolver/test/inbound-endpoint.spec.d.ts +9 -0
  74. package/lib/azure-dnsresolver/test/inbound-endpoint.spec.js +441 -0
  75. package/lib/azure-dnsresolver/test/outbound-endpoint.integ.d.ts +9 -0
  76. package/lib/azure-dnsresolver/test/outbound-endpoint.integ.js +149 -0
  77. package/lib/azure-dnsresolver/test/outbound-endpoint.spec.d.ts +9 -0
  78. package/lib/azure-dnsresolver/test/outbound-endpoint.spec.js +301 -0
  79. package/lib/azure-dnszone/index.d.ts +1 -0
  80. package/lib/azure-dnszone/index.js +18 -0
  81. package/lib/azure-dnszone/lib/dns-zone-schemas.d.ts +24 -0
  82. package/lib/azure-dnszone/lib/dns-zone-schemas.js +191 -0
  83. package/lib/azure-dnszone/lib/dns-zone.d.ts +182 -0
  84. package/lib/azure-dnszone/lib/dns-zone.js +228 -0
  85. package/lib/azure-dnszone/lib/index.d.ts +2 -0
  86. package/lib/azure-dnszone/lib/index.js +19 -0
  87. package/lib/azure-dnszone/test/dns-zone.integ.d.ts +9 -0
  88. package/lib/azure-dnszone/test/dns-zone.integ.js +85 -0
  89. package/lib/azure-dnszone/test/dns-zone.spec.d.ts +9 -0
  90. package/lib/azure-dnszone/test/dns-zone.spec.js +285 -0
  91. package/lib/azure-metricalert/index.d.ts +0 -10
  92. package/lib/azure-metricalert/index.js +1 -11
  93. package/lib/azure-metricalert/lib/index.d.ts +1 -4
  94. package/lib/azure-metricalert/lib/index.js +2 -5
  95. package/lib/azure-metricalert/lib/metric-alert.d.ts +0 -10
  96. package/lib/azure-metricalert/lib/metric-alert.js +6 -32
  97. package/lib/azure-networkinterface/index.d.ts +0 -3
  98. package/lib/azure-networkinterface/index.js +1 -4
  99. package/lib/azure-networkinterface/lib/index.d.ts +1 -5
  100. package/lib/azure-networkinterface/lib/index.js +2 -5
  101. package/lib/azure-networkinterface/lib/network-interface.d.ts +4 -9
  102. package/lib/azure-networkinterface/lib/network-interface.js +14 -29
  103. package/lib/azure-networkinterface/test/network-interface.integ.js +20 -6
  104. package/lib/azure-networksecuritygroup/index.d.ts +0 -5
  105. package/lib/azure-networksecuritygroup/index.js +1 -6
  106. package/lib/azure-networksecuritygroup/lib/index.d.ts +2 -5
  107. package/lib/azure-networksecuritygroup/lib/index.js +17 -14
  108. package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +4 -13
  109. package/lib/azure-networksecuritygroup/lib/network-security-group.js +14 -36
  110. package/lib/azure-policyassignment/index.d.ts +1 -0
  111. package/lib/azure-policyassignment/index.js +18 -0
  112. package/lib/azure-policyassignment/lib/index.d.ts +2 -0
  113. package/lib/azure-policyassignment/lib/index.js +19 -0
  114. package/lib/azure-policyassignment/lib/policy-assignment-schemas.d.ts +25 -0
  115. package/lib/azure-policyassignment/lib/policy-assignment-schemas.js +260 -0
  116. package/lib/azure-policyassignment/lib/policy-assignment.d.ts +349 -0
  117. package/lib/azure-policyassignment/lib/policy-assignment.js +237 -0
  118. package/lib/azure-policyassignment/test/policy-assignment.integ.d.ts +13 -0
  119. package/lib/azure-policyassignment/test/policy-assignment.integ.js +153 -0
  120. package/lib/azure-policyassignment/test/policy-assignment.spec.d.ts +9 -0
  121. package/lib/azure-policyassignment/test/policy-assignment.spec.js +651 -0
  122. package/lib/azure-policydefinition/index.d.ts +1 -0
  123. package/lib/azure-policydefinition/index.js +18 -0
  124. package/lib/azure-policydefinition/lib/index.d.ts +2 -0
  125. package/lib/azure-policydefinition/lib/index.js +19 -0
  126. package/lib/azure-policydefinition/lib/policy-definition-schemas.d.ts +25 -0
  127. package/lib/azure-policydefinition/lib/policy-definition-schemas.js +210 -0
  128. package/lib/azure-policydefinition/lib/policy-definition.d.ts +281 -0
  129. package/lib/azure-policydefinition/lib/policy-definition.js +236 -0
  130. package/lib/azure-policydefinition/test/policy-definition.integ.d.ts +9 -0
  131. package/lib/azure-policydefinition/test/policy-definition.integ.js +137 -0
  132. package/lib/azure-policydefinition/test/policy-definition.spec.d.ts +9 -0
  133. package/lib/azure-policydefinition/test/policy-definition.spec.js +806 -0
  134. package/lib/azure-privatednszone/index.d.ts +1 -0
  135. package/lib/azure-privatednszone/index.js +18 -0
  136. package/lib/azure-privatednszone/lib/index.d.ts +2 -0
  137. package/lib/azure-privatednszone/lib/index.js +19 -0
  138. package/lib/azure-privatednszone/lib/private-dns-zone-schemas.d.ts +24 -0
  139. package/lib/azure-privatednszone/lib/private-dns-zone-schemas.js +254 -0
  140. package/lib/azure-privatednszone/lib/private-dns-zone.d.ts +178 -0
  141. package/lib/azure-privatednszone/lib/private-dns-zone.js +272 -0
  142. package/lib/azure-privatednszone/test/private-dns-zone.integ.d.ts +9 -0
  143. package/lib/azure-privatednszone/test/private-dns-zone.integ.js +84 -0
  144. package/lib/azure-privatednszone/test/private-dns-zone.spec.d.ts +9 -0
  145. package/lib/azure-privatednszone/test/private-dns-zone.spec.js +341 -0
  146. package/lib/azure-privatednszonelink/index.d.ts +1 -0
  147. package/lib/azure-privatednszonelink/index.js +18 -0
  148. package/lib/azure-privatednszonelink/lib/index.d.ts +2 -0
  149. package/lib/azure-privatednszonelink/lib/index.js +19 -0
  150. package/lib/azure-privatednszonelink/lib/private-dns-zone-link-schemas.d.ts +24 -0
  151. package/lib/azure-privatednszonelink/lib/private-dns-zone-link-schemas.js +262 -0
  152. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.d.ts +202 -0
  153. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +250 -0
  154. package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.d.ts +9 -0
  155. package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.js +110 -0
  156. package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.d.ts +9 -0
  157. package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.js +465 -0
  158. package/lib/azure-publicipaddress/index.d.ts +0 -5
  159. package/lib/azure-publicipaddress/index.js +1 -6
  160. package/lib/azure-publicipaddress/lib/index.d.ts +2 -9
  161. package/lib/azure-publicipaddress/lib/index.js +17 -17
  162. package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +4 -13
  163. package/lib/azure-publicipaddress/lib/public-ip-address.js +14 -36
  164. package/lib/azure-resourcegroup/index.d.ts +0 -37
  165. package/lib/azure-resourcegroup/index.js +1 -39
  166. package/lib/azure-resourcegroup/lib/index.d.ts +1 -44
  167. package/lib/azure-resourcegroup/lib/index.js +2 -43
  168. package/lib/azure-resourcegroup/lib/resource-group.d.ts +9 -23
  169. package/lib/azure-resourcegroup/lib/resource-group.js +23 -56
  170. package/lib/azure-resourcegroup/test/resource-group.spec.js +13 -19
  171. package/lib/azure-roleassignment/index.d.ts +1 -0
  172. package/lib/azure-roleassignment/index.js +18 -0
  173. package/lib/azure-roleassignment/lib/index.d.ts +2 -0
  174. package/lib/azure-roleassignment/lib/index.js +19 -0
  175. package/lib/azure-roleassignment/lib/role-assignment-schemas.d.ts +25 -0
  176. package/lib/azure-roleassignment/lib/role-assignment-schemas.js +238 -0
  177. package/lib/azure-roleassignment/lib/role-assignment.d.ts +294 -0
  178. package/lib/azure-roleassignment/lib/role-assignment.js +257 -0
  179. package/lib/azure-roleassignment/test/role-assignment.integ.d.ts +12 -0
  180. package/lib/azure-roleassignment/test/role-assignment.integ.js +101 -0
  181. package/lib/azure-roleassignment/test/role-assignment.spec.d.ts +9 -0
  182. package/lib/azure-roleassignment/test/role-assignment.spec.js +633 -0
  183. package/lib/azure-roledefinition/index.d.ts +1 -0
  184. package/lib/azure-roledefinition/index.js +18 -0
  185. package/lib/azure-roledefinition/lib/index.d.ts +2 -0
  186. package/lib/azure-roledefinition/lib/index.js +19 -0
  187. package/lib/azure-roledefinition/lib/role-definition-schemas.d.ts +25 -0
  188. package/lib/azure-roledefinition/lib/role-definition-schemas.js +195 -0
  189. package/lib/azure-roledefinition/lib/role-definition.d.ts +236 -0
  190. package/lib/azure-roledefinition/lib/role-definition.js +192 -0
  191. package/lib/azure-roledefinition/test/role-definition.integ.d.ts +12 -0
  192. package/lib/azure-roledefinition/test/role-definition.integ.js +142 -0
  193. package/lib/azure-roledefinition/test/role-definition.spec.d.ts +9 -0
  194. package/lib/azure-roledefinition/test/role-definition.spec.js +946 -0
  195. package/lib/azure-storageaccount/index.d.ts +0 -19
  196. package/lib/azure-storageaccount/index.js +1 -20
  197. package/lib/azure-storageaccount/lib/index.d.ts +1 -7
  198. package/lib/azure-storageaccount/lib/index.js +2 -8
  199. package/lib/azure-storageaccount/lib/storage-account.d.ts +4 -9
  200. package/lib/azure-storageaccount/lib/storage-account.js +15 -29
  201. package/lib/azure-subnet/index.d.ts +0 -3
  202. package/lib/azure-subnet/index.js +1 -4
  203. package/lib/azure-subnet/lib/index.d.ts +1 -4
  204. package/lib/azure-subnet/lib/index.js +2 -5
  205. package/lib/azure-subnet/lib/subnet.d.ts +3 -14
  206. package/lib/azure-subnet/lib/subnet.js +28 -47
  207. package/lib/azure-subnet/test/subnet.integ.js +19 -7
  208. package/lib/azure-subnet/test/subnet.spec.js +1 -2
  209. package/lib/azure-virtualmachine/index.d.ts +0 -6
  210. package/lib/azure-virtualmachine/index.js +1 -7
  211. package/lib/azure-virtualmachine/lib/index.d.ts +1 -10
  212. package/lib/azure-virtualmachine/lib/index.js +2 -21
  213. package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +4 -13
  214. package/lib/azure-virtualmachine/lib/virtual-machine.js +15 -36
  215. package/lib/azure-virtualnetwork/index.d.ts +0 -9
  216. package/lib/azure-virtualnetwork/index.js +1 -11
  217. package/lib/azure-virtualnetwork/lib/index.d.ts +2 -9
  218. package/lib/azure-virtualnetwork/lib/index.js +17 -20
  219. package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +4 -13
  220. package/lib/azure-virtualnetwork/lib/virtual-network.js +15 -36
  221. package/lib/azure-virtualnetworkmanager/index.d.ts +1 -0
  222. package/lib/azure-virtualnetworkmanager/index.js +18 -0
  223. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration-schemas.d.ts +48 -0
  224. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration-schemas.js +265 -0
  225. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.d.ts +185 -0
  226. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +206 -0
  227. package/lib/azure-virtualnetworkmanager/lib/index.d.ts +14 -0
  228. package/lib/azure-virtualnetworkmanager/lib/index.js +31 -0
  229. package/lib/azure-virtualnetworkmanager/lib/network-group-schemas.d.ts +32 -0
  230. package/lib/azure-virtualnetworkmanager/lib/network-group-schemas.js +189 -0
  231. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member-schemas.d.ts +32 -0
  232. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member-schemas.js +201 -0
  233. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.d.ts +135 -0
  234. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +163 -0
  235. package/lib/azure-virtualnetworkmanager/lib/network-group.d.ts +139 -0
  236. package/lib/azure-virtualnetworkmanager/lib/network-group.js +158 -0
  237. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration-schemas.d.ts +32 -0
  238. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration-schemas.js +182 -0
  239. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.d.ts +144 -0
  240. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +164 -0
  241. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection-schemas.d.ts +38 -0
  242. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection-schemas.js +206 -0
  243. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.d.ts +142 -0
  244. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +162 -0
  245. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-schemas.d.ts +39 -0
  246. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-schemas.js +359 -0
  247. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.d.ts +221 -0
  248. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +204 -0
  249. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager-schemas.d.ts +32 -0
  250. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager-schemas.js +236 -0
  251. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.d.ts +337 -0
  252. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +283 -0
  253. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.d.ts +25 -0
  254. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.js +402 -0
  255. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.d.ts +9 -0
  256. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.js +1652 -0
  257. package/lib/azure-vmss/index.d.ts +0 -5
  258. package/lib/azure-vmss/index.js +1 -6
  259. package/lib/azure-vmss/lib/index.d.ts +0 -7
  260. package/lib/azure-vmss/lib/index.js +1 -21
  261. package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +5 -13
  262. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +29 -53
  263. package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.d.ts +10 -0
  264. package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.js +218 -0
  265. package/lib/core-azure/lib/azapi/azapi-resource.d.ts +206 -26
  266. package/lib/core-azure/lib/azapi/azapi-resource.js +379 -91
  267. package/lib/core-azure/lib/azapi/azapi-resource.spec.js +2 -2
  268. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
  269. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
  270. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +5 -3
  271. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
  272. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
  273. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
  274. package/lib/core-azure/lib/azapi/resource-schema-validator.d.ts +118 -0
  275. package/lib/core-azure/lib/azapi/resource-schema-validator.js +236 -0
  276. package/lib/core-azure/lib/azapi/resource-version-manager.d.ts +103 -0
  277. package/lib/core-azure/lib/azapi/resource-version-manager.js +168 -0
  278. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +11 -6
  279. package/lib/core-azure/lib/index.d.ts +2 -2
  280. package/lib/core-azure/lib/index.js +5 -5
  281. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  282. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  283. package/lib/index.d.ts +19 -0
  284. package/lib/index.js +21 -2
  285. package/lib/testing/index.js +2 -2
  286. package/lib/testing/lib/cleanup.d.ts +1 -0
  287. package/lib/testing/lib/cleanup.js +19 -12
  288. package/lib/testing/lib/metadata.js +19 -16
  289. package/package.json +1 -1
  290. package/scripts/cleanup-test-resources.ts +22 -4
  291. package/scripts/generate-index.js +25 -8
@@ -0,0 +1,359 @@
1
+ "use strict";
2
+ /**
3
+ * API schemas for Azure Virtual Network Manager Security Admin Rules across all supported versions
4
+ *
5
+ * This file defines the complete API schemas for Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections/rules
6
+ * across all supported API versions. The schemas are used by the AzapiResource
7
+ * framework for validation, transformation, and version management.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SECURITY_ADMIN_RULE_TYPE = exports.ALL_SECURITY_ADMIN_RULE_VERSIONS = exports.SECURITY_ADMIN_RULE_VERSION_2023_11_01 = exports.SECURITY_ADMIN_RULE_VERSION_2024_05_01 = exports.SECURITY_ADMIN_RULE_SCHEMA_2023_11_01 = exports.SECURITY_ADMIN_RULE_SCHEMA_2024_05_01 = void 0;
11
+ const version_interfaces_1 = require("../../core-azure/lib/version-manager/interfaces/version-interfaces");
12
+ // =============================================================================
13
+ // COMMON PROPERTY DEFINITIONS
14
+ // =============================================================================
15
+ /**
16
+ * Common property definitions shared across all Security Admin Rule versions
17
+ */
18
+ const COMMON_PROPERTIES = {
19
+ name: {
20
+ dataType: version_interfaces_1.PropertyType.STRING,
21
+ required: true,
22
+ description: "Name of the security admin rule",
23
+ validation: [
24
+ {
25
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
26
+ message: "Security admin rule name is required",
27
+ },
28
+ {
29
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
30
+ value: "^[a-zA-Z0-9][a-zA-Z0-9._-]{0,62}[a-zA-Z0-9_]$",
31
+ message: "Security admin rule name must be 2-64 chars, alphanumeric, periods, underscores, hyphens",
32
+ },
33
+ ],
34
+ },
35
+ ruleCollectionId: {
36
+ dataType: version_interfaces_1.PropertyType.STRING,
37
+ required: true,
38
+ description: "Resource ID of the parent Rule Collection",
39
+ validation: [
40
+ {
41
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
42
+ message: "Rule Collection ID is required",
43
+ },
44
+ ],
45
+ },
46
+ description: {
47
+ dataType: version_interfaces_1.PropertyType.STRING,
48
+ required: false,
49
+ description: "Description of the security admin rule",
50
+ },
51
+ priority: {
52
+ dataType: version_interfaces_1.PropertyType.NUMBER,
53
+ required: true,
54
+ description: "Priority of the rule (1-4096, lower number = higher priority)",
55
+ validation: [
56
+ {
57
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
58
+ message: "Priority is required",
59
+ },
60
+ {
61
+ ruleType: version_interfaces_1.ValidationRuleType.VALUE_RANGE,
62
+ value: { min: 1, max: 4096 },
63
+ message: "Priority must be between 1 and 4096",
64
+ },
65
+ ],
66
+ },
67
+ action: {
68
+ dataType: version_interfaces_1.PropertyType.STRING,
69
+ required: true,
70
+ description: "Action to take (Allow, Deny, or AlwaysAllow)",
71
+ validation: [
72
+ {
73
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
74
+ message: "Action is required",
75
+ },
76
+ {
77
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
78
+ value: "^(Allow|Deny|AlwaysAllow)$",
79
+ message: "Action must be 'Allow', 'Deny', or 'AlwaysAllow'",
80
+ },
81
+ ],
82
+ },
83
+ direction: {
84
+ dataType: version_interfaces_1.PropertyType.STRING,
85
+ required: true,
86
+ description: "Direction of traffic (Inbound or Outbound)",
87
+ validation: [
88
+ {
89
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
90
+ message: "Direction is required",
91
+ },
92
+ {
93
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
94
+ value: "^(Inbound|Outbound)$",
95
+ message: "Direction must be 'Inbound' or 'Outbound'",
96
+ },
97
+ ],
98
+ },
99
+ protocol: {
100
+ dataType: version_interfaces_1.PropertyType.STRING,
101
+ required: true,
102
+ description: "Protocol (Tcp, Udp, Icmp, Esp, Ah, or Any)",
103
+ validation: [
104
+ {
105
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
106
+ message: "Protocol is required",
107
+ },
108
+ {
109
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
110
+ value: "^(Tcp|Udp|Icmp|Esp|Ah|Any)$",
111
+ message: "Protocol must be Tcp, Udp, Icmp, Esp, Ah, or Any",
112
+ },
113
+ ],
114
+ },
115
+ sourcePortRanges: {
116
+ dataType: version_interfaces_1.PropertyType.ARRAY,
117
+ required: false,
118
+ description: "Source port ranges (e.g., ['*'], ['80', '443'])",
119
+ },
120
+ destinationPortRanges: {
121
+ dataType: version_interfaces_1.PropertyType.ARRAY,
122
+ required: false,
123
+ description: "Destination port ranges (e.g., ['*'], ['22', '3389'])",
124
+ },
125
+ sources: {
126
+ dataType: version_interfaces_1.PropertyType.ARRAY,
127
+ required: false,
128
+ description: "Source addresses or network groups",
129
+ },
130
+ destinations: {
131
+ dataType: version_interfaces_1.PropertyType.ARRAY,
132
+ required: false,
133
+ description: "Destination addresses or network groups",
134
+ },
135
+ };
136
+ // =============================================================================
137
+ // VERSION-SPECIFIC SCHEMAS
138
+ // =============================================================================
139
+ /**
140
+ * API Schema for Security Admin Rule version 2024-05-01
141
+ */
142
+ exports.SECURITY_ADMIN_RULE_SCHEMA_2024_05_01 = {
143
+ resourceType: "Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections/rules",
144
+ version: "2024-05-01",
145
+ properties: {
146
+ ...COMMON_PROPERTIES,
147
+ },
148
+ required: [
149
+ "name",
150
+ "ruleCollectionId",
151
+ "priority",
152
+ "action",
153
+ "direction",
154
+ "protocol",
155
+ ],
156
+ optional: [
157
+ "description",
158
+ "sourcePortRanges",
159
+ "destinationPortRanges",
160
+ "sources",
161
+ "destinations",
162
+ ],
163
+ deprecated: [],
164
+ transformationRules: {},
165
+ validationRules: [
166
+ {
167
+ property: "name",
168
+ rules: [
169
+ {
170
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
171
+ message: "Security admin rule name is required",
172
+ },
173
+ ],
174
+ },
175
+ {
176
+ property: "ruleCollectionId",
177
+ rules: [
178
+ {
179
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
180
+ message: "Rule Collection ID is required",
181
+ },
182
+ ],
183
+ },
184
+ {
185
+ property: "priority",
186
+ rules: [
187
+ {
188
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
189
+ message: "Priority is required",
190
+ },
191
+ ],
192
+ },
193
+ {
194
+ property: "action",
195
+ rules: [
196
+ {
197
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
198
+ message: "Action is required",
199
+ },
200
+ ],
201
+ },
202
+ {
203
+ property: "direction",
204
+ rules: [
205
+ {
206
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
207
+ message: "Direction is required",
208
+ },
209
+ ],
210
+ },
211
+ {
212
+ property: "protocol",
213
+ rules: [
214
+ {
215
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
216
+ message: "Protocol is required",
217
+ },
218
+ ],
219
+ },
220
+ ],
221
+ };
222
+ /**
223
+ * API Schema for Security Admin Rule version 2023-11-01
224
+ */
225
+ exports.SECURITY_ADMIN_RULE_SCHEMA_2023_11_01 = {
226
+ resourceType: "Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections/rules",
227
+ version: "2023-11-01",
228
+ properties: {
229
+ ...COMMON_PROPERTIES,
230
+ },
231
+ required: [
232
+ "name",
233
+ "ruleCollectionId",
234
+ "priority",
235
+ "action",
236
+ "direction",
237
+ "protocol",
238
+ ],
239
+ optional: [
240
+ "description",
241
+ "sourcePortRanges",
242
+ "destinationPortRanges",
243
+ "sources",
244
+ "destinations",
245
+ ],
246
+ deprecated: [],
247
+ transformationRules: {},
248
+ validationRules: [
249
+ {
250
+ property: "name",
251
+ rules: [
252
+ {
253
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
254
+ message: "Security admin rule name is required",
255
+ },
256
+ ],
257
+ },
258
+ {
259
+ property: "ruleCollectionId",
260
+ rules: [
261
+ {
262
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
263
+ message: "Rule Collection ID is required",
264
+ },
265
+ ],
266
+ },
267
+ {
268
+ property: "priority",
269
+ rules: [
270
+ {
271
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
272
+ message: "Priority is required",
273
+ },
274
+ ],
275
+ },
276
+ {
277
+ property: "action",
278
+ rules: [
279
+ {
280
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
281
+ message: "Action is required",
282
+ },
283
+ ],
284
+ },
285
+ {
286
+ property: "direction",
287
+ rules: [
288
+ {
289
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
290
+ message: "Direction is required",
291
+ },
292
+ ],
293
+ },
294
+ {
295
+ property: "protocol",
296
+ rules: [
297
+ {
298
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
299
+ message: "Protocol is required",
300
+ },
301
+ ],
302
+ },
303
+ ],
304
+ };
305
+ // =============================================================================
306
+ // VERSION CONFIGURATIONS
307
+ // =============================================================================
308
+ /**
309
+ * Version configuration for Security Admin Rule 2024-05-01
310
+ */
311
+ exports.SECURITY_ADMIN_RULE_VERSION_2024_05_01 = {
312
+ version: "2024-05-01",
313
+ schema: exports.SECURITY_ADMIN_RULE_SCHEMA_2024_05_01,
314
+ supportLevel: version_interfaces_1.VersionSupportLevel.ACTIVE,
315
+ releaseDate: "2024-05-01",
316
+ deprecationDate: undefined,
317
+ sunsetDate: undefined,
318
+ breakingChanges: [],
319
+ migrationGuide: "/docs/virtual-network-manager/migration-2024-05-01",
320
+ changeLog: [
321
+ {
322
+ changeType: "added",
323
+ description: "Latest stable release with full security admin rule support",
324
+ breaking: false,
325
+ },
326
+ ],
327
+ };
328
+ /**
329
+ * Version configuration for Security Admin Rule 2023-11-01
330
+ */
331
+ exports.SECURITY_ADMIN_RULE_VERSION_2023_11_01 = {
332
+ version: "2023-11-01",
333
+ schema: exports.SECURITY_ADMIN_RULE_SCHEMA_2023_11_01,
334
+ supportLevel: version_interfaces_1.VersionSupportLevel.MAINTENANCE,
335
+ releaseDate: "2023-11-01",
336
+ deprecationDate: undefined,
337
+ sunsetDate: undefined,
338
+ breakingChanges: [],
339
+ migrationGuide: "/docs/virtual-network-manager/migration-2023-11-01",
340
+ changeLog: [
341
+ {
342
+ changeType: "added",
343
+ description: "Stable release with core security admin rule features",
344
+ breaking: false,
345
+ },
346
+ ],
347
+ };
348
+ /**
349
+ * All supported Security Admin Rule versions for registration
350
+ */
351
+ exports.ALL_SECURITY_ADMIN_RULE_VERSIONS = [
352
+ exports.SECURITY_ADMIN_RULE_VERSION_2024_05_01,
353
+ exports.SECURITY_ADMIN_RULE_VERSION_2023_11_01,
354
+ ];
355
+ /**
356
+ * Resource type constant
357
+ */
358
+ exports.SECURITY_ADMIN_RULE_TYPE = "Microsoft.Network/networkManagers/securityAdminConfigurations/ruleCollections/rules";
359
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktYWRtaW4tcnVsZS1zY2hlbWFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLXZpcnR1YWxuZXR3b3JrbWFuYWdlci9saWIvc2VjdXJpdHktYWRtaW4tcnVsZS1zY2hlbWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILDJHQU80RTtBQWM1RSxnRkFBZ0Y7QUFDaEYsOEJBQThCO0FBQzlCLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLElBQUk7UUFDZCxXQUFXLEVBQUUsaUNBQWlDO1FBQzlDLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxRQUFRO2dCQUNyQyxPQUFPLEVBQUUsc0NBQXNDO2FBQ2hEO1lBQ0Q7Z0JBQ0UsUUFBUSxFQUFFLHVDQUFrQixDQUFDLGFBQWE7Z0JBQzFDLEtBQUssRUFBRSwrQ0FBK0M7Z0JBQ3RELE9BQU8sRUFDTCwwRkFBMEY7YUFDN0Y7U0FDRjtLQUNGO0lBQ0QsZ0JBQWdCLEVBQUU7UUFDaEIsUUFBUSxFQUFFLGlDQUFZLENBQUMsTUFBTTtRQUM3QixRQUFRLEVBQUUsSUFBSTtRQUNkLFdBQVcsRUFBRSwyQ0FBMkM7UUFDeEQsVUFBVSxFQUFFO1lBQ1Y7Z0JBQ0UsUUFBUSxFQUFFLHVDQUFrQixDQUFDLFFBQVE7Z0JBQ3JDLE9BQU8sRUFBRSxnQ0FBZ0M7YUFDMUM7U0FDRjtLQUNGO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsUUFBUSxFQUFFLGlDQUFZLENBQUMsTUFBTTtRQUM3QixRQUFRLEVBQUUsS0FBSztRQUNmLFdBQVcsRUFBRSx3Q0FBd0M7S0FDdEQ7SUFDRCxRQUFRLEVBQUU7UUFDUixRQUFRLEVBQUUsaUNBQVksQ0FBQyxNQUFNO1FBQzdCLFFBQVEs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QVBJIHNjaGVtYXMgZm9yIEF6dXJlIFZpcnR1YWwgTmV0d29yayBNYW5hZ2VyIFNlY3VyaXR5IEFkbWluIFJ1bGVzIGFjcm9zcyBhbGwgc3VwcG9ydGVkIHZlcnNpb25zXG4gKlxuICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIGNvbXBsZXRlIEFQSSBzY2hlbWFzIGZvciBNaWNyb3NvZnQuTmV0d29yay9uZXR3b3JrTWFuYWdlcnMvc2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb25zL3J1bGVDb2xsZWN0aW9ucy9ydWxlc1xuICogYWNyb3NzIGFsbCBzdXBwb3J0ZWQgQVBJIHZlcnNpb25zLiBUaGUgc2NoZW1hcyBhcmUgdXNlZCBieSB0aGUgQXphcGlSZXNvdXJjZVxuICogZnJhbWV3b3JrIGZvciB2YWxpZGF0aW9uLCB0cmFuc2Zvcm1hdGlvbiwgYW5kIHZlcnNpb24gbWFuYWdlbWVudC5cbiAqL1xuXG5pbXBvcnQge1xuICBBcGlTY2hlbWEsXG4gIFByb3BlcnR5RGVmaW5pdGlvbixcbiAgUHJvcGVydHlUeXBlLFxuICBWYWxpZGF0aW9uUnVsZVR5cGUsXG4gIFZlcnNpb25Db25maWcsXG4gIFZlcnNpb25TdXBwb3J0TGV2ZWwsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUEVTQ1JJUFQgSU5URVJGQUNFUyBGT1IgTkVTVEVEIE9CSkVDVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQWRkcmVzcyBwcmVmaXggaXRlbSBmb3Igc291cmNlcyBvciBkZXN0aW5hdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRyZXNzUHJlZml4SXRlbSB7XG4gIHJlYWRvbmx5IGFkZHJlc3NQcmVmaXg/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFkZHJlc3NQcmVmaXhUeXBlPzogXCJJUFByZWZpeFwiIHwgXCJTZXJ2aWNlVGFnXCI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT01NT04gUFJPUEVSVFkgREVGSU5JVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ29tbW9uIHByb3BlcnR5IGRlZmluaXRpb25zIHNoYXJlZCBhY3Jvc3MgYWxsIFNlY3VyaXR5IEFkbWluIFJ1bGUgdmVyc2lvbnNcbiAqL1xuY29uc3QgQ09NTU9OX1BST1BFUlRJRVM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEZWZpbml0aW9uIH0gPSB7XG4gIG5hbWU6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICBkZXNjcmlwdGlvbjogXCJOYW1lIG9mIHRoZSBzZWN1cml0eSBhZG1pbiBydWxlXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIlNlY3VyaXR5IGFkbWluIHJ1bGUgbmFtZSBpcyByZXF1aXJlZFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5QQVRURVJOX01BVENILFxuICAgICAgICB2YWx1ZTogXCJeW2EtekEtWjAtOV1bYS16QS1aMC05Ll8tXXswLDYyfVthLXpBLVowLTlfXSRcIixcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICBcIlNlY3VyaXR5IGFkbWluIHJ1bGUgbmFtZSBtdXN0IGJlIDItNjQgY2hhcnMsIGFscGhhbnVtZXJpYywgcGVyaW9kcywgdW5kZXJzY29yZXMsIGh5cGhlbnNcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgcnVsZUNvbGxlY3Rpb25JZDoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOiBcIlJlc291cmNlIElEIG9mIHRoZSBwYXJlbnQgUnVsZSBDb2xsZWN0aW9uXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIlJ1bGUgQ29sbGVjdGlvbiBJRCBpcyByZXF1aXJlZFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBkZXNjcmlwdGlvbjoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjogXCJEZXNjcmlwdGlvbiBvZiB0aGUgc2VjdXJpdHkgYWRtaW4gcnVsZVwiLFxuICB9LFxuICBwcmlvcml0eToge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuTlVNQkVSLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJQcmlvcml0eSBvZiB0aGUgcnVsZSAoMS00MDk2LCBsb3dlciBudW1iZXIgPSBoaWdoZXIgcHJpb3JpdHkpXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIlByaW9yaXR5IGlzIHJlcXVpcmVkXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlZBTFVFX1JBTkdFLFxuICAgICAgICB2YWx1ZTogeyBtaW46IDEsIG1heDogNDA5NiB9LFxuICAgICAgICBtZXNzYWdlOiBcIlByaW9yaXR5IG11c3QgYmUgYmV0d2VlbiAxIGFuZCA0MDk2XCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGFjdGlvbjoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFjdGlvbiB0byB0YWtlIChBbGxvdywgRGVueSwgb3IgQWx3YXlzQWxsb3cpXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIkFjdGlvbiBpcyByZXF1aXJlZFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5QQVRURVJOX01BVENILFxuICAgICAgICB2YWx1ZTogXCJeKEFsbG93fERlbnl8QWx3YXlzQWxsb3cpJFwiLFxuICAgICAgICBtZXNzYWdlOiBcIkFjdGlvbiBtdXN0IGJlICdBbGxvdycsICdEZW55Jywgb3IgJ0Fsd2F5c0FsbG93J1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBkaXJlY3Rpb246IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICBkZXNjcmlwdGlvbjogXCJEaXJlY3Rpb24gb2YgdHJhZmZpYyAoSW5ib3VuZCBvciBPdXRib3VuZClcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgIG1lc3NhZ2U6IFwiRGlyZWN0aW9uIGlzIHJlcXVpcmVkXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlBBVFRFUk5fTUFUQ0gsXG4gICAgICAgIHZhbHVlOiBcIl4oSW5ib3VuZHxPdXRib3VuZCkkXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiRGlyZWN0aW9uIG11c3QgYmUgJ0luYm91bmQnIG9yICdPdXRib3VuZCdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgcHJvdG9jb2w6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICBkZXNjcmlwdGlvbjogXCJQcm90b2NvbCAoVGNwLCBVZHAsIEljbXAsIEVzcCwgQWgsIG9yIEFueSlcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgIG1lc3NhZ2U6IFwiUHJvdG9jb2wgaXMgcmVxdWlyZWRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUEFUVEVSTl9NQVRDSCxcbiAgICAgICAgdmFsdWU6IFwiXihUY3B8VWRwfEljbXB8RXNwfEFofEFueSkkXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUHJvdG9jb2wgbXVzdCBiZSBUY3AsIFVkcCwgSWNtcCwgRXNwLCBBaCwgb3IgQW55XCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIHNvdXJjZVBvcnRSYW5nZXM6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjogXCJTb3VyY2UgcG9ydCByYW5nZXMgKGUuZy4sIFsnKiddLCBbJzgwJywgJzQ0MyddKVwiLFxuICB9LFxuICBkZXN0aW5hdGlvblBvcnRSYW5nZXM6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjogXCJEZXN0aW5hdGlvbiBwb3J0IHJhbmdlcyAoZS5nLiwgWycqJ10sIFsnMjInLCAnMzM4OSddKVwiLFxuICB9LFxuICBzb3VyY2VzOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5BUlJBWSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IFwiU291cmNlIGFkZHJlc3NlcyBvciBuZXR3b3JrIGdyb3Vwc1wiLFxuICB9LFxuICBkZXN0aW5hdGlvbnM6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjogXCJEZXN0aW5hdGlvbiBhZGRyZXNzZXMgb3IgbmV0d29yayBncm91cHNcIixcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBWRVJTSU9OLVNQRUNJRklDIFNDSEVNQVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQVBJIFNjaGVtYSBmb3IgU2VjdXJpdHkgQWRtaW4gUnVsZSB2ZXJzaW9uIDIwMjQtMDUtMDFcbiAqL1xuZXhwb3J0IGNvbnN0IFNFQ1VSSVRZX0FETUlOX1JVTEVfU0NIRU1BXzIwMjRfMDVfMDE6IEFwaVNjaGVtYSA9IHtcbiAgcmVzb3VyY2VUeXBlOlxuICAgIFwiTWljcm9zb2Z0Lk5ldHdvcmsvbmV0d29ya01hbmFnZXJzL3NlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9ucy9ydWxlQ29sbGVjdGlvbnMvcnVsZXNcIixcbiAgdmVyc2lvbjogXCIyMDI0LTA1LTAxXCIsXG4gIHByb3BlcnRpZXM6IHtcbiAgICAuLi5DT01NT05fUFJPUEVSVElFUyxcbiAgfSxcbiAgcmVxdWlyZWQ6IFtcbiAgICBcIm5hbWVcIixcbiAgICBcInJ1bGVDb2xsZWN0aW9uSWRcIixcbiAgICBcInByaW9yaXR5XCIsXG4gICAgXCJhY3Rpb25cIixcbiAgICBcImRpcmVjdGlvblwiLFxuICAgIFwicHJvdG9jb2xcIixcbiAgXSxcbiAgb3B0aW9uYWw6IFtcbiAgICBcImRlc2NyaXB0aW9uXCIsXG4gICAgXCJzb3VyY2VQb3J0UmFuZ2VzXCIsXG4gICAgXCJkZXN0aW5hdGlvblBvcnRSYW5nZXNcIixcbiAgICBcInNvdXJjZXNcIixcbiAgICBcImRlc3RpbmF0aW9uc1wiLFxuICBdLFxuICBkZXByZWNhdGVkOiBbXSxcbiAgdHJhbnNmb3JtYXRpb25SdWxlczoge30sXG4gIHZhbGlkYXRpb25SdWxlczogW1xuICAgIHtcbiAgICAgIHByb3BlcnR5OiBcIm5hbWVcIixcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICAgIG1lc3NhZ2U6IFwiU2VjdXJpdHkgYWRtaW4gcnVsZSBuYW1lIGlzIHJlcXVpcmVkXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvcGVydHk6IFwicnVsZUNvbGxlY3Rpb25JZFwiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJSdWxlIENvbGxlY3Rpb24gSUQgaXMgcmVxdWlyZWRcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogXCJwcmlvcml0eVwiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJQcmlvcml0eSBpcyByZXF1aXJlZFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3BlcnR5OiBcImFjdGlvblwiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJBY3Rpb24gaXMgcmVxdWlyZWRcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogXCJkaXJlY3Rpb25cIixcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICAgIG1lc3NhZ2U6IFwiRGlyZWN0aW9uIGlzIHJlcXVpcmVkXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvcGVydHk6IFwicHJvdG9jb2xcIixcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICAgIG1lc3NhZ2U6IFwiUHJvdG9jb2wgaXMgcmVxdWlyZWRcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgXSxcbn07XG5cbi8qKlxuICogQVBJIFNjaGVtYSBmb3IgU2VjdXJpdHkgQWRtaW4gUnVsZSB2ZXJzaW9uIDIwMjMtMTEtMDFcbiAqL1xuZXhwb3J0IGNvbnN0IFNFQ1VSSVRZX0FETUlOX1JVTEVfU0NIRU1BXzIwMjNfMTFfMDE6IEFwaVNjaGVtYSA9IHtcbiAgcmVzb3VyY2VUeXBlOlxuICAgIFwiTWljcm9zb2Z0Lk5ldHdvcmsvbmV0d29ya01hbmFnZXJzL3NlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9ucy9ydWxlQ29sbGVjdGlvbnMvcnVsZXNcIixcbiAgdmVyc2lvbjogXCIyMDIzLTExLTAxXCIsXG4gIHByb3BlcnRpZXM6IHtcbiAgICAuLi5DT01NT05fUFJPUEVSVElFUyxcbiAgfSxcbiAgcmVxdWlyZWQ6IFtcbiAgICBcIm5hbWVcIixcbiAgICBcInJ1bGVDb2xsZWN0aW9uSWRcIixcbiAgICBcInByaW9yaXR5XCIsXG4gICAgXCJhY3Rpb25cIixcbiAgICBcImRpcmVjdGlvblwiLFxuICAgIFwicHJvdG9jb2xcIixcbiAgXSxcbiAgb3B0aW9uYWw6IFtcbiAgICBcImRlc2NyaXB0aW9uXCIsXG4gICAgXCJzb3VyY2VQb3J0UmFuZ2VzXCIsXG4gICAgXCJkZXN0aW5hdGlvblBvcnRSYW5nZXNcIixcbiAgICBcInNvdXJjZXNcIixcbiAgICBcImRlc3RpbmF0aW9uc1wiLFxuICBdLFxuICBkZXByZWNhdGVkOiBbXSxcbiAgdHJhbnNmb3JtYXRpb25SdWxlczoge30sXG4gIHZhbGlkYXRpb25SdWxlczogW1xuICAgIHtcbiAgICAgIHByb3BlcnR5OiBcIm5hbWVcIixcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICAgIG1lc3NhZ2U6IFwiU2VjdXJpdHkgYWRtaW4gcnVsZSBuYW1lIGlzIHJlcXVpcmVkXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvcGVydHk6IFwicnVsZUNvbGxlY3Rpb25JZFwiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJSdWxlIENvbGxlY3Rpb24gSUQgaXMgcmVxdWlyZWRcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogXCJwcmlvcml0eVwiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJQcmlvcml0eSBpcyByZXF1aXJlZFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3BlcnR5OiBcImFjdGlvblwiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJBY3Rpb24gaXMgcmVxdWlyZWRcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogXCJkaXJlY3Rpb25cIixcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICAgIG1lc3NhZ2U6IFwiRGlyZWN0aW9uIGlzIHJlcXVpcmVkXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvcGVydHk6IFwicHJvdG9jb2xcIixcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICAgIG1lc3NhZ2U6IFwiUHJvdG9jb2wgaXMgcmVxdWlyZWRcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgXSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBWRVJTSU9OIENPTkZJR1VSQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFZlcnNpb24gY29uZmlndXJhdGlvbiBmb3IgU2VjdXJpdHkgQWRtaW4gUnVsZSAyMDI0LTA1LTAxXG4gKi9cbmV4cG9ydCBjb25zdCBTRUNVUklUWV9BRE1JTl9SVUxFX1ZFUlNJT05fMjAyNF8wNV8wMTogVmVyc2lvbkNvbmZpZyA9IHtcbiAgdmVyc2lvbjogXCIyMDI0LTA1LTAxXCIsXG4gIHNjaGVtYTogU0VDVVJJVFlfQURNSU5fUlVMRV9TQ0hFTUFfMjAyNF8wNV8wMSxcbiAgc3VwcG9ydExldmVsOiBWZXJzaW9uU3VwcG9ydExldmVsLkFDVElWRSxcbiAgcmVsZWFzZURhdGU6IFwiMjAyNC0wNS0wMVwiLFxuICBkZXByZWNhdGlvbkRhdGU6IHVuZGVmaW5lZCxcbiAgc3Vuc2V0RGF0ZTogdW5kZWZpbmVkLFxuICBicmVha2luZ0NoYW5nZXM6IFtdLFxuICBtaWdyYXRpb25HdWlkZTogXCIvZG9jcy92aXJ0dWFsLW5ldHdvcmstbWFuYWdlci9taWdyYXRpb24tMjAyNC0wNS0wMVwiLFxuICBjaGFuZ2VMb2c6IFtcbiAgICB7XG4gICAgICBjaGFuZ2VUeXBlOiBcImFkZGVkXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJMYXRlc3Qgc3RhYmxlIHJlbGVhc2Ugd2l0aCBmdWxsIHNlY3VyaXR5IGFkbWluIHJ1bGUgc3VwcG9ydFwiLFxuICAgICAgYnJlYWtpbmc6IGZhbHNlLFxuICAgIH0sXG4gIF0sXG59O1xuXG4vKipcbiAqIFZlcnNpb24gY29uZmlndXJhdGlvbiBmb3IgU2VjdXJpdHkgQWRtaW4gUnVsZSAyMDIzLTExLTAxXG4gKi9cbmV4cG9ydCBjb25zdCBTRUNVUklUWV9BRE1JTl9SVUxFX1ZFUlNJT05fMjAyM18xMV8wMTogVmVyc2lvbkNvbmZpZyA9IHtcbiAgdmVyc2lvbjogXCIyMDIzLTExLTAxXCIsXG4gIHNjaGVtYTogU0VDVVJJVFlfQURNSU5fUlVMRV9TQ0hFTUFfMjAyM18xMV8wMSxcbiAgc3VwcG9ydExldmVsOiBWZXJzaW9uU3VwcG9ydExldmVsLk1BSU5URU5BTkNFLFxuICByZWxlYXNlRGF0ZTogXCIyMDIzLTExLTAxXCIsXG4gIGRlcHJlY2F0aW9uRGF0ZTogdW5kZWZpbmVkLFxuICBzdW5zZXREYXRlOiB1bmRlZmluZWQsXG4gIGJyZWFraW5nQ2hhbmdlczogW10sXG4gIG1pZ3JhdGlvbkd1aWRlOiBcIi9kb2NzL3ZpcnR1YWwtbmV0d29yay1tYW5hZ2VyL21pZ3JhdGlvbi0yMDIzLTExLTAxXCIsXG4gIGNoYW5nZUxvZzogW1xuICAgIHtcbiAgICAgIGNoYW5nZVR5cGU6IFwiYWRkZWRcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlN0YWJsZSByZWxlYXNlIHdpdGggY29yZSBzZWN1cml0eSBhZG1pbiBydWxlIGZlYXR1cmVzXCIsXG4gICAgICBicmVha2luZzogZmFsc2UsXG4gICAgfSxcbiAgXSxcbn07XG5cbi8qKlxuICogQWxsIHN1cHBvcnRlZCBTZWN1cml0eSBBZG1pbiBSdWxlIHZlcnNpb25zIGZvciByZWdpc3RyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IEFMTF9TRUNVUklUWV9BRE1JTl9SVUxFX1ZFUlNJT05TOiBWZXJzaW9uQ29uZmlnW10gPSBbXG4gIFNFQ1VSSVRZX0FETUlOX1JVTEVfVkVSU0lPTl8yMDI0XzA1XzAxLFxuICBTRUNVUklUWV9BRE1JTl9SVUxFX1ZFUlNJT05fMjAyM18xMV8wMSxcbl07XG5cbi8qKlxuICogUmVzb3VyY2UgdHlwZSBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgU0VDVVJJVFlfQURNSU5fUlVMRV9UWVBFID1cbiAgXCJNaWNyb3NvZnQuTmV0d29yay9uZXR3b3JrTWFuYWdlcnMvc2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb25zL3J1bGVDb2xsZWN0aW9ucy9ydWxlc1wiO1xuIl19
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Azure Virtual Network Manager Security Admin Rule implementation using AzapiResource framework
3
+ *
4
+ * This class provides a unified implementation for individual security admin rules that define
5
+ * high-priority security policies. These rules are evaluated BEFORE traditional NSGs and can
6
+ * enforce organization-wide security requirements.
7
+ *
8
+ * Supported API Versions:
9
+ * - 2023-11-01 (Maintenance)
10
+ * - 2024-05-01 (Active, Latest)
11
+ *
12
+ * Features:
13
+ * - Automatic latest version resolution when no version is specified
14
+ * - Explicit version pinning for stability requirements
15
+ * - Schema-driven validation and transformation
16
+ * - Three action types: Allow, Deny, AlwaysAllow
17
+ * - Full backward compatibility
18
+ * - JSII compliance for multi-language support
19
+ */
20
+ import * as cdktf from "cdktf";
21
+ import { Construct } from "constructs";
22
+ import { AddressPrefixItem } from "./security-admin-rule-schemas";
23
+ import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
24
+ import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
25
+ /**
26
+ * Properties for the Azure Virtual Network Manager Security Admin Rule
27
+ *
28
+ * Extends AzapiResourceProps with Security Admin Rule specific properties
29
+ */
30
+ export interface SecurityAdminRuleProps extends AzapiResourceProps {
31
+ /**
32
+ * Resource ID of the parent Rule Collection
33
+ * @example "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.Network/networkManagers/vnm/securityAdminConfigurations/config/ruleCollections/collection"
34
+ */
35
+ readonly ruleCollectionId: string;
36
+ /**
37
+ * Optional description of the security admin rule
38
+ * @example "Block SSH access from internet"
39
+ */
40
+ readonly description?: string;
41
+ /**
42
+ * Priority of the rule (1-4096, lower number = higher priority)
43
+ * Rules with lower priority numbers are evaluated first
44
+ * @example 100
45
+ */
46
+ readonly priority: number;
47
+ /**
48
+ * Action to take when the rule matches
49
+ * - Allow: Allow traffic (NSG can still deny)
50
+ * - Deny: Deny traffic (stops evaluation)
51
+ * - AlwaysAllow: Force allow (overrides NSG denies)
52
+ * @example "Deny"
53
+ * @example "AlwaysAllow"
54
+ */
55
+ readonly action: "Allow" | "Deny" | "AlwaysAllow";
56
+ /**
57
+ * Direction of traffic this rule applies to
58
+ * @example "Inbound"
59
+ * @example "Outbound"
60
+ */
61
+ readonly direction: "Inbound" | "Outbound";
62
+ /**
63
+ * Protocol this rule applies to
64
+ * @example "Tcp"
65
+ * @example "Any"
66
+ */
67
+ readonly protocol: "Tcp" | "Udp" | "Icmp" | "Esp" | "Ah" | "Any";
68
+ /**
69
+ * Source port ranges
70
+ * Use ["*"] for all ports or specify ranges like ["80", "443", "8000-8999"]
71
+ * @default ["*"]
72
+ * @example ["*"]
73
+ * @example ["80", "443"]
74
+ */
75
+ readonly sourcePortRanges?: string[];
76
+ /**
77
+ * Destination port ranges
78
+ * Use ["*"] for all ports or specify ranges
79
+ * @default ["*"]
80
+ * @example ["22"]
81
+ * @example ["3389", "5985-5986"]
82
+ */
83
+ readonly destinationPortRanges?: string[];
84
+ /**
85
+ * Source addresses or network groups
86
+ * @example [{ addressPrefix: "*", addressPrefixType: "IPPrefix" }]
87
+ * @example [{ addressPrefix: "10.0.0.0/8", addressPrefixType: "IPPrefix" }]
88
+ */
89
+ readonly sources?: AddressPrefixItem[];
90
+ /**
91
+ * Destination addresses or network groups
92
+ * @example [{ addressPrefix: "*", addressPrefixType: "IPPrefix" }]
93
+ * @example [{ addressPrefix: "Internet", addressPrefixType: "ServiceTag" }]
94
+ */
95
+ readonly destinations?: AddressPrefixItem[];
96
+ /**
97
+ * The lifecycle rules to ignore changes
98
+ * @example ["tags"]
99
+ */
100
+ readonly ignoreChanges?: string[];
101
+ }
102
+ /**
103
+ * Properties for Security Admin Rule body
104
+ */
105
+ export interface SecurityAdminRuleProperties {
106
+ readonly description?: string;
107
+ readonly priority: number;
108
+ readonly action: string;
109
+ readonly direction: string;
110
+ readonly protocol: string;
111
+ readonly sourcePortRanges?: string[];
112
+ readonly destinationPortRanges?: string[];
113
+ readonly sources?: AddressPrefixItem[];
114
+ readonly destinations?: AddressPrefixItem[];
115
+ }
116
+ /**
117
+ * The resource body interface for Azure Security Admin Rule API calls
118
+ */
119
+ export interface SecurityAdminRuleBody {
120
+ readonly kind: "Custom";
121
+ readonly properties: SecurityAdminRuleProperties;
122
+ }
123
+ /**
124
+ * Azure Virtual Network Manager Security Admin Rule implementation
125
+ *
126
+ * Security admin rules define high-priority security policies that are evaluated BEFORE
127
+ * traditional Network Security Groups (NSGs). This enables centralized security enforcement
128
+ * that cannot be overridden by individual teams.
129
+ *
130
+ * Key concepts:
131
+ * - Priority: Lower numbers = higher priority (evaluated first)
132
+ * - Allow: Permits traffic, but NSG can still deny it
133
+ * - Deny: Blocks traffic immediately, no further evaluation
134
+ * - AlwaysAllow: Forces traffic to be allowed, overriding NSG denies
135
+ *
136
+ * @example
137
+ * // Block SSH from internet:
138
+ * const blockSSH = new SecurityAdminRule(this, "block-ssh", {
139
+ * name: "block-ssh-from-internet",
140
+ * ruleCollectionId: ruleCollection.id,
141
+ * description: "Block SSH access from internet",
142
+ * priority: 100,
143
+ * action: "Deny",
144
+ * direction: "Inbound",
145
+ * protocol: "Tcp",
146
+ * destinationPortRanges: ["22"],
147
+ * sources: [{ addressPrefix: "Internet", addressPrefixType: "ServiceTag" }],
148
+ * destinations: [{ addressPrefix: "*", addressPrefixType: "IPPrefix" }]
149
+ * });
150
+ *
151
+ * @example
152
+ * // Always allow monitoring traffic:
153
+ * const allowMonitoring = new SecurityAdminRule(this, "allow-monitoring", {
154
+ * name: "always-allow-monitoring",
155
+ * ruleCollectionId: ruleCollection.id,
156
+ * description: "Always allow traffic from monitoring systems",
157
+ * priority: 50,
158
+ * action: "AlwaysAllow",
159
+ * direction: "Inbound",
160
+ * protocol: "Any",
161
+ * sources: [{ addressPrefix: "10.0.0.0/24", addressPrefixType: "IPPrefix" }],
162
+ * destinations: [{ addressPrefix: "*", addressPrefixType: "IPPrefix" }]
163
+ * });
164
+ *
165
+ * @stability stable
166
+ */
167
+ export declare class SecurityAdminRule extends AzapiResource {
168
+ /**
169
+ * The input properties for this Security Admin Rule instance
170
+ */
171
+ readonly props: SecurityAdminRuleProps;
172
+ readonly idOutput: cdktf.TerraformOutput;
173
+ readonly nameOutput: cdktf.TerraformOutput;
174
+ readonly provisioningStateOutput: cdktf.TerraformOutput;
175
+ readonly resourceName: string;
176
+ /**
177
+ * Creates a new Azure Virtual Network Manager Security Admin Rule using the AzapiResource framework
178
+ *
179
+ * @param scope - The scope in which to define this construct
180
+ * @param id - The unique identifier for this instance
181
+ * @param props - Configuration properties for the Security Admin Rule
182
+ */
183
+ constructor(scope: Construct, id: string, props: SecurityAdminRuleProps);
184
+ /**
185
+ * Resolves the parent resource ID for the Security Admin Rule
186
+ * Security Admin Rules are scoped to Rule Collections
187
+ */
188
+ protected resolveParentId(props: any): string;
189
+ /**
190
+ * Gets the default API version to use when no explicit version is specified
191
+ */
192
+ protected defaultVersion(): string;
193
+ /**
194
+ * Gets the Azure resource type for Security Admin Rules
195
+ */
196
+ protected resourceType(): string;
197
+ /**
198
+ * Gets the API schema for the resolved version
199
+ */
200
+ protected apiSchema(): ApiSchema;
201
+ /**
202
+ * Creates the resource body for the Azure API call
203
+ */
204
+ protected createResourceBody(props: any): any;
205
+ /**
206
+ * Get the provisioning state of the Security Admin Rule
207
+ */
208
+ get provisioningState(): string;
209
+ /**
210
+ * Get the priority of the rule
211
+ */
212
+ get rulePriority(): number;
213
+ /**
214
+ * Get the action of the rule
215
+ */
216
+ get ruleAction(): "Allow" | "Deny" | "AlwaysAllow";
217
+ /**
218
+ * Applies ignore changes lifecycle rules if specified in props
219
+ */
220
+ private _applyIgnoreChanges;
221
+ }