@drunk-pulumi/azure 0.0.19

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 (386) hide show
  1. package/Aks/Helper.d.ts +43 -0
  2. package/Aks/Helper.js +72 -0
  3. package/Aks/Identity.d.ts +14 -0
  4. package/Aks/Identity.js +32 -0
  5. package/Aks/VmSetAutoScale/index.d.ts +16 -0
  6. package/Aks/VmSetAutoScale/index.js +132 -0
  7. package/Aks/VmSetMonitor/index.d.ts +12 -0
  8. package/Aks/VmSetMonitor/index.js +67 -0
  9. package/Aks/index.d.ts +100 -0
  10. package/Aks/index.js +558 -0
  11. package/Apim/ApiProduct/Api.d.ts +35 -0
  12. package/Apim/ApiProduct/Api.js +131 -0
  13. package/Apim/ApiProduct/OpenApi.d.ts +85 -0
  14. package/Apim/ApiProduct/OpenApi.js +3 -0
  15. package/Apim/ApiProduct/PolicyBuilder.d.ts +79 -0
  16. package/Apim/ApiProduct/PolicyBuilder.js +361 -0
  17. package/Apim/ApiProduct/Product.d.ts +8 -0
  18. package/Apim/ApiProduct/Product.js +63 -0
  19. package/Apim/ApiProduct/SwaggerHelper.d.ts +6 -0
  20. package/Apim/ApiProduct/SwaggerHelper.js +44 -0
  21. package/Apim/ApiProduct/index.d.ts +9 -0
  22. package/Apim/ApiProduct/index.js +22 -0
  23. package/Apim/Helpers.d.ts +0 -0
  24. package/Apim/Helpers.js +2 -0
  25. package/Apim/HookProxy/index.d.ts +20 -0
  26. package/Apim/HookProxy/index.js +27 -0
  27. package/Apim/index.d.ts +22 -0
  28. package/Apim/index.js +118 -0
  29. package/Apps/LogicApp.d.ts +12 -0
  30. package/Apps/LogicApp.js +19 -0
  31. package/Automation/AutoAccount.d.ts +5 -0
  32. package/Automation/AutoAccount.js +20 -0
  33. package/AzAd/B2C.d.ts +9 -0
  34. package/AzAd/B2C.js +38 -0
  35. package/AzAd/ConditionalPolicies/index.d.ts +0 -0
  36. package/AzAd/ConditionalPolicies/index.js +2 -0
  37. package/AzAd/EnvRoles.d.ts +12 -0
  38. package/AzAd/EnvRoles.js +62 -0
  39. package/AzAd/GraphDefinition.d.ts +14 -0
  40. package/AzAd/GraphDefinition.js +5136 -0
  41. package/AzAd/Group.d.ts +29 -0
  42. package/AzAd/Group.js +70 -0
  43. package/AzAd/Helper.d.ts +18 -0
  44. package/AzAd/Helper.js +37 -0
  45. package/AzAd/Identities/AzDevOps.d.ts +23 -0
  46. package/AzAd/Identities/AzDevOps.js +61 -0
  47. package/AzAd/Identities/AzUserAdRevertSync.d.ts +14 -0
  48. package/AzAd/Identities/AzUserAdRevertSync.js +18 -0
  49. package/AzAd/Identity.d.ts +51 -0
  50. package/AzAd/Identity.js +133 -0
  51. package/AzAd/ManagedIdentity.d.ts +6 -0
  52. package/AzAd/ManagedIdentity.js +23 -0
  53. package/AzAd/Role.d.ts +19 -0
  54. package/AzAd/Role.js +25 -0
  55. package/AzAd/RoleAssignment.d.ts +79 -0
  56. package/AzAd/RoleAssignment.js +48 -0
  57. package/AzAd/RolesBuiltIn.d.ts +62 -0
  58. package/AzAd/RolesBuiltIn.js +13841 -0
  59. package/Cdn/index.d.ts +11 -0
  60. package/Cdn/index.js +47 -0
  61. package/Certificate/index.d.ts +41 -0
  62. package/Certificate/index.js +156 -0
  63. package/Certificate/p12.d.ts +5 -0
  64. package/Certificate/p12.js +37 -0
  65. package/Common/AppConfigs/dotnetConfig.d.ts +15 -0
  66. package/Common/AppConfigs/dotnetConfig.js +20 -0
  67. package/Common/AutoTags.d.ts +1 -0
  68. package/Common/AutoTags.js +24 -0
  69. package/Common/AzureEnv.d.ts +37 -0
  70. package/Common/AzureEnv.js +94 -0
  71. package/Common/ConfigHelper.d.ts +5 -0
  72. package/Common/ConfigHelper.js +14 -0
  73. package/Common/GlobalEnv.d.ts +14 -0
  74. package/Common/GlobalEnv.js +38 -0
  75. package/Common/Helpers.d.ts +10 -0
  76. package/Common/Helpers.js +30 -0
  77. package/Common/Location.d.ts +4 -0
  78. package/Common/Location.js +23 -0
  79. package/Common/LocationBuiltIn.d.ts +81 -0
  80. package/Common/LocationBuiltIn.js +1925 -0
  81. package/Common/Naming/index.d.ts +62 -0
  82. package/Common/Naming/index.js +146 -0
  83. package/Common/ResourceEnv.d.ts +16 -0
  84. package/Common/ResourceEnv.js +29 -0
  85. package/Common/StackEnv.d.ts +4 -0
  86. package/Common/StackEnv.js +22 -0
  87. package/Common/index.d.ts +5 -0
  88. package/Common/index.js +9 -0
  89. package/ContainerRegistry/Helper.d.ts +23 -0
  90. package/ContainerRegistry/Helper.js +47 -0
  91. package/ContainerRegistry/index.d.ts +28 -0
  92. package/ContainerRegistry/index.js +103 -0
  93. package/Core/Helper.d.ts +16 -0
  94. package/Core/Helper.js +37 -0
  95. package/Core/KeyGenetators.d.ts +33 -0
  96. package/Core/KeyGenetators.js +66 -0
  97. package/Core/Locker.d.ts +13 -0
  98. package/Core/Locker.js +14 -0
  99. package/Core/Random.d.ts +40 -0
  100. package/Core/Random.js +83 -0
  101. package/Core/ResourceCreator.d.ts +17 -0
  102. package/Core/ResourceCreator.js +48 -0
  103. package/Core/ResourceGroup.d.ts +13 -0
  104. package/Core/ResourceGroup.js +45 -0
  105. package/CosmosDb/index.d.ts +33 -0
  106. package/CosmosDb/index.js +129 -0
  107. package/CustomRoles/index.d.ts +5 -0
  108. package/CustomRoles/index.js +27 -0
  109. package/IOT/Hub/index.d.ts +32 -0
  110. package/IOT/Hub/index.js +208 -0
  111. package/KeyVault/CustomHelper.d.ts +35 -0
  112. package/KeyVault/CustomHelper.js +40 -0
  113. package/KeyVault/Helper.d.ts +33 -0
  114. package/KeyVault/Helper.js +58 -0
  115. package/KeyVault/VaultAccess.d.ts +15 -0
  116. package/KeyVault/VaultAccess.js +47 -0
  117. package/KeyVault/VaultPermissions.d.ts +26 -0
  118. package/KeyVault/VaultPermissions.js +169 -0
  119. package/KeyVault/index.d.ts +28 -0
  120. package/KeyVault/index.js +136 -0
  121. package/KubeX/AcrSecret.d.ts +15 -0
  122. package/KubeX/AcrSecret.js +31 -0
  123. package/KubeX/Apps/AstroPage.d.ts +12 -0
  124. package/KubeX/Apps/AstroPage.js +33 -0
  125. package/KubeX/Apps/KafKa.d.ts +6 -0
  126. package/KubeX/Apps/KafKa.js +13 -0
  127. package/KubeX/Apps/Nobelium.d.ts +13 -0
  128. package/KubeX/Apps/Nobelium.js +37 -0
  129. package/KubeX/Apps/Wikijs.d.ts +30 -0
  130. package/KubeX/Apps/Wikijs.js +54 -0
  131. package/KubeX/Apps/WordPress.d.ts +24 -0
  132. package/KubeX/Apps/WordPress.js +55 -0
  133. package/KubeX/Apps/YarpProxy/index.d.ts +17 -0
  134. package/KubeX/Apps/YarpProxy/index.js +107 -0
  135. package/KubeX/Apps/YarpProxy/type.d.ts +55 -0
  136. package/KubeX/Apps/YarpProxy/type.js +3 -0
  137. package/KubeX/CertHelper.d.ts +1 -0
  138. package/KubeX/CertHelper.js +9 -0
  139. package/KubeX/CertImports.d.ts +19 -0
  140. package/KubeX/CertImports.js +70 -0
  141. package/KubeX/CloudFlare/CertCreator.d.ts +19 -0
  142. package/KubeX/CloudFlare/CertCreator.js +90 -0
  143. package/KubeX/CloudFlare/CertImports.d.ts +17 -0
  144. package/KubeX/CloudFlare/CertImports.js +34 -0
  145. package/KubeX/CloudFlare/DynamicDns.d.ts +21 -0
  146. package/KubeX/CloudFlare/DynamicDns.js +39 -0
  147. package/KubeX/CloudFlare/Tunnel-Helm.d.ts +17 -0
  148. package/KubeX/CloudFlare/Tunnel-Helm.js +12 -0
  149. package/KubeX/CloudFlare/Tunnel.d.ts +23 -0
  150. package/KubeX/CloudFlare/Tunnel.js +54 -0
  151. package/KubeX/CloudFlare/index.d.ts +13 -0
  152. package/KubeX/CloudFlare/index.js +36 -0
  153. package/KubeX/Clusters/K3s/AutoUpgradeController/index.d.ts +6 -0
  154. package/KubeX/Clusters/K3s/AutoUpgradeController/index.js +60 -0
  155. package/KubeX/ConfigSecret.d.ts +24 -0
  156. package/KubeX/ConfigSecret.js +38 -0
  157. package/KubeX/Core/CertManager/index.d.ts +24 -0
  158. package/KubeX/Core/CertManager/index.js +96 -0
  159. package/KubeX/Core/KsCertSecret.d.ts +12 -0
  160. package/KubeX/Core/KsCertSecret.js +22 -0
  161. package/KubeX/Core/KsSecret.d.ts +9 -0
  162. package/KubeX/Core/KsSecret.js +12 -0
  163. package/KubeX/Core/LoadBalancer/MetalLB.d.ts +7 -0
  164. package/KubeX/Core/LoadBalancer/MetalLB.js +21 -0
  165. package/KubeX/Core/Monitoring/index.d.ts +22 -0
  166. package/KubeX/Core/Monitoring/index.js +322 -0
  167. package/KubeX/Core/Namespace.d.ts +12 -0
  168. package/KubeX/Core/Namespace.js +41 -0
  169. package/KubeX/Core/Nginx/index.d.ts +60 -0
  170. package/KubeX/Core/Nginx/index.js +109 -0
  171. package/KubeX/Core/OAuthProxy/index.d.ts +0 -0
  172. package/KubeX/Core/OAuthProxy/index.js +3 -0
  173. package/KubeX/Core/ResourceQuota.d.ts +12 -0
  174. package/KubeX/Core/ResourceQuota.js +13 -0
  175. package/KubeX/Core/SecurityRules.d.ts +34 -0
  176. package/KubeX/Core/SecurityRules.js +93 -0
  177. package/KubeX/Core/StorageClass/azureBlob.d.ts +20 -0
  178. package/KubeX/Core/StorageClass/azureBlob.js +77 -0
  179. package/KubeX/Core/StorageClass/azureFile.d.ts +17 -0
  180. package/KubeX/Core/StorageClass/azureFile.js +45 -0
  181. package/KubeX/Core/StorageClass/index.d.ts +13 -0
  182. package/KubeX/Core/StorageClass/index.js +25 -0
  183. package/KubeX/Core/index.d.ts +57 -0
  184. package/KubeX/Core/index.js +94 -0
  185. package/KubeX/Databases/MariaDb.d.ts +11 -0
  186. package/KubeX/Databases/MariaDb.js +39 -0
  187. package/KubeX/Databases/MySql.V2.d.ts +11 -0
  188. package/KubeX/Databases/MySql.V2.js +40 -0
  189. package/KubeX/Databases/MySql.d.ts +13 -0
  190. package/KubeX/Databases/MySql.js +55 -0
  191. package/KubeX/Databases/PostgreSql/PostgreSQL-HA.d.ts +10 -0
  192. package/KubeX/Databases/PostgreSql/PostgreSQL-HA.js +47 -0
  193. package/KubeX/Databases/PostgreSql/PostgreSQL.d.ts +10 -0
  194. package/KubeX/Databases/PostgreSql/PostgreSQL.js +51 -0
  195. package/KubeX/Databases/PostgreSql/PostgreSql.v1.d.ts +13 -0
  196. package/KubeX/Databases/PostgreSql/PostgreSql.v1.js +56 -0
  197. package/KubeX/Databases/PostgreSql/index.d.ts +17 -0
  198. package/KubeX/Databases/PostgreSql/index.js +6 -0
  199. package/KubeX/Databases/RedisCache.d.ts +14 -0
  200. package/KubeX/Databases/RedisCache.js +65 -0
  201. package/KubeX/Databases/SqlServer.d.ts +15 -0
  202. package/KubeX/Databases/SqlServer.js +77 -0
  203. package/KubeX/Deployment/PodAutoscaler.d.ts +14 -0
  204. package/KubeX/Deployment/PodAutoscaler.js +51 -0
  205. package/KubeX/Deployment/index.d.ts +136 -0
  206. package/KubeX/Deployment/index.js +306 -0
  207. package/KubeX/Helpers.d.ts +4 -0
  208. package/KubeX/Helpers.js +17 -0
  209. package/KubeX/Ingress/AppGatewayIngress.d.ts +2 -0
  210. package/KubeX/Ingress/AppGatewayIngress.js +4 -0
  211. package/KubeX/Ingress/Conts.d.ts +13 -0
  212. package/KubeX/Ingress/Conts.js +18 -0
  213. package/KubeX/Ingress/NginxIngress.d.ts +3 -0
  214. package/KubeX/Ingress/NginxIngress.js +186 -0
  215. package/KubeX/Ingress/NginxProxy.d.ts +21 -0
  216. package/KubeX/Ingress/NginxProxy.js +43 -0
  217. package/KubeX/Ingress/TraefikIngress/CustomHeader.d.ts +15 -0
  218. package/KubeX/Ingress/TraefikIngress/CustomHeader.js +15 -0
  219. package/KubeX/Ingress/TraefikIngress/index.d.ts +11 -0
  220. package/KubeX/Ingress/TraefikIngress/index.js +95 -0
  221. package/KubeX/Ingress/index.d.ts +5 -0
  222. package/KubeX/Ingress/index.js +12 -0
  223. package/KubeX/Ingress/type.d.ts +82 -0
  224. package/KubeX/Ingress/type.js +3 -0
  225. package/KubeX/Providers/index.d.ts +8 -0
  226. package/KubeX/Providers/index.js +15 -0
  227. package/KubeX/Storage/Longhorn/index.d.ts +15 -0
  228. package/KubeX/Storage/Longhorn/index.js +54 -0
  229. package/KubeX/Storage/index.d.ts +25 -0
  230. package/KubeX/Storage/index.js +79 -0
  231. package/KubeX/Tools/AWS/LocalStack.d.ts +7 -0
  232. package/KubeX/Tools/AWS/LocalStack.js +29 -0
  233. package/KubeX/Tools/AWS/S3.d.ts +6 -0
  234. package/KubeX/Tools/AWS/S3.js +44 -0
  235. package/KubeX/Tools/AWS/index.d.ts +7 -0
  236. package/KubeX/Tools/AWS/index.js +14 -0
  237. package/KubeX/Tools/AppHealthzMonitor.d.ts +18 -0
  238. package/KubeX/Tools/AppHealthzMonitor.js +52 -0
  239. package/KubeX/Tools/ArgoCD/index.d.ts +17 -0
  240. package/KubeX/Tools/ArgoCD/index.js +131 -0
  241. package/KubeX/Tools/Dapr/Storage.d.ts +66 -0
  242. package/KubeX/Tools/Dapr/Storage.js +70 -0
  243. package/KubeX/Tools/Dapr/index.d.ts +10 -0
  244. package/KubeX/Tools/Dapr/index.js +31 -0
  245. package/KubeX/Tools/Echo-App.d.ts +3 -0
  246. package/KubeX/Tools/Echo-App.js +21 -0
  247. package/KubeX/Tools/Gitea/GiteaRepo.d.ts +72 -0
  248. package/KubeX/Tools/Gitea/GiteaRepo.js +184 -0
  249. package/KubeX/Tools/Gitea/GiteaRunner.d.ts +11 -0
  250. package/KubeX/Tools/Gitea/GiteaRunner.js +37 -0
  251. package/KubeX/Tools/Gitea/GiteaRunner.v1.d.ts +11 -0
  252. package/KubeX/Tools/Gitea/GiteaRunner.v1.js +123 -0
  253. package/KubeX/Tools/HarborRepo.d.ts +29 -0
  254. package/KubeX/Tools/HarborRepo.js +78 -0
  255. package/KubeX/Tools/HelloWorld.d.ts +3 -0
  256. package/KubeX/Tools/HelloWorld.js +21 -0
  257. package/KubeX/Tools/KubeCleanup.d.ts +9 -0
  258. package/KubeX/Tools/KubeCleanup.js +34 -0
  259. package/KubeX/Tools/NoIp.d.ts +13 -0
  260. package/KubeX/Tools/NoIp.js +24 -0
  261. package/KubeX/Tools/OpenLDAP/index.d.ts +12 -0
  262. package/KubeX/Tools/OpenLDAP/index.js +56 -0
  263. package/KubeX/Tools/OutlineVpn/index.d.ts +25 -0
  264. package/KubeX/Tools/OutlineVpn/index.js +256 -0
  265. package/KubeX/Tools/SqlPad.d.ts +29 -0
  266. package/KubeX/Tools/SqlPad.js +133 -0
  267. package/KubeX/Tools/ToolPod.d.ts +10 -0
  268. package/KubeX/Tools/ToolPod.js +40 -0
  269. package/KubeX/Tools/UptimeKuma.d.ts +6 -0
  270. package/KubeX/Tools/UptimeKuma.js +38 -0
  271. package/KubeX/Tools/index.d.ts +27 -0
  272. package/KubeX/Tools/index.js +35 -0
  273. package/KubeX/VairableResolvers/index.d.ts +15 -0
  274. package/KubeX/VairableResolvers/index.js +49 -0
  275. package/KubeX/kx/index.d.ts +114 -0
  276. package/KubeX/kx/index.js +423 -0
  277. package/KubeX/types.d.ts +49 -0
  278. package/KubeX/types.js +3 -0
  279. package/Logs/AppInsight.d.ts +16 -0
  280. package/Logs/AppInsight.js +48 -0
  281. package/Logs/Helpers.d.ts +50 -0
  282. package/Logs/Helpers.js +95 -0
  283. package/Logs/LogAnalytics.d.ts +17 -0
  284. package/Logs/LogAnalytics.js +54 -0
  285. package/Logs/WebTest.d.ts +13 -0
  286. package/Logs/WebTest.js +68 -0
  287. package/Logs/index.d.ts +42 -0
  288. package/Logs/index.js +69 -0
  289. package/MySql/index.d.ts +20 -0
  290. package/MySql/index.js +93 -0
  291. package/Postgresql/index.d.ts +20 -0
  292. package/Postgresql/index.js +93 -0
  293. package/ReadMe.md +36 -0
  294. package/RedisCache/index.d.ts +9 -0
  295. package/RedisCache/index.js +79 -0
  296. package/ServiceBus/ServiceBusHelper.d.ts +21 -0
  297. package/ServiceBus/ServiceBusHelper.js +35 -0
  298. package/ServiceBus/index.d.ts +98 -0
  299. package/ServiceBus/index.js +396 -0
  300. package/SignalR/index.d.ts +20 -0
  301. package/SignalR/index.js +114 -0
  302. package/Sql/Auditing.d.ts +0 -0
  303. package/Sql/Auditing.js +2 -0
  304. package/Sql/Helper.d.ts +9 -0
  305. package/Sql/Helper.js +11 -0
  306. package/Sql/SqlDb.d.ts +14 -0
  307. package/Sql/SqlDb.js +42 -0
  308. package/Sql/index.d.ts +44 -0
  309. package/Sql/index.js +236 -0
  310. package/Storage/CdnEndpoint.d.ts +12 -0
  311. package/Storage/CdnEndpoint.js +62 -0
  312. package/Storage/CdnRules.d.ts +6 -0
  313. package/Storage/CdnRules.js +134 -0
  314. package/Storage/Helper.d.ts +28 -0
  315. package/Storage/Helper.js +66 -0
  316. package/Storage/ManagementRules.d.ts +70 -0
  317. package/Storage/ManagementRules.js +32 -0
  318. package/Storage/index.d.ts +55 -0
  319. package/Storage/index.js +264 -0
  320. package/VM/index.d.ts +37 -0
  321. package/VM/index.js +138 -0
  322. package/VNet/Bastion.d.ts +8 -0
  323. package/VNet/Bastion.js +30 -0
  324. package/VNet/Firewall.d.ts +27 -0
  325. package/VNet/Firewall.js +87 -0
  326. package/VNet/FirewallPolicies/AksFirewallPolicy.d.ts +20 -0
  327. package/VNet/FirewallPolicies/AksFirewallPolicy.js +241 -0
  328. package/VNet/FirewallPolicies/CloudPCFirewallPolicy.d.ts +14 -0
  329. package/VNet/FirewallPolicies/CloudPCFirewallPolicy.js +303 -0
  330. package/VNet/FirewallPolicy.d.ts +28 -0
  331. package/VNet/FirewallPolicy.js +110 -0
  332. package/VNet/FirewallRules/AksFirewallRules.d.ts +24 -0
  333. package/VNet/FirewallRules/AksFirewallRules.js +250 -0
  334. package/VNet/FirewallRules/DefaultRules.d.ts +2 -0
  335. package/VNet/FirewallRules/DefaultRules.js +23 -0
  336. package/VNet/FirewallRules/types.d.ts +20 -0
  337. package/VNet/FirewallRules/types.js +5 -0
  338. package/VNet/GlobalNetworkPeering.d.ts +9 -0
  339. package/VNet/GlobalNetworkPeering.js +17 -0
  340. package/VNet/Helper.d.ts +33 -0
  341. package/VNet/Helper.js +86 -0
  342. package/VNet/IpAddress.d.ts +17 -0
  343. package/VNet/IpAddress.js +38 -0
  344. package/VNet/IpAddressPrefix.d.ts +22 -0
  345. package/VNet/IpAddressPrefix.js +42 -0
  346. package/VNet/NSGRules/AzADService.d.ts +10 -0
  347. package/VNet/NSGRules/AzADService.js +45 -0
  348. package/VNet/NetworkPeering.d.ts +10 -0
  349. package/VNet/NetworkPeering.js +29 -0
  350. package/VNet/PrivateDns.d.ts +33 -0
  351. package/VNet/PrivateDns.js +64 -0
  352. package/VNet/PrivateEndpoint.d.ts +9 -0
  353. package/VNet/PrivateEndpoint.js +71 -0
  354. package/VNet/PublicDns.d.ts +21 -0
  355. package/VNet/PublicDns.js +59 -0
  356. package/VNet/RouteTable.d.ts +13 -0
  357. package/VNet/RouteTable.js +23 -0
  358. package/VNet/SecurityGroup.d.ts +8 -0
  359. package/VNet/SecurityGroup.js +13 -0
  360. package/VNet/Subnet.d.ts +26 -0
  361. package/VNet/Subnet.js +48 -0
  362. package/VNet/VirtualWAN.d.ts +25 -0
  363. package/VNet/VirtualWAN.js +40 -0
  364. package/VNet/Vnet.d.ts +51 -0
  365. package/VNet/Vnet.js +196 -0
  366. package/VNet/index.d.ts +65 -0
  367. package/VNet/index.js +198 -0
  368. package/Web/AppCertOrder.d.ts +16 -0
  369. package/Web/AppCertOrder.js +34 -0
  370. package/Web/AppConfig.d.ts +16 -0
  371. package/Web/AppConfig.js +79 -0
  372. package/Web/AppGateway.d.ts +15 -0
  373. package/Web/AppGateway.js +32 -0
  374. package/Web/FuncApp.d.ts +12 -0
  375. package/Web/FuncApp.js +24 -0
  376. package/Web/Helpers.d.ts +6 -0
  377. package/Web/Helpers.js +36 -0
  378. package/Web/WebAppPlan.d.ts +7 -0
  379. package/Web/WebAppPlan.js +26 -0
  380. package/Web/types.d.ts +169 -0
  381. package/Web/types.js +3 -0
  382. package/package.json +34 -0
  383. package/types.d.ts +69 -0
  384. package/types.js +3 -0
  385. package/z_tests/_tools/Mocks.d.ts +2 -0
  386. package/z_tests/_tools/Mocks.js +47 -0
package/Sql/index.d.ts ADDED
@@ -0,0 +1,44 @@
1
+ import { Input, Output } from '@pulumi/pulumi';
2
+ import { EnvRoleNamesType } from '../AzAd/EnvRoles';
3
+ import { BasicResourceArgs, BasicResourceResultProps, KeyVaultInfo, PrivateLinkProps } from '../types';
4
+ import { SqlDbProps } from './SqlDb';
5
+ type ElasticPoolCapacityProps = 50 | 100 | 200 | 300 | 400 | 800 | 1200;
6
+ interface Props extends BasicResourceArgs {
7
+ vaultInfo?: KeyVaultInfo;
8
+ /** if Auth is not provided it will be auto generated */
9
+ auth: {
10
+ envRoleNames?: EnvRoleNamesType;
11
+ /** create an Admin group on AzAD for SQL accessing.*/
12
+ enableAdAdministrator?: boolean;
13
+ azureAdOnlyAuthentication?: boolean;
14
+ adminLogin: Input<string>;
15
+ password: Input<string>;
16
+ };
17
+ elasticPool?: {
18
+ name: 'Standard' | 'Basic';
19
+ capacity: ElasticPoolCapacityProps;
20
+ };
21
+ databases: Array<Omit<SqlDbProps, 'sqlServerName' | 'group' | 'elasticPoolId' | 'dependsOn'>>;
22
+ network?: {
23
+ acceptAllInternetConnect?: boolean;
24
+ subnetId?: Input<string>;
25
+ ipAddresses?: Input<string>[];
26
+ /** To enable Private Link need to ensure the subnetId is provided. */
27
+ privateLink?: Omit<PrivateLinkProps, 'subnetId'>;
28
+ };
29
+ vulnerabilityAssessment?: {
30
+ alertEmails: Array<string>;
31
+ logStorageId?: Input<string>;
32
+ storageAccessKey: Input<string>;
33
+ storageEndpoint: Input<string>;
34
+ };
35
+ lock?: boolean;
36
+ }
37
+ declare const _default: ({ name, auth, group, elasticPool, databases, vaultInfo, network, vulnerabilityAssessment, lock, }: Props) => {
38
+ name: string;
39
+ resource: import("@pulumi/azure-native/sql/server").Server;
40
+ elasticPool: BasicResourceResultProps<import("@pulumi/azure-native/sql/elasticPool").ElasticPool> | undefined;
41
+ databases: BasicResourceResultProps<import("@pulumi/azure-native/sql/database").Database>[] | undefined;
42
+ adminGroup: Output<import("@pulumi/pulumi").UnwrappedObject<import("@pulumi/azuread").GetGroupResult>> | Output<import("@pulumi/azuread/group").Group> | undefined;
43
+ };
44
+ export default _default;
package/Sql/index.js ADDED
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const sql = require("@pulumi/azure-native/sql");
4
+ const pulumi_1 = require("@pulumi/pulumi");
5
+ const Group_1 = require("../AzAd/Group");
6
+ const RoleAssignment_1 = require("../AzAd/RoleAssignment");
7
+ const AzureEnv_1 = require("../Common/AzureEnv");
8
+ const Naming_1 = require("../Common/Naming");
9
+ const Locker_1 = require("../Core/Locker");
10
+ const Helper_1 = require("../VNet/Helper");
11
+ const PrivateEndpoint_1 = require("../VNet/PrivateEndpoint");
12
+ const SqlDb_1 = require("./SqlDb");
13
+ const CustomHelper_1 = require("../KeyVault/CustomHelper");
14
+ const Role_1 = require("../AzAd/Role");
15
+ const createElasticPool = ({ group, name, sqlName,
16
+ //Minimum is 50 GD
17
+ maxSizeBytesGb = 50, sku = { name: AzureEnv_1.isPrd ? 'Standard' : 'Basic', capacity: 50 }, lock = true, }) => {
18
+ //Create Sql Elastic
19
+ const elasticName = (0, Naming_1.getElasticPoolName)(name);
20
+ const ep = new sql.ElasticPool(elasticName, {
21
+ elasticPoolName: elasticName,
22
+ serverName: sqlName,
23
+ ...group,
24
+ maxSizeBytes: AzureEnv_1.isPrd ? maxSizeBytesGb * 1024 * 1024 * 1024 : undefined,
25
+ sku: {
26
+ name: `${sku.name}Pool`,
27
+ tier: sku.name,
28
+ capacity: sku.capacity,
29
+ },
30
+ perDatabaseSettings: {
31
+ minCapacity: 0,
32
+ maxCapacity: sku.name === 'Basic' ? 5 : sku.capacity,
33
+ },
34
+ //licenseType: sql.ElasticPoolLicenseType.BasePrice,
35
+ //zoneRedundant: isPrd,
36
+ });
37
+ if (lock) {
38
+ (0, Locker_1.default)({ name, resourceId: ep.id, dependsOn: ep });
39
+ }
40
+ return { name: elasticName, resource: ep };
41
+ };
42
+ exports.default = ({ name, auth, group, elasticPool, databases, vaultInfo, network, vulnerabilityAssessment, lock = true, }) => {
43
+ const sqlName = (0, Naming_1.getSqlServerName)(name);
44
+ // if (vaultInfo && !auth) {
45
+ // const login = await randomLogin({ name, loginPrefix: 'sql', vaultInfo });
46
+ // auth = {
47
+ // enableAdAdministrator: true,
48
+ // adminLogin: login.userName,
49
+ // password: login.password,
50
+ // };
51
+ // }
52
+ const adminGroup = auth?.enableAdAdministrator
53
+ ? auth.envRoleNames
54
+ ? (0, Group_1.getAdGroup)(auth.envRoleNames.admin)
55
+ : (0, Role_1.default)({ env: AzureEnv_1.currentEnv, roleName: 'ADMIN', appName: 'SQL' })
56
+ : undefined;
57
+ const ignoreChanges = ['administratorLogin', 'administrators'];
58
+ if (auth.azureAdOnlyAuthentication)
59
+ ignoreChanges.push('administratorLoginPassword');
60
+ const sqlServer = new sql.Server(sqlName, {
61
+ serverName: sqlName,
62
+ ...group,
63
+ version: '12.0',
64
+ minimalTlsVersion: '1.2',
65
+ identity: { type: 'SystemAssigned' },
66
+ administratorLogin: auth?.adminLogin,
67
+ administratorLoginPassword: auth.azureAdOnlyAuthentication
68
+ ? undefined
69
+ : auth?.password,
70
+ administrators: auth?.enableAdAdministrator && adminGroup
71
+ ? {
72
+ administratorType: sql.AdministratorType.ActiveDirectory,
73
+ azureADOnlyAuthentication: auth.azureAdOnlyAuthentication,
74
+ principalType: sql.PrincipalType.Group,
75
+ tenantId: AzureEnv_1.tenantId,
76
+ sid: adminGroup.objectId,
77
+ login: adminGroup.displayName,
78
+ }
79
+ : undefined,
80
+ publicNetworkAccess: network?.privateLink
81
+ ? sql.ServerNetworkAccessFlag.Disabled
82
+ : sql.ServerNetworkAccessFlag.Enabled,
83
+ tags: AzureEnv_1.defaultTags,
84
+ }, {
85
+ ignoreChanges,
86
+ protect: lock,
87
+ });
88
+ if (lock) {
89
+ (0, Locker_1.default)({ name: sqlName, resourceId: sqlServer.id, dependsOn: sqlServer });
90
+ }
91
+ const ep = elasticPool
92
+ ? createElasticPool({
93
+ name,
94
+ group,
95
+ sqlName: sqlServer.name,
96
+ sku: elasticPool,
97
+ })
98
+ : undefined;
99
+ if (network?.subnetId) {
100
+ if (network.privateLink) {
101
+ (0, PrivateEndpoint_1.default)({
102
+ group,
103
+ name,
104
+ resourceId: sqlServer.id,
105
+ privateDnsZoneName: 'privatelink.database.windows.net',
106
+ ...network.privateLink,
107
+ subnetId: network.subnetId,
108
+ linkServiceGroupIds: ['sqlServer'],
109
+ });
110
+ }
111
+ else {
112
+ //Link to Vnet
113
+ new sql.VirtualNetworkRule(sqlName, {
114
+ virtualNetworkRuleName: `${sqlName}-vnetRule`,
115
+ serverName: sqlServer.name,
116
+ ...group,
117
+ virtualNetworkSubnetId: network.subnetId,
118
+ ignoreMissingVnetServiceEndpoint: false,
119
+ });
120
+ }
121
+ }
122
+ //Allow Public Ip Accessing
123
+ if (network?.acceptAllInternetConnect) {
124
+ new sql.FirewallRule('accept-all-connection', {
125
+ firewallRuleName: 'accept-all-connection',
126
+ serverName: sqlServer.name,
127
+ ...group,
128
+ startIpAddress: '0.0.0.0',
129
+ endIpAddress: '255.255.255.255',
130
+ });
131
+ }
132
+ else if (network?.ipAddresses) {
133
+ (0, pulumi_1.all)(network.ipAddresses).apply((ips) => (0, Helper_1.convertToIpRange)(ips).map((ip, i) => {
134
+ const n = `${sqlName}-fwRule-${i}`;
135
+ return new sql.FirewallRule(n, {
136
+ firewallRuleName: n,
137
+ serverName: sqlServer.name,
138
+ ...group,
139
+ startIpAddress: ip.start,
140
+ endIpAddress: ip.end,
141
+ });
142
+ }));
143
+ }
144
+ if (vulnerabilityAssessment) {
145
+ //Grant Storage permission
146
+ if (vulnerabilityAssessment.logStorageId) {
147
+ (0, RoleAssignment_1.roleAssignment)({
148
+ name,
149
+ principalId: sqlServer.identity.apply((i) => i?.principalId || ''),
150
+ principalType: 'ServicePrincipal',
151
+ roleName: 'Storage Blob Data Contributor',
152
+ scope: vulnerabilityAssessment.logStorageId,
153
+ });
154
+ }
155
+ //Server Audit
156
+ new sql.ExtendedServerBlobAuditingPolicy(name, {
157
+ auditActionsAndGroups: [
158
+ 'SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP',
159
+ 'FAILED_DATABASE_AUTHENTICATION_GROUP',
160
+ 'BATCH_COMPLETED_GROUP',
161
+ ],
162
+ serverName: sqlServer.name,
163
+ ...group,
164
+ blobAuditingPolicyName: 'default',
165
+ isAzureMonitorTargetEnabled: true,
166
+ isStorageSecondaryKeyInUse: false,
167
+ predicateExpression: "object_name = 'SensitiveData'",
168
+ queueDelayMs: 4000,
169
+ retentionDays: AzureEnv_1.isPrd ? 30 : 6,
170
+ state: 'Enabled',
171
+ isDevopsAuditEnabled: true,
172
+ storageAccountAccessKey: vulnerabilityAssessment.storageAccessKey,
173
+ storageAccountSubscriptionId: AzureEnv_1.subscriptionId,
174
+ storageEndpoint: vulnerabilityAssessment.storageEndpoint,
175
+ });
176
+ //ServerSecurityAlertPolicy
177
+ new sql.ServerSecurityAlertPolicy(name, {
178
+ securityAlertPolicyName: name,
179
+ ...group,
180
+ serverName: sqlServer.name,
181
+ emailAccountAdmins: !vulnerabilityAssessment.alertEmails,
182
+ emailAddresses: vulnerabilityAssessment.alertEmails,
183
+ retentionDays: 7,
184
+ storageAccountAccessKey: vulnerabilityAssessment.storageAccessKey,
185
+ storageEndpoint: vulnerabilityAssessment.storageEndpoint,
186
+ state: 'Enabled',
187
+ });
188
+ //ServerVulnerabilityAssessment
189
+ new sql.ServerVulnerabilityAssessment(name, {
190
+ vulnerabilityAssessmentName: name,
191
+ ...group,
192
+ serverName: sqlServer.name,
193
+ recurringScans: {
194
+ isEnabled: true,
195
+ emailSubscriptionAdmins: !vulnerabilityAssessment.alertEmails,
196
+ emails: vulnerabilityAssessment.alertEmails,
197
+ },
198
+ storageContainerPath: (0, pulumi_1.interpolate) `${vulnerabilityAssessment.storageEndpoint}/${sqlName}`,
199
+ storageAccountAccessKey: vulnerabilityAssessment.storageAccessKey,
200
+ });
201
+ }
202
+ let dbs;
203
+ if (databases) {
204
+ dbs = databases.map((db) => {
205
+ const d = (0, SqlDb_1.default)({
206
+ ...db,
207
+ group,
208
+ sqlServerName: sqlName,
209
+ dependsOn: sqlServer,
210
+ elasticPoolId: ep ? ep.resource.id : undefined,
211
+ });
212
+ if (vaultInfo) {
213
+ const connectionString = auth?.adminLogin
214
+ ? (0, pulumi_1.interpolate) `Data Source=${sqlName}.database.windows.net;Initial Catalog=${d.name};User Id=${auth.adminLogin};Password=${auth.password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=120;`
215
+ : (0, pulumi_1.interpolate) `Data Source=${sqlName}.database.windows.net;Initial Catalog=${d.name};Authentication=Active Directory Integrated;;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=120;`;
216
+ (0, CustomHelper_1.addCustomSecret)({
217
+ name: d.name,
218
+ value: connectionString,
219
+ vaultInfo,
220
+ contentType: `Sql ${d.name} Connection String`,
221
+ dependsOn: d.resource,
222
+ tags: AzureEnv_1.defaultTags,
223
+ });
224
+ }
225
+ return d;
226
+ });
227
+ }
228
+ return {
229
+ name: sqlName,
230
+ resource: sqlServer,
231
+ elasticPool: ep,
232
+ databases: dbs,
233
+ adminGroup,
234
+ };
235
+ };
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU3FsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsZ0RBQWdEO0FBQ2hELDJDQUFpRTtBQUdqRSx5Q0FBMkM7QUFDM0MsMkRBQXdEO0FBQ3hELGlEQU00QjtBQUM1Qiw2Q0FBd0U7QUFDeEUsMkNBQW9DO0FBT3BDLDJDQUFrRDtBQUNsRCw2REFBNkQ7QUFDN0QsbUNBQW1EO0FBQ25ELDJEQUEyRDtBQUMzRCx1Q0FBZ0M7QUFZaEMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEVBQ3pCLEtBQUssRUFDTCxJQUFJLEVBQ0osT0FBTztBQUNQLGtCQUFrQjtBQUNsQixjQUFjLEdBQUcsRUFBRSxFQUNuQixHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsZ0JBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUMxRCxJQUFJLEdBQUcsSUFBSSxHQUNNLEVBQTZDLEVBQUU7SUFDaEUsb0JBQW9CO0lBQ3BCLE1BQU0sV0FBVyxHQUFHLElBQUEsMkJBQWtCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFFN0MsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtRQUMxQyxlQUFlLEVBQUUsV0FBVztRQUM1QixVQUFVLEVBQUUsT0FBTztRQUNuQixHQUFHLEtBQUs7UUFFUixZQUFZLEVBQUUsZ0JBQUssQ0FBQyxDQUFDLENBQUMsY0FBYyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ3JFLEdBQUcsRUFBRTtZQUNILElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLE1BQU07WUFDdkIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2QsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1NBQ3ZCO1FBQ0QsbUJBQW1C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
@@ -0,0 +1,12 @@
1
+ import { Input } from '@pulumi/pulumi';
2
+ import { BasicArgs } from '../types';
3
+ interface Props extends BasicArgs {
4
+ name: string;
5
+ origin: Input<string>;
6
+ cors?: string[];
7
+ domainName: string;
8
+ httpsEnabled?: boolean;
9
+ includesDefaultResponseHeaders?: boolean;
10
+ }
11
+ declare const _default: ({ name, domainName, origin, cors, httpsEnabled, includesDefaultResponseHeaders, dependsOn, }: Props) => import("@pulumi/azure-native/cdn/endpoint").Endpoint;
12
+ export default _default;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const native = require("@pulumi/azure-native");
4
+ const CdnHttpsEnable_1 = require("@drunk-pulumi/azure-providers/CdnHttpsEnable");
5
+ const CdnRules_1 = require("./CdnRules");
6
+ const GlobalEnv_1 = require("../Common/GlobalEnv");
7
+ const Helpers_1 = require("../Common/Helpers");
8
+ const Naming_1 = require("../Common/Naming");
9
+ exports.default = ({ name, domainName, origin, cors, httpsEnabled, includesDefaultResponseHeaders, dependsOn, }) => {
10
+ name = (0, Naming_1.getCdnEndpointName)(name);
11
+ const rules = [CdnRules_1.enforceHttpsRule, CdnRules_1.indexFileCacheRule];
12
+ if (includesDefaultResponseHeaders) {
13
+ rules.push((0, CdnRules_1.getDefaultResponseHeadersRule)(domainName));
14
+ }
15
+ if (cors) {
16
+ rules.push(...(0, CdnRules_1.allowsCorsRules)(cors));
17
+ }
18
+ //Update rule order
19
+ rules.forEach((r, i) => (r.order = i + 1));
20
+ console.log('CDN Endpoint: Link to', GlobalEnv_1.cdnProfileInfo);
21
+ const endpoint = new native.cdn.Endpoint(name, {
22
+ endpointName: name,
23
+ ...GlobalEnv_1.cdnProfileInfo,
24
+ origins: [{ name, hostName: origin }],
25
+ originHostHeader: origin,
26
+ optimizationType: 'GeneralWebDelivery',
27
+ queryStringCachingBehavior: 'IgnoreQueryString',
28
+ deliveryPolicy: {
29
+ rules,
30
+ description: 'Static Website Rules',
31
+ },
32
+ isCompressionEnabled: true,
33
+ contentTypesToCompress: [
34
+ 'text/plain',
35
+ 'text/html',
36
+ 'text/xml',
37
+ 'text/css',
38
+ 'application/xml',
39
+ 'application/xhtml+xml',
40
+ 'application/rss+xml',
41
+ 'application/javascript',
42
+ 'application/x-javascript',
43
+ ],
44
+ isHttpAllowed: true,
45
+ isHttpsAllowed: true,
46
+ }, { dependsOn });
47
+ if (domainName) {
48
+ const customDomain = new native.cdn.CustomDomain(name, {
49
+ endpointName: endpoint.name,
50
+ ...GlobalEnv_1.cdnProfileInfo,
51
+ customDomainName: (0, Helpers_1.replaceAll)(domainName, '.', '-'),
52
+ hostName: domainName,
53
+ }, { dependsOn: endpoint });
54
+ if (httpsEnabled) {
55
+ new CdnHttpsEnable_1.default(name, {
56
+ customDomainId: customDomain.id,
57
+ }, { dependsOn: customDomain });
58
+ }
59
+ }
60
+ return endpoint;
61
+ };
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RuRW5kcG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU3RvcmFnZS9DZG5FbmRwb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLCtDQUErQztBQUMvQyxpRkFBMEU7QUFDMUUseUNBS29CO0FBQ3BCLG1EQUFxRDtBQUNyRCwrQ0FBK0M7QUFDL0MsNkNBQXNEO0FBWXRELGtCQUFlLENBQUMsRUFDZCxJQUFJLEVBQ0osVUFBVSxFQUNWLE1BQU0sRUFDTixJQUFJLEVBQ0osWUFBWSxFQUNaLDhCQUE4QixFQUM5QixTQUFTLEdBQ0gsRUFBRSxFQUFFO0lBQ1YsSUFBSSxHQUFHLElBQUEsMkJBQWtCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFFaEMsTUFBTSxLQUFLLEdBQUcsQ0FBQywyQkFBZ0IsRUFBRSw2QkFBa0IsQ0FBQyxDQUFDO0lBQ3JELElBQUksOEJBQThCLEVBQUUsQ0FBQztRQUNuQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUEsd0NBQTZCLEVBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFBLDBCQUFlLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSwwQkFBYyxDQUFDLENBQUM7SUFFckQsTUFBTSxRQUFRLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FDdEMsSUFBSSxFQUNKO1FBQ0UsWUFBWSxFQUFFLElBQUk7UUFDbEIsR0FBRywwQkFBYztRQUVqQixPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDckMsZ0JBQWdCLEVBQUUsTUFBTTtRQUV4QixnQkFBZ0IsRUFBRSxvQkFBb0I7UUFDdEMsMEJBQTBCLEVBQUUsbUJBQW1CO1FBRS9DLGNBQWMsRUFBRTtZQUNkLEtBQUs7WUFDTCxXQUFXLEVBQUUsc0JBQXNCO1NBQ3BDO1FBRUQsb0JBQW9CLEVBQUUsSUFBSTtRQUMxQixzQkFBc0IsRUFBRTtZQUN0QixZQUFZO1lBQ1osV0FBVztZQUNYLFVBQVU7WUFDVixVQUFVO1lBQ1YsaUJBQWlCO1lBQ2pCLHVCQUF1QjtZQUN2QixxQkFBcUI7WUFDckIsd0JBQXdCO1lBQ3hCLDBCQUEwQjtTQUMzQjtRQUVELGFBQWEsRUFBRSxJQUFJO1FBQ25CLGNBQWMsRUFBRSxJQUFJO0tBQ3JCLEVBQ0QsRUFBRSxTQUFTLEVBQUUsQ0FDZCxDQUFDO0lBRUYsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLE1BQU0sWUFBWSxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQzlDLElBQUksRUFDSjtZQUNFLFlBQVksRUFBRSxRQUFRLENBQUMsSUFBSTtZQUMzQixHQUFHLDBCQUFjO1lBQ2pCLGdCQUFnQixFQUFFLElBQUEsb0JBQVUsRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztZQUNsRCxRQUFRLEVBQUUsVUFBVTtTQUNyQixFQUNELEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUN4QixDQUFDO1FBRUYsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixJQUFJLHdCQUFjLENBQ2hCLElBQUksRUFDSjtnQkFDRSxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUU7YUFDaEMsRUFDRCxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsQ0FDNUIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,6 @@
1
+ import * as native from '@pulumi/azure-native';
2
+ export declare const getDefaultResponseHeaders: (envDomain: string) => Record<string, string>;
3
+ export declare const enforceHttpsRule: native.types.input.cdn.DeliveryRuleArgs;
4
+ export declare const indexFileCacheRule: native.types.input.cdn.DeliveryRuleArgs;
5
+ export declare const getDefaultResponseHeadersRule: (envDomain: string) => native.types.input.cdn.DeliveryRuleArgs;
6
+ export declare const allowsCorsRules: (cors: string[]) => native.types.input.cdn.DeliveryRuleArgs[];
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.allowsCorsRules = exports.getDefaultResponseHeadersRule = exports.indexFileCacheRule = exports.enforceHttpsRule = exports.getDefaultResponseHeaders = void 0;
4
+ const getSecurities = (envDomain) => [
5
+ "default-src 'self' data: 'unsafe-inline' 'unsafe-eval'",
6
+ `https://*.${envDomain}`,
7
+ 'https://*.services.visualstudio.com',
8
+ 'https://*.googleapis.com', // Font and Css
9
+ 'https://*.gstatic.com', // Font and Css
10
+ 'https://*.google.com', // Captcha
11
+ 'https://login.microsoftonline.com',
12
+ 'https://graph.microsoft.com',
13
+ 'https://*.service.signalr.net',
14
+ 'wss://*.service.signalr.net',
15
+ `frame-ancestors 'self' https://login.microsoftonline.com https://*.${envDomain}`,
16
+ ];
17
+ const getDefaultResponseHeaders = (envDomain) => ({
18
+ 'Strict-Transport-Security': 'max-age=86400; includeSubDomains',
19
+ 'X-XSS-Protection': '1; mode=block',
20
+ 'X-Content-Type-Options': 'nosniff',
21
+ 'Content-Security-Policy': getSecurities(envDomain).join(' '),
22
+ });
23
+ exports.getDefaultResponseHeaders = getDefaultResponseHeaders;
24
+ exports.enforceHttpsRule = {
25
+ name: 'enforceHttps',
26
+ order: 1,
27
+ conditions: [
28
+ {
29
+ name: 'RequestScheme',
30
+ parameters: {
31
+ matchValues: ['HTTP'],
32
+ operator: 'Equal',
33
+ negateCondition: false,
34
+ typeName: 'DeliveryRuleRequestSchemeConditionParameters',
35
+ },
36
+ },
37
+ ],
38
+ actions: [
39
+ {
40
+ name: 'UrlRedirect',
41
+ parameters: {
42
+ redirectType: 'Found',
43
+ destinationProtocol: 'Https',
44
+ typeName: 'DeliveryRuleUrlRedirectActionParameters',
45
+ },
46
+ },
47
+ ],
48
+ };
49
+ exports.indexFileCacheRule = {
50
+ name: 'indexCache',
51
+ order: 2,
52
+ conditions: [
53
+ {
54
+ name: 'UrlFileName',
55
+ parameters: {
56
+ operator: 'Contains',
57
+ negateCondition: false,
58
+ matchValues: ['index.html'],
59
+ transforms: ['Lowercase'],
60
+ typeName: 'DeliveryRuleUrlFilenameConditionParameters',
61
+ },
62
+ },
63
+ ],
64
+ actions: [
65
+ {
66
+ name: 'CacheExpiration',
67
+ parameters: {
68
+ cacheBehavior: 'Override',
69
+ cacheType: 'All',
70
+ cacheDuration: '08:00:00',
71
+ typeName: 'DeliveryRuleCacheExpirationActionParameters',
72
+ },
73
+ },
74
+ ],
75
+ };
76
+ const getDefaultResponseHeadersRule = (envDomain) => {
77
+ const defaultResponseHeaders = (0, exports.getDefaultResponseHeaders)(envDomain);
78
+ return {
79
+ name: 'defaultResponseHeaders',
80
+ order: 3,
81
+ conditions: [
82
+ {
83
+ name: 'UrlPath',
84
+ parameters: {
85
+ operator: 'Any',
86
+ negateCondition: false,
87
+ matchValues: [],
88
+ transforms: [],
89
+ typeName: 'DeliveryRuleUrlPathMatchConditionParameters',
90
+ },
91
+ },
92
+ ],
93
+ actions: Object.keys(defaultResponseHeaders).map((k) => ({
94
+ name: 'ModifyResponseHeader',
95
+ parameters: {
96
+ headerAction: 'Overwrite',
97
+ headerName: k,
98
+ value: defaultResponseHeaders[k],
99
+ typeName: 'DeliveryRuleHeaderActionParameters',
100
+ },
101
+ })),
102
+ };
103
+ };
104
+ exports.getDefaultResponseHeadersRule = getDefaultResponseHeadersRule;
105
+ const allowsCorsRules = (cors) => cors.map((c, i) => ({
106
+ name: `allowsCors${i + 1}`,
107
+ order: 5 + i,
108
+ conditions: [
109
+ {
110
+ name: 'RequestHeader',
111
+ parameters: {
112
+ typeName: 'DeliveryRuleRequestHeaderConditionParameters',
113
+ selector: 'Origin',
114
+ operator: 'Contains',
115
+ transforms: [],
116
+ matchValues: [c],
117
+ negateCondition: false,
118
+ },
119
+ },
120
+ ],
121
+ actions: [
122
+ {
123
+ name: 'ModifyResponseHeader',
124
+ parameters: {
125
+ typeName: 'DeliveryRuleHeaderActionParameters',
126
+ headerAction: 'Overwrite',
127
+ headerName: 'Access-Control-Allow-Origin',
128
+ value: c,
129
+ },
130
+ },
131
+ ],
132
+ }));
133
+ exports.allowsCorsRules = allowsCorsRules;
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RuUnVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU3RvcmFnZS9DZG5SdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxNQUFNLGFBQWEsR0FBRyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxDQUFDO0lBQzNDLHdEQUF3RDtJQUN4RCxhQUFhLFNBQVMsRUFBRTtJQUN4QixxQ0FBcUM7SUFDckMsMEJBQTBCLEVBQUUsZUFBZTtJQUMzQyx1QkFBdUIsRUFBRSxlQUFlO0lBQ3hDLHNCQUFzQixFQUFFLFVBQVU7SUFDbEMsbUNBQW1DO0lBQ25DLDZCQUE2QjtJQUM3QiwrQkFBK0I7SUFDL0IsNkJBQTZCO0lBQzdCLHNFQUFzRSxTQUFTLEVBQUU7Q0FDbEYsQ0FBQztBQUVLLE1BQU0seUJBQXlCLEdBQUcsQ0FDdkMsU0FBaUIsRUFDTyxFQUFFLENBQUMsQ0FBQztJQUM1QiwyQkFBMkIsRUFBRSxrQ0FBa0M7SUFDL0Qsa0JBQWtCLEVBQUUsZUFBZTtJQUNuQyx3QkFBd0IsRUFBRSxTQUFTO0lBQ25DLHlCQUF5QixFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0NBQzlELENBQUMsQ0FBQztBQVBVLFFBQUEseUJBQXlCLDZCQU9uQztBQUVVLFFBQUEsZ0JBQWdCLEdBQTRDO0lBQ3ZFLElBQUksRUFBRSxjQUFjO0lBQ3BCLEtBQUssRUFBRSxDQUFDO0lBQ1IsVUFBVSxFQUFFO1FBQ1Y7WUFDRSxJQUFJLEVBQUUsZUFBZTtZQUNyQixVQUFVLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDO2dCQUNyQixRQUFRLEVBQUUsT0FBTztnQkFDakIsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLFFBQVEsRUFBRSw4Q0FBOEM7YUFDekQ7U0FDRjtLQUNGO0lBQ0QsT0FBTyxFQUFFO1FBQ1A7WUFDRSxJQUFJLEVBQUUsYUFBYTtZQUNuQixVQUFVLEVBQUU7Z0JBQ1YsWUFBWSxF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
@@ -0,0 +1,28 @@
1
+ import * as storage from '@pulumi/azure-native/storage';
2
+ import { BasicResourceArgs, KeyVaultInfo } from '../types';
3
+ export type StorageConnectionInfo = {
4
+ primaryConnection?: string;
5
+ secondaryConnection?: string;
6
+ primaryKey?: string;
7
+ secondaryKey?: string;
8
+ endpoints: {
9
+ blob: string;
10
+ file: string;
11
+ table: string;
12
+ staticSite: string;
13
+ DataLake: string;
14
+ };
15
+ };
16
+ export declare const getStorageSecrets: ({ name, nameFormatted, vaultInfo, }: {
17
+ name: string;
18
+ nameFormatted?: boolean | undefined;
19
+ vaultInfo: KeyVaultInfo;
20
+ }) => Promise<StorageConnectionInfo>;
21
+ export declare const getStorageSecretsById: ({ storageId, vaultInfo, }: {
22
+ storageId: string;
23
+ vaultInfo: KeyVaultInfo;
24
+ }) => Promise<{
25
+ info: import("../Common/AzureEnv").ResourceInfo | undefined;
26
+ secrets: StorageConnectionInfo;
27
+ } | undefined>;
28
+ export declare const getAccountSAS: ({ group, name }: BasicResourceArgs) => Promise<storage.ListStorageAccountSASResult>;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAccountSAS = exports.getStorageSecretsById = exports.getStorageSecrets = void 0;
4
+ const storage = require("@pulumi/azure-native/storage");
5
+ const Naming_1 = require("../Common/Naming");
6
+ const Helper_1 = require("../KeyVault/Helper");
7
+ const AzureEnv_1 = require("../Common/AzureEnv");
8
+ const getStorageSecrets = async ({ name, nameFormatted, vaultInfo, }) => {
9
+ name = nameFormatted ? name : (0, Naming_1.getStorageName)(name);
10
+ const primaryKeyName = (0, Naming_1.getKeyName)(name, 'primary');
11
+ const secondaryKeyName = (0, Naming_1.getKeyName)(name, 'secondary');
12
+ const primaryConnectionKeyName = (0, Naming_1.getConnectionName)(name, 'primary');
13
+ const secondConnectionKeyName = (0, Naming_1.getConnectionName)(name, 'secondary');
14
+ const [primaryConnection, secondaryConnection, primaryKey, secondaryKey] = await Promise.all([
15
+ primaryConnectionKeyName,
16
+ secondConnectionKeyName,
17
+ primaryKeyName,
18
+ secondaryKeyName,
19
+ ].map((k) => {
20
+ const n = (0, Naming_1.getSecretName)(k);
21
+ return (0, Helper_1.getSecret)({ name: n, vaultInfo, nameFormatted: true });
22
+ }));
23
+ return {
24
+ primaryConnection: primaryConnection?.value,
25
+ secondaryConnection: secondaryConnection?.value,
26
+ primaryKey: primaryKey?.value,
27
+ secondaryKey: secondaryKey?.value,
28
+ endpoints: {
29
+ blob: `https://${name}.blob.core.windows.net`,
30
+ file: `https://${name}.file.core.windows.net`,
31
+ table: `https://${name}.table.core.windows.net`,
32
+ staticSite: `https://${name}.z23.web.core.windows.net`,
33
+ DataLake: `https://${name}.dfs.core.windows.net`,
34
+ },
35
+ };
36
+ };
37
+ exports.getStorageSecrets = getStorageSecrets;
38
+ const getStorageSecretsById = async ({ storageId, vaultInfo, }) => {
39
+ const info = (0, AzureEnv_1.getResourceInfoFromId)(storageId);
40
+ const secrets = info
41
+ ? await (0, exports.getStorageSecrets)({
42
+ name: info.name,
43
+ nameFormatted: true,
44
+ vaultInfo,
45
+ })
46
+ : undefined;
47
+ return secrets ? { info, secrets } : undefined;
48
+ };
49
+ exports.getStorageSecretsById = getStorageSecretsById;
50
+ const getAccountSAS = ({ group, name }) => {
51
+ const now = new Date();
52
+ const expireDate = new Date();
53
+ expireDate.setMonth(expireDate.getMonth() + 3);
54
+ return storage.listStorageAccountSAS({
55
+ accountName: name,
56
+ ...group,
57
+ resourceTypes: storage.SignedResourceTypes.C,
58
+ services: storage.Services.B,
59
+ permissions: storage.Permissions.W,
60
+ protocols: storage.HttpProtocol.Https,
61
+ sharedAccessStartTime: now.toISOString(),
62
+ sharedAccessExpiryTime: expireDate.toISOString(),
63
+ });
64
+ };
65
+ exports.getAccountSAS = getAccountSAS;
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0b3JhZ2UvSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdEQUF3RDtBQUV4RCw2Q0FLMEI7QUFDMUIsK0NBQStDO0FBRS9DLGlEQUEyRDtBQWlCcEQsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLEVBQUUsRUFDdEMsSUFBSSxFQUNKLGFBQWEsRUFDYixTQUFTLEdBS1YsRUFBa0MsRUFBRTtJQUNuQyxJQUFJLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUEsdUJBQWMsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxNQUFNLGNBQWMsR0FBRyxJQUFBLG1CQUFVLEVBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSxtQkFBVSxFQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2RCxNQUFNLHdCQUF3QixHQUFHLElBQUEsMEJBQWlCLEVBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sdUJBQXVCLEdBQUcsSUFBQSwwQkFBaUIsRUFBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFckUsTUFBTSxDQUFDLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsR0FDdEUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmO1FBQ0Usd0JBQXdCO1FBQ3hCLHVCQUF1QjtRQUN2QixjQUFjO1FBQ2QsZ0JBQWdCO0tBQ2pCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDVixNQUFNLENBQUMsR0FBRyxJQUFBLHNCQUFhLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsT0FBTyxJQUFBLGtCQUFTLEVBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBRUosT0FBTztRQUNMLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLEtBQUs7UUFDM0MsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsS0FBSztRQUMvQyxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUs7UUFDN0IsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLO1FBRWpDLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxXQUFXLElBQUksd0JBQXdCO1lBQzdDLElBQUksRUFBRSxXQUFXLElBQUksd0JBQXdCO1lBQzdDLEtBQUssRUFBRSxXQUFXLElBQUkseUJBQXlCO1lBQy9DLFVBQVUsRUFBRSxXQUFXLElBQUksMkJBQTJCO1lBQ3RELFFBQVEsRUFBRSxXQUFXLElBQUksdUJBQXVCO1NBQ2pEO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQTFDVyxRQUFBLGlCQUFpQixxQkEwQzVCO0FBRUssTUFBTSxxQkFBcUIsR0FBRyxLQUFLLEVBQUUsRUFDMUMsU0FBUyxFQUNULFNBQVMsR0FJVixFQUFFLEVBQUU7SUFDSCxNQUFNLElBQUksR0FBRyxJQUFBLGdDQUFxQixFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUk7UUFDbEIsQ0FBQyxDQUFDLE1BQU0sSUFBQSx5QkFBaUIsRUFBQztZQUN0QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixhQUFhLEVBQUUsSUFBSTtZQUNuQixTQUFTO1NBQ1YsQ0FBQztRQUNKLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFZCxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNqRCxDQUFDLENBQUM7QUFqQlcsUUFBQSxxQkFBcUIseUJBaUJoQztBQUVLLE1BQU0sYUFBYSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFxQixFQUFFLEVBQUU7SUFDbEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUN2QixNQUFNLFVBQVUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzlCLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRS9DLE9BQU8sT0FBTyxDQUFDLHFCQUFxQixDQUFDO1FBQ25DLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLEdBQUcsS0FBSztRQUNSLGFBQWEsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM1QyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSztRQUNyQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsV0FBVyxFQUFFO1FBQ3hDLHNCQUFzQixFQUFFLFVBQVUsQ0FBQyxXQUFXLEVBQUU7S0FDakQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBZlcsUUFBQSxhQUFhLGlCQWV4QiJ9