mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
[8.6] [Cloud Posture] update data views spaces (#148093)
# Backport This will backport the following commits from `main` to `8.6`: - [[Cloud Posture] update data views spaces](https://github.com/elastic/kibana/pull/148087) <!--- Backport version: 8.9.7 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) <!--BACKPORT [{"author":{"name":"Ido Cohen","email":"90558359+CohenIdo@users.noreply.github.com"},"sourceCommit":{"committedDate":"2022-12-26T13:08:50Z","message":"[Cloud Posture] update data views spaces","sha":"4cd9246639cf67b7e3d85ab8a966add8deffacde","branchLabelMapping":{"^v8.7.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","ReleaseStatus","v8.6.0","v8.7.0"],"number":148087,"url":"https://github.com/elastic/kibana/pull/148087","mergeCommit":{"message":"[Cloud Posture] update data views spaces","sha":"4cd9246639cf67b7e3d85ab8a966add8deffacde"}},"sourceBranch":"main","suggestedTargetBranches":["8.6"],"targetPullRequestStates":[{"branch":"8.6","label":"v8.6.0","labelRegex":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v8.7.0","labelRegex":"^v8.7.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/148087","number":148087,"mergeCommit":{"message":"[Cloud Posture] update data views spaces","sha":"4cd9246639cf67b7e3d85ab8a966add8deffacde"}}]}] BACKPORT--> Co-authored-by: Ido Cohen <90558359+CohenIdo@users.noreply.github.com>
This commit is contained in:
parent
6a5d6d96a5
commit
b4a10d4356
2 changed files with 88 additions and 2 deletions
|
@ -55,6 +55,18 @@ describe('create CSP rules with post package create callback', () => {
|
|||
it('should create stateful rules based on rule template', async () => {
|
||||
const mockPackagePolicy = createPackagePolicyMock();
|
||||
mockPackagePolicy.package!.name = CLOUD_SECURITY_POSTURE_PACKAGE_NAME;
|
||||
|
||||
mockSoClient.find.mockResolvedValueOnce({
|
||||
saved_objects: [
|
||||
{
|
||||
type: 'index-pattern',
|
||||
title: 'cloud_security_posture-41308bcdaaf665761478bb6f0d745a5c',
|
||||
namespaces: ['default'],
|
||||
},
|
||||
],
|
||||
pit_id: undefined,
|
||||
} as unknown as SavedObjectsFindResponse);
|
||||
|
||||
mockSoClient.find.mockResolvedValueOnce({
|
||||
saved_objects: [
|
||||
{
|
||||
|
@ -83,6 +95,17 @@ describe('create CSP rules with post package create callback', () => {
|
|||
it('validate that all rules templates are fetched', async () => {
|
||||
const mockPackagePolicy = createPackagePolicyMock();
|
||||
mockPackagePolicy.package!.name = CLOUD_SECURITY_POSTURE_PACKAGE_NAME;
|
||||
mockSoClient.find.mockResolvedValueOnce({
|
||||
saved_objects: [
|
||||
{
|
||||
type: 'index-pattern',
|
||||
title: 'cloud_security_posture-41308bcdaaf665761478bb6f0d745a5c',
|
||||
namespaces: ['default'],
|
||||
},
|
||||
],
|
||||
pit_id: undefined,
|
||||
} as unknown as SavedObjectsFindResponse);
|
||||
|
||||
mockSoClient.find.mockResolvedValueOnce({
|
||||
saved_objects: [
|
||||
{
|
||||
|
@ -93,11 +116,58 @@ describe('create CSP rules with post package create callback', () => {
|
|||
],
|
||||
pit_id: undefined,
|
||||
} as unknown as SavedObjectsFindResponse);
|
||||
|
||||
await onPackagePolicyPostCreateCallback(logger, mockPackagePolicy, mockSoClient);
|
||||
|
||||
expect(mockSoClient.find.mock.calls[0][0]).toMatchObject({ perPage: 10000 });
|
||||
expect(mockSoClient.find.mock.calls[1][0]).toMatchObject({ perPage: 10000 });
|
||||
});
|
||||
|
||||
it.each([
|
||||
['cloud_security_posture-41308bcdaaf665761478bb6f0d55555', ['default']],
|
||||
['cloud_security_posture-41308bcdaaf665761478bb6f0d88888', ['foo']],
|
||||
])(
|
||||
'validate that all index pattern are available cross spaces',
|
||||
async (id: string, namespaces: string[]) => {
|
||||
const mockPackagePolicy = createPackagePolicyMock();
|
||||
mockPackagePolicy.package!.name = CLOUD_SECURITY_POSTURE_PACKAGE_NAME;
|
||||
mockSoClient.find.mockResolvedValueOnce({
|
||||
saved_objects: [
|
||||
{
|
||||
type: 'index-pattern',
|
||||
id,
|
||||
namespaces,
|
||||
},
|
||||
],
|
||||
pit_id: undefined,
|
||||
} as unknown as SavedObjectsFindResponse);
|
||||
|
||||
mockSoClient.find.mockResolvedValueOnce({
|
||||
saved_objects: [
|
||||
{
|
||||
type: 'csp-rule-template',
|
||||
title: 'csp_rule_template-41308bcdaaf665761478bb6f0d745a5c',
|
||||
attributes: { ...ruleAttributes },
|
||||
},
|
||||
],
|
||||
pit_id: undefined,
|
||||
} as unknown as SavedObjectsFindResponse);
|
||||
|
||||
await onPackagePolicyPostCreateCallback(logger, mockPackagePolicy, mockSoClient);
|
||||
|
||||
expect(mockSoClient.updateObjectsSpaces).toHaveBeenCalled();
|
||||
expect(mockSoClient.updateObjectsSpaces).lastCalledWith(
|
||||
[
|
||||
{
|
||||
id,
|
||||
type: 'index-pattern',
|
||||
},
|
||||
],
|
||||
['*'],
|
||||
[]
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
it('validate that all rules templates are deleted', async () => {
|
||||
savedObjectRepositoryMock = savedObjectsRepositoryMock.create();
|
||||
const mockDeletePackagePolicy = deletePackagePolicyMock();
|
||||
|
|
|
@ -18,6 +18,7 @@ import {
|
|||
PackagePolicyInput,
|
||||
} from '@kbn/fleet-plugin/common';
|
||||
import { DeepReadonly } from 'utility-types';
|
||||
import { DataViewSavedObjectAttrs } from '@kbn/data-views-plugin/common';
|
||||
import { createCspRuleSearchFilterByPackagePolicy } from '../../common/utils/helpers';
|
||||
import {
|
||||
CLOUD_SECURITY_POSTURE_PACKAGE_NAME,
|
||||
|
@ -53,8 +54,9 @@ export const onPackagePolicyPostCreateCallback = async (
|
|||
packagePolicy: PackagePolicy,
|
||||
savedObjectsClient: SavedObjectsClientContract
|
||||
): Promise<void> => {
|
||||
const benchmarkType = getBenchmarkInputType(packagePolicy.inputs);
|
||||
addDataViewToAllSpaces(savedObjectsClient);
|
||||
|
||||
const benchmarkType = getBenchmarkInputType(packagePolicy.inputs);
|
||||
// Create csp-rules from the generic asset
|
||||
const existingRuleTemplates: SavedObjectsFindResponse<CspRuleTemplate> =
|
||||
await savedObjectsClient.find({
|
||||
|
@ -83,6 +85,20 @@ export const onPackagePolicyPostCreateCallback = async (
|
|||
}
|
||||
};
|
||||
|
||||
async function addDataViewToAllSpaces(savedObjectsClient: SavedObjectsClientContract) {
|
||||
const cspmDataViews = await savedObjectsClient.find<DataViewSavedObjectAttrs>({
|
||||
type: 'index-pattern',
|
||||
fields: ['title'],
|
||||
search: CLOUD_SECURITY_POSTURE_PACKAGE_NAME + '*',
|
||||
searchFields: ['title'],
|
||||
perPage: 100,
|
||||
});
|
||||
|
||||
cspmDataViews.saved_objects.forEach((dataView) => {
|
||||
savedObjectsClient.updateObjectsSpaces([{ id: dataView.id, type: 'index-pattern' }], ['*'], []);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback to handle deletion of PackagePolicies in Fleet
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue