@@ -337,5 +337,131 @@ describe('test helper methods', () => {
337337 'gcp.credentials.json' : { value : 'unused' } ,
338338 } ) ;
339339 } ) ;
340+
341+ it ( 'cleans all aws credential fields from disabled inputs to prevent storing unnecessary secrets' , ( ) => {
342+ const mockPackagePolicy = createPackagePolicyMock ( ) ;
343+ mockPackagePolicy . inputs = [
344+ {
345+ type : 'cloudbeat/cis_aws' ,
346+ enabled : true ,
347+ streams : [
348+ {
349+ id : 'findings' ,
350+ enabled : true ,
351+ data_stream : {
352+ dataset : 'cloud_security_posture.findings' ,
353+ type : 'logs' ,
354+ } ,
355+ vars : {
356+ 'aws.credentials.type' : { value : 'direct_access_keys' } ,
357+ access_key_id : { value : 'used_key' , type : 'text' } ,
358+ secret_access_key : { value : 'used_secret' , type : 'text' } ,
359+ role_arn : { value : 'unused' } ,
360+ } ,
361+ } ,
362+ ] ,
363+ } ,
364+ {
365+ type : 'cloudbeat/cis_eks' ,
366+ enabled : false ,
367+ streams : [
368+ {
369+ id : 'findings' ,
370+ enabled : false ,
371+ data_stream : {
372+ dataset : 'cloud_security_posture.findings' ,
373+ type : 'logs' ,
374+ } ,
375+ vars : {
376+ 'aws.credentials.type' : { value : 'assume_role' } ,
377+ access_key_id : { value : 'should_be_removed' , type : 'text' } ,
378+ secret_access_key : { value : 'should_be_removed' , type : 'text' } ,
379+ role_arn : { value : 'should_be_removed' } ,
380+ session_token : { value : 'should_be_removed' , type : 'text' } ,
381+ } ,
382+ } ,
383+ ] ,
384+ } ,
385+ ] ;
386+
387+ const cleanedPackage = cleanupCredentials ( mockPackagePolicy ) ;
388+
389+ // Enabled input should keep credentials based on credential type
390+ expect ( cleanedPackage . inputs [ 0 ] . streams [ 0 ] . vars ) . toEqual ( {
391+ 'aws.credentials.type' : { value : 'direct_access_keys' } ,
392+ access_key_id : { value : 'used_key' , type : 'text' } ,
393+ secret_access_key : { value : 'used_secret' , type : 'text' } ,
394+ role_arn : { value : undefined } ,
395+ } ) ;
396+
397+ // Disabled input should have all credential fields removed
398+ expect ( cleanedPackage . inputs [ 1 ] . streams [ 0 ] . vars ) . toEqual ( {
399+ 'aws.credentials.type' : { value : 'assume_role' } ,
400+ access_key_id : { value : undefined , type : 'text' } ,
401+ secret_access_key : { value : undefined , type : 'text' } ,
402+ role_arn : { value : undefined } ,
403+ session_token : { value : undefined , type : 'text' } ,
404+ } ) ;
405+ } ) ;
406+
407+ it ( 'cleans all gcp credential fields from disabled inputs' , ( ) => {
408+ const mockPackagePolicy = createPackagePolicyMock ( ) ;
409+ mockPackagePolicy . inputs = [
410+ {
411+ type : 'cloudbeat/cis_gcp' ,
412+ enabled : true ,
413+ streams : [
414+ {
415+ id : 'findings' ,
416+ enabled : true ,
417+ data_stream : {
418+ dataset : 'cloud_security_posture.findings' ,
419+ type : 'logs' ,
420+ } ,
421+ vars : {
422+ 'gcp.credentials.type' : { value : 'credentials-file' } ,
423+ 'gcp.credentials.file' : { value : 'used' } ,
424+ 'gcp.credentials.json' : { value : 'unused' } ,
425+ } ,
426+ } ,
427+ ] ,
428+ } ,
429+ {
430+ type : 'cloudbeat/cis_gcp' ,
431+ enabled : false ,
432+ streams : [
433+ {
434+ id : 'findings' ,
435+ enabled : false ,
436+ data_stream : {
437+ dataset : 'cloud_security_posture.findings' ,
438+ type : 'logs' ,
439+ } ,
440+ vars : {
441+ 'gcp.credentials.type' : { value : 'credentials-json' } ,
442+ 'gcp.credentials.file' : { value : 'should_be_removed' } ,
443+ 'gcp.credentials.json' : { value : 'should_be_removed' } ,
444+ } ,
445+ } ,
446+ ] ,
447+ } ,
448+ ] ;
449+
450+ const cleanedPackage = cleanupCredentials ( mockPackagePolicy ) ;
451+
452+ // Enabled input should keep credentials based on credential type
453+ expect ( cleanedPackage . inputs [ 0 ] . streams [ 0 ] . vars ) . toEqual ( {
454+ 'gcp.credentials.type' : { value : 'credentials-file' } ,
455+ 'gcp.credentials.file' : { value : 'used' } ,
456+ 'gcp.credentials.json' : { value : undefined } ,
457+ } ) ;
458+
459+ // Disabled input should have all credential fields removed
460+ expect ( cleanedPackage . inputs [ 1 ] . streams [ 0 ] . vars ) . toEqual ( {
461+ 'gcp.credentials.type' : { value : 'credentials-json' } ,
462+ 'gcp.credentials.file' : { value : undefined } ,
463+ 'gcp.credentials.json' : { value : undefined } ,
464+ } ) ;
465+ } ) ;
340466 } ) ;
341467} ) ;
0 commit comments