From f47d9bab1f680f3324728239e7525b480fb7dcfd Mon Sep 17 00:00:00 2001 From: Lola Date: Thu, 20 Mar 2025 17:17:48 -0400 Subject: [PATCH 1/5] create a cloud_connectors config in agentless api --- oas_docs/bundle.json | 12 ++ oas_docs/bundle.serverless.json | 12 ++ oas_docs/output/kibana.serverless.yaml | 10 ++ oas_docs/output/kibana.yaml | 10 ++ .../fleet/common/types/models/agent_policy.ts | 6 + .../shared/fleet/common/types/models/epm.ts | 3 +- .../services/agents/agentless_agent.test.ts | 121 ++++++++++++++++++ .../server/services/agents/agentless_agent.ts | 17 ++- .../fleet/server/types/models/agent_policy.ts | 13 ++ 9 files changed, 198 insertions(+), 6 deletions(-) diff --git a/oas_docs/bundle.json b/oas_docs/bundle.json index b092bb9eec9e0..8e138c01c6a29 100644 --- a/oas_docs/bundle.json +++ b/oas_docs/bundle.json @@ -10894,6 +10894,18 @@ } }, "type": "object" + }, + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "target_csp": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" } }, "type": "object" diff --git a/oas_docs/bundle.serverless.json b/oas_docs/bundle.serverless.json index c55d06f2a0cb0..2195cb966564e 100644 --- a/oas_docs/bundle.serverless.json +++ b/oas_docs/bundle.serverless.json @@ -10894,6 +10894,18 @@ } }, "type": "object" + }, + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "target_csp": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" } }, "type": "object" diff --git a/oas_docs/output/kibana.serverless.yaml b/oas_docs/output/kibana.serverless.yaml index d128e24a34d16..6b71a343f715e 100644 --- a/oas_docs/output/kibana.serverless.yaml +++ b/oas_docs/output/kibana.serverless.yaml @@ -14577,6 +14577,16 @@ paths: type: string memory: type: string + cloud_connectors: + additionalProperties: false + type: object + properties: + target_csp: + additionalProperties: false + type: string + enabled: + additionalProperties: false + type: boolean agents: type: number data_output_id: diff --git a/oas_docs/output/kibana.yaml b/oas_docs/output/kibana.yaml index 36ca2247f6273..5817d52eeed3f 100644 --- a/oas_docs/output/kibana.yaml +++ b/oas_docs/output/kibana.yaml @@ -16647,6 +16647,16 @@ paths: type: string memory: type: string + cloud_connectors: + additionalProperties: false + type: object + properties: + target_csp: + additionalProperties: false + type: string + enabled: + additionalProperties: false + type: boolean agents: type: number data_output_id: diff --git a/x-pack/platform/plugins/shared/fleet/common/types/models/agent_policy.ts b/x-pack/platform/plugins/shared/fleet/common/types/models/agent_policy.ts index baf0037c00c19..e5853853a54c5 100644 --- a/x-pack/platform/plugins/shared/fleet/common/types/models/agent_policy.ts +++ b/x-pack/platform/plugins/shared/fleet/common/types/models/agent_policy.ts @@ -14,6 +14,7 @@ import type { PackagePolicy, PackagePolicyPackage } from './package_policy'; import type { Output } from './output'; export type AgentPolicyStatus = typeof agentPolicyStatuses; +export type CSP = 'aws' | 'azure' | 'gcp'; // adding a property here? If it should be cloned when duplicating a policy, add it to `agentPolicyService.copy` // x-pack/platform/plugins/shared/fleet/server/services/agent_policy.ts#L571 @@ -73,7 +74,12 @@ export interface AgentTargetVersion { percentage: number; } +export interface CloudConnectors { + target_csp?: CSP; + enabled?: boolean; +} export interface AgentlessPolicy { + cloud_connectors?: CloudConnectors; resources?: { requests?: { memory?: string; diff --git a/x-pack/platform/plugins/shared/fleet/common/types/models/epm.ts b/x-pack/platform/plugins/shared/fleet/common/types/models/epm.ts index ae5d3b46e6f3c..6fb9fc30ba7c1 100644 --- a/x-pack/platform/plugins/shared/fleet/common/types/models/epm.ts +++ b/x-pack/platform/plugins/shared/fleet/common/types/models/epm.ts @@ -14,7 +14,7 @@ import type { monitoringTypes, installationStatuses, } from '../../constants'; -import type { ValueOf } from '..'; +import type { CloudConnectors, ValueOf } from '..'; import type { PackageSpecManifest, PackageSpecIcon, PackageSpecCategory } from './package_spec'; @@ -204,6 +204,7 @@ export interface DeploymentsModesAgentless extends DeploymentsModesDefault { organization?: string; division?: string; team?: string; + cloud_connectors?: CloudConnectors; resources?: { requests: { cpu: string; diff --git a/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.test.ts b/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.test.ts index f49fe64f18075..00d3b28adcd1f 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.test.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.test.ts @@ -398,6 +398,127 @@ describe('Agentless Agent service', () => { ); }); + it('should create agentless agent with cloud_connectors', async () => { + const returnValue = { + id: 'mocked', + regional_id: 'mocked', + }; + + (axios as jest.MockedFunction).mockResolvedValueOnce(returnValue); + const soClient = getAgentPolicyCreateMock(); + // ignore unrelated unique name constraint + const esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; + jest.spyOn(appContextService, 'getConfig').mockReturnValue({ + agentless: { + enabled: true, + api: { + url: 'http://api.agentless.com', + tls: { + certificate: '/path/to/cert', + key: '/path/to/key', + ca: '/path/to/ca', + }, + }, + }, + } as any); + jest + .spyOn(appContextService, 'getCloud') + .mockReturnValue({ isCloudEnabled: true, isServerlessEnabled: true } as any); + jest + .spyOn(appContextService, 'getKibanaVersion') + .mockReturnValue('mocked-kibana-version-infinite'); + mockedFleetServerHostService.list.mockResolvedValue({ + items: [ + { + id: 'mocked-fleet-server-id', + host: 'http://fleetserver:8220', + active: true, + is_default: true, + host_urls: ['http://fleetserver:8220'], + }, + ], + } as any); + mockedListEnrollmentApiKeys.mockResolvedValue({ + items: [ + { + id: 'mocked-fleet-enrollment-token-id', + policy_id: 'mocked-fleet-enrollment-policy-id', + api_key: 'mocked-fleet-enrollment-api-key', + }, + ], + } as any); + + const createAgentlessAgentReturnValue = await agentlessAgentService.createAgentlessAgent( + esClient, + soClient, + { + id: 'mocked-agentless-agent-policy-id', + name: 'agentless agent policy', + namespace: 'default', + supports_agentless: true, + agentless: { + resources: { + requests: { + memory: '1Gi', + cpu: '500m', + }, + }, + cloud_connectors: { + target_csp: 'aws', + enabled: true, + }, + }, + global_data_tags: [ + { + name: 'organization', + value: 'elastic', + }, + { + name: 'division', + value: 'cloud', + }, + { + name: 'team', + value: 'fleet', + }, + ], + } as AgentPolicy + ); + + expect(axios).toHaveBeenCalledTimes(1); + expect(createAgentlessAgentReturnValue).toEqual(returnValue); + expect(axios).toHaveBeenCalledWith( + expect.objectContaining({ + data: { + fleet_token: 'mocked-fleet-enrollment-api-key', + fleet_url: 'http://fleetserver:8220', + policy_id: 'mocked-agentless-agent-policy-id', + resources: { + requests: { + memory: '1Gi', + cpu: '500m', + }, + }, + cloud_connectors: { + target_csp: 'aws', + enabled: true, + }, + labels: { + owner: { + org: 'elastic', + division: 'cloud', + team: 'fleet', + }, + }, + }, + headers: expect.anything(), + httpsAgent: expect.anything(), + method: 'POST', + url: 'http://api.agentless.com/api/v1/serverless/deployments', + }) + ); + }); + it('should create agentless agent when no labels are given', async () => { const returnValue = { id: 'mocked', diff --git a/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.ts b/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.ts index 2091ac3069333..4337ff4f1ca96 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.ts @@ -66,7 +66,7 @@ class AgentlessAgentService { }; const logger = appContextService.getLogger(); - logger.debug(`[Agentless API] Creating agentless agent ${agentlessAgentPolicy.id}`); + logger.info(`[Agentless API] Creating agentless agent ${agentlessAgentPolicy.id}`); const agentlessConfig = appContextService.getConfig()?.agentless; if (!agentlessConfig) { @@ -96,11 +96,17 @@ class AgentlessAgentService { soClient ); - logger.debug( + logger.info( `[Agentless API] Creating agentless agent with fleetUrl ${fleetUrl} and fleet_token: [REDACTED]` ); - logger.debug( + if (agentlessAgentPolicy.agentless?.cloud_connectors?.enabled) { + logger.info( + `[Agentless API] Creating agentless agent with ${agentlessAgentPolicy.agentless?.cloud_connectors?.target_csp} cloud connector enabled for agentless policy ${policyId}` + ); + } + + logger.info( `[Agentless API] Creating agentless agent with TLS cert: ${ agentlessConfig?.api?.tls?.certificate ? '[REDACTED]' : 'undefined' } and TLS key: ${agentlessConfig?.api?.tls?.key ? '[REDACTED]' : 'undefined'} @@ -117,6 +123,7 @@ class AgentlessAgentService { fleet_url: fleetUrl, fleet_token: fleetToken, resources: agentlessAgentPolicy.agentless?.resources, + cloud_connectors: agentlessAgentPolicy.agentless?.cloud_connectors, labels, }, method: 'POST', @@ -130,7 +137,7 @@ class AgentlessAgentService { const requestConfigDebugStatus = this.createRequestConfigDebug(requestConfig); - logger.debug( + logger.info( `[Agentless API] Creating agentless agent with request config ${requestConfigDebugStatus}` ); @@ -149,7 +156,7 @@ class AgentlessAgentService { } ); - logger.debug(`[Agentless API] Created an agentless agent ${response}`); + logger.info(`[Agentless API] Created an agentless agent ${response}`); return response; } diff --git a/x-pack/platform/plugins/shared/fleet/server/types/models/agent_policy.ts b/x-pack/platform/plugins/shared/fleet/server/types/models/agent_policy.ts index e5e6007d292a0..7292b6bba7322 100644 --- a/x-pack/platform/plugins/shared/fleet/server/types/models/agent_policy.ts +++ b/x-pack/platform/plugins/shared/fleet/server/types/models/agent_policy.ts @@ -53,6 +53,13 @@ function validateCPU(s: string) { } } +function validateCloudProvider(s: string) { + const csps = ['aws', 'azure', 'gcp']; + if (!csps.includes(s)) { + return 'Invalid cloud provider'; + } +} + export const AgentPolicyBaseSchema = { id: schema.maybe(schema.string()), space_ids: schema.maybe(schema.arrayOf(schema.string())), @@ -148,6 +155,12 @@ export const AgentPolicyBaseSchema = { ), agentless: schema.maybe( schema.object({ + cloud_connectors: schema.maybe( + schema.object({ + target_csp: schema.maybe(schema.string({ validate: validateCloudProvider })), + enabled: schema.boolean(), + }) + ), resources: schema.maybe( schema.object({ requests: schema.maybe( From c290b6805ce14f71d90c7325764b675b531f156d Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Mon, 31 Mar 2025 15:55:00 +0000 Subject: [PATCH 2/5] [CI] Auto-commit changed files from 'node scripts/capture_oas_snapshot --include-path /api/status --include-path /api/alerting/rule/ --include-path /api/alerting/rules --include-path /api/actions --include-path /api/security/role --include-path /api/spaces --include-path /api/streams --include-path /api/fleet --include-path /api/dashboards --update' --- oas_docs/bundle.json | 132 +++++++++++++++++++++++++++++--- oas_docs/bundle.serverless.json | 132 +++++++++++++++++++++++++++++--- 2 files changed, 240 insertions(+), 24 deletions(-) diff --git a/oas_docs/bundle.json b/oas_docs/bundle.json index 8e138c01c6a29..0d88167d1d3ff 100644 --- a/oas_docs/bundle.json +++ b/oas_docs/bundle.json @@ -10877,6 +10877,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { @@ -10894,18 +10909,6 @@ } }, "type": "object" - }, - "cloud_connectors": { - "additionalProperties": false, - "properties": { - "target_csp": { - "type": "string" - }, - "enabled": { - "type": "boolean" - } - }, - "type": "object" } }, "type": "object" @@ -11894,6 +11897,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { @@ -12196,6 +12214,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { @@ -13227,6 +13260,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { @@ -14504,6 +14552,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { @@ -15507,6 +15570,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { @@ -15812,6 +15890,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { @@ -16843,6 +16936,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { diff --git a/oas_docs/bundle.serverless.json b/oas_docs/bundle.serverless.json index 2195cb966564e..7409bf11de19d 100644 --- a/oas_docs/bundle.serverless.json +++ b/oas_docs/bundle.serverless.json @@ -10877,6 +10877,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { @@ -10894,18 +10909,6 @@ } }, "type": "object" - }, - "cloud_connectors": { - "additionalProperties": false, - "properties": { - "target_csp": { - "type": "string" - }, - "enabled": { - "type": "boolean" - } - }, - "type": "object" } }, "type": "object" @@ -11894,6 +11897,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { @@ -12196,6 +12214,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { @@ -13227,6 +13260,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { @@ -14504,6 +14552,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { @@ -15507,6 +15570,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { @@ -15812,6 +15890,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { @@ -16843,6 +16936,21 @@ "agentless": { "additionalProperties": false, "properties": { + "cloud_connectors": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "target_csp": { + "type": "string" + } + }, + "required": [ + "enabled" + ], + "type": "object" + }, "resources": { "additionalProperties": false, "properties": { From 4c6bfeeef7d7a98674e3c74cc3564d28fef5ec5d Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Mon, 31 Mar 2025 16:13:56 +0000 Subject: [PATCH 3/5] [CI] Auto-commit changed files from 'make api-docs' --- oas_docs/output/kibana.serverless.yaml | 90 +++++++++++++++++++++++--- oas_docs/output/kibana.yaml | 90 +++++++++++++++++++++++--- 2 files changed, 160 insertions(+), 20 deletions(-) diff --git a/oas_docs/output/kibana.serverless.yaml b/oas_docs/output/kibana.serverless.yaml index 6b71a343f715e..23d8b9aadae0b 100644 --- a/oas_docs/output/kibana.serverless.yaml +++ b/oas_docs/output/kibana.serverless.yaml @@ -14565,6 +14565,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object @@ -14577,16 +14587,6 @@ paths: type: string memory: type: string - cloud_connectors: - additionalProperties: false - type: object - properties: - target_csp: - additionalProperties: false - type: string - enabled: - additionalProperties: false - type: boolean agents: type: number data_output_id: @@ -15248,6 +15248,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object @@ -15459,6 +15469,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object @@ -16151,6 +16171,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object @@ -16822,6 +16852,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object @@ -17493,6 +17533,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object @@ -17706,6 +17756,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object @@ -18397,6 +18457,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object diff --git a/oas_docs/output/kibana.yaml b/oas_docs/output/kibana.yaml index 5817d52eeed3f..ff15466affb92 100644 --- a/oas_docs/output/kibana.yaml +++ b/oas_docs/output/kibana.yaml @@ -16635,6 +16635,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object @@ -16647,16 +16657,6 @@ paths: type: string memory: type: string - cloud_connectors: - additionalProperties: false - type: object - properties: - target_csp: - additionalProperties: false - type: string - enabled: - additionalProperties: false - type: boolean agents: type: number data_output_id: @@ -17317,6 +17317,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object @@ -17528,6 +17538,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object @@ -18219,6 +18239,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object @@ -18889,6 +18919,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object @@ -19559,6 +19599,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object @@ -19772,6 +19822,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object @@ -20462,6 +20522,16 @@ paths: additionalProperties: false type: object properties: + cloud_connectors: + additionalProperties: false + type: object + properties: + enabled: + type: boolean + target_csp: + type: string + required: + - enabled resources: additionalProperties: false type: object From 78849e4e3f8dfcc00e459959c4248b2c7d45f74f Mon Sep 17 00:00:00 2001 From: Lola Date: Wed, 9 Apr 2025 12:09:40 -0400 Subject: [PATCH 4/5] fix and remove csp type --- .../plugins/shared/fleet/common/types/models/agent_policy.ts | 3 +-- .../shared/fleet/server/services/agents/agentless_agent.ts | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/x-pack/platform/plugins/shared/fleet/common/types/models/agent_policy.ts b/x-pack/platform/plugins/shared/fleet/common/types/models/agent_policy.ts index e5853853a54c5..a500dccaf3a34 100644 --- a/x-pack/platform/plugins/shared/fleet/common/types/models/agent_policy.ts +++ b/x-pack/platform/plugins/shared/fleet/common/types/models/agent_policy.ts @@ -14,7 +14,6 @@ import type { PackagePolicy, PackagePolicyPackage } from './package_policy'; import type { Output } from './output'; export type AgentPolicyStatus = typeof agentPolicyStatuses; -export type CSP = 'aws' | 'azure' | 'gcp'; // adding a property here? If it should be cloned when duplicating a policy, add it to `agentPolicyService.copy` // x-pack/platform/plugins/shared/fleet/server/services/agent_policy.ts#L571 @@ -75,7 +74,7 @@ export interface AgentTargetVersion { } export interface CloudConnectors { - target_csp?: CSP; + target_csp?: string; enabled?: boolean; } export interface AgentlessPolicy { diff --git a/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.ts b/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.ts index 4337ff4f1ca96..500792402e9c7 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.ts @@ -101,7 +101,7 @@ class AgentlessAgentService { ); if (agentlessAgentPolicy.agentless?.cloud_connectors?.enabled) { - logger.info( + logger.debug( `[Agentless API] Creating agentless agent with ${agentlessAgentPolicy.agentless?.cloud_connectors?.target_csp} cloud connector enabled for agentless policy ${policyId}` ); } From 4e6768dc76b6f5155329ecfd0518c4c6f1034a8d Mon Sep 17 00:00:00 2001 From: Lola Date: Tue, 22 Apr 2025 14:24:30 -0400 Subject: [PATCH 5/5] fix jest unit tests --- .../fleet/server/services/agents/agentless_agent.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.ts b/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.ts index 83e8436dc9ef6..c53534d213e1b 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/agents/agentless_agent.ts @@ -66,7 +66,7 @@ class AgentlessAgentService { }; const logger = appContextService.getLogger(); - logger.info(`[Agentless API] Creating agentless agent ${agentlessAgentPolicy.id}`); + logger.debug(`[Agentless API] Creating agentless agent ${agentlessAgentPolicy.id}`); const agentlessConfig = appContextService.getConfig()?.agentless; if (!agentlessConfig) { @@ -96,7 +96,7 @@ class AgentlessAgentService { soClient ); - logger.info( + logger.debug( `[Agentless API] Creating agentless agent with fleetUrl ${fleetUrl} and fleet_token: [REDACTED]` ); @@ -106,7 +106,7 @@ class AgentlessAgentService { ); } - logger.info( + logger.debug( `[Agentless API] Creating agentless agent with TLS cert: ${ agentlessConfig?.api?.tls?.certificate ? '[REDACTED]' : 'undefined' } and TLS key: ${agentlessConfig?.api?.tls?.key ? '[REDACTED]' : 'undefined'} @@ -137,7 +137,7 @@ class AgentlessAgentService { const requestConfigDebugStatus = this.createRequestConfigDebug(requestConfig); - logger.info( + logger.debug( `[Agentless API] Creating agentless agent with request config ${requestConfigDebugStatus}` ); @@ -156,7 +156,7 @@ class AgentlessAgentService { } ); - logger.info(`[Agentless API] Created an agentless agent ${response}`); + logger.debug(`[Agentless API] Created an agentless agent ${response}`); return response; }