@j-schreiber/sf-cli-security-audit 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commands/org/audit/init.d.ts +1 -1
- package/lib/commands/org/audit/init.js +2 -2
- package/lib/commands/org/audit/init.js.map +1 -1
- package/lib/commands/org/audit/run.d.ts +1 -1
- package/lib/libs/{policies/initialisation → conf-init}/auditConfig.d.ts +1 -1
- package/lib/libs/{policies/initialisation → conf-init}/auditConfig.js +3 -5
- package/lib/libs/conf-init/auditConfig.js.map +1 -0
- package/lib/libs/{config → conf-init}/defaultPolicyClassification.d.ts +1 -1
- package/lib/libs/{config → conf-init}/defaultPolicyClassification.js +15 -15
- package/lib/libs/conf-init/defaultPolicyClassification.js.map +1 -0
- package/lib/libs/{policies/initialisation → conf-init}/permissionsClassification.d.ts +1 -2
- package/lib/libs/{policies/initialisation → conf-init}/permissionsClassification.js +5 -6
- package/lib/libs/conf-init/permissionsClassification.js.map +1 -0
- package/lib/libs/{policies/initialisation → conf-init}/policyConfigs.d.ts +1 -1
- package/lib/libs/{policies/initialisation → conf-init}/policyConfigs.js +8 -10
- package/lib/libs/conf-init/policyConfigs.js.map +1 -0
- package/lib/libs/core/classification-types.d.ts +20 -0
- package/lib/libs/core/classification-types.js +23 -0
- package/lib/libs/core/classification-types.js.map +1 -0
- package/lib/libs/{config/queries.js → core/constants.js} +1 -1
- package/lib/libs/core/constants.js.map +1 -0
- package/lib/libs/{config/audit-run → core/file-mgmt}/auditConfigFileManager.d.ts +19 -0
- package/lib/libs/{config/audit-run → core/file-mgmt}/auditConfigFileManager.js +22 -7
- package/lib/libs/core/file-mgmt/auditConfigFileManager.js.map +1 -0
- package/lib/libs/{config/audit-run → core/file-mgmt}/schema.d.ts +10 -9
- package/lib/libs/{config/audit-run → core/file-mgmt}/schema.js +4 -3
- package/lib/libs/core/file-mgmt/schema.js.map +1 -0
- package/lib/libs/core/mdapi/mdapiRetriever.d.ts +110 -0
- package/lib/libs/core/mdapi/mdapiRetriever.js +193 -0
- package/lib/libs/core/mdapi/mdapiRetriever.js.map +1 -0
- package/lib/libs/core/policy-types.d.ts +18 -0
- package/lib/libs/core/policy-types.js +28 -0
- package/lib/libs/core/policy-types.js.map +1 -0
- package/lib/libs/core/registries/connectedApps.d.ts +13 -0
- package/lib/libs/{config → core}/registries/connectedApps.js +2 -2
- package/lib/libs/core/registries/connectedApps.js.map +1 -0
- package/lib/libs/{config → core}/registries/permissionSets.d.ts +6 -0
- package/lib/libs/{config → core}/registries/permissionSets.js +1 -1
- package/lib/libs/core/registries/permissionSets.js.map +1 -0
- package/lib/libs/{config → core}/registries/profiles.d.ts +6 -0
- package/lib/libs/{config → core}/registries/profiles.js +2 -2
- package/lib/libs/core/registries/profiles.js.map +1 -0
- package/lib/libs/{config → core}/registries/ruleRegistry.d.ts +13 -3
- package/lib/libs/core/registries/ruleRegistry.js.map +1 -0
- package/lib/libs/{policies → core/registries}/rules/allUsedAppsUnderManagement.d.ts +2 -2
- package/lib/libs/core/registries/rules/allUsedAppsUnderManagement.js.map +1 -0
- package/lib/libs/{policies → core/registries}/rules/enforceCustomPermsClassificationOnProfiles.d.ts +2 -2
- package/lib/libs/{policies → core/registries}/rules/enforceCustomPermsClassificationOnProfiles.js +4 -3
- package/lib/libs/core/registries/rules/enforceCustomPermsClassificationOnProfiles.js.map +1 -0
- package/lib/libs/{policies → core/registries}/rules/enforceUserPermsClassificationOnPermSets.d.ts +2 -2
- package/lib/libs/{policies → core/registries}/rules/enforceUserPermsClassificationOnPermSets.js +4 -3
- package/lib/libs/core/registries/rules/enforceUserPermsClassificationOnPermSets.js.map +1 -0
- package/lib/libs/{policies → core/registries}/rules/enforceUserPermsClassificationOnProfiles.d.ts +2 -2
- package/lib/libs/{policies → core/registries}/rules/enforceUserPermsClassificationOnProfiles.js +4 -3
- package/lib/libs/core/registries/rules/enforceUserPermsClassificationOnProfiles.js.map +1 -0
- package/lib/libs/{policies → core/registries}/rules/noUserCanSelfAuthorize.d.ts +2 -2
- package/lib/libs/core/registries/rules/noUserCanSelfAuthorize.js.map +1 -0
- package/lib/libs/{policies → core/registries}/rules/policyRule.d.ts +2 -2
- package/lib/libs/core/registries/rules/policyRule.js.map +1 -0
- package/lib/libs/{policies/interfaces/policyRuleInterfaces.d.ts → core/registries/types.d.ts} +7 -2
- package/lib/libs/core/registries/types.js +9 -0
- package/lib/libs/core/registries/types.js.map +1 -0
- package/lib/libs/{audit/types.d.ts → core/result-types.d.ts} +17 -0
- package/lib/libs/core/result-types.js +2 -0
- package/lib/libs/core/result-types.js.map +1 -0
- package/lib/libs/core/utils.js.map +1 -0
- package/lib/libs/policies/auditRun.d.ts +2 -2
- package/lib/libs/policies/auditRun.js +2 -2
- package/lib/libs/policies/auditRun.js.map +1 -1
- package/lib/libs/policies/connectedAppPolicy.d.ts +3 -12
- package/lib/libs/policies/connectedAppPolicy.js +6 -6
- package/lib/libs/policies/connectedAppPolicy.js.map +1 -1
- package/lib/libs/policies/permissionSetPolicy.d.ts +3 -10
- package/lib/libs/policies/permissionSetPolicy.js +17 -16
- package/lib/libs/policies/permissionSetPolicy.js.map +1 -1
- package/lib/libs/policies/policy.d.ts +4 -5
- package/lib/libs/policies/policy.js.map +1 -1
- package/lib/libs/policies/profilePolicy.d.ts +3 -10
- package/lib/libs/policies/profilePolicy.js +5 -5
- package/lib/libs/policies/profilePolicy.js.map +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
- package/lib/libs/audit/types.js +0 -2
- package/lib/libs/audit/types.js.map +0 -1
- package/lib/libs/config/audit-run/auditConfigFileManager.js.map +0 -1
- package/lib/libs/config/audit-run/schema.js.map +0 -1
- package/lib/libs/config/defaultPolicyClassification.js.map +0 -1
- package/lib/libs/config/queries.js.map +0 -1
- package/lib/libs/config/registries/connectedApps.d.ts +0 -5
- package/lib/libs/config/registries/connectedApps.js.map +0 -1
- package/lib/libs/config/registries/permissionSets.js.map +0 -1
- package/lib/libs/config/registries/profiles.js.map +0 -1
- package/lib/libs/config/registries/ruleRegistry.js.map +0 -1
- package/lib/libs/config/registries/types.d.ts +0 -7
- package/lib/libs/config/registries/types.js +0 -2
- package/lib/libs/config/registries/types.js.map +0 -1
- package/lib/libs/mdapiRetriever.d.ts +0 -18
- package/lib/libs/mdapiRetriever.js +0 -60
- package/lib/libs/mdapiRetriever.js.map +0 -1
- package/lib/libs/policies/initialisation/auditConfig.js.map +0 -1
- package/lib/libs/policies/initialisation/permissionsClassification.js.map +0 -1
- package/lib/libs/policies/initialisation/policyConfigs.js.map +0 -1
- package/lib/libs/policies/interfaces/policyRuleInterfaces.js +0 -2
- package/lib/libs/policies/interfaces/policyRuleInterfaces.js.map +0 -1
- package/lib/libs/policies/rules/allUsedAppsUnderManagement.js.map +0 -1
- package/lib/libs/policies/rules/enforceCustomPermsClassificationOnProfiles.js.map +0 -1
- package/lib/libs/policies/rules/enforceUserPermsClassificationOnPermSets.js.map +0 -1
- package/lib/libs/policies/rules/enforceUserPermsClassificationOnProfiles.js.map +0 -1
- package/lib/libs/policies/rules/noUserCanSelfAuthorize.js.map +0 -1
- package/lib/libs/policies/rules/policyRule.js.map +0 -1
- package/lib/libs/policies/types.d.ts +0 -36
- package/lib/libs/policies/types.js +0 -45
- package/lib/libs/policies/types.js.map +0 -1
- package/lib/libs/utils.js.map +0 -1
- /package/lib/libs/{config/queries.d.ts → core/constants.d.ts} +0 -0
- /package/lib/libs/{config → core}/registries/ruleRegistry.js +0 -0
- /package/lib/libs/{policies → core/registries}/rules/allUsedAppsUnderManagement.js +0 -0
- /package/lib/libs/{policies → core/registries}/rules/noUserCanSelfAuthorize.js +0 -0
- /package/lib/libs/{policies → core/registries}/rules/policyRule.js +0 -0
- /package/lib/libs/{utils.d.ts → core/utils.d.ts} +0 -0
- /package/lib/libs/{utils.js → core/utils.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
|
-
import { AuditRunConfig } from '../../../libs/
|
|
2
|
+
import { AuditRunConfig } from '../../../libs/core/file-mgmt/schema.js';
|
|
3
3
|
export type OrgAuditInitResult = AuditRunConfig;
|
|
4
4
|
export default class OrgAuditInit extends SfCommand<OrgAuditInitResult> {
|
|
5
5
|
static readonly summary: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
2
2
|
import { Messages } from '@salesforce/core';
|
|
3
|
-
import AuditConfig from '../../../libs/
|
|
4
|
-
import { isPermissionsConfig, isPolicyConfig, } from '../../../libs/
|
|
3
|
+
import AuditConfig from '../../../libs/conf-init/auditConfig.js';
|
|
4
|
+
import { isPermissionsConfig, isPolicyConfig, } from '../../../libs/core/file-mgmt/schema.js';
|
|
5
5
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
6
6
|
const messages = Messages.loadMessages('@j-schreiber/sf-cli-security-audit', 'org.audit.init');
|
|
7
7
|
export default class OrgAuditInit extends SfCommand {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/commands/org/audit/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,WAAW,MAAM,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/commands/org/audit/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Interfaces } from '@oclif/core';
|
|
2
2
|
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
3
|
-
import { AuditResult } from '../../../libs/
|
|
3
|
+
import { AuditResult } from '../../../libs/core/result-types.js';
|
|
4
4
|
export type OrgAuditRunResult = AuditResult & {
|
|
5
5
|
filePath: string;
|
|
6
6
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { DefaultFileManager } from '../core/file-mgmt/auditConfigFileManager.js';
|
|
2
2
|
import { initCustomPermissions, initUserPermissions } from './permissionsClassification.js';
|
|
3
3
|
import { initConnectedApps, initPermissionSets, initProfiles } from './policyConfigs.js';
|
|
4
4
|
/**
|
|
@@ -13,7 +13,6 @@ export default class AuditConfig {
|
|
|
13
13
|
* @param con
|
|
14
14
|
*/
|
|
15
15
|
static async init(targetCon, opts) {
|
|
16
|
-
const fileManager = new AuditConfigFileManager();
|
|
17
16
|
const conf = { classifications: {}, policies: {} };
|
|
18
17
|
conf.classifications.userPermissions = { content: await initUserPermissions(targetCon) };
|
|
19
18
|
const customPerms = await initCustomPermissions(targetCon);
|
|
@@ -24,7 +23,7 @@ export default class AuditConfig {
|
|
|
24
23
|
conf.policies.PermissionSets = { content: await initPermissionSets(targetCon) };
|
|
25
24
|
conf.policies.ConnectedApps = { content: initConnectedApps() };
|
|
26
25
|
if (opts?.targetDir) {
|
|
27
|
-
|
|
26
|
+
DefaultFileManager.save(opts.targetDir, conf);
|
|
28
27
|
}
|
|
29
28
|
return conf;
|
|
30
29
|
}
|
|
@@ -34,8 +33,7 @@ export default class AuditConfig {
|
|
|
34
33
|
* @param sourceDir
|
|
35
34
|
*/
|
|
36
35
|
static load(sourceDir) {
|
|
37
|
-
|
|
38
|
-
return fileManager.parse(sourceDir);
|
|
36
|
+
return DefaultFileManager.parse(sourceDir);
|
|
39
37
|
}
|
|
40
38
|
}
|
|
41
39
|
//# sourceMappingURL=auditConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditConfig.js","sourceRoot":"","sources":["../../../src/libs/conf-init/auditConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASzF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAqB,EAAE,IAAuB;QACrE,MAAM,IAAI,GAAmB,EAAE,eAAe,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACnE,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;QACzF,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,eAAe,CAAC,iBAAiB,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QAChF,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,CAAC;QAC/D,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC;YACpB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,IAAI,CAAC,SAAiB;QAClC,OAAO,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { PermissionsClassification } from '
|
|
1
|
+
import { PermissionsClassification } from '../core/file-mgmt/schema.js';
|
|
2
2
|
export declare const DEFAULT_CLASSIFICATIONS: Record<string, PermissionsClassification>;
|
|
@@ -1,62 +1,62 @@
|
|
|
1
1
|
import { Messages } from '@salesforce/core';
|
|
2
|
-
import {
|
|
2
|
+
import { PermissionRiskLevel } from '../core/classification-types.js';
|
|
3
3
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
4
4
|
const messages = Messages.loadMessages('@j-schreiber/sf-cli-security-audit', 'policyclassifications');
|
|
5
5
|
export const DEFAULT_CLASSIFICATIONS = {
|
|
6
6
|
CustomizeApplication: {
|
|
7
|
-
classification:
|
|
7
|
+
classification: PermissionRiskLevel.CRITICAL,
|
|
8
8
|
reason: messages.getMessage('CustomizeApplication'),
|
|
9
9
|
},
|
|
10
10
|
ModifyMetadata: {
|
|
11
|
-
classification:
|
|
11
|
+
classification: PermissionRiskLevel.CRITICAL,
|
|
12
12
|
reason: messages.getMessage('CustomizeApplication'),
|
|
13
13
|
},
|
|
14
14
|
ViewSetup: {
|
|
15
|
-
classification:
|
|
15
|
+
classification: PermissionRiskLevel.HIGH,
|
|
16
16
|
reason: messages.getMessage('ViewSetup'),
|
|
17
17
|
},
|
|
18
18
|
AuthorApex: {
|
|
19
|
-
classification:
|
|
19
|
+
classification: PermissionRiskLevel.CRITICAL,
|
|
20
20
|
reason: messages.getMessage('AuthorApex'),
|
|
21
21
|
},
|
|
22
22
|
ManageAuthProviders: {
|
|
23
|
-
classification:
|
|
23
|
+
classification: PermissionRiskLevel.CRITICAL,
|
|
24
24
|
reason: messages.getMessage('ManageAuthProviders'),
|
|
25
25
|
},
|
|
26
26
|
Packaging2: {
|
|
27
|
-
classification:
|
|
27
|
+
classification: PermissionRiskLevel.CRITICAL,
|
|
28
28
|
reason: messages.getMessage('Packaging'),
|
|
29
29
|
},
|
|
30
30
|
Packaging2Delete: {
|
|
31
|
-
classification:
|
|
31
|
+
classification: PermissionRiskLevel.CRITICAL,
|
|
32
32
|
reason: messages.getMessage('Packaging'),
|
|
33
33
|
},
|
|
34
34
|
Packaging2PromoteVersion: {
|
|
35
|
-
classification:
|
|
35
|
+
classification: PermissionRiskLevel.CRITICAL,
|
|
36
36
|
reason: messages.getMessage('Packaging'),
|
|
37
37
|
},
|
|
38
38
|
InstallPackaging: {
|
|
39
|
-
classification:
|
|
39
|
+
classification: PermissionRiskLevel.CRITICAL,
|
|
40
40
|
reason: messages.getMessage('Packaging'),
|
|
41
41
|
},
|
|
42
42
|
ApiEnabled: {
|
|
43
|
-
classification:
|
|
43
|
+
classification: PermissionRiskLevel.HIGH,
|
|
44
44
|
reason: messages.getMessage('ApiEnabled'),
|
|
45
45
|
},
|
|
46
46
|
ViewAllData: {
|
|
47
|
-
classification:
|
|
47
|
+
classification: PermissionRiskLevel.HIGH,
|
|
48
48
|
reason: messages.getMessage('ViewAllData'),
|
|
49
49
|
},
|
|
50
50
|
ModifyAllData: {
|
|
51
|
-
classification:
|
|
51
|
+
classification: PermissionRiskLevel.HIGH,
|
|
52
52
|
reason: messages.getMessage('ViewAllData'),
|
|
53
53
|
},
|
|
54
54
|
ManageTwoFactor: {
|
|
55
|
-
classification:
|
|
55
|
+
classification: PermissionRiskLevel.HIGH,
|
|
56
56
|
reason: messages.getMessage('ManageTwoFactor'),
|
|
57
57
|
},
|
|
58
58
|
CanApproveUninstalledApps: {
|
|
59
|
-
classification:
|
|
59
|
+
classification: PermissionRiskLevel.HIGH,
|
|
60
60
|
reason: messages.getMessage('CanApproveUninstalledApps'),
|
|
61
61
|
},
|
|
62
62
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultPolicyClassification.js","sourceRoot":"","sources":["../../../src/libs/conf-init/defaultPolicyClassification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,oCAAoC,EAAE,uBAAuB,CAAC,CAAC;AAEtG,MAAM,CAAC,MAAM,uBAAuB,GAA8C;IAChF,oBAAoB,EAAE;QACpB,cAAc,EAAE,mBAAmB,CAAC,QAAQ;QAC5C,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC;KACpD;IACD,cAAc,EAAE;QACd,cAAc,EAAE,mBAAmB,CAAC,QAAQ;QAC5C,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC;KACpD;IACD,SAAS,EAAE;QACT,cAAc,EAAE,mBAAmB,CAAC,IAAI;QACxC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;KACzC;IACD,UAAU,EAAE;QACV,cAAc,EAAE,mBAAmB,CAAC,QAAQ;QAC5C,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;KAC1C;IACD,mBAAmB,EAAE;QACnB,cAAc,EAAE,mBAAmB,CAAC,QAAQ;QAC5C,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC;KACnD;IACD,UAAU,EAAE;QACV,cAAc,EAAE,mBAAmB,CAAC,QAAQ;QAC5C,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;KACzC;IACD,gBAAgB,EAAE;QAChB,cAAc,EAAE,mBAAmB,CAAC,QAAQ;QAC5C,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;KACzC;IACD,wBAAwB,EAAE;QACxB,cAAc,EAAE,mBAAmB,CAAC,QAAQ;QAC5C,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;KACzC;IACD,gBAAgB,EAAE;QAChB,cAAc,EAAE,mBAAmB,CAAC,QAAQ;QAC5C,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;KACzC;IACD,UAAU,EAAE;QACV,cAAc,EAAE,mBAAmB,CAAC,IAAI;QACxC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;KAC1C;IACD,WAAW,EAAE;QACX,cAAc,EAAE,mBAAmB,CAAC,IAAI;QACxC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC;KAC3C;IACD,aAAa,EAAE;QACb,cAAc,EAAE,mBAAmB,CAAC,IAAI;QACxC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC;KAC3C;IACD,eAAe,EAAE;QACf,cAAc,EAAE,mBAAmB,CAAC,IAAI;QACxC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC;KAC/C;IACD,yBAAyB,EAAE;QACzB,cAAc,EAAE,mBAAmB,CAAC,IAAI;QACxC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC;KACzD;CACF,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Connection } from '@salesforce/core';
|
|
2
|
-
import {
|
|
2
|
+
import { PermissionsConfig } from '../core/file-mgmt/schema.js';
|
|
3
3
|
/**
|
|
4
4
|
* Initialises a fresh set of user permissions from target org connection
|
|
5
5
|
*
|
|
@@ -14,4 +14,3 @@ export declare function initUserPermissions(con: Connection): Promise<Permission
|
|
|
14
14
|
* @returns
|
|
15
15
|
*/
|
|
16
16
|
export declare function initCustomPermissions(con: Connection): Promise<PermissionsConfig | undefined>;
|
|
17
|
-
export declare const classificationSorter: (a: NamedPermissionsClassification, b: NamedPermissionsClassification) => number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { CUSTOM_PERMS_QUERY } from '../core/constants.js';
|
|
2
|
+
import { classificationSorter, PermissionRiskLevel } from '../core/classification-types.js';
|
|
3
|
+
import { DEFAULT_CLASSIFICATIONS } from './defaultPolicyClassification.js';
|
|
4
4
|
/**
|
|
5
5
|
* Initialises a fresh set of user permissions from target org connection
|
|
6
6
|
*
|
|
@@ -34,7 +34,7 @@ export async function initCustomPermissions(con) {
|
|
|
34
34
|
const perms = customPerms.records.map((cp) => ({
|
|
35
35
|
name: cp.DeveloperName,
|
|
36
36
|
label: cp.MasterLabel,
|
|
37
|
-
classification:
|
|
37
|
+
classification: PermissionRiskLevel.UNKNOWN,
|
|
38
38
|
}));
|
|
39
39
|
perms.forEach((perm) => (result.permissions[perm.name] = {
|
|
40
40
|
label: perm.label,
|
|
@@ -59,7 +59,7 @@ function parsePermissionsFromPermSet(describe) {
|
|
|
59
59
|
return {
|
|
60
60
|
label: field.label,
|
|
61
61
|
name: policyName,
|
|
62
|
-
classification:
|
|
62
|
+
classification: PermissionRiskLevel.UNKNOWN,
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
65
|
});
|
|
@@ -67,5 +67,4 @@ function parsePermissionsFromPermSet(describe) {
|
|
|
67
67
|
function sanitiseLabel(rawLabel) {
|
|
68
68
|
return rawLabel?.replace(/[ \t]+$|[\r\n]+/g, '');
|
|
69
69
|
}
|
|
70
|
-
export const classificationSorter = (a, b) => resolveRiskLevelOrdinalValue(a.classification) - resolveRiskLevelOrdinalValue(b.classification);
|
|
71
70
|
//# sourceMappingURL=permissionsClassification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissionsClassification.js","sourceRoot":"","sources":["../../../src/libs/conf-init/permissionsClassification.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAe;IACvD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACpD,MAAM,MAAM,GAAsB,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IACtD,MAAM,KAAK,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,OAAO,CACX,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC/B,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAChC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CACL,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAe;IACzD,MAAM,MAAM,GAAsB,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,KAAK,CAAmB,kBAAkB,CAAC,CAAC;IAC1E,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,EAAE,EAAE,CAAC,aAAa;QACtB,KAAK,EAAE,EAAE,CAAC,WAAW;QACrB,cAAc,EAAE,mBAAmB,CAAC,OAAO;KAC5C,CAAC,CAAC,CAAC;IACJ,KAAK,CAAC,OAAO,CACX,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,cAAc,EAAE,IAAI,CAAC,cAAc;KACpC,CAAC,CACL,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,2BAA2B,CAAC,QAA+B;IAClE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3F,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,UAAU;gBAChB,cAAc,EAAE,UAAU,CAAC,cAAc;gBACzC,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,UAAU;gBAChB,cAAc,EAAE,mBAAmB,CAAC,OAAO;aAC5C,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,QAAiB;IACtC,OAAO,QAAQ,EAAE,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Connection } from '@salesforce/core';
|
|
2
|
-
import { BasePolicyFileContent, PermSetsPolicyFileContent, ProfilesPolicyFileContent } from '
|
|
2
|
+
import { BasePolicyFileContent, PermSetsPolicyFileContent, ProfilesPolicyFileContent } from '../core/file-mgmt/schema.js';
|
|
3
3
|
/**
|
|
4
4
|
* Initialises a new profiles policy with the local org's
|
|
5
5
|
* profiles and all default rules enabled.
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { PERMISSION_SETS_QUERY, PROFILES_QUERY } from '
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { PermissionSetsRegistry } from '../../config/registries/permissionSets.js';
|
|
5
|
-
import { ConnectedAppsRegistry } from '../../config/registries/connectedApps.js';
|
|
1
|
+
import { PERMISSION_SETS_QUERY, PROFILES_QUERY } from '../core/constants.js';
|
|
2
|
+
import { RuleRegistries } from '../core/registries/types.js';
|
|
3
|
+
import { ProfilesRiskPreset } from '../core/policy-types.js';
|
|
6
4
|
/**
|
|
7
5
|
* Initialises a new profiles policy with the local org's
|
|
8
6
|
* profiles and all default rules enabled.
|
|
@@ -15,9 +13,9 @@ export async function initProfiles(targetOrgCon) {
|
|
|
15
13
|
const profiles = await targetOrgCon.query(PROFILES_QUERY);
|
|
16
14
|
const content = { enabled: true, profiles: {}, rules: {} };
|
|
17
15
|
profiles.records.forEach((permsetRecord) => {
|
|
18
|
-
content.profiles[permsetRecord.Profile.Name] = { preset:
|
|
16
|
+
content.profiles[permsetRecord.Profile.Name] = { preset: ProfilesRiskPreset.UNKNOWN };
|
|
19
17
|
});
|
|
20
|
-
|
|
18
|
+
RuleRegistries.Profiles.registeredRules().forEach((ruleName) => {
|
|
21
19
|
content.rules[ruleName] = {
|
|
22
20
|
enabled: true,
|
|
23
21
|
};
|
|
@@ -41,9 +39,9 @@ export async function initPermissionSets(targetOrgCon) {
|
|
|
41
39
|
permSets.records
|
|
42
40
|
.filter((permsetRecord) => permsetRecord.IsCustom)
|
|
43
41
|
.forEach((permsetRecord) => {
|
|
44
|
-
content.permissionSets[permsetRecord.Name] = { preset:
|
|
42
|
+
content.permissionSets[permsetRecord.Name] = { preset: ProfilesRiskPreset.UNKNOWN };
|
|
45
43
|
});
|
|
46
|
-
|
|
44
|
+
RuleRegistries.PermissionSets.registeredRules().forEach((ruleName) => {
|
|
47
45
|
content.rules[ruleName] = {
|
|
48
46
|
enabled: true,
|
|
49
47
|
};
|
|
@@ -57,7 +55,7 @@ export async function initPermissionSets(targetOrgCon) {
|
|
|
57
55
|
*/
|
|
58
56
|
export function initConnectedApps() {
|
|
59
57
|
const content = { enabled: true, rules: {} };
|
|
60
|
-
|
|
58
|
+
RuleRegistries.ConnectedApps.registeredRules().forEach((ruleName) => {
|
|
61
59
|
content.rules[ruleName] = {
|
|
62
60
|
enabled: true,
|
|
63
61
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policyConfigs.js","sourceRoot":"","sources":["../../../src/libs/conf-init/policyConfigs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAO7E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,YAAwB;IACzD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAgB,cAAc,CAAC,CAAC;IACzE,MAAM,OAAO,GAA8B,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACtF,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;QACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;IACxF,CAAC,CAAC,CAAC;IACH,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC7D,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG;YACxB,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,YAAwB;IAC/D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAgB,qBAAqB,CAAC,CAAC;IAChF,MAAM,OAAO,GAA8B;QACzC,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,EAAE;QAClB,KAAK,EAAE,EAAE;KACV,CAAC;IACF,QAAQ,CAAC,OAAO;SACb,MAAM,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC;SACjD,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;QACzB,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;IACtF,CAAC,CAAC,CAAC;IACL,cAAc,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACnE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG;YACxB,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACpE,cAAc,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAClE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG;YACxB,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { NamedPermissionsClassification } from './file-mgmt/schema.js';
|
|
2
|
+
/**
|
|
3
|
+
* Enum to classify user and custom permissions.
|
|
4
|
+
*/
|
|
5
|
+
export declare enum PermissionRiskLevel {
|
|
6
|
+
/** Blacklisted permissions that are considered too critical and not allowed */
|
|
7
|
+
BLOCKED = "Blocked",
|
|
8
|
+
/** Developer permissions, allow to modify the application */
|
|
9
|
+
CRITICAL = "Critical",
|
|
10
|
+
/** Admin permissions, allow to manage users and change permissions */
|
|
11
|
+
HIGH = "High",
|
|
12
|
+
/** Elevated business permissions for privileged users */
|
|
13
|
+
MEDIUM = "Medium",
|
|
14
|
+
/** Regular user permissions, typically needed for day-to-day work */
|
|
15
|
+
LOW = "Low",
|
|
16
|
+
/** Not categorized or unknown permission */
|
|
17
|
+
UNKNOWN = "Unknown"
|
|
18
|
+
}
|
|
19
|
+
export declare function resolveRiskLevelOrdinalValue(value: string): number;
|
|
20
|
+
export declare const classificationSorter: (a: NamedPermissionsClassification, b: NamedPermissionsClassification) => number;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enum to classify user and custom permissions.
|
|
3
|
+
*/
|
|
4
|
+
export var PermissionRiskLevel;
|
|
5
|
+
(function (PermissionRiskLevel) {
|
|
6
|
+
/** Blacklisted permissions that are considered too critical and not allowed */
|
|
7
|
+
PermissionRiskLevel["BLOCKED"] = "Blocked";
|
|
8
|
+
/** Developer permissions, allow to modify the application */
|
|
9
|
+
PermissionRiskLevel["CRITICAL"] = "Critical";
|
|
10
|
+
/** Admin permissions, allow to manage users and change permissions */
|
|
11
|
+
PermissionRiskLevel["HIGH"] = "High";
|
|
12
|
+
/** Elevated business permissions for privileged users */
|
|
13
|
+
PermissionRiskLevel["MEDIUM"] = "Medium";
|
|
14
|
+
/** Regular user permissions, typically needed for day-to-day work */
|
|
15
|
+
PermissionRiskLevel["LOW"] = "Low";
|
|
16
|
+
/** Not categorized or unknown permission */
|
|
17
|
+
PermissionRiskLevel["UNKNOWN"] = "Unknown";
|
|
18
|
+
})(PermissionRiskLevel || (PermissionRiskLevel = {}));
|
|
19
|
+
export function resolveRiskLevelOrdinalValue(value) {
|
|
20
|
+
return Object.keys(PermissionRiskLevel).indexOf(value.toUpperCase());
|
|
21
|
+
}
|
|
22
|
+
export const classificationSorter = (a, b) => resolveRiskLevelOrdinalValue(a.classification) - resolveRiskLevelOrdinalValue(b.classification);
|
|
23
|
+
//# sourceMappingURL=classification-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classification-types.js","sourceRoot":"","sources":["../../../src/libs/core/classification-types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAN,IAAY,mBAaX;AAbD,WAAY,mBAAmB;IAC7B,+EAA+E;IAC/E,0CAAmB,CAAA;IACnB,6DAA6D;IAC7D,4CAAqB,CAAA;IACrB,sEAAsE;IACtE,oCAAa,CAAA;IACb,yDAAyD;IACzD,wCAAiB,CAAA;IACjB,qEAAqE;IACrE,kCAAW,CAAA;IACX,4CAA4C;IAC5C,0CAAmB,CAAA;AACrB,CAAC,EAbW,mBAAmB,KAAnB,mBAAmB,QAa9B;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAa;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAiC,EAAE,CAAiC,EAAU,EAAE,CACnH,4BAA4B,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,4BAA4B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC"}
|
|
@@ -3,4 +3,4 @@ export const PROFILES_QUERY = 'SELECT Profile.Name,Profile.UserType,IsCustom FRO
|
|
|
3
3
|
export const PERMISSION_SETS_QUERY = 'SELECT Name,Label,IsCustom,NamespacePrefix FROM PermissionSet WHERE IsOwnedByProfile = FALSE AND NamespacePrefix = NULL';
|
|
4
4
|
export const CONNECTED_APPS_QUERY = 'SELECT Name,OptionsAllowAdminApprovedUsersOnly FROM ConnectedApplication';
|
|
5
5
|
export const OAUTH_TOKEN_QUERY = 'SELECT User.Username,UseCount,AppName FROM OauthToken';
|
|
6
|
-
//# sourceMappingURL=
|
|
6
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/libs/core/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,2DAA2D,CAAC;AAC9F,MAAM,CAAC,MAAM,cAAc,GACzB,gGAAgG,CAAC;AACnG,MAAM,CAAC,MAAM,qBAAqB,GAChC,yHAAyH,CAAC;AAC5H,MAAM,CAAC,MAAM,oBAAoB,GAAG,0EAA0E,CAAC;AAC/G,MAAM,CAAC,MAAM,iBAAiB,GAAG,uDAAuD,CAAC"}
|
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
import { AuditRunConfig } from './schema.js';
|
|
2
|
+
/**
|
|
3
|
+
* Loads an audit run config with the default file manager
|
|
4
|
+
*
|
|
5
|
+
* @param dirPath
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
2
8
|
export declare const loadAuditConfig: (dirPath: string) => AuditRunConfig;
|
|
9
|
+
/**
|
|
10
|
+
* Saves a new or modified audit run config with the default file manager
|
|
11
|
+
*
|
|
12
|
+
* @param dirPath
|
|
13
|
+
* @param conf
|
|
14
|
+
*/
|
|
3
15
|
export declare const saveAuditConfig: (dirPath: string, conf: AuditRunConfig) => void;
|
|
16
|
+
/**
|
|
17
|
+
* The file manager streamlines initialisation of an audit config from
|
|
18
|
+
* a source directory and writing updated content back to disk. The directory
|
|
19
|
+
* structure is configurable, but most of the time using the default file manager
|
|
20
|
+
* will be enough.
|
|
21
|
+
*/
|
|
4
22
|
export default class AuditConfigFileManager {
|
|
5
23
|
private directoryStructure;
|
|
6
24
|
constructor();
|
|
@@ -24,3 +42,4 @@ export default class AuditConfigFileManager {
|
|
|
24
42
|
private parseSubdir;
|
|
25
43
|
private writeSubdir;
|
|
26
44
|
}
|
|
45
|
+
export declare const DefaultFileManager: AuditConfigFileManager;
|
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import yaml from 'js-yaml';
|
|
4
|
-
import { isEmpty } from '
|
|
4
|
+
import { isEmpty } from '../utils.js';
|
|
5
5
|
import { PermissionsConfigFileSchema, PermSetsPolicyFileSchema, PolicyFileSchema, ProfilesPolicyFileSchema, } from './schema.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Loads an audit run config with the default file manager
|
|
8
|
+
*
|
|
9
|
+
* @param dirPath
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
export const loadAuditConfig = (dirPath) => DefaultFileManager.parse(dirPath);
|
|
13
|
+
/**
|
|
14
|
+
* Saves a new or modified audit run config with the default file manager
|
|
15
|
+
*
|
|
16
|
+
* @param dirPath
|
|
17
|
+
* @param conf
|
|
18
|
+
*/
|
|
10
19
|
export const saveAuditConfig = (dirPath, conf) => {
|
|
11
|
-
|
|
12
|
-
fileManager.save(dirPath, conf);
|
|
20
|
+
DefaultFileManager.save(dirPath, conf);
|
|
13
21
|
};
|
|
22
|
+
/**
|
|
23
|
+
* The file manager streamlines initialisation of an audit config from
|
|
24
|
+
* a source directory and writing updated content back to disk. The directory
|
|
25
|
+
* structure is configurable, but most of the time using the default file manager
|
|
26
|
+
* will be enough.
|
|
27
|
+
*/
|
|
14
28
|
export default class AuditConfigFileManager {
|
|
15
29
|
directoryStructure;
|
|
16
30
|
constructor() {
|
|
@@ -95,4 +109,5 @@ function capitalizeKeys(object) {
|
|
|
95
109
|
Object.keys(object).forEach((key) => (newObj[`${key[0].toUpperCase()}${key.slice(1)}`] = object[key]));
|
|
96
110
|
return newObj;
|
|
97
111
|
}
|
|
112
|
+
export const DefaultFileManager = new AuditConfigFileManager();
|
|
98
113
|
//# sourceMappingURL=auditConfigFileManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditConfigFileManager.js","sourceRoot":"","sources":["../../../../src/libs/core/file-mgmt/auditConfigFileManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import z from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { PermissionRiskLevel } from '../classification-types.js';
|
|
3
|
+
import { ProfilesRiskPreset } from '../policy-types.js';
|
|
3
4
|
declare const PermissionsClassificationSchema: z.ZodObject<{
|
|
4
5
|
label: z.ZodOptional<z.ZodString>;
|
|
5
6
|
reason: z.ZodOptional<z.ZodString>;
|
|
6
|
-
classification: z.ZodEnum<typeof
|
|
7
|
+
classification: z.ZodEnum<typeof PermissionRiskLevel>;
|
|
7
8
|
}, z.z.core.$strip>;
|
|
8
9
|
declare const PermsClassificationsMapSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
9
10
|
label: z.ZodOptional<z.ZodString>;
|
|
10
11
|
reason: z.ZodOptional<z.ZodString>;
|
|
11
|
-
classification: z.ZodEnum<typeof
|
|
12
|
+
classification: z.ZodEnum<typeof PermissionRiskLevel>;
|
|
12
13
|
}, z.z.core.$strip>>;
|
|
13
14
|
declare const NamedPermissionsClassificationSchema: z.ZodObject<{
|
|
14
15
|
label: z.ZodOptional<z.ZodString>;
|
|
15
16
|
reason: z.ZodOptional<z.ZodString>;
|
|
16
|
-
classification: z.ZodEnum<typeof
|
|
17
|
+
classification: z.ZodEnum<typeof PermissionRiskLevel>;
|
|
17
18
|
name: z.ZodString;
|
|
18
19
|
}, z.z.core.$strip>;
|
|
19
20
|
declare const PolicyRuleConfigSchema: z.ZodObject<{
|
|
@@ -25,10 +26,10 @@ declare const RuleMapSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
|
25
26
|
config: z.ZodOptional<z.ZodUnknown>;
|
|
26
27
|
}, z.z.core.$strip>>;
|
|
27
28
|
declare const PermSetConfig: z.ZodObject<{
|
|
28
|
-
preset: z.ZodEnum<typeof
|
|
29
|
+
preset: z.ZodEnum<typeof ProfilesRiskPreset>;
|
|
29
30
|
}, z.z.core.$strip>;
|
|
30
31
|
declare const PermSetMap: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
31
|
-
preset: z.ZodEnum<typeof
|
|
32
|
+
preset: z.ZodEnum<typeof ProfilesRiskPreset>;
|
|
32
33
|
}, z.z.core.$strip>>;
|
|
33
34
|
export declare const PolicyFileSchema: z.ZodObject<{
|
|
34
35
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -44,7 +45,7 @@ export declare const ProfilesPolicyFileSchema: z.ZodObject<{
|
|
|
44
45
|
config: z.ZodOptional<z.ZodUnknown>;
|
|
45
46
|
}, z.z.core.$strip>>>;
|
|
46
47
|
profiles: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
47
|
-
preset: z.ZodEnum<typeof
|
|
48
|
+
preset: z.ZodEnum<typeof ProfilesRiskPreset>;
|
|
48
49
|
}, z.z.core.$strip>>;
|
|
49
50
|
}, z.z.core.$strip>;
|
|
50
51
|
export declare const PermSetsPolicyFileSchema: z.ZodObject<{
|
|
@@ -54,14 +55,14 @@ export declare const PermSetsPolicyFileSchema: z.ZodObject<{
|
|
|
54
55
|
config: z.ZodOptional<z.ZodUnknown>;
|
|
55
56
|
}, z.z.core.$strip>>>;
|
|
56
57
|
permissionSets: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
57
|
-
preset: z.ZodEnum<typeof
|
|
58
|
+
preset: z.ZodEnum<typeof ProfilesRiskPreset>;
|
|
58
59
|
}, z.z.core.$strip>>;
|
|
59
60
|
}, z.z.core.$strip>;
|
|
60
61
|
export declare const PermissionsConfigFileSchema: z.ZodObject<{
|
|
61
62
|
permissions: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
62
63
|
label: z.ZodOptional<z.ZodString>;
|
|
63
64
|
reason: z.ZodOptional<z.ZodString>;
|
|
64
|
-
classification: z.ZodEnum<typeof
|
|
65
|
+
classification: z.ZodEnum<typeof PermissionRiskLevel>;
|
|
65
66
|
}, z.z.core.$strip>>;
|
|
66
67
|
}, z.z.core.$strip>;
|
|
67
68
|
export type PermissionsClassification = z.infer<typeof PermissionsClassificationSchema>;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import z from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { PermissionRiskLevel } from '../classification-types.js';
|
|
3
|
+
import { ProfilesRiskPreset } from '../policy-types.js';
|
|
3
4
|
const PermissionsClassificationSchema = z.object({
|
|
4
5
|
/** UI Label */
|
|
5
6
|
label: z.string().optional(),
|
|
6
7
|
/** An optional description to explain the classification */
|
|
7
8
|
reason: z.string().optional(),
|
|
8
9
|
/** Risk assessment of the permissions */
|
|
9
|
-
classification: z.enum(
|
|
10
|
+
classification: z.enum(PermissionRiskLevel),
|
|
10
11
|
});
|
|
11
12
|
const PermsClassificationsMapSchema = z.record(z.string(), PermissionsClassificationSchema);
|
|
12
13
|
const NamedPermissionsClassificationSchema = PermissionsClassificationSchema.extend({
|
|
@@ -19,7 +20,7 @@ const PolicyRuleConfigSchema = z.object({
|
|
|
19
20
|
});
|
|
20
21
|
const RuleMapSchema = z.record(z.string(), PolicyRuleConfigSchema);
|
|
21
22
|
const PermSetConfig = z.object({
|
|
22
|
-
preset: z.enum(
|
|
23
|
+
preset: z.enum(ProfilesRiskPreset),
|
|
23
24
|
});
|
|
24
25
|
const PermSetMap = z.record(z.string(), PermSetConfig);
|
|
25
26
|
// FILE CONTENT SCHEMATA
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/libs/core/file-mgmt/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,eAAe;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,4DAA4D;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,yCAAyC;IACzC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;CAC5C,CAAC,CAAC;AAEH,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,+BAA+B,CAAC,CAAC;AAE5F,MAAM,oCAAoC,GAAG,+BAA+B,CAAC,MAAM,CAAC;IAClF,yDAAyD;IACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC;AAEnE,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC;AAEvD,wBAAwB;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAC9D,QAAQ,EAAE,UAAU;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAC9D,cAAc,EAAE,UAAU;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,+BAA+B,CAAC;CACnE,CAAC,CAAC;AA0CH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,OAAQ,GAAqC,CAAC,OAAO,EAAE,WAAW,KAAK,SAAS,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAQ,GAAyC,CAAC,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC;AACjF,CAAC"}
|