@j-schreiber/sf-cli-security-audit 0.8.1 → 0.8.3
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 +19 -0
- package/lib/commands/org/audit/init.js +72 -0
- package/lib/commands/org/audit/init.js.map +1 -0
- package/lib/commands/org/audit/run.d.ts +23 -0
- package/lib/commands/org/audit/run.js +124 -0
- package/lib/commands/org/audit/run.js.map +1 -0
- package/lib/commands/org/scan/user-perms.d.ts +20 -0
- package/lib/commands/org/scan/user-perms.js +87 -0
- package/lib/commands/org/scan/user-perms.js.map +1 -0
- package/lib/libs/conf-init/auditConfig.d.ts +35 -0
- package/lib/libs/conf-init/auditConfig.js +41 -0
- package/lib/libs/conf-init/auditConfig.js.map +1 -0
- package/lib/libs/conf-init/permissionsClassification.d.ts +17 -0
- package/lib/libs/conf-init/permissionsClassification.js +80 -0
- package/lib/libs/conf-init/permissionsClassification.js.map +1 -0
- package/lib/libs/conf-init/policyConfigs.d.ts +31 -0
- package/lib/libs/conf-init/policyConfigs.js +91 -0
- package/lib/libs/conf-init/policyConfigs.js.map +1 -0
- package/lib/libs/conf-init/presets/loose.d.ts +6 -0
- package/lib/libs/conf-init/presets/loose.js +85 -0
- package/lib/libs/conf-init/presets/loose.js.map +1 -0
- package/lib/libs/conf-init/presets/none.d.ts +30 -0
- package/lib/libs/conf-init/presets/none.js +54 -0
- package/lib/libs/conf-init/presets/none.js.map +1 -0
- package/lib/libs/conf-init/presets/strict.d.ts +4 -0
- package/lib/libs/conf-init/presets/strict.js +79 -0
- package/lib/libs/conf-init/presets/strict.js.map +1 -0
- package/lib/libs/conf-init/presets.d.ts +7 -0
- package/lib/libs/conf-init/presets.js +20 -0
- package/lib/libs/conf-init/presets.js.map +1 -0
- package/lib/libs/core/auditRun.d.ts +36 -0
- package/lib/libs/core/auditRun.js +86 -0
- package/lib/libs/core/auditRun.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/core/constants.d.ts +10 -0
- package/lib/libs/core/constants.js +20 -0
- package/lib/libs/core/constants.js.map +1 -0
- package/lib/libs/core/file-mgmt/auditConfigFileManager.d.ts +48 -0
- package/lib/libs/core/file-mgmt/auditConfigFileManager.js +145 -0
- package/lib/libs/core/file-mgmt/auditConfigFileManager.js.map +1 -0
- package/lib/libs/core/file-mgmt/schema.d.ts +123 -0
- package/lib/libs/core/file-mgmt/schema.js +69 -0
- package/lib/libs/core/file-mgmt/schema.js.map +1 -0
- package/lib/libs/core/mdapi/mdapiRetriever.d.ts +54 -0
- package/lib/libs/core/mdapi/mdapiRetriever.js +123 -0
- package/lib/libs/core/mdapi/mdapiRetriever.js.map +1 -0
- package/lib/libs/core/mdapi/metadataRegistryEntry.d.ts +40 -0
- package/lib/libs/core/mdapi/metadataRegistryEntry.js +46 -0
- package/lib/libs/core/mdapi/metadataRegistryEntry.js.map +1 -0
- package/lib/libs/core/mdapi/namedMetadataToolingQueryable.d.ts +33 -0
- package/lib/libs/core/mdapi/namedMetadataToolingQueryable.js +41 -0
- package/lib/libs/core/mdapi/namedMetadataToolingQueryable.js.map +1 -0
- package/lib/libs/core/mdapi/namedMetadataType.d.ts +20 -0
- package/lib/libs/core/mdapi/namedMetadataType.js +41 -0
- package/lib/libs/core/mdapi/namedMetadataType.js.map +1 -0
- package/lib/libs/core/mdapi/singletonMetadataType.d.ts +21 -0
- package/lib/libs/core/mdapi/singletonMetadataType.js +37 -0
- package/lib/libs/core/mdapi/singletonMetadataType.js.map +1 -0
- package/lib/libs/core/mdapi/usersRepository.d.ts +85 -0
- package/lib/libs/core/mdapi/usersRepository.js +126 -0
- package/lib/libs/core/mdapi/usersRepository.js.map +1 -0
- package/lib/libs/core/policies/connectedAppPolicy.d.ts +10 -0
- package/lib/libs/core/policies/connectedAppPolicy.js +78 -0
- package/lib/libs/core/policies/connectedAppPolicy.js.map +1 -0
- package/lib/libs/core/policies/permissionSetPolicy.d.ts +11 -0
- package/lib/libs/core/policies/permissionSetPolicy.js +62 -0
- package/lib/libs/core/policies/permissionSetPolicy.js.map +1 -0
- package/lib/libs/core/policies/policy.d.ts +31 -0
- package/lib/libs/core/policies/policy.js +100 -0
- package/lib/libs/core/policies/policy.js.map +1 -0
- package/lib/libs/core/policies/profilePolicy.d.ts +11 -0
- package/lib/libs/core/policies/profilePolicy.js +64 -0
- package/lib/libs/core/policies/profilePolicy.js.map +1 -0
- package/lib/libs/core/policies/salesforceStandardTypes.d.ts +58 -0
- package/lib/libs/core/policies/salesforceStandardTypes.js +2 -0
- package/lib/libs/core/policies/salesforceStandardTypes.js.map +1 -0
- package/lib/libs/core/policies/userPolicy.d.ts +11 -0
- package/lib/libs/core/policies/userPolicy.js +60 -0
- package/lib/libs/core/policies/userPolicy.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/policyRegistry.d.ts +23 -0
- package/lib/libs/core/policyRegistry.js +38 -0
- package/lib/libs/core/policyRegistry.js.map +1 -0
- package/lib/libs/core/registries/connectedApps.d.ts +13 -0
- package/lib/libs/core/registries/connectedApps.js +13 -0
- package/lib/libs/core/registries/connectedApps.js.map +1 -0
- package/lib/libs/core/registries/helpers/permissionsScanning.d.ts +29 -0
- package/lib/libs/core/registries/helpers/permissionsScanning.js +69 -0
- package/lib/libs/core/registries/helpers/permissionsScanning.js.map +1 -0
- package/lib/libs/core/registries/permissionSets.d.ts +11 -0
- package/lib/libs/core/registries/permissionSets.js +11 -0
- package/lib/libs/core/registries/permissionSets.js.map +1 -0
- package/lib/libs/core/registries/profiles.d.ts +11 -0
- package/lib/libs/core/registries/profiles.js +11 -0
- package/lib/libs/core/registries/profiles.js.map +1 -0
- package/lib/libs/core/registries/ruleRegistry.d.ts +37 -0
- package/lib/libs/core/registries/ruleRegistry.js +48 -0
- package/lib/libs/core/registries/ruleRegistry.js.map +1 -0
- package/lib/libs/core/registries/rules/allUsedAppsUnderManagement.d.ts +7 -0
- package/lib/libs/core/registries/rules/allUsedAppsUnderManagement.js +23 -0
- package/lib/libs/core/registries/rules/allUsedAppsUnderManagement.js.map +1 -0
- package/lib/libs/core/registries/rules/enforcePermissionPresets.d.ts +7 -0
- package/lib/libs/core/registries/rules/enforcePermissionPresets.js +58 -0
- package/lib/libs/core/registries/rules/enforcePermissionPresets.js.map +1 -0
- package/lib/libs/core/registries/rules/enforcePermissionsOnProfileLike.d.ts +7 -0
- package/lib/libs/core/registries/rules/enforcePermissionsOnProfileLike.js +26 -0
- package/lib/libs/core/registries/rules/enforcePermissionsOnProfileLike.js.map +1 -0
- package/lib/libs/core/registries/rules/enforcePermissionsOnUser.d.ts +8 -0
- package/lib/libs/core/registries/rules/enforcePermissionsOnUser.js +42 -0
- package/lib/libs/core/registries/rules/enforcePermissionsOnUser.js.map +1 -0
- package/lib/libs/core/registries/rules/noInactiveUsers.d.ts +9 -0
- package/lib/libs/core/registries/rules/noInactiveUsers.js +44 -0
- package/lib/libs/core/registries/rules/noInactiveUsers.js.map +1 -0
- package/lib/libs/core/registries/rules/noOtherApexApiLogins.d.ts +7 -0
- package/lib/libs/core/registries/rules/noOtherApexApiLogins.js +27 -0
- package/lib/libs/core/registries/rules/noOtherApexApiLogins.js.map +1 -0
- package/lib/libs/core/registries/rules/noUserCanSelfAuthorize.d.ts +7 -0
- package/lib/libs/core/registries/rules/noUserCanSelfAuthorize.js +31 -0
- package/lib/libs/core/registries/rules/noUserCanSelfAuthorize.js.map +1 -0
- package/lib/libs/core/registries/rules/policyRule.d.ts +19 -0
- package/lib/libs/core/registries/rules/policyRule.js +32 -0
- package/lib/libs/core/registries/rules/policyRule.js.map +1 -0
- package/lib/libs/core/registries/types.d.ts +37 -0
- package/lib/libs/core/registries/types.js +11 -0
- package/lib/libs/core/registries/types.js.map +1 -0
- package/lib/libs/core/registries/users.d.ts +10 -0
- package/lib/libs/core/registries/users.js +17 -0
- package/lib/libs/core/registries/users.js.map +1 -0
- package/lib/libs/core/result-types.d.ts +172 -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.d.ts +12 -0
- package/lib/libs/core/utils.js +31 -0
- package/lib/libs/core/utils.js.map +1 -0
- package/lib/libs/quick-scan/types.d.ts +17 -0
- package/lib/libs/quick-scan/types.js +2 -0
- package/lib/libs/quick-scan/types.js.map +1 -0
- package/lib/libs/quick-scan/userPermissionScanner.d.ts +22 -0
- package/lib/libs/quick-scan/userPermissionScanner.js +75 -0
- package/lib/libs/quick-scan/userPermissionScanner.js.map +1 -0
- package/lib/ux/auditRunMultiStage.d.ts +65 -0
- package/lib/ux/auditRunMultiStage.js +120 -0
- package/lib/ux/auditRunMultiStage.js.map +1 -0
- package/oclif.lock +276 -340
- package/oclif.manifest.json +253 -2
- package/package.json +1 -1
- package/bin/dev.js +0 -8
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { ACTIVE_USERS_QUERY, PERMISSION_SETS_QUERY, PROFILES_QUERY } from '../core/constants.js';
|
|
2
|
+
import { UsersPolicyConfig, } from '../core/file-mgmt/schema.js';
|
|
3
|
+
import { RuleRegistries } from '../core/registries/types.js';
|
|
4
|
+
import { ProfilesRiskPreset } from '../core/policy-types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Initialises a new profiles policy with the local org's
|
|
7
|
+
* profiles and all default rules enabled.
|
|
8
|
+
*
|
|
9
|
+
* @param targetOrgCon
|
|
10
|
+
* @param targetDir
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
export async function initProfiles(targetOrgCon) {
|
|
14
|
+
const profiles = await targetOrgCon.query(PROFILES_QUERY);
|
|
15
|
+
const content = { enabled: true, rules: {}, profiles: {} };
|
|
16
|
+
profiles.records.forEach((permsetRecord) => {
|
|
17
|
+
content.profiles[permsetRecord.Profile.Name] = { preset: ProfilesRiskPreset.UNKNOWN };
|
|
18
|
+
});
|
|
19
|
+
RuleRegistries.Profiles.registeredRules().forEach((ruleName) => {
|
|
20
|
+
content.rules[ruleName] = {
|
|
21
|
+
enabled: true,
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
return content;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Initialises a new permission sets policy with the local org's custom
|
|
28
|
+
* permissions and all default rules enabled.
|
|
29
|
+
*
|
|
30
|
+
* @param targetOrgCon
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
export async function initPermissionSets(targetOrgCon) {
|
|
34
|
+
const permSets = await targetOrgCon.query(PERMISSION_SETS_QUERY);
|
|
35
|
+
const content = {
|
|
36
|
+
enabled: true,
|
|
37
|
+
rules: {},
|
|
38
|
+
permissionSets: {},
|
|
39
|
+
};
|
|
40
|
+
permSets.records
|
|
41
|
+
.filter((permsetRecord) => permsetRecord.IsCustom)
|
|
42
|
+
.forEach((permsetRecord) => {
|
|
43
|
+
content.permissionSets[permsetRecord.Name] = { preset: ProfilesRiskPreset.UNKNOWN };
|
|
44
|
+
});
|
|
45
|
+
RuleRegistries.PermissionSets.registeredRules().forEach((ruleName) => {
|
|
46
|
+
content.rules[ruleName] = {
|
|
47
|
+
enabled: true,
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
return content;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Initialises a new connected apps policy with default rules enabled.
|
|
54
|
+
*
|
|
55
|
+
* @returns
|
|
56
|
+
*/
|
|
57
|
+
export function initConnectedApps() {
|
|
58
|
+
const content = { enabled: true, rules: {} };
|
|
59
|
+
RuleRegistries.ConnectedApps.registeredRules().forEach((ruleName) => {
|
|
60
|
+
content.rules[ruleName] = {
|
|
61
|
+
enabled: true,
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
return content;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Initialises a users policy with all users flagged as standard user
|
|
68
|
+
*
|
|
69
|
+
* @param targetOrgCon
|
|
70
|
+
*/
|
|
71
|
+
export async function initUsers(targetOrgCon) {
|
|
72
|
+
const users = await targetOrgCon.query(ACTIVE_USERS_QUERY);
|
|
73
|
+
const content = {
|
|
74
|
+
enabled: true,
|
|
75
|
+
options: UsersPolicyConfig.parse({}),
|
|
76
|
+
rules: {},
|
|
77
|
+
users: {},
|
|
78
|
+
};
|
|
79
|
+
// dont parse all configs with default of 30 - but initialise a new config likle this
|
|
80
|
+
content.options.analyseLastNDaysOfLoginHistory = 30;
|
|
81
|
+
users.records.forEach((userRecord) => {
|
|
82
|
+
content.users[userRecord.Username] = { role: ProfilesRiskPreset.STANDARD_USER };
|
|
83
|
+
});
|
|
84
|
+
RuleRegistries.Users.registeredRules().forEach((ruleName) => {
|
|
85
|
+
content.rules[ruleName] = {
|
|
86
|
+
enabled: true,
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
return content;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=policyConfigs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policyConfigs.js","sourceRoot":"","sources":["../../../src/libs/conf-init/policyConfigs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { PermissionRiskLevel } from '../../core/classification-types.js';
|
|
2
|
+
import NonePreset from './none.js';
|
|
3
|
+
export default class LoosePreset extends NonePreset {
|
|
4
|
+
constructor() {
|
|
5
|
+
super({
|
|
6
|
+
UseAnyApiClient: PermissionRiskLevel.HIGH,
|
|
7
|
+
BypassMFAForUiLogins: PermissionRiskLevel.HIGH,
|
|
8
|
+
ExternalClientAppAdmin: PermissionRiskLevel.HIGH,
|
|
9
|
+
ManageSandboxes: PermissionRiskLevel.HIGH,
|
|
10
|
+
ManageDevSandboxes: PermissionRiskLevel.HIGH,
|
|
11
|
+
CustomizeApplication: PermissionRiskLevel.HIGH,
|
|
12
|
+
ModifyMetadata: PermissionRiskLevel.HIGH,
|
|
13
|
+
AuthorApex: PermissionRiskLevel.HIGH,
|
|
14
|
+
DebugApex: PermissionRiskLevel.HIGH,
|
|
15
|
+
ManageAuthProviders: PermissionRiskLevel.HIGH,
|
|
16
|
+
Packaging2: PermissionRiskLevel.HIGH,
|
|
17
|
+
Packaging2Delete: PermissionRiskLevel.HIGH,
|
|
18
|
+
Packaging2PromoteVersion: PermissionRiskLevel.HIGH,
|
|
19
|
+
InstallPackaging: PermissionRiskLevel.HIGH,
|
|
20
|
+
ViewClientSecret: PermissionRiskLevel.HIGH,
|
|
21
|
+
ManageTwoFactor: PermissionRiskLevel.HIGH,
|
|
22
|
+
ManageRemoteAccess: PermissionRiskLevel.HIGH,
|
|
23
|
+
CanApproveUninstalledApps: PermissionRiskLevel.HIGH,
|
|
24
|
+
AssignPermissionSets: PermissionRiskLevel.HIGH,
|
|
25
|
+
ManageIpAddresses: PermissionRiskLevel.HIGH,
|
|
26
|
+
ManageSharing: PermissionRiskLevel.HIGH,
|
|
27
|
+
ManageInternalUsers: PermissionRiskLevel.HIGH,
|
|
28
|
+
ManagePasswordPolicies: PermissionRiskLevel.HIGH,
|
|
29
|
+
ManageLoginAccessPolicies: PermissionRiskLevel.HIGH,
|
|
30
|
+
ManageCustomPermissions: PermissionRiskLevel.HIGH,
|
|
31
|
+
ManageCertificates: PermissionRiskLevel.HIGH,
|
|
32
|
+
ManageUsers: PermissionRiskLevel.HIGH,
|
|
33
|
+
ViewAllForecasts: PermissionRiskLevel.HIGH,
|
|
34
|
+
ResetPasswords: PermissionRiskLevel.HIGH,
|
|
35
|
+
CanInsertFeedSystemFields: PermissionRiskLevel.HIGH,
|
|
36
|
+
ManageHealthCheck: PermissionRiskLevel.HIGH,
|
|
37
|
+
ManageSubscriptions: PermissionRiskLevel.HIGH,
|
|
38
|
+
ViewAllProfiles: PermissionRiskLevel.HIGH,
|
|
39
|
+
ManageExternalConnections: PermissionRiskLevel.HIGH,
|
|
40
|
+
ManageNamedCredentials: PermissionRiskLevel.HIGH,
|
|
41
|
+
CodeBuilderUser: PermissionRiskLevel.HIGH,
|
|
42
|
+
MonitorLoginHistory: PermissionRiskLevel.HIGH,
|
|
43
|
+
ManagePackageLicenses: PermissionRiskLevel.HIGH,
|
|
44
|
+
ViewHealthCheck: PermissionRiskLevel.MEDIUM,
|
|
45
|
+
FreezeUsers: PermissionRiskLevel.MEDIUM,
|
|
46
|
+
ManageRoles: PermissionRiskLevel.MEDIUM,
|
|
47
|
+
ViewSetup: PermissionRiskLevel.MEDIUM,
|
|
48
|
+
ViewAllData: PermissionRiskLevel.MEDIUM,
|
|
49
|
+
ModifyAllData: PermissionRiskLevel.MEDIUM,
|
|
50
|
+
ExportReport: PermissionRiskLevel.MEDIUM,
|
|
51
|
+
EmailMass: PermissionRiskLevel.MEDIUM,
|
|
52
|
+
AccessContentBuilder: PermissionRiskLevel.MEDIUM,
|
|
53
|
+
DataExport: PermissionRiskLevel.MEDIUM,
|
|
54
|
+
NewReportBuilder: PermissionRiskLevel.MEDIUM,
|
|
55
|
+
ImportLeads: PermissionRiskLevel.MEDIUM,
|
|
56
|
+
EditBrandTemplates: PermissionRiskLevel.MEDIUM,
|
|
57
|
+
DeleteActivatedContract: PermissionRiskLevel.MEDIUM,
|
|
58
|
+
OverrideForecasts: PermissionRiskLevel.MEDIUM,
|
|
59
|
+
ManageNetworks: PermissionRiskLevel.MEDIUM,
|
|
60
|
+
ViewAllUsers: PermissionRiskLevel.MEDIUM,
|
|
61
|
+
ViewRoles: PermissionRiskLevel.MEDIUM,
|
|
62
|
+
ModerateNetworkUsers: PermissionRiskLevel.MEDIUM,
|
|
63
|
+
ApiEnabled: PermissionRiskLevel.LOW,
|
|
64
|
+
LightningExperienceUser: PermissionRiskLevel.LOW,
|
|
65
|
+
RunReports: PermissionRiskLevel.LOW,
|
|
66
|
+
ScheduleReports: PermissionRiskLevel.LOW,
|
|
67
|
+
ActivateContract: PermissionRiskLevel.LOW,
|
|
68
|
+
ActivateOrder: PermissionRiskLevel.LOW,
|
|
69
|
+
ViewEncryptedData: PermissionRiskLevel.LOW,
|
|
70
|
+
PasswordNeverExpires: PermissionRiskLevel.LOW,
|
|
71
|
+
ActivitiesAccess: PermissionRiskLevel.LOW,
|
|
72
|
+
ForceTwoFactor: PermissionRiskLevel.LOW,
|
|
73
|
+
ManageQuotas: PermissionRiskLevel.LOW,
|
|
74
|
+
ApproveContract: PermissionRiskLevel.LOW,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
initDefault(permName) {
|
|
78
|
+
const basePerm = super.initDefault(permName);
|
|
79
|
+
if (basePerm.classification === PermissionRiskLevel.UNKNOWN) {
|
|
80
|
+
basePerm.classification = PermissionRiskLevel.LOW;
|
|
81
|
+
}
|
|
82
|
+
return basePerm;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=loose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loose.js","sourceRoot":"","sources":["../../../../src/libs/conf-init/presets/loose.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { NamedPermissionsClassification } from '../../core/file-mgmt/schema.js';
|
|
2
|
+
import { PermissionRiskLevel } from '../../core/classification-types.js';
|
|
3
|
+
import { Optional } from '../../core/utils.js';
|
|
4
|
+
export type UnclassifiedPerm = Optional<NamedPermissionsClassification, 'classification'>;
|
|
5
|
+
export type Preset = {
|
|
6
|
+
classifyUserPermissions(rawPerms: UnclassifiedPerm[]): NamedPermissionsClassification[];
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* A "blank" preset that is extended by all other presets
|
|
10
|
+
* and initialises classification descriptions
|
|
11
|
+
*/
|
|
12
|
+
export default class NonePreset implements Preset {
|
|
13
|
+
protected userPermissions: Record<string, Partial<NamedPermissionsClassification>>;
|
|
14
|
+
constructor(userPerms?: Record<string, PermissionRiskLevel>);
|
|
15
|
+
/**
|
|
16
|
+
* Finalises permissions for all unclassified user perms that are set
|
|
17
|
+
* in this preset.
|
|
18
|
+
*
|
|
19
|
+
* @param perms
|
|
20
|
+
*/
|
|
21
|
+
classifyUserPermissions(rawPerms: UnclassifiedPerm[]): NamedPermissionsClassification[];
|
|
22
|
+
/**
|
|
23
|
+
* Initialises a default classification for a given permission name.
|
|
24
|
+
* This merges pre-configured defaults with available descriptions.
|
|
25
|
+
*
|
|
26
|
+
* @param permName
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
initDefault(permName: string): NamedPermissionsClassification;
|
|
30
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Messages } from '@salesforce/core';
|
|
2
|
+
import { PermissionRiskLevel } from '../../core/classification-types.js';
|
|
3
|
+
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
4
|
+
const descriptions = Messages.loadMessages('@j-schreiber/sf-cli-security-audit', 'policyclassifications');
|
|
5
|
+
/**
|
|
6
|
+
* A "blank" preset that is extended by all other presets
|
|
7
|
+
* and initialises classification descriptions
|
|
8
|
+
*/
|
|
9
|
+
export default class NonePreset {
|
|
10
|
+
userPermissions;
|
|
11
|
+
constructor(userPerms) {
|
|
12
|
+
this.userPermissions = {};
|
|
13
|
+
if (userPerms) {
|
|
14
|
+
Object.entries(userPerms).forEach(([name, classification]) => {
|
|
15
|
+
if (this.userPermissions[name]) {
|
|
16
|
+
this.userPermissions[name].classification = classification;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
this.userPermissions[name] = { classification };
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Finalises permissions for all unclassified user perms that are set
|
|
26
|
+
* in this preset.
|
|
27
|
+
*
|
|
28
|
+
* @param perms
|
|
29
|
+
*/
|
|
30
|
+
classifyUserPermissions(rawPerms) {
|
|
31
|
+
return rawPerms.map((perm) => ({
|
|
32
|
+
...this.initDefault(perm.name),
|
|
33
|
+
...perm,
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Initialises a default classification for a given permission name.
|
|
38
|
+
* This merges pre-configured defaults with available descriptions.
|
|
39
|
+
*
|
|
40
|
+
* @param permName
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
initDefault(permName) {
|
|
44
|
+
const def = this.userPermissions[permName];
|
|
45
|
+
const hasDescription = descriptions.messages.has(permName);
|
|
46
|
+
return {
|
|
47
|
+
...def,
|
|
48
|
+
name: permName,
|
|
49
|
+
classification: def?.classification ?? PermissionRiskLevel.UNKNOWN,
|
|
50
|
+
reason: hasDescription ? descriptions.getMessage(permName) : undefined,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=none.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"none.js","sourceRoot":"","sources":["../../../../src/libs/conf-init/presets/none.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAGzE,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,oCAAoC,EAAE,uBAAuB,CAAC,CAAC;AAQ1G;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU;IACnB,eAAe,CAA0D;IAEnF,YAAmB,SAA+C;QAChE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE;gBAC3D,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,cAAc,GAAG,cAAc,CAAC;gBAC7D,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,CAAC;gBAClD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,uBAAuB,CAAC,QAA4B;QACzD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC7B,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,GAAG,IAAI;SACR,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACI,WAAW,CAAC,QAAgB;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3D,OAAO;YACL,GAAG,GAAG;YACN,IAAI,EAAE,QAAQ;YACd,cAAc,EAAE,GAAG,EAAE,cAAc,IAAI,mBAAmB,CAAC,OAAO;YAClE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SACvE,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { PermissionRiskLevel } from '../../core/classification-types.js';
|
|
2
|
+
import NonePreset from './none.js';
|
|
3
|
+
export default class StrictPreset extends NonePreset {
|
|
4
|
+
constructor() {
|
|
5
|
+
super({
|
|
6
|
+
UseAnyApiClient: PermissionRiskLevel.BLOCKED,
|
|
7
|
+
BypassMFAForUiLogins: PermissionRiskLevel.BLOCKED,
|
|
8
|
+
ManageNamedCredentials: PermissionRiskLevel.CRITICAL,
|
|
9
|
+
ImportCustomObjects: PermissionRiskLevel.CRITICAL,
|
|
10
|
+
ManageSandboxes: PermissionRiskLevel.CRITICAL,
|
|
11
|
+
ManageDevSandboxes: PermissionRiskLevel.CRITICAL,
|
|
12
|
+
CustomizeApplication: PermissionRiskLevel.CRITICAL,
|
|
13
|
+
ModifyMetadata: PermissionRiskLevel.CRITICAL,
|
|
14
|
+
AuthorApex: PermissionRiskLevel.CRITICAL,
|
|
15
|
+
DebugApex: PermissionRiskLevel.CRITICAL,
|
|
16
|
+
ManageAuthProviders: PermissionRiskLevel.CRITICAL,
|
|
17
|
+
Packaging2: PermissionRiskLevel.CRITICAL,
|
|
18
|
+
Packaging2Delete: PermissionRiskLevel.CRITICAL,
|
|
19
|
+
Packaging2PromoteVersion: PermissionRiskLevel.CRITICAL,
|
|
20
|
+
InstallPackaging: PermissionRiskLevel.CRITICAL,
|
|
21
|
+
ViewClientSecret: PermissionRiskLevel.CRITICAL,
|
|
22
|
+
ExternalClientAppAdmin: PermissionRiskLevel.CRITICAL,
|
|
23
|
+
CanInsertFeedSystemFields: PermissionRiskLevel.CRITICAL,
|
|
24
|
+
ManageExternalConnections: PermissionRiskLevel.CRITICAL,
|
|
25
|
+
CodeBuilderUser: PermissionRiskLevel.CRITICAL,
|
|
26
|
+
ManageCertificates: PermissionRiskLevel.HIGH,
|
|
27
|
+
ExportReport: PermissionRiskLevel.HIGH,
|
|
28
|
+
ViewSetup: PermissionRiskLevel.HIGH,
|
|
29
|
+
ApiEnabled: PermissionRiskLevel.HIGH,
|
|
30
|
+
ViewAllData: PermissionRiskLevel.HIGH,
|
|
31
|
+
ModifyAllData: PermissionRiskLevel.HIGH,
|
|
32
|
+
ManageTwoFactor: PermissionRiskLevel.HIGH,
|
|
33
|
+
ManageRemoteAccess: PermissionRiskLevel.HIGH,
|
|
34
|
+
CanApproveUninstalledApps: PermissionRiskLevel.HIGH,
|
|
35
|
+
AssignPermissionSets: PermissionRiskLevel.HIGH,
|
|
36
|
+
ManageRoles: PermissionRiskLevel.HIGH,
|
|
37
|
+
ManageIpAddresses: PermissionRiskLevel.HIGH,
|
|
38
|
+
ManageSharing: PermissionRiskLevel.HIGH,
|
|
39
|
+
ManageInternalUsers: PermissionRiskLevel.HIGH,
|
|
40
|
+
ManagePasswordPolicies: PermissionRiskLevel.HIGH,
|
|
41
|
+
ManageLoginAccessPolicies: PermissionRiskLevel.HIGH,
|
|
42
|
+
ManageCustomPermissions: PermissionRiskLevel.HIGH,
|
|
43
|
+
FreezeUsers: PermissionRiskLevel.HIGH,
|
|
44
|
+
AccessContentBuilder: PermissionRiskLevel.HIGH,
|
|
45
|
+
NewReportBuilder: PermissionRiskLevel.HIGH,
|
|
46
|
+
ImportLeads: PermissionRiskLevel.HIGH,
|
|
47
|
+
ViewEncryptedData: PermissionRiskLevel.HIGH,
|
|
48
|
+
EditBrandTemplates: PermissionRiskLevel.HIGH,
|
|
49
|
+
OverrideForecasts: PermissionRiskLevel.HIGH,
|
|
50
|
+
ViewAllForecasts: PermissionRiskLevel.HIGH,
|
|
51
|
+
ResetPasswords: PermissionRiskLevel.HIGH,
|
|
52
|
+
ManageNetworks: PermissionRiskLevel.HIGH,
|
|
53
|
+
ViewAllUsers: PermissionRiskLevel.HIGH,
|
|
54
|
+
ModerateNetworkUsers: PermissionRiskLevel.HIGH,
|
|
55
|
+
ViewHealthCheck: PermissionRiskLevel.HIGH,
|
|
56
|
+
ManageHealthCheck: PermissionRiskLevel.HIGH,
|
|
57
|
+
ManageSubscriptions: PermissionRiskLevel.HIGH,
|
|
58
|
+
ViewRoles: PermissionRiskLevel.HIGH,
|
|
59
|
+
ViewAllProfiles: PermissionRiskLevel.HIGH,
|
|
60
|
+
MonitorLoginHistory: PermissionRiskLevel.HIGH,
|
|
61
|
+
ManagePackageLicenses: PermissionRiskLevel.HIGH,
|
|
62
|
+
ScheduleReports: PermissionRiskLevel.MEDIUM,
|
|
63
|
+
EmailMass: PermissionRiskLevel.MEDIUM,
|
|
64
|
+
DataExport: PermissionRiskLevel.MEDIUM,
|
|
65
|
+
RunReports: PermissionRiskLevel.MEDIUM,
|
|
66
|
+
ApproveContract: PermissionRiskLevel.MEDIUM,
|
|
67
|
+
ActivateContract: PermissionRiskLevel.MEDIUM,
|
|
68
|
+
ActivateOrder: PermissionRiskLevel.MEDIUM,
|
|
69
|
+
DeleteActivatedContract: PermissionRiskLevel.MEDIUM,
|
|
70
|
+
ManageQuotas: PermissionRiskLevel.MEDIUM,
|
|
71
|
+
ManageUsers: PermissionRiskLevel.HIGH,
|
|
72
|
+
LightningExperienceUser: PermissionRiskLevel.LOW,
|
|
73
|
+
PasswordNeverExpires: PermissionRiskLevel.LOW,
|
|
74
|
+
ActivitiesAccess: PermissionRiskLevel.LOW,
|
|
75
|
+
ForceTwoFactor: PermissionRiskLevel.LOW,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=strict.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strict.js","sourceRoot":"","sources":["../../../../src/libs/conf-init/presets/strict.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import LoosePreset from './presets/loose.js';
|
|
2
|
+
import NonePreset from './presets/none.js';
|
|
3
|
+
import StrictPreset from './presets/strict.js';
|
|
4
|
+
export var AuditInitPresets;
|
|
5
|
+
(function (AuditInitPresets) {
|
|
6
|
+
AuditInitPresets["strict"] = "strict";
|
|
7
|
+
AuditInitPresets["loose"] = "loose";
|
|
8
|
+
AuditInitPresets["none"] = "none";
|
|
9
|
+
})(AuditInitPresets || (AuditInitPresets = {}));
|
|
10
|
+
export function loadPreset(presetName) {
|
|
11
|
+
switch (presetName) {
|
|
12
|
+
case AuditInitPresets.loose:
|
|
13
|
+
return new LoosePreset();
|
|
14
|
+
case AuditInitPresets.strict:
|
|
15
|
+
return new StrictPreset();
|
|
16
|
+
default:
|
|
17
|
+
return new NonePreset();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../../src/libs/conf-init/presets.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,UAAsB,MAAM,mBAAmB,CAAC;AACvD,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAE/C,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,mCAAe,CAAA;IACf,iCAAa,CAAA;AACf,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED,MAAM,UAAU,UAAU,CAAC,UAA6B;IACtD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,gBAAgB,CAAC,KAAK;YACzB,OAAO,IAAI,WAAW,EAAE,CAAC;QAC3B,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,IAAI,YAAY,EAAE,CAAC;QAC5B;YACE,OAAO,IAAI,UAAU,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import EventEmitter from 'node:events';
|
|
2
|
+
import { Connection } from '@salesforce/core';
|
|
3
|
+
import { AuditResult } from './result-types.js';
|
|
4
|
+
import { AuditRunConfig } from './file-mgmt/schema.js';
|
|
5
|
+
import Policy from './policies/policy.js';
|
|
6
|
+
type PolicyMap = Record<string, Policy<unknown>>;
|
|
7
|
+
export declare function startAuditRun(directoryPath: string): AuditRun;
|
|
8
|
+
export type EntityResolveEvent = {
|
|
9
|
+
total: number;
|
|
10
|
+
resolved: number;
|
|
11
|
+
policyName: string;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Instance of an audit run that manages high-level operations
|
|
15
|
+
*/
|
|
16
|
+
export default class AuditRun extends EventEmitter {
|
|
17
|
+
configs: AuditRunConfig;
|
|
18
|
+
private executablePolicies?;
|
|
19
|
+
constructor(configs: AuditRunConfig);
|
|
20
|
+
/**
|
|
21
|
+
* Loads all policies, resolves entities and caches the results.
|
|
22
|
+
*
|
|
23
|
+
* @param targetOrgConnection
|
|
24
|
+
*/
|
|
25
|
+
resolve(targetOrgConnection: Connection): Promise<PolicyMap>;
|
|
26
|
+
/**
|
|
27
|
+
* Executes an initialised audit run. Resolves policies entities
|
|
28
|
+
* and executes all rules.
|
|
29
|
+
*
|
|
30
|
+
* @param targetOrgConnection
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
execute(targetCon: Connection): Promise<Omit<AuditResult, 'orgId'>>;
|
|
34
|
+
private loadPolicies;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// import fs from 'node:fs';
|
|
2
|
+
import EventEmitter from 'node:events';
|
|
3
|
+
import { loadAuditConfig } from './file-mgmt/auditConfigFileManager.js';
|
|
4
|
+
import { policyDefs } from './policyRegistry.js';
|
|
5
|
+
export function startAuditRun(directoryPath) {
|
|
6
|
+
const conf = loadAuditConfig(directoryPath);
|
|
7
|
+
return new AuditRun(conf);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Instance of an audit run that manages high-level operations
|
|
11
|
+
*/
|
|
12
|
+
export default class AuditRun extends EventEmitter {
|
|
13
|
+
configs;
|
|
14
|
+
executablePolicies;
|
|
15
|
+
constructor(configs) {
|
|
16
|
+
super();
|
|
17
|
+
this.configs = configs;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Loads all policies, resolves entities and caches the results.
|
|
21
|
+
*
|
|
22
|
+
* @param targetOrgConnection
|
|
23
|
+
*/
|
|
24
|
+
async resolve(targetOrgConnection) {
|
|
25
|
+
if (this.executablePolicies) {
|
|
26
|
+
return this.executablePolicies;
|
|
27
|
+
}
|
|
28
|
+
this.executablePolicies = this.loadPolicies(this.configs);
|
|
29
|
+
const resolveResultPromises = [];
|
|
30
|
+
Object.values(this.executablePolicies).forEach((executable) => {
|
|
31
|
+
resolveResultPromises.push(executable.resolve({ targetOrgConnection }));
|
|
32
|
+
});
|
|
33
|
+
await Promise.all(resolveResultPromises);
|
|
34
|
+
return this.executablePolicies;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Executes an initialised audit run. Resolves policies entities
|
|
38
|
+
* and executes all rules.
|
|
39
|
+
*
|
|
40
|
+
* @param targetOrgConnection
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
async execute(targetCon) {
|
|
44
|
+
this.executablePolicies = await this.resolve(targetCon);
|
|
45
|
+
const results = await runPolicies(this.executablePolicies, targetCon);
|
|
46
|
+
return {
|
|
47
|
+
auditDate: new Date().toISOString(),
|
|
48
|
+
isCompliant: isCompliant(results),
|
|
49
|
+
policies: results,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
loadPolicies(config) {
|
|
53
|
+
const pols = {};
|
|
54
|
+
Object.entries(config.policies).forEach(([policyName, policyConfig]) => {
|
|
55
|
+
const policy = new policyDefs[policyName].handler(policyConfig.content, config);
|
|
56
|
+
policy.addListener('entityresolve', (resolveStats) => {
|
|
57
|
+
this.emit(`entityresolve-${policyName}`, { policyName, ...resolveStats });
|
|
58
|
+
});
|
|
59
|
+
pols[policyName] = policy;
|
|
60
|
+
});
|
|
61
|
+
return pols;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function isCompliant(results) {
|
|
65
|
+
const list = Object.values(results);
|
|
66
|
+
if (list.length === 0) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
return list.reduce((prevVal, currentVal) => prevVal && currentVal.isCompliant, list[0].isCompliant);
|
|
70
|
+
}
|
|
71
|
+
async function runPolicies(policies, targetOrgConnection) {
|
|
72
|
+
const resultsArray = [];
|
|
73
|
+
const policiesList = [];
|
|
74
|
+
Object.entries(policies).forEach(([policyKey, executable]) => {
|
|
75
|
+
policiesList.push(policyKey);
|
|
76
|
+
resultsArray.push(executable.run({ targetOrgConnection }));
|
|
77
|
+
});
|
|
78
|
+
const arrayResult = await Promise.all(resultsArray);
|
|
79
|
+
const results = {};
|
|
80
|
+
arrayResult.forEach((policyResult) => {
|
|
81
|
+
const policyKey = policiesList[arrayResult.indexOf(policyResult)];
|
|
82
|
+
results[policyKey] = policyResult;
|
|
83
|
+
});
|
|
84
|
+
return results;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=auditRun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditRun.js","sourceRoot":"","sources":["../../../src/libs/core/auditRun.ts"],"names":[],"mappings":"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"}
|
|
@@ -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. Will be ignored but create a warning */
|
|
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. Will be ignored but create a warning */
|
|
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,kFAAkF;IAClF,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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const CUSTOM_PERMS_QUERY = "SELECT Id,MasterLabel,DeveloperName FROM CustomPermission";
|
|
2
|
+
export declare const PROFILES_QUERY = "SELECT Profile.Name,Profile.UserType,IsCustom FROM PermissionSet WHERE IsOwnedByProfile = TRUE";
|
|
3
|
+
export declare const PERMISSION_SETS_QUERY = "SELECT Name,Label,IsCustom,NamespacePrefix FROM PermissionSet WHERE IsOwnedByProfile = FALSE AND NamespacePrefix = NULL";
|
|
4
|
+
export declare const CONNECTED_APPS_QUERY = "SELECT Name,OptionsAllowAdminApprovedUsersOnly FROM ConnectedApplication";
|
|
5
|
+
export declare const OAUTH_TOKEN_QUERY = "SELECT User.Username,UseCount,AppName FROM OauthToken";
|
|
6
|
+
export declare const ACTIVE_USERS_QUERY = "SELECT Id,Username,UserType FROM User WHERE IsActive = TRUE AND UserType IN ('Standard') LIMIT 2000";
|
|
7
|
+
export declare const ACTIVE_USERS_DETAILS_QUERY = "SELECT Id,Username,Profile.Name,CreatedDate,LastLoginDate FROM User WHERE IsActive = TRUE AND UserType IN ('Standard') LIMIT 2000";
|
|
8
|
+
export declare const buildPermsetAssignmentsQuery: (userIds: string[]) => string;
|
|
9
|
+
export declare const buildLoginHistoryQuery: (daysToAnalayse?: number) => string;
|
|
10
|
+
export declare const RETRIEVE_CACHE: string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
// QUERIES
|
|
3
|
+
export const CUSTOM_PERMS_QUERY = 'SELECT Id,MasterLabel,DeveloperName FROM CustomPermission';
|
|
4
|
+
export const PROFILES_QUERY = 'SELECT Profile.Name,Profile.UserType,IsCustom FROM PermissionSet WHERE IsOwnedByProfile = TRUE';
|
|
5
|
+
export const PERMISSION_SETS_QUERY = 'SELECT Name,Label,IsCustom,NamespacePrefix FROM PermissionSet WHERE IsOwnedByProfile = FALSE AND NamespacePrefix = NULL';
|
|
6
|
+
export const CONNECTED_APPS_QUERY = 'SELECT Name,OptionsAllowAdminApprovedUsersOnly FROM ConnectedApplication';
|
|
7
|
+
export const OAUTH_TOKEN_QUERY = 'SELECT User.Username,UseCount,AppName FROM OauthToken';
|
|
8
|
+
export const ACTIVE_USERS_QUERY = "SELECT Id,Username,UserType FROM User WHERE IsActive = TRUE AND UserType IN ('Standard') LIMIT 2000";
|
|
9
|
+
export const ACTIVE_USERS_DETAILS_QUERY = "SELECT Id,Username,Profile.Name,CreatedDate,LastLoginDate FROM User WHERE IsActive = TRUE AND UserType IN ('Standard') LIMIT 2000";
|
|
10
|
+
// DYNAMIC QUERIES
|
|
11
|
+
export const buildPermsetAssignmentsQuery = (userIds) => `${USERS_PERMSET_ASSIGNMENTS_QUERY} AND AssigneeId IN (${userIds.map((userId) => `'${userId}'`).join(',')})`;
|
|
12
|
+
export const buildLoginHistoryQuery = (daysToAnalayse) => daysToAnalayse
|
|
13
|
+
? `${USERS_LOGIN_HISTORY_QUERY} WHERE LoginTime >= LAST_N_DAYS:${daysToAnalayse} GROUP BY LoginType,Application,UserId`
|
|
14
|
+
: `${USERS_LOGIN_HISTORY_QUERY} GROUP BY LoginType,Application,UserId`;
|
|
15
|
+
// PATHS
|
|
16
|
+
export const RETRIEVE_CACHE = path.join('.jsc', 'retrieves');
|
|
17
|
+
// BASE QUERIES
|
|
18
|
+
const USERS_LOGIN_HISTORY_QUERY = 'SELECT LoginType,Application,UserId,COUNT(Id)LoginCount,MAX(LoginTime)LastLogin FROM LoginHistory';
|
|
19
|
+
const USERS_PERMSET_ASSIGNMENTS_QUERY = 'SELECT AssigneeId,PermissionSet.Name FROM PermissionSetAssignment WHERE PermissionSet.IsOwnedByProfile = FALSE AND PermissionSet.NamespacePrefix = NULL';
|
|
20
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/libs/core/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,UAAU;AACV,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;AACzF,MAAM,CAAC,MAAM,kBAAkB,GAC7B,qGAAqG,CAAC;AACxG,MAAM,CAAC,MAAM,0BAA0B,GACrC,mIAAmI,CAAC;AAEtI,kBAAkB;AAClB,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,OAAiB,EAAU,EAAE,CACxE,GAAG,+BAA+B,uBAAuB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAE/G,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,cAAuB,EAAU,EAAE,CACxE,cAAc;IACZ,CAAC,CAAC,GAAG,yBAAyB,mCAAmC,cAAc,wCAAwC;IACvH,CAAC,CAAC,GAAG,yBAAyB,wCAAwC,CAAC;AAE3E,QAAQ;AACR,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAE7D,eAAe;AACf,MAAM,yBAAyB,GAC7B,mGAAmG,CAAC;AACtG,MAAM,+BAA+B,GACnC,yJAAyJ,CAAC"}
|