@drunk-pulumi/azure-components 0.0.6

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 (181) hide show
  1. package/PulumiPlugin.yaml +1 -0
  2. package/README.md +1 -0
  3. package/ResourceBuilder.d.ts +54 -0
  4. package/ResourceBuilder.js +71 -0
  5. package/aks/AzKubernetes.d.ts +55 -0
  6. package/aks/AzKubernetes.js +288 -0
  7. package/aks/ContainerRegistry.d.ts +19 -0
  8. package/aks/ContainerRegistry.js +119 -0
  9. package/aks/helpers.d.ts +6 -0
  10. package/aks/helpers.js +52 -0
  11. package/aks/index.d.ts +3 -0
  12. package/aks/index.js +43 -0
  13. package/app/AppCert.d.ts +15 -0
  14. package/app/AppCert.js +74 -0
  15. package/app/AppConfig.d.ts +18 -0
  16. package/app/AppConfig.js +124 -0
  17. package/app/AppService.d.ts +69 -0
  18. package/app/AppService.js +122 -0
  19. package/app/IoTHub.d.ts +15 -0
  20. package/app/IoTHub.js +80 -0
  21. package/app/LogicApp.d.ts +19 -0
  22. package/app/LogicApp.js +77 -0
  23. package/app/SignalR.d.ts +45 -0
  24. package/app/SignalR.js +125 -0
  25. package/app/index.d.ts +6 -0
  26. package/app/index.js +23 -0
  27. package/azAd/AppRegistration.d.ts +52 -0
  28. package/azAd/AppRegistration.js +165 -0
  29. package/azAd/AzRole.d.ts +14 -0
  30. package/azAd/AzRole.js +72 -0
  31. package/azAd/CustomRoles.d.ts +10 -0
  32. package/azAd/CustomRoles.js +73 -0
  33. package/azAd/GroupRole.d.ts +29 -0
  34. package/azAd/GroupRole.js +107 -0
  35. package/azAd/RoleAssignment.d.ts +15 -0
  36. package/azAd/RoleAssignment.js +63 -0
  37. package/azAd/UserAssignedIdentity.d.ts +17 -0
  38. package/azAd/UserAssignedIdentity.js +76 -0
  39. package/azAd/helpers/graphBuiltIn.d.ts +14 -0
  40. package/azAd/helpers/graphBuiltIn.js +5134 -0
  41. package/azAd/helpers/index.d.ts +3 -0
  42. package/azAd/helpers/index.js +39 -0
  43. package/azAd/helpers/rolesBuiltIn.d.ts +90 -0
  44. package/azAd/helpers/rolesBuiltIn.js +18601 -0
  45. package/azAd/helpers/rsRoleDefinition.d.ts +62 -0
  46. package/azAd/helpers/rsRoleDefinition.js +120 -0
  47. package/azAd/index.d.ts +7 -0
  48. package/azAd/index.js +24 -0
  49. package/base/BaseComponent.d.ts +53 -0
  50. package/base/BaseComponent.js +98 -0
  51. package/base/BaseResourceComponent.d.ts +108 -0
  52. package/base/BaseResourceComponent.js +180 -0
  53. package/base/helpers.d.ts +12 -0
  54. package/base/helpers.js +29 -0
  55. package/base/index.d.ts +3 -0
  56. package/base/index.js +43 -0
  57. package/common/PGPGenerator.d.ts +26 -0
  58. package/common/PGPGenerator.js +72 -0
  59. package/common/RandomPassword.d.ts +21 -0
  60. package/common/RandomPassword.js +84 -0
  61. package/common/RandomString.d.ts +20 -0
  62. package/common/RandomString.js +74 -0
  63. package/common/ResourceLocker.d.ts +9 -0
  64. package/common/ResourceLocker.js +52 -0
  65. package/common/RsGroup.d.ts +20 -0
  66. package/common/RsGroup.js +85 -0
  67. package/common/SshGenerator.d.ts +17 -0
  68. package/common/SshGenerator.js +66 -0
  69. package/common/index.d.ts +5 -0
  70. package/common/index.js +22 -0
  71. package/database/AzSql.d.ts +71 -0
  72. package/database/AzSql.js +283 -0
  73. package/database/MySql.d.ts +35 -0
  74. package/database/MySql.js +181 -0
  75. package/database/Postgres.d.ts +32 -0
  76. package/database/Postgres.js +171 -0
  77. package/database/Redis.d.ts +26 -0
  78. package/database/Redis.js +125 -0
  79. package/database/helpers.d.ts +7 -0
  80. package/database/helpers.js +52 -0
  81. package/database/index.d.ts +5 -0
  82. package/database/index.js +45 -0
  83. package/helpers/Location/LocationBuiltIn.d.ts +6 -0
  84. package/helpers/Location/LocationBuiltIn.js +493 -0
  85. package/helpers/Location/index.d.ts +3 -0
  86. package/helpers/Location/index.js +25 -0
  87. package/helpers/autoTags.d.ts +1 -0
  88. package/helpers/autoTags.js +27 -0
  89. package/helpers/azureEnv.d.ts +21 -0
  90. package/helpers/azureEnv.js +102 -0
  91. package/helpers/configHelper.d.ts +5 -0
  92. package/helpers/configHelper.js +54 -0
  93. package/helpers/index.d.ts +4 -0
  94. package/helpers/index.js +41 -0
  95. package/helpers/rsHelpers.d.ts +18 -0
  96. package/helpers/rsHelpers.js +92 -0
  97. package/helpers/stackEnv.d.ts +4 -0
  98. package/helpers/stackEnv.js +54 -0
  99. package/index.d.ts +14 -0
  100. package/index.js +53 -0
  101. package/logs/Logs.d.ts +48 -0
  102. package/logs/Logs.js +154 -0
  103. package/logs/helpers.d.ts +1 -0
  104. package/logs/helpers.js +38 -0
  105. package/logs/index.d.ts +1 -0
  106. package/logs/index.js +18 -0
  107. package/package.json +34 -0
  108. package/services/Automation.d.ts +16 -0
  109. package/services/Automation.js +85 -0
  110. package/services/AzSearch.d.ts +20 -0
  111. package/services/AzSearch.js +113 -0
  112. package/services/ServiceBus.d.ts +42 -0
  113. package/services/ServiceBus.js +256 -0
  114. package/services/index.d.ts +3 -0
  115. package/services/index.js +20 -0
  116. package/storage/StorageAccount.d.ts +53 -0
  117. package/storage/StorageAccount.js +261 -0
  118. package/storage/helpers.d.ts +24 -0
  119. package/storage/helpers.js +89 -0
  120. package/storage/index.d.ts +2 -0
  121. package/storage/index.js +42 -0
  122. package/types.d.ts +125 -0
  123. package/types.js +3 -0
  124. package/vault/EncryptionKey.d.ts +21 -0
  125. package/vault/EncryptionKey.js +73 -0
  126. package/vault/KeyVault.d.ts +31 -0
  127. package/vault/KeyVault.js +110 -0
  128. package/vault/VaultSecret.d.ts +23 -0
  129. package/vault/VaultSecret.js +72 -0
  130. package/vault/VaultSecrets.d.ts +25 -0
  131. package/vault/VaultSecrets.js +31 -0
  132. package/vault/helpers.d.ts +1 -0
  133. package/vault/helpers.js +13 -0
  134. package/vault/index.d.ts +5 -0
  135. package/vault/index.js +45 -0
  136. package/vm/DiskEncryptionSet.d.ts +16 -0
  137. package/vm/DiskEncryptionSet.js +74 -0
  138. package/vm/VirtualMachine.d.ts +45 -0
  139. package/vm/VirtualMachine.js +192 -0
  140. package/vm/helpers.d.ts +16 -0
  141. package/vm/helpers.js +15 -0
  142. package/vm/index.d.ts +3 -0
  143. package/vm/index.js +43 -0
  144. package/vnet/AzCdn.d.ts +44 -0
  145. package/vnet/AzCdn.js +276 -0
  146. package/vnet/Basion.d.ts +19 -0
  147. package/vnet/Basion.js +78 -0
  148. package/vnet/DnsZone.d.ts +36 -0
  149. package/vnet/DnsZone.js +113 -0
  150. package/vnet/Firewall.d.ts +53 -0
  151. package/vnet/Firewall.js +136 -0
  152. package/vnet/FirewallPolicies/FirewallPolicyBuilder.d.ts +18 -0
  153. package/vnet/FirewallPolicies/FirewallPolicyBuilder.js +91 -0
  154. package/vnet/FirewallPolicies/commonPolicies.d.ts +10 -0
  155. package/vnet/FirewallPolicies/commonPolicies.js +55 -0
  156. package/vnet/FirewallPolicies/index.d.ts +0 -0
  157. package/vnet/FirewallPolicies/index.js +2 -0
  158. package/vnet/IpAddresses.d.ts +36 -0
  159. package/vnet/IpAddresses.js +74 -0
  160. package/vnet/NetworkPeering.d.ts +21 -0
  161. package/vnet/NetworkPeering.js +85 -0
  162. package/vnet/PrivateDnsZone.d.ts +38 -0
  163. package/vnet/PrivateDnsZone.js +111 -0
  164. package/vnet/PrivateEndpoint.d.ts +43 -0
  165. package/vnet/PrivateEndpoint.js +181 -0
  166. package/vnet/RouteTable.d.ts +22 -0
  167. package/vnet/RouteTable.js +75 -0
  168. package/vnet/VirtualNetwork.d.ts +99 -0
  169. package/vnet/VirtualNetwork.js +311 -0
  170. package/vnet/VpnGateway.d.ts +18 -0
  171. package/vnet/VpnGateway.js +90 -0
  172. package/vnet/helpers.d.ts +16 -0
  173. package/vnet/helpers.js +47 -0
  174. package/vnet/index.d.ts +13 -0
  175. package/vnet/index.js +53 -0
  176. package/vnet/securityRules/SecurityRuleBuilder.d.ts +12 -0
  177. package/vnet/securityRules/SecurityRuleBuilder.js +55 -0
  178. package/vnet/securityRules/commonRules.d.ts +9 -0
  179. package/vnet/securityRules/commonRules.js +94 -0
  180. package/vnet/securityRules/index.d.ts +2 -0
  181. package/vnet/securityRules/index.js +19 -0
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CustomRoles = void 0;
37
+ const auth = __importStar(require("@pulumi/azure-native/authorization"));
38
+ const BaseComponent_1 = require("../base/BaseComponent");
39
+ const helpers_1 = require("../base/helpers");
40
+ const helpers_2 = require("../helpers");
41
+ class CustomRoles extends BaseComponent_1.BaseComponent {
42
+ constructor(name, args, opts) {
43
+ super((0, helpers_1.getComponentResourceType)('CustomRoles'), name, args, opts);
44
+ if (args.enableJustInTimeRemoteRole) {
45
+ this.createJustInTimeRemoteRole();
46
+ }
47
+ }
48
+ getOutputs() {
49
+ return {};
50
+ }
51
+ createJustInTimeRemoteRole() {
52
+ return new auth.RoleDefinition('JustInTime-User-Remote-Request', {
53
+ roleName: 'Just-In-Time-User-Remote-Request-Role',
54
+ description: 'Just-in-time virtual machine user remote request role',
55
+ scope: helpers_2.azureEnv.defaultSubScope,
56
+ permissions: [
57
+ {
58
+ actions: [
59
+ 'Microsoft.Security/locations/jitNetworkAccessPolicies/initiate/action',
60
+ 'Microsoft.Security/locations/jitNetworkAccessPolicies/*/read',
61
+ 'Microsoft.Security/policies/read',
62
+ 'Microsoft.Compute/virtualMachines/read',
63
+ 'Microsoft.Network/networkInterfaces/*/read',
64
+ ],
65
+ notActions: [],
66
+ },
67
+ ],
68
+ assignableScopes: [helpers_2.azureEnv.defaultSubScope],
69
+ });
70
+ }
71
+ }
72
+ exports.CustomRoles = CustomRoles;
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VzdG9tUm9sZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXpBZC9DdXN0b21Sb2xlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5RUFBMkQ7QUFFM0QseURBQXNEO0FBQ3RELDZDQUEyRDtBQUMzRCx3Q0FBc0M7QUFNdEMsTUFBYSxXQUFZLFNBQVEsNkJBQTZCO0lBQzVELFlBQVksSUFBWSxFQUFFLElBQW9CLEVBQUUsSUFBc0M7UUFDcEYsS0FBSyxDQUFDLElBQUEsa0NBQXdCLEVBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVqRSxJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQ0FBZ0MsRUFBRTtZQUMvRCxRQUFRLEVBQUUsdUNBQXVDO1lBQ2pELFdBQVcsRUFBRSx1REFBdUQ7WUFDcEUsS0FBSyxFQUFFLGtCQUFRLENBQUMsZUFBZTtZQUMvQixXQUFXLEVBQUU7Z0JBQ1g7b0JBQ0UsT0FBTyxFQUFFO3dCQUNQLHVFQUF1RTt3QkFDdkUsOERBQThEO3dCQUM5RCxrQ0FBa0M7d0JBQ2xDLHdDQUF3Qzt3QkFDeEMsNENBQTRDO3FCQUM3QztvQkFDRCxVQUFVLEVBQUUsRUFBRTtpQkFDZjthQUNGO1lBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxrQkFBUSxDQUFDLGVBQWUsQ0FBQztTQUM3QyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFqQ0Qsa0NBaUNDIn0=
@@ -0,0 +1,29 @@
1
+ import * as pulumi from '@pulumi/pulumi';
2
+ import { BaseComponent } from '../base/BaseComponent';
3
+ import * as types from '../types';
4
+ import { AzRoleArgs } from './AzRole';
5
+ export interface GroupRoleArgs extends Pick<AzRoleArgs, 'owners' | 'preventDuplicateNames'>, Partial<Record<types.GroupRoleTypes, Pick<AzRoleArgs, 'members'>>> {
6
+ preventDuplicateNames?: pulumi.Input<boolean>;
7
+ }
8
+ export interface GroupRoleOutput {
9
+ objectId: string;
10
+ displayName: string;
11
+ }
12
+ export declare class GroupRole extends BaseComponent<GroupRoleArgs> {
13
+ readonly admin: pulumi.Output<GroupRoleOutput>;
14
+ readonly contributor: pulumi.Output<GroupRoleOutput>;
15
+ readonly readOnly: pulumi.Output<GroupRoleOutput>;
16
+ constructor(name?: string, args?: GroupRoleArgs, opts?: pulumi.ComponentResourceOptions);
17
+ getOutputs(): {
18
+ admin: pulumi.Output<GroupRoleOutput>;
19
+ contributor: pulumi.Output<GroupRoleOutput>;
20
+ readOnly: pulumi.Output<GroupRoleOutput>;
21
+ };
22
+ private configHierarchyRoles;
23
+ /**
24
+ * Selectively picks properties from the component instance
25
+ * @param keys - Array of property keys to pick from the component
26
+ * @returns Object containing only the selected properties
27
+ */
28
+ PickOutputs<K extends keyof this>(...keys: K[]): Pick<this, K>;
29
+ }
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.GroupRole = void 0;
37
+ const azAd = __importStar(require("@pulumi/azuread"));
38
+ const pulumi = __importStar(require("@pulumi/pulumi"));
39
+ const BaseComponent_1 = require("../base/BaseComponent");
40
+ const helpers_1 = require("../base/helpers");
41
+ const helpers_2 = require("../helpers");
42
+ const AzRole_1 = require("./AzRole");
43
+ class GroupRole extends BaseComponent_1.BaseComponent {
44
+ admin;
45
+ contributor;
46
+ readOnly;
47
+ constructor(name = helpers_2.stackInfo.stack, args = {}, opts) {
48
+ super((0, helpers_1.getComponentResourceType)('GroupRole'), name, args, opts);
49
+ const roles = ['admin', 'contributor', 'readOnly'];
50
+ const roleInstances = Object.fromEntries(roles.map((role) => [
51
+ role,
52
+ new AzRole_1.AzRole(`${name} ${role}`, {
53
+ owners: args.owners,
54
+ members: args[role]?.members,
55
+ preventDuplicateNames: args.preventDuplicateNames,
56
+ }, { parent: this }),
57
+ ]));
58
+ this.admin = pulumi.output({
59
+ objectId: roleInstances.admin.objectId,
60
+ displayName: roleInstances.admin.displayName,
61
+ });
62
+ this.contributor = pulumi.output({
63
+ objectId: roleInstances.contributor.objectId,
64
+ displayName: roleInstances.contributor.displayName,
65
+ });
66
+ this.readOnly = pulumi.output({
67
+ objectId: roleInstances.readOnly.objectId,
68
+ displayName: roleInstances.readOnly.displayName,
69
+ });
70
+ this.configHierarchyRoles(roleInstances);
71
+ this.registerOutputs(this.getOutputs());
72
+ }
73
+ getOutputs() {
74
+ return {
75
+ admin: this.admin,
76
+ contributor: this.contributor,
77
+ readOnly: this.readOnly,
78
+ };
79
+ }
80
+ configHierarchyRoles(roles) {
81
+ if (this.admin && this.contributor) {
82
+ new azAd.GroupMember(`${this.name}-admin2contributor`, {
83
+ groupObjectId: this.contributor.objectId,
84
+ memberObjectId: this.admin.objectId,
85
+ }, { dependsOn: Object.values(roles), parent: this });
86
+ }
87
+ if (this.contributor && this.readOnly) {
88
+ new azAd.GroupMember(`${this.name}-contributor2readOnly`, {
89
+ groupObjectId: this.readOnly.objectId,
90
+ memberObjectId: this.contributor.objectId,
91
+ }, { dependsOn: Object.values(roles), parent: this });
92
+ }
93
+ }
94
+ /**
95
+ * Selectively picks properties from the component instance
96
+ * @param keys - Array of property keys to pick from the component
97
+ * @returns Object containing only the selected properties
98
+ */
99
+ PickOutputs(...keys) {
100
+ return keys.reduce((acc, key) => {
101
+ acc[key] = this[key];
102
+ return acc;
103
+ }, {});
104
+ }
105
+ }
106
+ exports.GroupRole = GroupRole;
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JvdXBSb2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F6QWQvR3JvdXBSb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUF3QztBQUN4Qyx1REFBeUM7QUFDekMseURBQXNEO0FBQ3RELDZDQUEyRDtBQUMzRCx3Q0FBdUM7QUFFdkMscUNBQThDO0FBYTlDLE1BQWEsU0FBVSxTQUFRLDZCQUE0QjtJQUN6QyxLQUFLLENBQWlDO0lBQ3RDLFdBQVcsQ0FBaUM7SUFDNUMsUUFBUSxDQUFpQztJQUV6RCxZQUFZLE9BQWUsbUJBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBc0IsRUFBRSxFQUFFLElBQXNDO1FBQzFHLEtBQUssQ0FBQyxJQUFBLGtDQUF3QixFQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFL0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBVSxDQUFDO1FBRTVELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ3RDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLElBQUk7WUFDSixJQUFJLGVBQU0sQ0FDUixHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsRUFDakI7Z0JBQ0UsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU87Z0JBQzVCLHFCQUFxQixFQUFFLElBQUksQ0FBQyxxQkFBcUI7YUFDbEQsRUFDRCxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDakI7U0FDRixDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUN6QixRQUFRLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQ3RDLFdBQVcsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVc7U0FDN0MsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQy9CLFFBQVEsRUFBRSxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVE7WUFDNUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxXQUFXLENBQUMsV0FBVztTQUNuRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDNUIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUTtZQUN6QyxXQUFXLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXO1NBQ2hELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3hCLENBQUM7SUFDSixDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBOEI7UUFDekQsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQ2xCLEdBQUcsSUFBSSxDQUFDLElBQUksb0JBQW9CLEVBQ2hDO2dCQUNFLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7Z0JBQ3hDLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7YUFDcEMsRUFDRCxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDbEQsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FDbEIsR0FBRyxJQUFJLENBQUMsSUFBSSx1QkFBdUIsRUFDbkM7Z0JBQ0UsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUTtnQkFDckMsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUTthQUMxQyxFQUNELEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUNsRCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUF1QixHQUFHLElBQVM7UUFDbkQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzlCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBSSxJQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBbUIsQ0FBQyxDQUFDO0lBQzFCLENBQUM7Q0FDRjtBQXhGRCw4QkF3RkMifQ==
@@ -0,0 +1,15 @@
1
+ import * as auth from '@pulumi/azure-native/authorization';
2
+ import * as pulumi from '@pulumi/pulumi';
3
+ import { BaseComponent } from '../base/BaseComponent';
4
+ export interface RoleAssignmentArgs extends Omit<auth.RoleAssignmentArgs, 'roleDefinitionId'> {
5
+ roleName: 'Owner' | 'Contributor' | 'Reader' | string;
6
+ }
7
+ export declare class RoleAssignment extends BaseComponent<RoleAssignmentArgs> {
8
+ readonly id: pulumi.Output<string>;
9
+ readonly resourceName: pulumi.Output<string>;
10
+ constructor(name: string, args: RoleAssignmentArgs, opts?: pulumi.ComponentResourceOptions);
11
+ getOutputs(): {
12
+ id: pulumi.Output<string>;
13
+ resourceName: pulumi.Output<string>;
14
+ };
15
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.RoleAssignment = void 0;
37
+ const auth = __importStar(require("@pulumi/azure-native/authorization"));
38
+ const BaseComponent_1 = require("../base/BaseComponent");
39
+ const rolesBuiltIn_1 = require("./helpers/rolesBuiltIn");
40
+ class RoleAssignment extends BaseComponent_1.BaseComponent {
41
+ id;
42
+ resourceName;
43
+ constructor(name, args, opts) {
44
+ super('RoleAssignment', name, args, opts);
45
+ const { roleName, ...props } = args;
46
+ const role = (0, rolesBuiltIn_1.getRoleDefinitionByName)(roleName);
47
+ const assignment = new auth.RoleAssignment(name, {
48
+ ...props,
49
+ roleDefinitionId: role.id,
50
+ }, { ...opts, parent: this });
51
+ this.id = assignment.id;
52
+ this.resourceName = assignment.name;
53
+ this.registerOutputs(this.getOutputs());
54
+ }
55
+ getOutputs() {
56
+ return {
57
+ id: this.id,
58
+ resourceName: this.resourceName,
59
+ };
60
+ }
61
+ }
62
+ exports.RoleAssignment = RoleAssignment;
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm9sZUFzc2lnbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXpBZC9Sb2xlQXNzaWdubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5RUFBMkQ7QUFFM0QseURBQXNEO0FBQ3RELHlEQUFpRTtBQU1qRSxNQUFhLGNBQWUsU0FBUSw2QkFBaUM7SUFDbkQsRUFBRSxDQUF3QjtJQUMxQixZQUFZLENBQXdCO0lBRXBELFlBQVksSUFBWSxFQUFFLElBQXdCLEVBQUUsSUFBc0M7UUFDeEYsS0FBSyxDQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFMUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBRyxJQUFBLHNDQUF1QixFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9DLE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FDeEMsSUFBSSxFQUNKO1lBQ0UsR0FBRyxLQUFLO1lBQ1IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEVBQUU7U0FDMUIsRUFDRCxFQUFFLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDMUIsQ0FBQztRQUVGLElBQUksQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDaEMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTlCRCx3Q0E4QkMifQ==
@@ -0,0 +1,17 @@
1
+ import * as pulumi from '@pulumi/pulumi';
2
+ import { BaseArgs, BaseResourceComponent } from '../base';
3
+ import { WithMemberOfArgs, WithResourceGroupInputs } from '../types';
4
+ export interface UserAssignedIdentityArgs extends Omit<BaseArgs, 'groupRoles'>, WithMemberOfArgs, WithResourceGroupInputs {
5
+ }
6
+ export declare class UserAssignedIdentity extends BaseResourceComponent<UserAssignedIdentityArgs> {
7
+ readonly id: pulumi.Output<string>;
8
+ readonly clientId: pulumi.Output<string>;
9
+ readonly principalId: pulumi.Output<string>;
10
+ constructor(name: string, args: UserAssignedIdentityArgs, opts?: pulumi.ComponentResourceOptions);
11
+ getOutputs(): {
12
+ id: pulumi.Output<string>;
13
+ clientId: pulumi.Output<string>;
14
+ principalId: pulumi.Output<string>;
15
+ };
16
+ private addMemberOf;
17
+ }
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.UserAssignedIdentity = void 0;
37
+ const mid = __importStar(require("@pulumi/azure-native/managedidentity"));
38
+ const azAd = __importStar(require("@pulumi/azuread"));
39
+ const pulumi = __importStar(require("@pulumi/pulumi"));
40
+ const base_1 = require("../base");
41
+ class UserAssignedIdentity extends base_1.BaseResourceComponent {
42
+ id;
43
+ clientId;
44
+ principalId;
45
+ constructor(name, args, opts) {
46
+ super('UserAssignedIdentity', name, args, opts);
47
+ const managedIdentity = new mid.UserAssignedIdentity(name, { ...args.rsGroup }, { ...opts, parent: this });
48
+ this.addSecrets({
49
+ id: managedIdentity.id,
50
+ clientId: managedIdentity.clientId,
51
+ principalId: managedIdentity.principalId,
52
+ });
53
+ this.id = managedIdentity.id;
54
+ this.clientId = managedIdentity.clientId;
55
+ this.principalId = managedIdentity.principalId;
56
+ this.addMemberOf();
57
+ this.registerOutputs();
58
+ }
59
+ getOutputs() {
60
+ return {
61
+ id: this.id,
62
+ clientId: this.clientId,
63
+ principalId: this.principalId,
64
+ };
65
+ }
66
+ addMemberOf() {
67
+ if (!this.args.memberof)
68
+ return;
69
+ this.args.memberof.map((group) => pulumi.output(group).apply((id) => new azAd.GroupMember(`${this.name}-${id.objectId}`, {
70
+ groupObjectId: id.objectId,
71
+ memberObjectId: this.principalId,
72
+ }, { parent: this })));
73
+ }
74
+ }
75
+ exports.UserAssignedIdentity = UserAssignedIdentity;
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlckFzc2lnbmVkSWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXpBZC9Vc2VyQXNzaWduZWRJZGVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwRUFBNEQ7QUFDNUQsc0RBQXdDO0FBQ3hDLHVEQUF5QztBQUN6QyxrQ0FBMEQ7QUFRMUQsTUFBYSxvQkFBcUIsU0FBUSw0QkFBK0M7SUFDdkUsRUFBRSxDQUF3QjtJQUMxQixRQUFRLENBQXdCO0lBQ2hDLFdBQVcsQ0FBd0I7SUFFbkQsWUFBWSxJQUFZLEVBQUUsSUFBOEIsRUFBRSxJQUFzQztRQUM5RixLQUFLLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVoRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTNHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDZCxFQUFFLEVBQUUsZUFBZSxDQUFDLEVBQUU7WUFDdEIsUUFBUSxFQUFFLGVBQWUsQ0FBQyxRQUFRO1lBQ2xDLFdBQVcsRUFBRSxlQUFlLENBQUMsV0FBVztTQUN6QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsRUFBRSxHQUFHLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQztRQUUvQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUN4QixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQ0wsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUNsQixHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUM3QjtZQUNFLGFBQWEsRUFBRSxFQUFFLENBQUMsUUFBUTtZQUMxQixjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDakMsRUFDRCxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDakIsQ0FDSixDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFqREQsb0RBaURDIn0=
@@ -0,0 +1,14 @@
1
+ type RoleProps = {
2
+ name: string;
3
+ type: 'Scope' | 'Role';
4
+ };
5
+ type RoleResultProps = {
6
+ id: string;
7
+ type: 'Scope' | 'Role';
8
+ };
9
+ type PermissionProps = {
10
+ resourceAppId: string;
11
+ resourceAccesses: Array<RoleResultProps>;
12
+ };
13
+ export declare function getGraphPermissions(...roleNames: RoleProps[]): PermissionProps;
14
+ export {};