Skip to content

Commit e6605dc

Browse files
authored
[AI4SOC] Hide dashboard references from integrations tabs per new fleet setting (#224133)
## Summary AI4SOC projects will not have access to dashboards, so we want to hide any links/references to dashboards in the integration pages based on a new configuration setting `xpack.fleet.hideDashboards` that is defaulted to false. ## More details If the config is set, we will hide 1. The entire screenshots carousel on the Overview tab 2. The mention and count of dashboards on the Overview tab -> Details panel -> Kibana assets 3. The mention and links to dashboards on the Assets tab ## Screenshots ### Non AI4SOC <img width="700" alt="Screenshot 2025-06-16 at 3 36 54 PM" src="https://github.com/user-attachments/assets/8b0b18ac-8fc9-4ace-b109-464d407fd70c" /> <img width="700" alt="Screenshot 2025-06-16 at 3 37 05 PM" src="https://github.com/user-attachments/assets/b64c6511-7df9-4a45-9478-6392aa61c753" /> ### AI4SOC <img width="700" alt="Screenshot 2025-06-16 at 3 33 38 PM" src="https://github.com/user-attachments/assets/7a70d11d-4b7c-4ded-8df5-6ecebb2eb9a8" /> <img width="700" alt="Screenshot 2025-06-16 at 3 37 47 PM" src="https://github.com/user-attachments/assets/fd919f58-9124-413e-b701-d61af099cfdc" /> Relates elastic/security-team#11789
1 parent f0a9a9c commit e6605dc

File tree

7 files changed

+26
-3
lines changed

7 files changed

+26
-3
lines changed

config/serverless.security.search_ai_lake.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ xpack.features.overrides:
5858

5959
# Custom integrations/fleet settings
6060
xpack.fleet.agentless.isDefault: true
61+
xpack.fleet.hideDashboards: true
6162
xpack.fleet.integrationsHomeOverride: '/app/security/configurations/integrations'
6263
xpack.fleet.prereleaseEnabledByDefault: true
6364

src/platform/test/plugin_functional/test_suites/core_plugins/rendering.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@ export default function ({ getService }: PluginFunctionalProviderContext) {
271271
'xpack.fleet.developer.maxAgentPoliciesWithInactivityTimeout (number?)',
272272
'xpack.fleet.integrationsHomeOverride (string?)',
273273
'xpack.fleet.prereleaseEnabledByDefault (boolean?)',
274+
'xpack.fleet.hideDashboards (boolean?)',
274275
'xpack.global_search.search_timeout (duration?)',
275276
'xpack.global_search_bar.input_max_limit (number?)',
276277
'xpack.graph.canEditDrillDownUrls (boolean?)',

x-pack/platform/plugins/shared/fleet/common/types/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ export interface FleetConfigType {
9797
};
9898
integrationsHomeOverride?: string;
9999
prereleaseEnabledByDefault?: boolean;
100+
hideDashboards?: boolean;
100101
}
101102

102103
// Calling Object.entries(PackagesGroupedByStatus) gave `status: string`

x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/assets/assets.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
useUIExtension,
3333
useAuthz,
3434
useFleetStatus,
35+
useConfig,
3536
} from '../../../../../hooks';
3637
import { sendGetBulkAssets } from '../../../../../hooks';
3738
import { SideBarColumn } from '../../../components/side_bar_column';
@@ -51,6 +52,7 @@ export const AssetsPage = ({ packageInfo, refetchPackageInfo }: AssetsPanelProps
5152
const pkgkey = `${name}-${version}`;
5253
const { docLinks } = useStartServices();
5354
const { spaceId } = useFleetStatus();
55+
const config = useConfig();
5456

5557
const { useSpaceAwareness } = ExperimentalFeaturesService.get();
5658

@@ -265,6 +267,11 @@ export const AssetsPage = ({ packageInfo, refetchPackageInfo }: AssetsPanelProps
265267

266268
// List all assets by order of `displayedAssetTypes`
267269
...displayedAssetTypes.map((assetType) => {
270+
if (config?.hideDashboards && assetType === 'dashboard') {
271+
// If hideDashboards is set, filter out dashboards from displayed assets
272+
return null;
273+
}
274+
268275
const assets = pkgAssetsByType[assetType] || [];
269276
const soAssets = assetSavedObjectsByType[assetType] || {};
270277
const finalAssets = assets.map((asset) => {

x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/overview/details.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import type {
3333
RegistryPolicyIntegrationTemplate,
3434
} from '../../../../../types';
3535
import { entries } from '../../../../../types';
36-
import { useGetCategoriesQuery, useStartServices } from '../../../../../hooks';
36+
import { useConfig, useGetCategoriesQuery, useStartServices } from '../../../../../hooks';
3737
import { AssetTitleMap, DisplayedAssetsFromPackageInfo, ServiceTitleMap } from '../../../constants';
3838

3939
import { ChangelogModal } from '../settings/changelog_modal';
@@ -68,6 +68,7 @@ const Replacements = euiStyled(EuiFlexItem)`
6868

6969
export const Details: React.FC<Props> = memo(({ packageInfo, integrationInfo }) => {
7070
const { notifications } = useStartServices();
71+
const config = useConfig();
7172
const { data: categoriesData, isLoading: isLoadingCategories } = useGetCategoriesQuery();
7273
const {
7374
changelog,
@@ -139,9 +140,15 @@ export const Details: React.FC<Props> = memo(({ packageInfo, integrationInfo })
139140
entries(packageInfo.assets).forEach(([service, typeToParts]) => {
140141
// Filter out assets we are not going to display
141142
// (currently we only display Kibana and Elasticsearch assets)
143+
// and filter out dashboard references if configured
142144
const filteredTypes: AssetTypeToParts = entries(typeToParts).reduce(
143145
(acc: any, [asset, value]) => {
144-
if (DisplayedAssetsFromPackageInfo[service].includes(asset)) acc[asset] = value;
146+
if (
147+
DisplayedAssetsFromPackageInfo[service].includes(asset) &&
148+
(!config?.hideDashboards || asset !== 'dashboard')
149+
) {
150+
acc[asset] = value;
151+
}
145152
return acc;
146153
},
147154
{}
@@ -307,6 +314,7 @@ export const Details: React.FC<Props> = memo(({ packageInfo, integrationInfo })
307314
packageInfo.source?.license,
308315
packageInfo.owner.type,
309316
packageInfo.version,
317+
config?.hideDashboards,
310318
toggleLicenseModal,
311319
toggleNoticeModal,
312320
toggleChangelogModal,

x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/overview/overview.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import {
3131
useLink,
3232
useStartServices,
3333
sendGetFileByPath,
34+
useConfig,
3435
} from '../../../../../../../hooks';
3536
import { isPackageUnverified } from '../../../../../../../services';
3637
import type { PackageInfo, RegistryPolicyTemplate } from '../../../../../types';
@@ -160,6 +161,7 @@ export const getAnchorId = (name: string | undefined, index?: number) => {
160161

161162
export const OverviewPage: React.FC<Props> = memo(
162163
({ packageInfo, integrationInfo, latestGAVersion }) => {
164+
const config = useConfig();
163165
const screenshots = useMemo(
164166
() => integrationInfo?.screenshots || packageInfo.screenshots || [],
165167
[integrationInfo, packageInfo.screenshots]
@@ -287,6 +289,7 @@ export const OverviewPage: React.FC<Props> = memo(
287289
}, [h1, navItems]);
288290

289291
const requireAgentRootPrivileges = isRootPrivilegesRequired(packageInfo);
292+
const hideDashboards = config?.hideDashboards;
290293

291294
return (
292295
<EuiFlexGroup alignItems="flexStart" data-test-subj="epm.OverviewPage">
@@ -328,7 +331,7 @@ export const OverviewPage: React.FC<Props> = memo(
328331
<Requirements />
329332
</EuiFlexItem>
330333
) : null}
331-
{screenshots.length ? (
334+
{!hideDashboards && screenshots.length ? (
332335
<EuiFlexItem>
333336
<Screenshots
334337
images={screenshots}

x-pack/platform/plugins/shared/fleet/server/config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export const config: PluginConfigDescriptor = {
5353
},
5454
integrationsHomeOverride: true,
5555
prereleaseEnabledByDefault: true,
56+
hideDashboards: true,
5657
},
5758
deprecations: ({ renameFromRoot, unused, unusedFromRoot }) => [
5859
// Unused settings before Fleet server exists
@@ -316,6 +317,7 @@ export const config: PluginConfigDescriptor = {
316317
),
317318
integrationsHomeOverride: schema.maybe(schema.string()),
318319
prereleaseEnabledByDefault: schema.boolean({ defaultValue: false }),
320+
hideDashboards: schema.boolean({ defaultValue: false }),
319321
},
320322
{
321323
validate: (configToValidate) => {

0 commit comments

Comments
 (0)