sfdx-hardis 6.3.1 → 6.3.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/CHANGELOG.md +13 -0
- package/lib/commands/hardis/org/diagnose/unsecure-connected-apps.js +33 -20
- package/lib/commands/hardis/org/diagnose/unsecure-connected-apps.js.map +1 -1
- package/lib/commands/hardis/org/monitor/all.js +6 -6
- package/lib/commands/hardis/org/monitor/all.js.map +1 -1
- package/oclif.manifest.json +599 -599
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
Note: Can be used with `sfdx plugins:install sfdx-hardis@beta` and docker image `hardisgroupcom/sfdx-hardis@beta`
|
|
6
6
|
|
|
7
|
+
## [6.3.3] 2025-09-08
|
|
8
|
+
|
|
9
|
+
- [hardis:org:diagnose:unsecure-connected-apps](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unsecure-connected-apps/)
|
|
10
|
+
- Add an additional columns on OAuth Usage to:
|
|
11
|
+
- Show when the connected app has been last used
|
|
12
|
+
- Show which profiles are the users using the OAuth Tokens
|
|
13
|
+
- Run the command in the daily monitoring
|
|
14
|
+
|
|
15
|
+
## [6.3.2] 2025-09-07
|
|
16
|
+
|
|
17
|
+
- Set initPermissionSets config prop to array of strings
|
|
18
|
+
- [hardis:org:diagnose:unsecure-connected-apps](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/unsecure-connected-apps/): Handle case where OAuth Token App menu item is not found
|
|
19
|
+
|
|
7
20
|
## [6.3.1] 2025-09-07
|
|
8
21
|
|
|
9
22
|
- Update Grafana Home Dashboard to add Unsecure Connected Apps
|
|
@@ -3,7 +3,7 @@ import { SfCommand, Flags, requiredOrgFlagWithDeprecations } from '@salesforce/s
|
|
|
3
3
|
import { Messages } from '@salesforce/core';
|
|
4
4
|
import c from 'chalk';
|
|
5
5
|
import { uxLog, uxLogTable } from '../../../../common/utils/index.js';
|
|
6
|
-
import {
|
|
6
|
+
import { bulkQuery } from '../../../../common/utils/apiUtils.js';
|
|
7
7
|
import { generateCsvFile, generateReportPath } from '../../../../common/utils/filesUtils.js';
|
|
8
8
|
import { getNotificationButtons, getOrgMarkdown } from '../../../../common/utils/notifUtils.js';
|
|
9
9
|
import { NotifProvider } from '../../../../common/notifProvider/index.js';
|
|
@@ -35,6 +35,8 @@ Key functionalities:
|
|
|
35
35
|
|
|
36
36
|
This command is part of [sfdx-hardis Monitoring](${CONSTANTS.DOC_URL_ROOT}/salesforce-monitoring-org-security/) and can output Grafana, Slack and MsTeams Notifications.
|
|
37
37
|
|
|
38
|
+
<iframe width="560" height="315" src="https://www.youtube.com/embed/jHv8yrSK8Dg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
|
39
|
+
|
|
38
40
|
<details markdown="1">
|
|
39
41
|
<summary>Technical explanations</summary>
|
|
40
42
|
|
|
@@ -86,36 +88,33 @@ The command's technical implementation involves:
|
|
|
86
88
|
const conn = flags['target-org'].getConnection();
|
|
87
89
|
// Collect all Connected Apps
|
|
88
90
|
uxLog("action", this, c.cyan(`Listing all OAuth Tokens from ${conn.instanceUrl} ...`));
|
|
89
|
-
const allOAuthTokenQuery = `SELECT AppName , AppMenuItem.IsUsingAdminAuthorization, LastUsedDate, CreatedDate, User.Name ,UseCount FROM OauthToken ORDER BY AppName ASC`;
|
|
90
|
-
const allOAuthTokenQueryRes = await
|
|
91
|
+
const allOAuthTokenQuery = `SELECT AppName , AppMenuItem.IsUsingAdminAuthorization, LastUsedDate, CreatedDate, User.Name , User.Profile.Name, UseCount FROM OauthToken ORDER BY AppName ASC`;
|
|
92
|
+
const allOAuthTokenQueryRes = await bulkQuery(allOAuthTokenQuery, conn);
|
|
91
93
|
const allOAuthTokens = allOAuthTokenQueryRes.records;
|
|
92
94
|
const allOAuthTokensWithStatus = allOAuthTokens.map(app => {
|
|
93
|
-
const
|
|
95
|
+
const adminPreApproved = app["AppMenuItem.IsUsingAdminAuthorization"] ?? false;
|
|
96
|
+
const appResult = {
|
|
94
97
|
AppName: app.AppName,
|
|
95
|
-
|
|
96
|
-
|
|
98
|
+
"Status": adminPreApproved ? '✅ Secured' : '❌ Unsecured',
|
|
99
|
+
"Admin Pre-Approved": adminPreApproved ? 'Yes' : 'No',
|
|
100
|
+
"User": app["User.Name"] ? app["User.Name"] : 'N/A',
|
|
101
|
+
"User Profile": app["User.Profile.Name"] ? app["User.Profile.Name"] : 'N/A',
|
|
102
|
+
"Last Used Date": app.LastUsedDate ? new Date(app.LastUsedDate).toISOString().split('T')[0] : 'N/A',
|
|
103
|
+
"Created Date": app.CreatedDate ? new Date(app.CreatedDate).toISOString().split('T')[0] : 'N/A',
|
|
104
|
+
"Use Count": app.UseCount ? app.UseCount : 0,
|
|
97
105
|
};
|
|
98
|
-
|
|
99
|
-
toAdd.statusIcon = '❌';
|
|
100
|
-
toAdd.status = 'Unsecured';
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
toAdd.statusIcon = '✅';
|
|
104
|
-
toAdd.status = 'Secured';
|
|
105
|
-
}
|
|
106
|
-
delete app.attributes;
|
|
107
|
-
delete app.AppMenuItem;
|
|
108
|
-
delete app.User;
|
|
109
|
-
return Object.assign(toAdd, app);
|
|
106
|
+
return appResult;
|
|
110
107
|
});
|
|
111
108
|
// Generate output CSV file
|
|
112
109
|
this.outputFile = await generateReportPath('unsecured-oauth-tokens', this.outputFile);
|
|
113
110
|
this.outputFilesRes = await generateCsvFile(allOAuthTokensWithStatus, this.outputFile, { fileTitle: "Unsecured OAuth Tokens" });
|
|
114
|
-
const unsecuredOAuthTokens = allOAuthTokensWithStatus.filter(app => app.
|
|
111
|
+
const unsecuredOAuthTokens = allOAuthTokensWithStatus.filter(app => app.Status === '❌ Unsecured');
|
|
115
112
|
// Display results
|
|
116
113
|
uxLog("action", this, `${unsecuredOAuthTokens.length} unsecured OAuth Tokens found.`);
|
|
117
114
|
uxLogTable(this, unsecuredOAuthTokens);
|
|
118
115
|
const uniqueUnsecuredAppNamesAndTokenNumber = {};
|
|
116
|
+
const uniqueUnsecuredAppNamesAndProfiles = {};
|
|
117
|
+
const uniqueUnsecuredAppNamesAndLastUsageDate = {};
|
|
119
118
|
for (const app of unsecuredOAuthTokens) {
|
|
120
119
|
if (uniqueUnsecuredAppNamesAndTokenNumber[app.AppName]) {
|
|
121
120
|
uniqueUnsecuredAppNamesAndTokenNumber[app.AppName]++;
|
|
@@ -123,12 +122,26 @@ The command's technical implementation involves:
|
|
|
123
122
|
else {
|
|
124
123
|
uniqueUnsecuredAppNamesAndTokenNumber[app.AppName] = 1;
|
|
125
124
|
}
|
|
125
|
+
if (!uniqueUnsecuredAppNamesAndProfiles[app.AppName]) {
|
|
126
|
+
uniqueUnsecuredAppNamesAndProfiles[app.AppName] = new Set();
|
|
127
|
+
}
|
|
128
|
+
if (app["User Profile"] && app["User Profile"] !== 'N/A') {
|
|
129
|
+
uniqueUnsecuredAppNamesAndProfiles[app.AppName].add(app["User Profile"]);
|
|
130
|
+
}
|
|
131
|
+
if (app["Last Used Date"] && app["Last Used Date"] !== 'N/A') {
|
|
132
|
+
const latestUsageDate = uniqueUnsecuredAppNamesAndLastUsageDate[app.AppName];
|
|
133
|
+
if (!latestUsageDate || new Date(app["Last Used Date"]) > new Date(latestUsageDate)) {
|
|
134
|
+
uniqueUnsecuredAppNamesAndLastUsageDate[app.AppName] = app["Last Used Date"];
|
|
135
|
+
}
|
|
136
|
+
}
|
|
126
137
|
}
|
|
127
138
|
const uniqueUnsecuredAppNames = Object.keys(uniqueUnsecuredAppNamesAndTokenNumber);
|
|
128
139
|
const uniqueUnsecureConnectedAppsWithTokens = uniqueUnsecuredAppNames.map(appName => {
|
|
129
140
|
return {
|
|
130
141
|
AppName: appName,
|
|
131
|
-
NumberOfUnsecuredOAuthTokens: uniqueUnsecuredAppNamesAndTokenNumber[appName]
|
|
142
|
+
NumberOfUnsecuredOAuthTokens: uniqueUnsecuredAppNamesAndTokenNumber[appName],
|
|
143
|
+
LatestUsageDate: uniqueUnsecuredAppNamesAndLastUsageDate[appName] || "N/A",
|
|
144
|
+
ProfilesOfUsersUsingIt: Array.from(uniqueUnsecuredAppNamesAndProfiles[appName] || []).sort().join(', '),
|
|
132
145
|
};
|
|
133
146
|
});
|
|
134
147
|
this.outputFileConnectedApps = await generateReportPath('unsecured-connected-apps', this.outputFileConnectedApps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unsecure-connected-apps.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/org/diagnose/unsecure-connected-apps.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,CAAC,MAAM,OAAO,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAChG,OAAO,EAAE,aAAa,EAAiB,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,SAAc;IACzD,MAAM,CAAC,KAAK,GAAG,iCAAiC,CAAC;IAEjD,MAAM,CAAC,WAAW,GAAG;;;;;;;;;;;;;;;;;;;mDAmBqB,SAAS,CAAC,YAAY
|
|
1
|
+
{"version":3,"file":"unsecure-connected-apps.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/org/diagnose/unsecure-connected-apps.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,12 @@ export default class MonitorAll extends SfCommand {
|
|
|
27
27
|
command: 'sf hardis:org:monitor:limits',
|
|
28
28
|
frequency: 'daily',
|
|
29
29
|
},
|
|
30
|
+
{
|
|
31
|
+
key: 'UNSECURED_CONNECTED_APPS',
|
|
32
|
+
title: 'Detect unsecured Connected Apps in an org',
|
|
33
|
+
command: 'sf hardis:org:diagnose:unsecure-connected-apps',
|
|
34
|
+
frequency: 'daily',
|
|
35
|
+
},
|
|
30
36
|
{
|
|
31
37
|
key: 'LICENSES',
|
|
32
38
|
title: 'Extract licenses information',
|
|
@@ -87,12 +93,6 @@ export default class MonitorAll extends SfCommand {
|
|
|
87
93
|
command: 'sf hardis:org:diagnose:unused-connected-apps',
|
|
88
94
|
frequency: 'weekly',
|
|
89
95
|
},
|
|
90
|
-
{
|
|
91
|
-
key: 'UNSECURED_CONNECTED_APPS',
|
|
92
|
-
title: 'Detect unsecured Connected Apps in an org',
|
|
93
|
-
command: 'sf hardis:org:diagnose:unsecure-connected-apps',
|
|
94
|
-
frequency: 'weekly',
|
|
95
|
-
},
|
|
96
96
|
{
|
|
97
97
|
key: 'METADATA_STATUS',
|
|
98
98
|
title: 'Detect inactive metadata',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/org/monitor/all.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,CAAC,MAAM,OAAO,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE9E,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,SAAc;IAC7C,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;IAE7B,MAAM,CAAC,yBAAyB,GAAG;QACxC;YACE,GAAG,EAAE,aAAa;YAClB,KAAK,EAAE,2CAA2C;YAClD,OAAO,EAAE,mCAAmC;YAC5C,SAAS,EAAE,OAAO;SACnB;QACD;YACE,GAAG,EAAE,YAAY;YACjB,KAAK,EAAE,yCAAyC;YAChD,OAAO,EAAE,kCAAkC;YAC3C,SAAS,EAAE,OAAO;SACnB;QACD;YACE,GAAG,EAAE,YAAY;YACjB,KAAK,EAAE,8CAA8C;YACrD,OAAO,EAAE,8BAA8B;YACvC,SAAS,EAAE,OAAO;SACnB;QACD;YACE,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,8BAA8B;YACrC,OAAO,EAAE,iCAAiC;YAC1C,SAAS,EAAE,QAAQ;SACpB;QACD;YACE,GAAG,EAAE,aAAa;YAClB,KAAK,EAAE,yEAAyE;YAChF,OAAO,EAAE,uBAAuB;YAChC,SAAS,EAAE,QAAQ;SACpB;QACD;YACE,GAAG,EAAE,iBAAiB;YACtB,KAAK,EAAE,iFAAiF;YACxF,OAAO,EAAE,uCAAuC;YAChD,SAAS,EAAE,QAAQ;SACpB;QACD;YACE,GAAG,EAAE,cAAc;YACnB,KAAK,EAAE,2CAA2C;YAClD,OAAO,EAAE,oCAAoC;YAC7C,SAAS,EAAE,QAAQ;SACpB;QACD;YACE,GAAG,EAAE,cAAc;YACnB,KAAK,EAAE,wCAAwC;YAC/C,OAAO,EAAE,wDAAwD;YACjE,SAAS,EAAE,QAAQ;SACpB;QACD;YACE,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,2DAA2D;YAClE,OAAO,EAAE,wCAAwC;YACjD,SAAS,EAAE,QAAQ;SACpB;QACD;YACE,GAAG,EAAE,iBAAiB;YACtB,KAAK,EAAE,4DAA4D;YACnE,OAAO,EAAE,uCAAuC;YAChD,SAAS,EAAE,QAAQ;SACpB;QACD;YACE,GAAG,EAAE,kBAAkB;YACvB,KAAK,EAAE,iEAAiE;YACxE,OAAO,EAAE,gCAAgC;YACzC,SAAS,EAAE,QAAQ;SACpB;QACD;YACE,GAAG,EAAE,qBAAqB;YAC1B,KAAK,EAAE,sCAAsC;YAC7C,OAAO,EAAE,4CAA4C;YACrD,SAAS,EAAE,QAAQ;SACpB;QACD;YACE,GAAG,EAAE,gBAAgB;YACrB,KAAK,EAAE,wCAAwC;YAC/C,OAAO,EAAE,8CAA8C;YACvD,SAAS,EAAE,QAAQ;SACpB;QACD;YACE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"all.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/org/monitor/all.ts"],"names":[],"mappings":"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"}
|