@drunk-pulumi/azure 0.0.37 → 0.0.39

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 (186) hide show
  1. package/Aks/Helper.d.ts +6 -11
  2. package/Aks/Helper.js +40 -65
  3. package/Aks/Identity.d.ts +3 -10
  4. package/Aks/Identity.js +9 -8
  5. package/Aks/index.d.ts +67 -71
  6. package/Aks/index.js +198 -314
  7. package/Apim/ApiProduct/PolicyBuilder.js +25 -27
  8. package/Apim/ApiProduct/SwaggerHelper.js +1 -3
  9. package/Apim/ApiProduct/index.d.ts +3 -3
  10. package/Apim/ApiProduct/index.js +1 -2
  11. package/Automation/index.d.ts +7 -0
  12. package/Automation/index.js +55 -0
  13. package/AzAd/EnvRoles.Consts.d.ts +12 -0
  14. package/AzAd/EnvRoles.Consts.js +125 -0
  15. package/AzAd/EnvRoles.d.ts +17 -15
  16. package/AzAd/EnvRoles.js +69 -47
  17. package/AzAd/GraphDefinition.d.ts +2 -2
  18. package/AzAd/GraphDefinition.js +3055 -3056
  19. package/AzAd/Helper.d.ts +24 -13
  20. package/AzAd/Helper.js +98 -25
  21. package/AzAd/Identities/AzDevOpsIdentity.d.ts +12 -0
  22. package/AzAd/Identities/AzDevOpsIdentity.js +32 -0
  23. package/AzAd/Identities/AzDevOpsManagedIdentity.d.ts +7 -0
  24. package/AzAd/Identities/AzDevOpsManagedIdentity.js +15 -0
  25. package/AzAd/Identities/AzUserAdRevertSync.d.ts +2 -9
  26. package/AzAd/Identities/AzUserAdRevertSync.js +4 -5
  27. package/AzAd/Identities/index.d.ts +3 -0
  28. package/AzAd/Identities/index.js +10 -0
  29. package/AzAd/Identity.d.ts +10 -22
  30. package/AzAd/Identity.js +50 -61
  31. package/AzAd/Role.d.ts +2 -3
  32. package/AzAd/Role.js +4 -5
  33. package/AzAd/RoleAssignment.d.ts +34 -5
  34. package/AzAd/RoleAssignment.js +2 -2
  35. package/AzAd/RoleDefinitions/JustInTimeRequestRole.d.ts +2 -0
  36. package/AzAd/RoleDefinitions/JustInTimeRequestRole.js +24 -0
  37. package/AzAd/RolesBuiltIn.d.ts +29 -0
  38. package/AzAd/RolesBuiltIn.js +13034 -8058
  39. package/AzAd/UserAssignedIdentity.d.ts +6 -0
  40. package/AzAd/UserAssignedIdentity.js +27 -0
  41. package/Builder/AksBuilder.d.ts +3 -0
  42. package/Builder/AksBuilder.js +95 -0
  43. package/Builder/ResourceBuilder.d.ts +3 -0
  44. package/Builder/ResourceBuilder.js +116 -0
  45. package/Builder/VnetBuilder.d.ts +3 -0
  46. package/Builder/VnetBuilder.js +279 -0
  47. package/Builder/index.d.ts +4 -0
  48. package/Builder/index.js +21 -0
  49. package/Builder/types/askBuilder.d.ts +32 -0
  50. package/Builder/types/askBuilder.js +3 -0
  51. package/Builder/types/genericBuilder.d.ts +26 -0
  52. package/Builder/types/genericBuilder.js +18 -0
  53. package/Builder/types/index.d.ts +4 -0
  54. package/Builder/types/index.js +21 -0
  55. package/Builder/types/resourceBuilder.d.ts +24 -0
  56. package/Builder/types/resourceBuilder.js +3 -0
  57. package/Builder/types/vnetBuilder.d.ts +65 -0
  58. package/Builder/types/vnetBuilder.js +3 -0
  59. package/Certificate/index.d.ts +1 -1
  60. package/Certificate/index.js +26 -28
  61. package/Common/AutoTags.js +2 -2
  62. package/Common/AzureEnv.d.ts +4 -3
  63. package/Common/AzureEnv.js +31 -24
  64. package/Common/GlobalEnv.d.ts +1 -2
  65. package/Common/GlobalEnv.js +7 -7
  66. package/Common/Location.d.ts +3 -3
  67. package/Common/Location.js +22 -9
  68. package/Common/LocationBuiltIn.d.ts +6 -81
  69. package/Common/LocationBuiltIn.js +491 -1923
  70. package/Common/Naming/index.d.ts +6 -4
  71. package/Common/Naming/index.js +64 -60
  72. package/Common/ResourceEnv.d.ts +2 -2
  73. package/Common/ResourceEnv.js +11 -10
  74. package/Common/StackEnv.js +2 -9
  75. package/Core/KeyGenetators.d.ts +16 -20
  76. package/Core/KeyGenetators.js +17 -16
  77. package/Core/Random.d.ts +4 -4
  78. package/Core/Random.js +10 -10
  79. package/Core/ResourceGroup.d.ts +13 -6
  80. package/Core/ResourceGroup.js +12 -24
  81. package/IOT/Hub/index.d.ts +4 -8
  82. package/IOT/Hub/index.js +19 -54
  83. package/KeyVault/Helper.d.ts +8 -6
  84. package/KeyVault/Helper.js +13 -19
  85. package/KeyVault/index.d.ts +1 -3
  86. package/KeyVault/index.js +2 -26
  87. package/Logs/Helpers.d.ts +35 -25
  88. package/Logs/Helpers.js +33 -20
  89. package/Logs/LogAnalytics.d.ts +2 -2
  90. package/Logs/LogAnalytics.js +15 -6
  91. package/Logs/index.d.ts +3 -3
  92. package/Logs/index.js +4 -4
  93. package/MySql/index.d.ts +2 -3
  94. package/MySql/index.js +16 -19
  95. package/{ReadMe.md → README.md} +6 -1
  96. package/Sql/index.d.ts +15 -9
  97. package/Sql/index.js +39 -41
  98. package/Storage/CdnEndpoint.d.ts +2 -2
  99. package/Storage/CdnEndpoint.js +14 -15
  100. package/Storage/Helper.d.ts +2 -2
  101. package/Storage/Helper.js +6 -6
  102. package/Storage/ManagementRules.d.ts +5 -23
  103. package/Storage/ManagementRules.js +3 -3
  104. package/Storage/index.d.ts +3 -3
  105. package/Storage/index.js +28 -28
  106. package/VM/AzureDevOpsExtension.d.ts +16 -0
  107. package/VM/AzureDevOpsExtension.js +14 -0
  108. package/VM/Extension.d.ts +15 -0
  109. package/VM/Extension.js +13 -0
  110. package/VM/GlobalSchedule.d.ts +10 -0
  111. package/VM/GlobalSchedule.js +20 -0
  112. package/VM/index.d.ts +18 -18
  113. package/VM/index.js +94 -57
  114. package/VNet/Bastion.d.ts +4 -4
  115. package/VNet/Bastion.js +12 -8
  116. package/VNet/Firewall.d.ts +19 -12
  117. package/VNet/Firewall.js +59 -40
  118. package/VNet/FirewallPolicies/AksFirewallPolicy.d.ts +16 -16
  119. package/VNet/FirewallPolicies/AksFirewallPolicy.js +193 -220
  120. package/VNet/FirewallPolicies/CloudPCFirewallPolicy.d.ts +12 -10
  121. package/VNet/FirewallPolicies/CloudPCFirewallPolicy.js +170 -282
  122. package/VNet/FirewallPolicies/DefaultFirewallPolicy.d.ts +3 -0
  123. package/VNet/FirewallPolicies/DefaultFirewallPolicy.js +25 -0
  124. package/VNet/FirewallPolicies/index.d.ts +4 -0
  125. package/VNet/FirewallPolicies/index.js +10 -0
  126. package/VNet/FirewallPolicy.d.ts +14 -11
  127. package/VNet/FirewallPolicy.js +67 -74
  128. package/VNet/FirewallRules/AksFirewallRules.d.ts +4 -3
  129. package/VNet/FirewallRules/AksFirewallRules.js +101 -100
  130. package/VNet/Helper.d.ts +8 -4
  131. package/VNet/Helper.js +42 -35
  132. package/VNet/IpAddress.d.ts +6 -8
  133. package/VNet/IpAddress.js +6 -11
  134. package/VNet/IpAddressPrefix.d.ts +12 -9
  135. package/VNet/IpAddressPrefix.js +14 -13
  136. package/VNet/NSGRules/AppGatewaySecurityRule.d.ts +9 -0
  137. package/VNet/NSGRules/AppGatewaySecurityRule.js +46 -0
  138. package/VNet/NSGRules/AzADSecurityRule.d.ts +6 -0
  139. package/VNet/NSGRules/AzADSecurityRule.js +39 -0
  140. package/VNet/NSGRules/BastionSecurityRule.d.ts +9 -0
  141. package/VNet/NSGRules/BastionSecurityRule.js +93 -0
  142. package/VNet/NatGateway.d.ts +10 -0
  143. package/VNet/NatGateway.js +21 -0
  144. package/VNet/NetworkPeering.d.ts +7 -7
  145. package/VNet/NetworkPeering.js +29 -20
  146. package/VNet/PrivateDns.d.ts +8 -10
  147. package/VNet/PrivateDns.js +12 -14
  148. package/VNet/PrivateEndpoint.js +5 -2
  149. package/VNet/RouteTable.d.ts +7 -8
  150. package/VNet/RouteTable.js +6 -6
  151. package/VNet/SecurityGroup.d.ts +4 -4
  152. package/VNet/SecurityGroup.js +7 -3
  153. package/VNet/Subnet.d.ts +10 -7
  154. package/VNet/Subnet.js +4 -3
  155. package/VNet/VPNGateway.d.ts +13 -0
  156. package/VNet/VPNGateway.js +73 -0
  157. package/VNet/VirtualWAN.d.ts +7 -10
  158. package/VNet/VirtualWAN.js +1 -1
  159. package/VNet/Vnet.d.ts +29 -23
  160. package/VNet/Vnet.js +58 -121
  161. package/VNet/index.d.ts +17 -18
  162. package/VNet/index.js +41 -54
  163. package/VNet/types.d.ts +94 -0
  164. package/VNet/types.js +3 -0
  165. package/Web/types.d.ts +2 -134
  166. package/package.json +8 -8
  167. package/types.d.ts +22 -8
  168. package/z_tests/_tools/Mocks.js +12 -13
  169. package/Automation/AutoAccount.d.ts +0 -5
  170. package/Automation/AutoAccount.js +0 -18
  171. package/AzAd/Identities/AzDevOps.d.ts +0 -23
  172. package/AzAd/Identities/AzDevOps.js +0 -61
  173. package/AzAd/KeyVaultRoles.d.ts +0 -8
  174. package/AzAd/KeyVaultRoles.js +0 -53
  175. package/AzAd/ManagedIdentity.d.ts +0 -6
  176. package/AzAd/ManagedIdentity.js +0 -20
  177. package/AzAd/UserIdentity.d.ts +0 -5
  178. package/AzAd/UserIdentity.js +0 -12
  179. package/Common/Naming/AzureRegions.d.ts +0 -4
  180. package/Common/Naming/AzureRegions.js +0 -49
  181. package/KeyVault/VaultPermissions.d.ts +0 -27
  182. package/KeyVault/VaultPermissions.js +0 -226
  183. package/VNet/FirewallRules/types.d.ts +0 -20
  184. package/VNet/FirewallRules/types.js +0 -5
  185. package/VNet/NSGRules/AzADService.d.ts +0 -10
  186. package/VNet/NSGRules/AzADService.js +0 -45
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.azRegions = void 0;
4
- exports.azRegions = [
5
- { "region": "Central Australia", "code": "AU" },
6
- { "region": "Australia East", "code": "AU" },
7
- { "region": "Australia Southeast", "code": "AU" },
8
- { "region": "Austria East", "code": "AT" },
9
- { "region": "Belgium Central", "code": "BE" },
10
- { "region": "Canada East", "code": "CA" },
11
- { "region": "Central Canada", "code": "CA" },
12
- { "region": "Chile Central", "code": "CL" },
13
- { "region": "China East 2", "code": "CN" },
14
- { "region": "China North", "code": "CN" },
15
- { "region": "China North 2", "code": "CN" },
16
- { "region": "China North 3", "code": "CN" },
17
- { "region": "East Asia", "code": "HK" },
18
- { "region": "East China", "code": "CN" },
19
- { "region": "East Denmark", "code": "DK" },
20
- { "region": "East US 3", "code": "US" },
21
- { "region": "France Central", "code": "FR" },
22
- { "region": "Germany West Central", "code": "DE" },
23
- { "region": "India South Central", "code": "IN" },
24
- { "region": "Indonesia Central", "code": "ID" },
25
- { "region": "Israel Central", "code": "IL" },
26
- { "region": "Japan East", "code": "JP" },
27
- { "region": "Japan West", "code": "JP" },
28
- { "region": "Korea Central", "code": "KR" },
29
- { "region": "Malaysia West", "code": "MY" },
30
- { "region": "Mexico Central", "code": "MX" },
31
- { "region": "New Zealand North", "code": "NZ" },
32
- { "region": "Northern Europe", "code": "IE" },
33
- { "region": "Northern Italy", "code": "IT" },
34
- { "region": "Norway East", "code": "NO" },
35
- { "region": "Poland Central", "code": "PL" },
36
- { "region": "Qatar Central", "code": "QA" },
37
- { "region": "Saudi Arabia Central", "code": "SA" },
38
- { "region": "South Africa North", "code": "ZA" },
39
- { "region": "South India", "code": "IN" },
40
- { "region": "Southeast Asia", "code": "SG" },
41
- { "region": "Spain Central", "code": "ES" },
42
- { "region": "Sweden Central", "code": "SE" },
43
- { "region": "Switzerland North", "code": "CH" },
44
- { "region": "Taiwan North", "code": "TW" },
45
- { "region": "UAE North", "code": "AE" },
46
- { "region": "UK South", "code": "GB" },
47
- { "region": "Western Europe", "code": "NL" }
48
- ];
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXp1cmVSZWdpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0NvbW1vbi9OYW1pbmcvQXp1cmVSZWdpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsU0FBUyxHQUFHO0lBQ3JCLEVBQUMsUUFBUSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUM7SUFDN0MsRUFBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztJQUMxQyxFQUFDLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDO0lBQy9DLEVBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDO0lBQ3hDLEVBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUM7SUFDM0MsRUFBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUM7SUFDdkMsRUFBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztJQUMxQyxFQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztJQUN6QyxFQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztJQUN4QyxFQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztJQUN2QyxFQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztJQUN6QyxFQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztJQUN6QyxFQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztJQUNyQyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztJQUN0QyxFQUFDLFFBQVEsRUFB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
@@ -1,27 +0,0 @@
1
- import * as pulumi from "@pulumi/pulumi";
2
- import * as native from "@pulumi/azure-native";
3
- import * as azuread from "@pulumi/azuread";
4
- import { KeyVaultInfo } from "../types";
5
- export interface PermissionProps {
6
- /** The object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. */
7
- objectId: pulumi.Input<string>;
8
- /** Application ID of the client making request on behalf of a principal */
9
- applicationId?: pulumi.Input<string>;
10
- permission: "ReadOnly" | "ReadWrite";
11
- principalType?: native.authorization.PrincipalType;
12
- }
13
- export declare const grantVaultAccessToIdentity: ({ name, identity, vaultInfo, }: {
14
- name: string;
15
- identity: pulumi.Output<{
16
- principalId: string;
17
- } | undefined>;
18
- vaultInfo: KeyVaultInfo;
19
- }) => pulumi.OutputInstance<void>;
20
- export declare const grantVaultPermissionToRole: ({ name, vaultInfo, roles, }: {
21
- name: string;
22
- vaultInfo: KeyVaultInfo;
23
- roles: {
24
- adminGroup: pulumi.Output<azuread.Group>;
25
- readOnlyGroup: pulumi.Output<azuread.Group>;
26
- };
27
- }) => void;
@@ -1,226 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.grantVaultPermissionToRole = exports.grantVaultAccessToIdentity = void 0;
4
- const pulumi = require("@pulumi/pulumi");
5
- const RoleAssignment_1 = require("../AzAd/RoleAssignment");
6
- const CustomHelper_1 = require("./CustomHelper");
7
- const AzDevOps_1 = require("../AzAd/Identities/AzDevOps");
8
- const Helper_1 = require("./Helper");
9
- const Group_1 = require("../AzAd/Group");
10
- const grantVaultRbacPermission = ({ name, objectId, permission, scope, principalType = "User", }) => {
11
- const vn = `${name}-${permission}`.toLowerCase();
12
- const defaultProps = {
13
- principalId: objectId,
14
- scope,
15
- };
16
- //ReadOnly
17
- if (permission === "ReadOnly") {
18
- (0, RoleAssignment_1.roleAssignment)({
19
- ...defaultProps,
20
- name: `${vn}-encrypt`,
21
- roleName: "Key Vault Crypto Service Encryption User",
22
- principalType,
23
- });
24
- (0, RoleAssignment_1.roleAssignment)({
25
- ...defaultProps,
26
- name: `${vn}-crypto`,
27
- roleName: "Key Vault Crypto User",
28
- principalType,
29
- });
30
- (0, RoleAssignment_1.roleAssignment)({
31
- ...defaultProps,
32
- name: `${vn}-secret`,
33
- roleName: "Key Vault Secrets User",
34
- principalType,
35
- });
36
- //Read and Write
37
- }
38
- else {
39
- (0, RoleAssignment_1.roleAssignment)({
40
- ...defaultProps,
41
- name: `${vn}-contributor`,
42
- roleName: "Key Vault Administrator",
43
- principalType,
44
- });
45
- (0, RoleAssignment_1.roleAssignment)({
46
- ...defaultProps,
47
- name: `${vn}-cert`,
48
- roleName: "Key Vault Certificates Officer",
49
- principalType,
50
- });
51
- (0, RoleAssignment_1.roleAssignment)({
52
- ...defaultProps,
53
- name: `${vn}-crypto`,
54
- roleName: "Key Vault Crypto Officer",
55
- principalType,
56
- });
57
- (0, RoleAssignment_1.roleAssignment)({
58
- ...defaultProps,
59
- name: `${vn}-secret`,
60
- roleName: "Key Vault Secrets Officer",
61
- principalType,
62
- });
63
- }
64
- };
65
- const grantVaultAccessToIdentity = ({ name, identity, vaultInfo, }) => identity.apply(async (i) => {
66
- if (!i)
67
- return;
68
- const vaultRole = await (0, Helper_1.getVaultRoleNames)(vaultInfo);
69
- if (!vaultRole)
70
- return;
71
- (0, Group_1.addMemberToGroup)({
72
- name: `${name}-identity-readAccess-${vaultInfo.name}`,
73
- objectId: i.principalId,
74
- groupObjectId: (0, Group_1.getAdGroup)(vaultRole.readOnly).objectId,
75
- });
76
- });
77
- exports.grantVaultAccessToIdentity = grantVaultAccessToIdentity;
78
- const grantVaultPermissionToRole = ({ name, vaultInfo, roles, }) => {
79
- //Grant RBAC permission to Group
80
- grantVaultRbacPermission({
81
- name: `${name}-ReadOnlyGroup`,
82
- scope: vaultInfo.id,
83
- objectId: roles.readOnlyGroup.objectId,
84
- permission: "ReadOnly",
85
- principalType: "Group",
86
- });
87
- grantVaultRbacPermission({
88
- name: `${name}-AdminGroup`,
89
- scope: vaultInfo.id,
90
- objectId: roles.adminGroup.objectId,
91
- permission: "ReadWrite",
92
- principalType: "Group",
93
- });
94
- //Grant Admin RBAC permission current ADO Identity as the Group will be take time to be effective
95
- const ado = (0, AzDevOps_1.getAdoIdentity)();
96
- grantVaultRbacPermission({
97
- name: `${name}-Admin-Ado`,
98
- scope: vaultInfo.id,
99
- objectId: ado.principal.objectId,
100
- permission: "ReadWrite",
101
- principalType: "ServicePrincipal",
102
- });
103
- //Add RoleNames to vault
104
- (0, CustomHelper_1.addCustomSecret)({
105
- name: "VaultRoleNames",
106
- value: pulumi
107
- .output({
108
- admin: roles.adminGroup.displayName,
109
- readOnly: roles.readOnlyGroup.displayName,
110
- })
111
- .apply((role) => JSON.stringify(role)),
112
- vaultInfo,
113
- contentType: "KeyVault Roles Names",
114
- });
115
- };
116
- exports.grantVaultPermissionToRole = grantVaultPermissionToRole;
117
- // export const KeyVaultAdminPolicy = {
118
- // certificates: [
119
- // 'Backup',
120
- // 'Create',
121
- // 'Delete',
122
- // 'DeleteIssuers',
123
- // 'Get',
124
- // 'GetIssuers',
125
- // 'Import',
126
- // 'List',
127
- // 'ManageContacts',
128
- // 'ManageIssuers',
129
- // 'Purge',
130
- // 'Recover',
131
- // 'Restore',
132
- // 'SetIssuers',
133
- // 'Update',
134
- // ],
135
- // keys: [
136
- // 'Backup',
137
- // 'Create',
138
- // 'Decrypt',
139
- // 'Delete',
140
- // 'Encrypt',
141
- // 'Get',
142
- // 'Import',
143
- // 'List',
144
- // 'Purge',
145
- // 'Recover',
146
- // 'Restore',
147
- // 'Sign',
148
- // 'UnwrapKey',
149
- // 'Update',
150
- // 'Verify',
151
- // 'WrapKey',
152
- // ],
153
- // secrets: [
154
- // 'Backup',
155
- // 'Delete',
156
- // 'Get',
157
- // 'List',
158
- // 'Purge',
159
- // 'Recover',
160
- // 'Restore',
161
- // 'Set',
162
- // ],
163
- // storage: [
164
- // 'Backup',
165
- // 'Delete',
166
- // 'DeleteSAS',
167
- // 'Get',
168
- // 'GetSAS',
169
- // 'List',
170
- // 'ListSAS',
171
- // 'Purge',
172
- // 'Recover',
173
- // 'RegenerateKey',
174
- // 'Restore',
175
- // 'Set',
176
- // 'SetSAS',
177
- // 'Update',
178
- // ],
179
- // };
180
- //
181
- // export const KeyVaultReadOnlyPolicy = {
182
- // certificates: ['Get', 'List'],
183
- // keys: [
184
- // 'Get',
185
- // 'List',
186
- // 'Decrypt',
187
- // 'Encrypt',
188
- // 'Sign',
189
- // 'UnwrapKey',
190
- // 'Verify',
191
- // 'WrapKey',
192
- // ],
193
- // secrets: ['Get', 'List'],
194
- // storage: ['Get', 'List'],
195
- // };
196
- // export const grantVaultAccessPolicy = ({
197
- // name,
198
- // objectId,
199
- // permission,
200
- // vaultInfo,
201
- // }: PermissionProps & {
202
- // name: string;
203
- // vaultInfo: KeyVaultInfo;
204
- // }) =>
205
- // new vault.AccessPolicy(name, {
206
- // keyVaultId: vaultInfo.id,
207
- // objectId,
208
- // tenantId,
209
- // certificatePermissions:
210
- // permission === 'ReadOnly'
211
- // ? KeyVaultReadOnlyPolicy.certificates
212
- // : KeyVaultAdminPolicy.certificates,
213
- // keyPermissions:
214
- // permission === 'ReadOnly'
215
- // ? KeyVaultReadOnlyPolicy.keys
216
- // : KeyVaultAdminPolicy.keys,
217
- // secretPermissions:
218
- // permission === 'ReadOnly'
219
- // ? KeyVaultReadOnlyPolicy.secrets
220
- // : KeyVaultAdminPolicy.secrets,
221
- // storagePermissions:
222
- // permission === 'ReadOnly'
223
- // ? KeyVaultReadOnlyPolicy.storage
224
- // : KeyVaultAdminPolicy.storage,
225
- // });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmF1bHRQZXJtaXNzaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9LZXlWYXVsdC9WYXVsdFBlcm1pc3Npb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUF5QztBQUN6QywyREFBd0Q7QUFHeEQsaURBQWlEO0FBRWpELDBEQUE2RDtBQUM3RCxxQ0FBNkM7QUFDN0MseUNBQTZEO0FBVzdELE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxFQUNoQyxJQUFJLEVBQ0osUUFBUSxFQUNSLFVBQVUsRUFDVixLQUFLLEVBQ0wsYUFBYSxHQUFHLE1BQU0sR0FJdkIsRUFBRSxFQUFFO0lBQ0gsTUFBTSxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFakQsTUFBTSxZQUFZLEdBQUc7UUFDbkIsV0FBVyxFQUFFLFFBQVE7UUFDckIsS0FBSztLQUNOLENBQUM7SUFFRixVQUFVO0lBQ1YsSUFBSSxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDOUIsSUFBQSwrQkFBYyxFQUFDO1lBQ2IsR0FBRyxZQUFZO1lBQ2YsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVO1lBQ3JCLFFBQVEsRUFBRSwwQ0FBMEM7WUFDcEQsYUFBYTtTQUNkLENBQUMsQ0FBQztRQUNILElBQUEsK0JBQWMsRUFBQztZQUNiLEdBQUcsWUFBWTtZQUNmLElBQUksRUFBRSxHQUFHLEVBQUUsU0FBUztZQUNwQixRQUFRLEVBQUUsdUJBQXVCO1lBQ2pDLGFBQWE7U0FDZCxDQUFDLENBQUM7UUFDSCxJQUFBLCtCQUFjLEVBQUM7WUFDYixHQUFHLFlBQVk7WUFDZixJQUFJLEVBQUUsR0FBRyxFQUFFLFNBQVM7WUFDcEIsUUFBUSxFQUFFLHdCQUF3QjtZQUNsQyxhQUFhO1NBQ2QsQ0FBQyxDQUFDO1FBQ0gsZ0JBQWdCO0lBQ2xCLENBQUM7U0FBTSxDQUFDO1FBQ04sSUFBQSwrQkFBYyxFQUFDO1lBQ2IsR0FB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
@@ -1,20 +0,0 @@
1
- import { input as inputs } from "@pulumi/azure-native/types";
2
- import { Input, Output } from "@pulumi/pulumi";
3
- export interface FirewallRuleProps {
4
- name: string;
5
- dnatRules?: Array<Input<inputs.network.NatRuleArgs>>;
6
- networkRules?: Array<Input<inputs.network.NetworkRuleArgs>>;
7
- applicationRules?: Array<Input<inputs.network.ApplicationRuleArgs>>;
8
- }
9
- export interface FirewallPolicyProps {
10
- enabled: boolean;
11
- /**These props for create new policy*/
12
- parentPolicyId?: Output<string>;
13
- priority?: number;
14
- rules?: Array<FirewallRuleProps>;
15
- }
16
- export interface FirewallRuleResults {
17
- applicationRuleCollections?: inputs.network.AzureFirewallApplicationRuleCollectionArgs[];
18
- natRuleCollections?: inputs.network.AzureFirewallNatRuleCollectionArgs[];
19
- networkRuleCollections?: inputs.network.AzureFirewallNetworkRuleCollectionArgs[];
20
- }
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //type FirewallRuleCreator = () => FirewallRuleResults;
4
- //type FirewallPolicyCreator = () => Omit<FirewallPolicyProps, "enabled">;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvVk5ldC9GaXJld2FsbFJ1bGVzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBeUJBLHVEQUF1RDtBQUN2RCwwRUFBMEUifQ==
@@ -1,10 +0,0 @@
1
- import { Input, Output, Resource } from '@pulumi/pulumi';
2
- import { ResourceGroupInfo } from '../../types';
3
- interface Props {
4
- startPriority?: number;
5
- securityGroupName: Output<string>;
6
- group: ResourceGroupInfo;
7
- dependsOn?: Input<Input<Resource>[]> | Input<Resource>;
8
- }
9
- declare const _default: ({ group, securityGroupName, startPriority, dependsOn, }: Props) => void;
10
- export default _default;
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const network = require("@pulumi/azure-native/network");
4
- exports.default = ({ group, securityGroupName, startPriority = 300, dependsOn, }) => {
5
- const rs = new Array();
6
- //Allows RD
7
- rs.push(new network.SecurityRule('AllowRD', {
8
- name: 'AllowRD',
9
- networkSecurityGroupName: securityGroupName,
10
- ...group,
11
- sourceAddressPrefix: 'CorpNetSaw',
12
- sourcePortRange: '*',
13
- destinationAddressPrefix: '*',
14
- destinationPortRange: '3389',
15
- protocol: 'Tcp',
16
- access: 'Allow',
17
- direction: 'Inbound',
18
- priority: startPriority++,
19
- }, { dependsOn }), new network.SecurityRule('AllowPSRemove', {
20
- name: 'AllowPSRemove',
21
- networkSecurityGroupName: securityGroupName,
22
- ...group,
23
- sourceAddressPrefix: 'AzureActiveDirectoryDomainServices',
24
- sourcePortRange: '*',
25
- destinationAddressPrefix: '*',
26
- destinationPortRange: '5986',
27
- protocol: 'Tcp',
28
- access: 'Allow',
29
- direction: 'Inbound',
30
- priority: startPriority++,
31
- }, { dependsOn }), new network.SecurityRule('AllowPort636', {
32
- name: 'AllowPort636',
33
- networkSecurityGroupName: securityGroupName,
34
- ...group,
35
- sourceAddressPrefix: '*',
36
- sourcePortRange: '*',
37
- destinationAddressPrefix: '*',
38
- destinationPortRange: '636',
39
- protocol: 'Tcp',
40
- access: 'Allow',
41
- direction: 'Inbound',
42
- priority: startPriority++,
43
- }, { dependsOn }));
44
- };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXpBRFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvVk5ldC9OU0dSdWxlcy9BekFEU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHdEQUF3RDtBQVV4RCxrQkFBZSxDQUFDLEVBQ2QsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixhQUFhLEdBQUcsR0FBRyxFQUNuQixTQUFTLEdBQ0gsRUFBRSxFQUFFO0lBQ1YsTUFBTSxFQUFFLEdBQUcsSUFBSSxLQUFLLEVBQXdCLENBQUM7SUFDN0MsV0FBVztJQUNYLEVBQUUsQ0FBQyxJQUFJLENBQ0wsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUN0QixTQUFTLEVBQ1Q7UUFDRSxJQUFJLEVBQUUsU0FBUztRQUNmLHdCQUF3QixFQUFFLGlCQUFpQjtRQUMzQyxHQUFHLEtBQUs7UUFDUixtQkFBbUIsRUFBRSxZQUFZO1FBQ2pDLGVBQWUsRUFBRSxHQUFHO1FBQ3BCLHdCQUF3QixFQUFFLEdBQUc7UUFDN0Isb0JBQW9CLEVBQUUsTUFBTTtRQUM1QixRQUFRLEVBQUUsS0FBSztRQUNmLE1BQU0sRUFBRSxPQUFPO1FBQ2YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsUUFBUSxFQUFFLGFBQWEsRUFBRTtLQUMxQixFQUNELEVBQUUsU0FBUyxFQUFFLENBQ2QsRUFDRCxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQ3RCLGVBQWUsRUFDZjtRQUNFLElBQUksRUFBRSxlQUFlO1FBQ3JCLHdCQUF3QixFQUFFLGlCQUFpQjtRQUMzQyxHQUFHLEtBQUs7UUFDUixtQkFBbUIsRUFBRSxvQ0FBb0M7UUFDekQsZUFBZSxFQUFFLEdBQUc7UUFDcEIsd0JBQXdCLEVBQUUsR0FBRztRQUM3QixvQkFBb0IsRUFBRSxNQUFNO1FBQzVCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsTUFBTSxFQUFFLE9BQU87UUFDZixTQUFTLEVBQUUsU0FBUztRQUNwQixRQUFRLEVBQUUsYUFBYSxFQUFFO0tBQzFCLEVBQ0QsRUFBRSxTQUFTLEVBQUUsQ0FDZCxFQUNELElBQUksT0FBTyxDQUFDLFlBQVksQ0FDdEIsY0FBYyxFQUNkO1FBQ0UsSUFBSSxFQUFFLGNBQWM7UUFDcEIsd0JBQXdCLEVBQUUsaUJBQWlCO1FBQzNDLEdBQUcsS0FBSztRQUNSLG1CQUFtQixFQUFFLEdBQUc7UUFDeEIsZUFBZSxFQUFFLEdBQUc7UUFDcEIsd0JBQXdCLEVBQUUsR0FBRztRQUM3QixvQkFBb0IsRUFBRSxLQUFLO1FBQzNCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsTUFBTSxFQUFFLE9BQU87UUFDZixTQUFTLEVBQUUsU0FBUztRQUNwQixRQUFRLEVBQUUsYUFBYSxFQUFFO0tBQzFCLEVBQ0QsRUFBRSxTQUFTLEVBQUUsQ0FDZCxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMifQ==