@drunk-pulumi/azure 1.0.24 → 1.0.25
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.
- package/Aks/Helper.d.ts +4 -6
- package/Aks/Helper.js +13 -18
- package/Aks/Identity.js +3 -3
- package/Aks/index.js +4 -7
- package/AzAd/EnvRoles/EnvRoles.Consts.d.ts +6 -0
- package/AzAd/EnvRoles/EnvRoles.Consts.js +178 -0
- package/AzAd/{EnvRoles.d.ts → EnvRoles/EnvRoles.d.ts} +1 -9
- package/AzAd/EnvRoles/EnvRoles.js +91 -0
- package/AzAd/EnvRoles/index.d.ts +2 -0
- package/AzAd/EnvRoles/index.js +19 -0
- package/AzAd/Group.d.ts +2 -2
- package/AzAd/Group.js +3 -3
- package/AzAd/Helper.js +6 -66
- package/AzAd/Identities/AzDevOpsIdentity.js +4 -5
- package/AzAd/Identities/AzDevOpsManagedIdentity.js +1 -1
- package/AzAd/Identities/AzUserAdRevertSync.js +3 -3
- package/AzAd/Identity.js +1 -2
- package/AzAd/RoleDefinitions/index.d.ts +1 -0
- package/AzAd/RoleDefinitions/index.js +18 -0
- package/AzAd/{GraphDefinition.js → Roles/GraphDefinition.js} +1 -1
- package/AzAd/Roles/Role.d.ts +16 -0
- package/AzAd/Roles/Role.js +31 -0
- package/AzAd/{RoleAssignment.d.ts → Roles/RoleAssignment.d.ts} +1 -1
- package/AzAd/{RoleAssignment.js → Roles/RoleAssignment.js} +2 -2
- package/AzAd/{RolesBuiltIn.js → Roles/RolesBuiltIn.js} +1 -1
- package/AzAd/Roles/index.d.ts +3 -0
- package/AzAd/Roles/index.js +22 -0
- package/AzAd/UserAssignedIdentity.js +1 -2
- package/AzAd/index.d.ts +6 -0
- package/AzAd/index.js +23 -0
- package/Builder/AksBuilder.js +3 -3
- package/Builder/ApimProductBuilder.js +1 -2
- package/Builder/DnsZoneBuilder.js +2 -3
- package/Builder/EnvRoleBuilder.d.ts +4 -23
- package/Builder/EnvRoleBuilder.js +8 -9
- package/Builder/PrivateDnsZoneBuilder.d.ts +1 -1
- package/Builder/PrivateDnsZoneBuilder.js +3 -3
- package/Builder/ResourceBuilder.js +3 -3
- package/Builder/types/envRoleBuilder.d.ts +1 -3
- package/Builder/types/resourceBuilder.d.ts +1 -3
- package/Cdn/index.d.ts +1 -1
- package/Cdn/index.js +2 -2
- package/Common/AzureEnv/AutoTags.js +27 -0
- package/Common/{AzureEnv.js → AzureEnv/index.js} +3 -3
- package/Common/{LocationBuiltIn.js → Location/LocationBuiltIn.js} +1 -1
- package/Common/Location/index.js +36 -0
- package/Common/{Naming/Rulers.d.ts → Naming.d.ts} +12 -3
- package/Common/Naming.js +392 -0
- package/Common/RsInfo/Helper.js +8 -6
- package/Common/index.d.ts +1 -4
- package/Common/index.js +7 -7
- package/Core/KeyGenerators.js +4 -5
- package/Core/Random.js +2 -3
- package/KeyVault/CustomHelper.d.ts +1 -3
- package/KeyVault/CustomHelper.js +27 -3
- package/KeyVault/Helper.d.ts +5 -8
- package/KeyVault/Helper.js +35 -61
- package/Logs/AppInsight.js +1 -2
- package/Logs/Helpers.js +1 -3
- package/Logs/LogAnalytics.js +1 -2
- package/README.md +37 -29
- package/Sql/index.js +3 -3
- package/Storage/Helper.js +5 -6
- package/Storage/index.js +7 -8
- package/VM/index.js +1 -2
- package/VNet/PrivateEndpoint.d.ts +40 -3
- package/VNet/PrivateEndpoint.js +62 -55
- package/VNet/index.d.ts +1 -11
- package/VNet/index.js +5 -17
- package/envHelper.d.ts +4 -0
- package/envHelper.js +62 -0
- package/package.json +1 -1
- package/types.d.ts +22 -8
- package/AzAd/ConditionalPolicies/index.d.ts +0 -0
- package/AzAd/ConditionalPolicies/index.js +0 -2
- package/AzAd/EnvRoles.Consts.d.ts +0 -22
- package/AzAd/EnvRoles.Consts.js +0 -173
- package/AzAd/EnvRoles.js +0 -94
- package/AzAd/Role.d.ts +0 -17
- package/AzAd/Role.js +0 -30
- package/Common/AutoTags.js +0 -27
- package/Common/GlobalEnv.d.ts +0 -3
- package/Common/GlobalEnv.js +0 -29
- package/Common/Location.js +0 -36
- package/Common/Naming/Rulers.js +0 -537
- package/Common/Naming/index.d.ts +0 -10
- package/Common/Naming/index.js +0 -112
- /package/AzAd/{GraphDefinition.d.ts → Roles/GraphDefinition.d.ts} +0 -0
- /package/AzAd/{RolesBuiltIn.d.ts → Roles/RolesBuiltIn.d.ts} +0 -0
- /package/Common/{AutoTags.d.ts → AzureEnv/AutoTags.d.ts} +0 -0
- /package/Common/{AzureEnv.d.ts → AzureEnv/index.d.ts} +0 -0
- /package/Common/{LocationBuiltIn.d.ts → Location/LocationBuiltIn.d.ts} +0 -0
- /package/Common/{Location.d.ts → Location/index.d.ts} +0 -0
package/Aks/Helper.d.ts
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { KeyVaultInfo, ResourceInfo, WithNamedType } from '../types';
|
|
2
2
|
/** Get AKS Config from Managed Cluster*/
|
|
3
|
-
export declare const getAksConfig: ({
|
|
4
|
-
|
|
5
|
-
formattedName?: boolean;
|
|
3
|
+
export declare const getAksConfig: ({ resourceInfo, disableLocalAccounts, }: {
|
|
4
|
+
resourceInfo: ResourceInfo;
|
|
6
5
|
disableLocalAccounts?: boolean;
|
|
7
6
|
}) => Promise<string>;
|
|
8
7
|
/** Get AKS Config from Key Vault*/
|
|
9
|
-
export declare const
|
|
8
|
+
export declare const getAksConfigFromVault: ({ name, version, vaultInfo, }: WithNamedType & {
|
|
10
9
|
version?: string;
|
|
11
10
|
vaultInfo: KeyVaultInfo;
|
|
12
|
-
formattedName?: boolean;
|
|
13
11
|
}) => Promise<string>;
|
|
14
|
-
export declare const
|
|
12
|
+
export declare const getAksPrivateDnsZone: (aksInfo: ResourceInfo) => Promise<ResourceInfo | undefined>;
|
package/Aks/Helper.js
CHANGED
|
@@ -23,42 +23,37 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
26
|
+
exports.getAksPrivateDnsZone = exports.getAksConfigFromVault = exports.getAksConfig = void 0;
|
|
27
27
|
const cs = __importStar(require("@pulumi/azure-native/containerservice"));
|
|
28
28
|
const Common_1 = require("../Common");
|
|
29
29
|
const Helper_1 = require("../KeyVault/Helper");
|
|
30
30
|
const pulumi_1 = require("@pulumi/pulumi");
|
|
31
31
|
/** Get AKS Config from Managed Cluster*/
|
|
32
|
-
const getAksConfig = async ({
|
|
33
|
-
const aksName = formattedName ? name : Common_1.naming.getAksName(name);
|
|
34
|
-
const group = formattedName
|
|
35
|
-
? groupName
|
|
36
|
-
: Common_1.naming.getResourceGroupName(groupName);
|
|
32
|
+
const getAksConfig = async ({ resourceInfo, disableLocalAccounts, }) => {
|
|
37
33
|
const aks = disableLocalAccounts
|
|
38
34
|
? await cs.listManagedClusterUserCredentials({
|
|
39
|
-
resourceName:
|
|
40
|
-
resourceGroupName: group,
|
|
35
|
+
resourceName: resourceInfo.name,
|
|
36
|
+
resourceGroupName: resourceInfo.group.resourceGroupName,
|
|
41
37
|
})
|
|
42
38
|
: await cs.listManagedClusterAdminCredentials({
|
|
43
|
-
resourceName:
|
|
44
|
-
resourceGroupName: group,
|
|
39
|
+
resourceName: resourceInfo.name,
|
|
40
|
+
resourceGroupName: resourceInfo.group.resourceGroupName,
|
|
45
41
|
});
|
|
46
42
|
return Buffer.from(aks.kubeconfigs[0].value, 'base64').toString('utf8');
|
|
47
43
|
};
|
|
48
44
|
exports.getAksConfig = getAksConfig;
|
|
49
45
|
/** Get AKS Config from Key Vault*/
|
|
50
|
-
const
|
|
51
|
-
const aksName =
|
|
46
|
+
const getAksConfigFromVault = async ({ name, version, vaultInfo, }) => {
|
|
47
|
+
const aksName = Common_1.naming.getAksName(name);
|
|
52
48
|
const rs = await (0, Helper_1.getSecret)({
|
|
53
49
|
name: `${aksName}-config`,
|
|
54
50
|
version,
|
|
55
51
|
vaultInfo,
|
|
56
|
-
nameFormatted: false,
|
|
57
52
|
});
|
|
58
53
|
return rs?.value || '';
|
|
59
54
|
};
|
|
60
|
-
exports.
|
|
61
|
-
const
|
|
55
|
+
exports.getAksConfigFromVault = getAksConfigFromVault;
|
|
56
|
+
const getAksPrivateDnsZone = async (aksInfo) => {
|
|
62
57
|
const aks = await cs.getManagedCluster({
|
|
63
58
|
resourceName: aksInfo.name,
|
|
64
59
|
resourceGroupName: aksInfo.group.resourceGroupName,
|
|
@@ -69,9 +64,9 @@ const getAksPrivateDnz = async (aksInfo) => {
|
|
|
69
64
|
const rsGroup = aks.nodeResourceGroup;
|
|
70
65
|
return {
|
|
71
66
|
name: dnsName,
|
|
72
|
-
group: { resourceGroupName: rsGroup, location:
|
|
67
|
+
group: { resourceGroupName: rsGroup, location: 'global' },
|
|
73
68
|
id: (0, pulumi_1.interpolate) `${Common_1.defaultSubScope}/resourceGroups/${rsGroup}/providers/Microsoft.Network/privateDnsZones/${dnsName}`,
|
|
74
69
|
};
|
|
75
70
|
};
|
|
76
|
-
exports.
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
exports.getAksPrivateDnsZone = getAksPrivateDnsZone;
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0Frcy9IZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwRUFBNEQ7QUFDNUQsc0NBQW9EO0FBRXBELCtDQUErQztBQUMvQywyQ0FBNkM7QUFFN0MseUNBQXlDO0FBQ2xDLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxFQUNqQyxZQUFZLEVBQ1osb0JBQW9CLEdBSXJCLEVBQW1CLEVBQUU7SUFDcEIsTUFBTSxHQUFHLEdBQUcsb0JBQW9CO1FBQzlCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztZQUN6QyxZQUFZLEVBQUUsWUFBWSxDQUFDLElBQUk7WUFDL0IsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7U0FDeEQsQ0FBQztRQUNKLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQztZQUMxQyxZQUFZLEVBQUUsWUFBWSxDQUFDLElBQUk7WUFDL0IsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7U0FDeEQsQ0FBQyxDQUFDO0lBRVAsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxRSxDQUFDLENBQUM7QUFsQlcsUUFBQSxZQUFZLGdCQWtCdkI7QUFFRixtQ0FBbUM7QUFDNUIsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLEVBQUUsRUFDMUMsSUFBSSxFQUNKLE9BQU8sRUFDUCxTQUFTLEdBSVYsRUFBbUIsRUFBRTtJQUNwQixNQUFNLE9BQU8sR0FBRyxlQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxrQkFBUyxFQUFDO1FBQ3pCLElBQUksRUFBRSxHQUFHLE9BQU8sU0FBUztRQUN6QixPQUFPO1FBQ1AsU0FBUztLQUNWLENBQUMsQ0FBQztJQUNILE9BQU8sRUFBRSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBZlcsUUFBQSxxQkFBcUIseUJBZWhDO0FBRUssTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQ3ZDLE9BQXFCLEVBQ2MsRUFBRTtJQUNyQyxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztRQUNyQyxZQUFZLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFDMUIsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7S0FDbkQsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDdkMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5RCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsaUJBQWtCLENBQUM7SUFFdkMsT0FBTztRQUNMLElBQUksRUFBRSxPQUFPO1FBQ2IsS0FBSyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7UUFDekQsRUFBRSxFQUFFLElBQUEsb0JBQVcsRUFBQSxHQUFHLHdCQUFlLG1CQUFtQixPQUFPLGdEQUFnRCxPQUFPLEVBQUU7S0FDckcsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFqQlcsUUFBQSxvQkFBb0Isd0JBaUIvQiJ9
|
package/Aks/Identity.js
CHANGED
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const Identity_1 = __importDefault(require("../AzAd/Identity"));
|
|
7
7
|
const Common_1 = require("../Common");
|
|
8
|
-
const
|
|
8
|
+
const AzAd_1 = require("../AzAd");
|
|
9
9
|
//** The AzAD app Identity for Azure Kubernetes for RBAC */
|
|
10
10
|
exports.default = ({ name, group, vaultInfo, dependsOn }) => {
|
|
11
11
|
const serverIdentity = (0, Identity_1.default)({
|
|
@@ -17,7 +17,7 @@ exports.default = ({ name, group, vaultInfo, dependsOn }) => {
|
|
|
17
17
|
vaultInfo,
|
|
18
18
|
dependsOn,
|
|
19
19
|
});
|
|
20
|
-
(0,
|
|
20
|
+
(0, AzAd_1.roleAssignment)({
|
|
21
21
|
name: `${name}-svId-rg`,
|
|
22
22
|
dependsOn: serverIdentity.instance,
|
|
23
23
|
principalId: serverIdentity.principalId,
|
|
@@ -27,4 +27,4 @@ exports.default = ({ name, group, vaultInfo, dependsOn }) => {
|
|
|
27
27
|
});
|
|
28
28
|
return serverIdentity;
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQWtzL0lkZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0VBQStDO0FBRS9DLHNDQUFtQztBQUNuQyxrQ0FBeUM7QUFJekMsMkRBQTJEO0FBQzNELGtCQUFlLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQVMsRUFBRSxFQUFFO0lBQzlELE1BQU0sY0FBYyxHQUFHLElBQUEsa0JBQWUsRUFBQztRQUNyQyxJQUFJLEVBQUUsR0FBRyxJQUFJLE1BQU07UUFDbkIsa0JBQWtCLEVBQUUsS0FBSztRQUN6QixlQUFlLEVBQUUsSUFBSTtRQUNyQixZQUFZLEVBQUUsS0FBSztRQUNuQixPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVM7UUFDVCxTQUFTO0tBQ1YsQ0FBQyxDQUFDO0lBRUgsSUFBQSxxQkFBYyxFQUFDO1FBQ2IsSUFBSSxFQUFFLEdBQUcsSUFBSSxVQUFVO1FBQ3ZCLFNBQVMsRUFBRSxjQUFjLENBQUMsUUFBUTtRQUNsQyxXQUFXLEVBQUUsY0FBYyxDQUFDLFdBQVk7UUFDeEMsYUFBYSxFQUFFLGtCQUFrQjtRQUNqQyxLQUFLLEVBQUUsZUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDNUIsUUFBUSxFQUFFLFFBQVE7S0FDbkIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQyxDQUFDIn0=
|
package/Aks/index.js
CHANGED
|
@@ -37,7 +37,7 @@ const Identity_1 = __importDefault(require("./Identity"));
|
|
|
37
37
|
const Helper_1 = require("./Helper");
|
|
38
38
|
const CustomHelper_1 = require("../KeyVault/CustomHelper");
|
|
39
39
|
const KeyVaultBase_1 = __importDefault(require("@drunk-pulumi/azure-providers/AzBase/KeyVaultBase"));
|
|
40
|
-
const
|
|
40
|
+
const AzAd_1 = require("../AzAd");
|
|
41
41
|
const autoScaleFor = ({ enableAutoScaling, nodeType, env, }) => {
|
|
42
42
|
const nodeCount = 1;
|
|
43
43
|
const minCount = 1;
|
|
@@ -363,7 +363,7 @@ exports.default = async ({ group, name, aksAccess, envRoles, envUIDInfo, vaultIn
|
|
|
363
363
|
}
|
|
364
364
|
if (identity) {
|
|
365
365
|
//This ask identity needs to have contributor role into resource group
|
|
366
|
-
(0,
|
|
366
|
+
(0, AzAd_1.roleAssignment)({
|
|
367
367
|
name: `${aksName}-rg`,
|
|
368
368
|
dependsOn: aks,
|
|
369
369
|
principalId: identity.principalId,
|
|
@@ -385,16 +385,13 @@ exports.default = async ({ group, name, aksAccess, envRoles, envUIDInfo, vaultIn
|
|
|
385
385
|
});
|
|
386
386
|
//Update Vault
|
|
387
387
|
const config = await (0, Helper_1.getAksConfig)({
|
|
388
|
-
name: aksName,
|
|
389
|
-
groupName: group.resourceGroupName,
|
|
390
|
-
formattedName: true,
|
|
388
|
+
resourceInfo: { name: aksName, group, id: aks.id },
|
|
391
389
|
disableLocalAccounts: aksAccess.disableLocalAccounts,
|
|
392
390
|
});
|
|
393
391
|
if (vaultInfo) {
|
|
394
392
|
(0, CustomHelper_1.addCustomSecret)({
|
|
395
393
|
name: secretName,
|
|
396
394
|
value: config,
|
|
397
|
-
formattedName: true,
|
|
398
395
|
dependsOn: aks,
|
|
399
396
|
contentType: aksAccess.disableLocalAccounts
|
|
400
397
|
? `${name}-UserCredentials`
|
|
@@ -443,4 +440,4 @@ exports.default = async ({ group, name, aksAccess, envRoles, envUIDInfo, vaultIn
|
|
|
443
440
|
: undefined,
|
|
444
441
|
};
|
|
445
442
|
};
|
|
446
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQWtzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkVBQTZEO0FBQzdELHVEQUF5QztBQUN6QywyQ0FBdUQ7QUFDdkQsNkVBQStEO0FBUy9ELHNDQVFtQjtBQUNuQiwyQ0FBd0M7QUFDeEMsMERBQTRDO0FBQzVDLHFDQUF3QztBQUN4QywyREFBMkQ7QUFDM0QscUdBQWdGO0FBQ2hGLDJEQUF3RDtBQUV4RCxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQ3BCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsR0FBRyxHQUtKLEVBQUUsRUFBRTtJQUNILE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNwQixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDbkIsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRWpCLElBQUksR0FBRyxLQUFLLHFCQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsUUFBUSxRQUFRLEVBQUUsQ0FBQztZQUNqQixLQUFLLE1BQU07Z0JBQ1QsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDYixNQUFNO1lBRVIsS0FBSyxTQUFTLENBQUM7WUFDZixLQUFLLFFBQVEsQ0FBQztZQUNkO2dCQUNFLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ2IsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLGlCQUFpQjtRQUNqQixTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUNwRCxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUNsRCxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUztLQUNuRCxDQUFDO0FBQ0os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
|
|
443
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQWtzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkVBQTZEO0FBQzdELHVEQUF5QztBQUN6QywyQ0FBdUQ7QUFDdkQsNkVBQStEO0FBUy9ELHNDQVFtQjtBQUNuQiwyQ0FBd0M7QUFDeEMsMERBQTRDO0FBQzVDLHFDQUF3QztBQUN4QywyREFBMkQ7QUFDM0QscUdBQWdGO0FBQ2hGLGtDQUF5QztBQUd6QyxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQ3BCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsR0FBRyxHQUtKLEVBQUUsRUFBRTtJQUNILE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNwQixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDbkIsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRWpCLElBQUksR0FBRyxLQUFLLHFCQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsUUFBUSxRQUFRLEVBQUUsQ0FBQztZQUNqQixLQUFLLE1BQU07Z0JBQ1QsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDYixNQUFNO1lBRVIsS0FBSyxTQUFTLENBQUM7WUFDZixLQUFLLFFBQVEsQ0FBQztZQUNkO2dCQUNFLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ2IsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLGlCQUFpQjtRQUNqQixTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUNwRCxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUNsRCxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUztLQUNuRCxDQUFDO0FBQ0os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
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { RoleAssignmentProps } from '../Roles';
|
|
2
|
+
import { EnvRoleKeyTypes, EnvRolesInfo, RoleEnableTypes } from '../../types';
|
|
3
|
+
export declare const grantEnvRolesAccess: ({ name, envRoles, scope, dependsOn, ...others }: RoleEnableTypes & Omit<RoleAssignmentProps, "roleName" | "principalType" | "principalId"> & {
|
|
4
|
+
envRoles: EnvRolesInfo;
|
|
5
|
+
}) => void;
|
|
6
|
+
export declare const getRoleNames: ({ enableRGRoles, enableIotRoles, enableVaultRoles, enableAksRoles, enableStorageRoles, enableACRRoles, enableAppConfig, enableServiceBus, enableSignalR, }: RoleEnableTypes) => Record<EnvRoleKeyTypes, string[]>;
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRoleNames = exports.grantEnvRolesAccess = void 0;
|
|
4
|
+
const Roles_1 = require("../Roles");
|
|
5
|
+
const getRoleFor = (roleType, roleCollection, results) => {
|
|
6
|
+
if (!roleType)
|
|
7
|
+
return results;
|
|
8
|
+
const allows = {
|
|
9
|
+
readOnly: typeof roleType === 'boolean' ? roleType : roleType.readOnly,
|
|
10
|
+
contributor: typeof roleType === 'boolean' ? roleType : roleType.contributor,
|
|
11
|
+
admin: typeof roleType === 'boolean' ? roleType : roleType.admin,
|
|
12
|
+
};
|
|
13
|
+
if (allows.readOnly) {
|
|
14
|
+
roleCollection.readOnly.forEach((r) => results.readOnly.add(r));
|
|
15
|
+
}
|
|
16
|
+
if (allows.contributor) {
|
|
17
|
+
roleCollection.contributor.forEach((r) => results.contributor.add(r));
|
|
18
|
+
}
|
|
19
|
+
if (allows.admin) {
|
|
20
|
+
roleCollection.admin.forEach((r) => results.admin.add(r));
|
|
21
|
+
}
|
|
22
|
+
return results;
|
|
23
|
+
};
|
|
24
|
+
const grantEnvRolesAccess = ({ name, envRoles, scope, dependsOn, ...others }) => {
|
|
25
|
+
const roles = (0, exports.getRoleNames)(others);
|
|
26
|
+
Object.keys(envRoles).forEach((k) => {
|
|
27
|
+
const type = k;
|
|
28
|
+
const objectId = envRoles[type].objectId;
|
|
29
|
+
if (!objectId) {
|
|
30
|
+
console.warn(`The Env role '${type}' was ignored as the objectId was NULL.`);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const n = `${name}-${type}`;
|
|
34
|
+
roles[type].forEach((r) => (0, Roles_1.roleAssignment)({
|
|
35
|
+
name: n,
|
|
36
|
+
roleName: r,
|
|
37
|
+
principalId: objectId,
|
|
38
|
+
principalType: 'Group',
|
|
39
|
+
scope,
|
|
40
|
+
dependsOn,
|
|
41
|
+
}));
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
exports.grantEnvRolesAccess = grantEnvRolesAccess;
|
|
45
|
+
//Resource Group Role
|
|
46
|
+
const RGRoleNames = {
|
|
47
|
+
readOnly: ['Reader'],
|
|
48
|
+
contributor: ['Contributor'],
|
|
49
|
+
admin: ['Owner'],
|
|
50
|
+
};
|
|
51
|
+
//AKS Roles
|
|
52
|
+
const AksRoleNames = {
|
|
53
|
+
readOnly: [
|
|
54
|
+
'Azure Kubernetes Service RBAC Reader',
|
|
55
|
+
'Azure Kubernetes Service Cluster User Role',
|
|
56
|
+
],
|
|
57
|
+
contributor: [
|
|
58
|
+
'Azure Kubernetes Service RBAC Writer',
|
|
59
|
+
'Azure Kubernetes Service Cluster User Role',
|
|
60
|
+
],
|
|
61
|
+
admin: [
|
|
62
|
+
'Azure Kubernetes Service RBAC Cluster Admin',
|
|
63
|
+
'Azure Kubernetes Service RBAC Cluster Admin',
|
|
64
|
+
],
|
|
65
|
+
};
|
|
66
|
+
//IOT Roles
|
|
67
|
+
const IOTHubRoleNames = {
|
|
68
|
+
readOnly: ['IoT Hub Data Reader'],
|
|
69
|
+
contributor: ['IoT Hub Data Contributor'],
|
|
70
|
+
admin: ['IoT Hub Registry Contributor', 'IoT Hub Twin Contributor'],
|
|
71
|
+
};
|
|
72
|
+
//Key Vault Roles
|
|
73
|
+
const KeyVaultRoleNames = {
|
|
74
|
+
readOnly: [
|
|
75
|
+
'Key Vault Crypto Service Encryption User',
|
|
76
|
+
'Key Vault Crypto Service Release User',
|
|
77
|
+
'Key Vault Secrets User',
|
|
78
|
+
'Key Vault Crypto User',
|
|
79
|
+
'Key Vault Certificate User',
|
|
80
|
+
'Key Vault Reader',
|
|
81
|
+
],
|
|
82
|
+
contributor: [
|
|
83
|
+
'Key Vault Certificates Officer',
|
|
84
|
+
'Key Vault Crypto Officer',
|
|
85
|
+
'Key Vault Secrets Officer',
|
|
86
|
+
'Key Vault Contributor',
|
|
87
|
+
],
|
|
88
|
+
admin: ['Key Vault Administrator', 'Key Vault Data Access Administrator'],
|
|
89
|
+
};
|
|
90
|
+
//Storage Roles
|
|
91
|
+
const StorageRoleNames = {
|
|
92
|
+
readOnly: [
|
|
93
|
+
'Storage Blob Data Reader',
|
|
94
|
+
'Storage File Data SMB Share Reader',
|
|
95
|
+
'Storage Queue Data Reader',
|
|
96
|
+
'Storage Table Data Reader',
|
|
97
|
+
],
|
|
98
|
+
contributor: [
|
|
99
|
+
'Storage Account Backup Contributor',
|
|
100
|
+
'Storage Account Contributor',
|
|
101
|
+
'Storage Account Encryption Scope Contributor Role',
|
|
102
|
+
'Storage Blob Data Contributor',
|
|
103
|
+
'Storage File Data Privileged Reader',
|
|
104
|
+
'Storage File Data SMB Share Contributor',
|
|
105
|
+
'Storage File Data SMB Share Elevated Contributor',
|
|
106
|
+
'Storage Queue Data Contributor',
|
|
107
|
+
'Storage Queue Data Message Processor',
|
|
108
|
+
'Storage Queue Data Message Sender',
|
|
109
|
+
'Storage Table Data Contributor',
|
|
110
|
+
],
|
|
111
|
+
admin: [
|
|
112
|
+
'Storage Account Key Operator Service Role',
|
|
113
|
+
'Storage Blob Data Owner',
|
|
114
|
+
'Storage File Data Privileged Contributor',
|
|
115
|
+
],
|
|
116
|
+
};
|
|
117
|
+
//Container Registry Roles
|
|
118
|
+
const ContainerRegistry = {
|
|
119
|
+
readOnly: [
|
|
120
|
+
//'ACR Registry Catalog Lister',
|
|
121
|
+
'ACR Repository Reader',
|
|
122
|
+
'AcrQuarantineReader',
|
|
123
|
+
//'AcrPull',
|
|
124
|
+
],
|
|
125
|
+
contributor: [
|
|
126
|
+
'AcrImageSigner',
|
|
127
|
+
'AcrPull',
|
|
128
|
+
'AcrPush',
|
|
129
|
+
//'ACR Repository Contributor',
|
|
130
|
+
//'ACR Repository Writer',
|
|
131
|
+
//'AcrQuarantineWriter',
|
|
132
|
+
],
|
|
133
|
+
admin: ['AcrDelete'],
|
|
134
|
+
};
|
|
135
|
+
//AppConfig Roles
|
|
136
|
+
const AppConfigRoleNames = {
|
|
137
|
+
readOnly: ['App Configuration Data Reader'],
|
|
138
|
+
contributor: ['App Configuration Data Owner'],
|
|
139
|
+
admin: [],
|
|
140
|
+
};
|
|
141
|
+
const ServiceBusRoles = {
|
|
142
|
+
readOnly: ['Azure Service Bus Data Receiver'],
|
|
143
|
+
contributor: ['Azure Service Bus Data Sender'],
|
|
144
|
+
admin: ['Azure Service Bus Data Owner'],
|
|
145
|
+
};
|
|
146
|
+
const SignalRRoles = {
|
|
147
|
+
readOnly: ['SignalR REST API Reader'],
|
|
148
|
+
contributor: ['SignalR App Server'],
|
|
149
|
+
admin: ['SignalR REST API Owner'],
|
|
150
|
+
};
|
|
151
|
+
// const RedisCacheRoles: Record<EnvRoleKeyTypes, string[]> = {
|
|
152
|
+
// readOnly: ['Azure Service Bus Data Receiver'],
|
|
153
|
+
// contributor: ['Azure Service Bus Data Sender'],
|
|
154
|
+
// admin: ['Azure Service Bus Data Owner'],
|
|
155
|
+
// };
|
|
156
|
+
const getRoleNames = ({ enableRGRoles, enableIotRoles, enableVaultRoles, enableAksRoles, enableStorageRoles, enableACRRoles, enableAppConfig, enableServiceBus, enableSignalR, }) => {
|
|
157
|
+
const rs = {
|
|
158
|
+
readOnly: new Set(),
|
|
159
|
+
admin: new Set(),
|
|
160
|
+
contributor: new Set(),
|
|
161
|
+
};
|
|
162
|
+
getRoleFor(enableIotRoles, IOTHubRoleNames, rs);
|
|
163
|
+
getRoleFor(enableRGRoles, RGRoleNames, rs);
|
|
164
|
+
getRoleFor(enableVaultRoles, KeyVaultRoleNames, rs);
|
|
165
|
+
getRoleFor(enableAksRoles, AksRoleNames, rs);
|
|
166
|
+
getRoleFor(enableStorageRoles, StorageRoleNames, rs);
|
|
167
|
+
getRoleFor(enableACRRoles, ContainerRegistry, rs);
|
|
168
|
+
getRoleFor(enableAppConfig, AppConfigRoleNames, rs);
|
|
169
|
+
getRoleFor(enableServiceBus, ServiceBusRoles, rs);
|
|
170
|
+
getRoleFor(enableSignalR, SignalRRoles, rs);
|
|
171
|
+
return {
|
|
172
|
+
readOnly: Array.from(rs.readOnly).sort(),
|
|
173
|
+
admin: Array.from(rs.admin).sort(),
|
|
174
|
+
contributor: Array.from(rs.contributor).sort(),
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
exports.getRoleNames = getRoleNames;
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW52Um9sZXMuQ29uc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0F6QWQvRW52Um9sZXMvRW52Um9sZXMuQ29uc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9DQUErRDtBQVMvRCxNQUFNLFVBQVUsR0FBRyxDQUNqQixRQUFvQyxFQUNwQyxjQUFpRCxFQUNqRCxPQUFxQixFQUNyQixFQUFFO0lBQ0YsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPLE9BQU8sQ0FBQztJQUU5QixNQUFNLE1BQU0sR0FBRztRQUNiLFFBQVEsRUFBRSxPQUFPLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVE7UUFDdEUsV0FBVyxFQUNULE9BQU8sUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVztRQUNqRSxLQUFLLEVBQUUsT0FBTyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0tBQ2pFLENBQUM7SUFFRixJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwQixjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkIsY0FBYyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFD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
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import { KeyVaultInfo } from '
|
|
2
|
-
import { Output } from '@pulumi/pulumi';
|
|
3
|
-
export type EnvRoleKeyTypes = 'readOnly' | 'contributor' | 'admin';
|
|
4
|
-
type EnvRoleInfoType = {
|
|
5
|
-
objectId: string;
|
|
6
|
-
displayName: string;
|
|
7
|
-
};
|
|
8
|
-
export type EnvRolesInfo = Record<EnvRoleKeyTypes, Output<EnvRoleInfoType> | EnvRoleInfoType>;
|
|
1
|
+
import { EnvRolesInfo, KeyVaultInfo } from '../../types';
|
|
9
2
|
export type CreateEnvRolesType = EnvRolesInfo & {
|
|
10
3
|
pushToVault: (vaultInfo: KeyVaultInfo) => void;
|
|
11
4
|
};
|
|
@@ -13,4 +6,3 @@ export declare const pushEnvRolesToVault: (envRoles: EnvRolesInfo, vaultInfo: Ke
|
|
|
13
6
|
export declare const createEnvRoles: () => CreateEnvRolesType;
|
|
14
7
|
/** Get All Env Role Objects */
|
|
15
8
|
export declare const getEnvRolesOutput: (vaultInfo: KeyVaultInfo) => EnvRolesInfo;
|
|
16
|
-
export {};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getEnvRolesOutput = exports.createEnvRoles = exports.pushEnvRolesToVault = void 0;
|
|
4
|
+
const EnvRoles_Consts_1 = require("./EnvRoles.Consts");
|
|
5
|
+
const Roles_1 = require("../Roles");
|
|
6
|
+
const pulumi_1 = require("@pulumi/pulumi");
|
|
7
|
+
const Common_1 = require("../../Common");
|
|
8
|
+
const CustomHelper_1 = require("../../KeyVault/CustomHelper");
|
|
9
|
+
const Helper_1 = require("../../KeyVault/Helper");
|
|
10
|
+
const envRoleConfig = {
|
|
11
|
+
readOnly: {
|
|
12
|
+
roleName: 'Readonly',
|
|
13
|
+
appName: 'Azure',
|
|
14
|
+
},
|
|
15
|
+
contributor: {
|
|
16
|
+
roleName: 'Contributor',
|
|
17
|
+
appName: 'Azure',
|
|
18
|
+
},
|
|
19
|
+
admin: {
|
|
20
|
+
roleName: 'Admin',
|
|
21
|
+
appName: 'Azure',
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
const getRoleSecretName = (name) => ({
|
|
25
|
+
objectIdName: `envRoles-${name}-object-id`,
|
|
26
|
+
displayName: `envRoles-${name}-display-name`,
|
|
27
|
+
});
|
|
28
|
+
const pushEnvRolesToVault = (envRoles, vaultInfo) => {
|
|
29
|
+
Object.keys(envRoleConfig).forEach((key) => {
|
|
30
|
+
const role = envRoles[key];
|
|
31
|
+
//Add to Key Vault
|
|
32
|
+
const secretNames = getRoleSecretName(key);
|
|
33
|
+
(0, CustomHelper_1.addCustomSecrets)({
|
|
34
|
+
vaultInfo,
|
|
35
|
+
contentType: 'Env Roles',
|
|
36
|
+
items: [
|
|
37
|
+
{ name: secretNames.objectIdName, value: role.objectId },
|
|
38
|
+
{ name: secretNames.displayName, value: role.displayName },
|
|
39
|
+
],
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
exports.pushEnvRolesToVault = pushEnvRolesToVault;
|
|
44
|
+
const createEnvRoles = () => {
|
|
45
|
+
const groups = {};
|
|
46
|
+
Object.keys(envRoleConfig).forEach((key) => {
|
|
47
|
+
const k = key;
|
|
48
|
+
const config = envRoleConfig[k];
|
|
49
|
+
const g = (0, Roles_1.Role)(config);
|
|
50
|
+
groups[k] = (0, pulumi_1.output)([g.objectId, g.displayName]).apply(([i, d]) => ({
|
|
51
|
+
objectId: i,
|
|
52
|
+
displayName: d,
|
|
53
|
+
}));
|
|
54
|
+
});
|
|
55
|
+
const pushToVault = (vaultInfo) => (0, exports.pushEnvRolesToVault)(groups, vaultInfo);
|
|
56
|
+
//Allows Some Subscription level access
|
|
57
|
+
//1. Allows to AcrPull
|
|
58
|
+
(0, EnvRoles_Consts_1.grantEnvRolesAccess)({
|
|
59
|
+
envRoles: groups,
|
|
60
|
+
name: 'envRoles-SubScope-Access',
|
|
61
|
+
scope: Common_1.defaultSubScope,
|
|
62
|
+
enableACRRoles: { contributor: true },
|
|
63
|
+
});
|
|
64
|
+
return {
|
|
65
|
+
...groups,
|
|
66
|
+
pushToVault,
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
exports.createEnvRoles = createEnvRoles;
|
|
70
|
+
/** Get Single Env Role Object */
|
|
71
|
+
const getEnvRole = async (name, vaultInfo) => {
|
|
72
|
+
const secretNames = getRoleSecretName(name);
|
|
73
|
+
const [objectId, displayName] = await Promise.all([
|
|
74
|
+
(0, Helper_1.getSecret)({ name: secretNames.objectIdName, vaultInfo }),
|
|
75
|
+
(0, Helper_1.getSecret)({ name: secretNames.displayName, vaultInfo }),
|
|
76
|
+
]);
|
|
77
|
+
return {
|
|
78
|
+
displayName: displayName?.value,
|
|
79
|
+
objectId: objectId?.value,
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
/** Get All Env Role Objects */
|
|
83
|
+
const getEnvRolesOutput = (vaultInfo) => {
|
|
84
|
+
const rs = {};
|
|
85
|
+
Object.keys(envRoleConfig).forEach((key) => {
|
|
86
|
+
rs[key] = (0, pulumi_1.output)(getEnvRole(key, vaultInfo));
|
|
87
|
+
});
|
|
88
|
+
return rs;
|
|
89
|
+
};
|
|
90
|
+
exports.getEnvRolesOutput = getEnvRolesOutput;
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW52Um9sZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQXpBZC9FbnZSb2xlcy9FbnZSb2xlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBd0Q7QUFDeEQsb0NBQTJDO0FBTzNDLDJDQUFnRDtBQUNoRCx5Q0FBK0M7QUFDL0MsOERBQStEO0FBQy9ELGtEQUFrRDtBQUVsRCxNQUFNLGFBQWEsR0FBdUM7SUFDeEQsUUFBUSxFQUFFO1FBQ1IsUUFBUSxFQUFFLFVBQVU7UUFDcEIsT0FBTyxFQUFFLE9BQU87S0FDakI7SUFDRCxXQUFXLEVBQUU7UUFDWCxRQUFRLEVBQUUsYUFBYTtRQUN2QixPQUFPLEVBQUUsT0FBTztLQUNqQjtJQUNELEtBQUssRUFBRTtRQUNMLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLE9BQU8sRUFBRSxPQUFPO0tBQ2pCO0NBQ0YsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0MsWUFBWSxFQUFFLFlBQVksSUFBSSxZQUFZO0lBQzFDLFdBQVcsRUFBRSxZQUFZLElBQUksZUFBZTtDQUM3QyxDQUFDLENBQUM7QUFNSSxNQUFNLG1CQUFtQixHQUFHLENBQ2pDLFFBQXNCLEVBQ3RCLFNBQXVCLEVBQ3ZCLEVBQUU7SUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFzQixDQUFDLENBQUM7UUFDOUMsa0JBQWtCO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLElBQUEsK0JBQWdCLEVBQUM7WUFDZixTQUFTO1lBQ1QsV0FBVyxFQUFFLFdBQVc7WUFDeEIsS0FBSyxFQUFFO2dCQUNMLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUs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
|
|
@@ -0,0 +1,19 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./EnvRoles.Consts"), exports);
|
|
18
|
+
__exportStar(require("./EnvRoles"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQXpBZC9FbnZSb2xlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQWtDO0FBQ2xDLDZDQUEyQiJ9
|
package/AzAd/Group.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Input
|
|
1
|
+
import { Input } from '@pulumi/pulumi';
|
|
2
2
|
import { WithNamedType } from '../types';
|
|
3
3
|
export interface GroupPermissionProps {
|
|
4
4
|
/** The name of the roles would like to assign to this group*/
|
|
@@ -16,4 +16,4 @@ export default _default;
|
|
|
16
16
|
export declare const addMemberToGroup: ({ name, objectId, groupObjectId, }: WithNamedType & {
|
|
17
17
|
objectId: Input<string>;
|
|
18
18
|
groupObjectId: Input<string>;
|
|
19
|
-
}) => Output<import("@pulumi/azuread/groupMember").GroupMember>;
|
|
19
|
+
}) => import("@pulumi/pulumi").Output<import("@pulumi/azuread/groupMember").GroupMember>;
|
package/AzAd/Group.js
CHANGED
|
@@ -27,7 +27,7 @@ exports.addMemberToGroup = void 0;
|
|
|
27
27
|
const azuread = __importStar(require("@pulumi/azuread"));
|
|
28
28
|
const pulumi_1 = require("@pulumi/pulumi");
|
|
29
29
|
const Common_1 = require("../Common");
|
|
30
|
-
const
|
|
30
|
+
const Roles_1 = require("./Roles");
|
|
31
31
|
exports.default = async ({ name, permissions, members, owners }) => {
|
|
32
32
|
const group = new azuread.Group(name, {
|
|
33
33
|
displayName: name,
|
|
@@ -45,7 +45,7 @@ exports.default = async ({ name, permissions, members, owners }) => {
|
|
|
45
45
|
}));
|
|
46
46
|
}
|
|
47
47
|
if (permissions) {
|
|
48
|
-
await Promise.all(permissions.map((p) => (0,
|
|
48
|
+
await Promise.all(permissions.map((p) => (0, Roles_1.roleAssignment)({
|
|
49
49
|
name,
|
|
50
50
|
principalId: group.objectId,
|
|
51
51
|
principalType: 'Group',
|
|
@@ -60,4 +60,4 @@ const addMemberToGroup = ({ name, objectId, groupObjectId, }) => (0, pulumi_1.ou
|
|
|
60
60
|
memberObjectId: oId,
|
|
61
61
|
}));
|
|
62
62
|
exports.addMemberToGroup = addMemberToGroup;
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQXpBZC9Hcm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlEQUEyQztBQUMzQywyQ0FBK0M7QUFDL0Msc0NBQTRDO0FBRTVDLG1DQUF5QztBQWdCekMsa0JBQWUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFnQixFQUFFLEVBQUU7SUFDNUUsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtRQUNwQyxXQUFXLEVBQUUsSUFBSTtRQUNqQixzQkFBc0IsRUFBRSxLQUFLO1FBQzdCLDZCQUE2QjtRQUM3QiwrQkFBK0I7UUFDL0IsV0FBVyxFQUFFLEtBQUs7UUFDbEIsZUFBZSxFQUFFLElBQUk7UUFDckIsTUFBTTtLQUNQLENBQUMsQ0FBQztJQUVILElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixPQUFPLENBQUMsR0FBRyxDQUNULENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ1AsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFO1lBQzdDLGFBQWEsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUN2QixjQUFjLEVBQUUsQ0FBQztTQUNsQixDQUFDLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDcEIsSUFBQSxzQkFBYyxFQUFDO1lBQ2IsSUFBSTtZQUNKLFdBQVcsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUMzQixhQUFhLEVBQUUsT0FBTztZQUN0QixRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7WUFDcEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksd0JBQWU7U0FDbEMsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVLLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxFQUMvQixJQUFJLEVBQ0osUUFBUSxFQUNSLGFBQWEsR0FJZCxFQUFFLEVBQUUsQ0FDSCxJQUFBLGVBQU0sRUFBQyxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDckMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQ2IsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsRUFBRTtJQUMvQyxhQUFhLEVBQUUsR0FBRztJQUNsQixjQUFjLEVBQUUsR0FBRztDQUNwQixDQUFDLENBQ0wsQ0FBQztBQWRTLFFBQUEsZ0JBQWdCLG9CQWN6QiJ9
|