@@ -450,12 +450,15 @@ func (a *mqlAzureSubscriptionCloudDefenderService) defenderForContainers() (inte
450
450
func (a * mqlAzureSubscriptionCloudDefenderService ) settingsMCAS () (* mqlAzureSubscriptionCloudDefenderServiceSettings , error ) {
451
451
return a .getSecuritySettingsFor (security .SettingNameAutoGeneratedMCAS )
452
452
}
453
+
453
454
func (a * mqlAzureSubscriptionCloudDefenderService ) settingsWDATP () (* mqlAzureSubscriptionCloudDefenderServiceSettings , error ) {
454
455
return a .getSecuritySettingsFor (security .SettingNameAutoGeneratedWDATP )
455
456
}
457
+
456
458
func (a * mqlAzureSubscriptionCloudDefenderService ) settingsSentinel () (* mqlAzureSubscriptionCloudDefenderServiceSettings , error ) {
457
459
return a .getSecuritySettingsFor (security .SettingNameAutoGeneratedSentinel )
458
460
}
461
+
459
462
func (a * mqlAzureSubscriptionCloudDefenderService ) getSecuritySettingsFor (name security.SettingNameAutoGenerated ) (* mqlAzureSubscriptionCloudDefenderServiceSettings , error ) {
460
463
conn := a .MqlRuntime .Connection .(* connection.AzureConnection )
461
464
ctx := context .Background ()
@@ -465,28 +468,69 @@ func (a *mqlAzureSubscriptionCloudDefenderService) getSecuritySettingsFor(name s
465
468
if err != nil {
466
469
return nil , err
467
470
}
468
- response , err := clientFactory .NewSettingsClient ().Get (ctx , name , nil )
471
+
472
+ settingResp , err := clientFactory .NewSettingsClient ().Get (ctx , name , nil )
469
473
if err != nil {
470
474
return nil , err
471
475
}
472
- settings := response .GetSetting ()
473
- if settings == nil {
474
- return nil , fmt .Errorf ("unable to get %s security settings, response was empty" , name )
476
+
477
+ baseSetting := settingResp .SettingClassification .GetSetting ()
478
+ if baseSetting == nil || baseSetting .Kind == nil {
479
+ return nil , fmt .Errorf ("retrieved setting or its kind is nil for '%s'" , name )
475
480
}
476
481
477
- mqlMCAS , err := CreateResource (a .MqlRuntime ,
478
- "azure.subscription.cloudDefenderService.settings" ,
479
- map [string ]* llx.RawData {
480
- "id" : llx .StringDataPtr (settings .ID ),
481
- "name" : llx .StringDataPtr (settings .Name ),
482
- "kind" : llx .StringDataPtr ((* string )(settings .Kind )),
483
- "type" : llx .StringDataPtr (settings .Type ),
484
- },
485
- )
486
- if err != nil {
487
- return nil , err
482
+ switch * baseSetting .Kind {
483
+ case armsecurity .SettingKindDataExportSettings :
484
+ // Handles MCAS and Sentinel
485
+ settings , ok := settingResp .SettingClassification .(* armsecurity.DataExportSettings )
486
+ if ! ok {
487
+ return nil , fmt .Errorf ("failed assertion to DataExportSettings for kind '%s', setting '%s'. Actual type: %T" , * baseSetting .Kind , name , settingResp .SettingClassification )
488
+ }
489
+ properties , err := convert .JsonToDict (settings .Properties )
490
+ if err != nil {
491
+ return nil , err
492
+ }
493
+ resource , err := CreateResource (a .MqlRuntime ,
494
+ "azure.subscription.cloudDefenderService.settings" ,
495
+ map [string ]* llx.RawData {
496
+ "id" : llx .StringDataPtr (settings .ID ),
497
+ "name" : llx .StringDataPtr (settings .Name ),
498
+ "kind" : llx .StringDataPtr ((* string )(settings .Kind )),
499
+ "type" : llx .StringDataPtr (settings .Type ),
500
+ "properties" : llx .DictData (properties ),
501
+ },
502
+ )
503
+ if err != nil {
504
+ return nil , err
505
+ }
506
+ return resource .(* mqlAzureSubscriptionCloudDefenderServiceSettings ), nil
507
+ case armsecurity .SettingKindAlertSyncSettings :
508
+ // Handles WDATP
509
+ settings , ok := settingResp .SettingClassification .(* armsecurity.AlertSyncSettings )
510
+ if ! ok {
511
+ return nil , fmt .Errorf ("failed assertion to AlertSyncSettings for kind '%s', setting '%s'. Actual type: %T" , * baseSetting .Kind , name , settingResp .SettingClassification )
512
+ }
513
+ properties , err := convert .JsonToDict (settings .Properties )
514
+ if err != nil {
515
+ return nil , err
516
+ }
517
+ resource , err := CreateResource (a .MqlRuntime ,
518
+ "azure.subscription.cloudDefenderService.settings" ,
519
+ map [string ]* llx.RawData {
520
+ "id" : llx .StringDataPtr (settings .ID ),
521
+ "name" : llx .StringDataPtr (settings .Name ),
522
+ "kind" : llx .StringDataPtr ((* string )(settings .Kind )),
523
+ "type" : llx .StringDataPtr (settings .Type ),
524
+ "properties" : llx .DictData (properties ),
525
+ },
526
+ )
527
+ if err != nil {
528
+ return nil , err
529
+ }
530
+ return resource .(* mqlAzureSubscriptionCloudDefenderServiceSettings ), nil
531
+ default :
532
+ return nil , fmt .Errorf ("unsupported settings '%s' of kind '%s'" , name , * baseSetting .Kind )
488
533
}
489
- return mqlMCAS .(* mqlAzureSubscriptionCloudDefenderServiceSettings ), nil
490
534
}
491
535
492
536
func (s * mqlAzureSubscriptionCloudDefenderServiceSettings ) id () (string , error ) {
@@ -527,6 +571,7 @@ func (a *mqlAzureSubscriptionCloudDefenderService) securityContacts() ([]interfa
527
571
}
528
572
return res , nil
529
573
}
574
+
530
575
func argsFromContactProperties (props * armsecurity.ContactProperties ) map [string ]* llx.RawData {
531
576
args := map [string ]* llx.RawData {}
532
577
if props == nil {
0 commit comments