From dbbf08257d305fcf04bee52712df70206c8c7633 Mon Sep 17 00:00:00 2001 From: Seppe Van WInkel Date: Thu, 25 Apr 2024 22:06:40 +0200 Subject: [PATCH] chore: add switch to cognitive search --- internal/scanners/cog/rules.go | 32 ++++- internal/scanners/cog/rules_test.go | 196 ++++++++++++++++++++++++++++ 2 files changed, 226 insertions(+), 2 deletions(-) diff --git a/internal/scanners/cog/rules.go b/internal/scanners/cog/rules.go index 79c02bb0..b2fc5927 100644 --- a/internal/scanners/cog/rules.go +++ b/internal/scanners/cog/rules.go @@ -65,8 +65,36 @@ func (a *CognitiveScanner) GetRules() map[string]scanners.AzureRule { Impact: scanners.ImpactLow, Eval: func(target interface{}, scanContext *scanners.ScanContext) (bool, string) { c := target.(*armcognitiveservices.Account) - caf := strings.HasPrefix(*c.Name, "cog") - return !caf, "" + switch strings.ToLower(*c.Kind) { + case "openai": + return !strings.HasPrefix(*c.Name, "oai"), "" + case "computervision": + return !strings.HasPrefix(*c.Name, "cv"), "" + case "contentmoderator": + return !strings.HasPrefix(*c.Name, "cm"), "" + case "contentsafety": + return !strings.HasPrefix(*c.Name, "cs"), "" + case "customvision.prediction": + return !strings.HasPrefix(*c.Name, "cstv"), "" + case "customvision.training": + return !strings.HasPrefix(*c.Name, "cstvt"), "" + case "formrecognizer": + return !strings.HasPrefix(*c.Name, "di"), "" + case "face": + return !strings.HasPrefix(*c.Name, "face"), "" + case "healthinsights": + return !strings.HasPrefix(*c.Name, "hi"), "" + case "immersivereader": + return !strings.HasPrefix(*c.Name, "ir"), "" + case "textanalytics": + return !strings.HasPrefix(*c.Name, "lang"), "" + case "speechservices": + return !strings.HasPrefix(*c.Name, "spch"), "" + case "texttranslation": + return !strings.HasPrefix(*c.Name, "trsl"), "" + default: + return !strings.HasPrefix(*c.Name, "cog"), "" + } }, Url: "https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", }, diff --git a/internal/scanners/cog/rules_test.go b/internal/scanners/cog/rules_test.go index 3606afc8..27962299 100644 --- a/internal/scanners/cog/rules_test.go +++ b/internal/scanners/cog/rules_test.go @@ -93,12 +93,208 @@ func TestCognitiveScanner_Rules(t *testing.T) { result: "test", }, }, + { + name: "CognitiveScanner OpenAi CAF", + fields: fields{ + rule: "cog-006", + target: &armcognitiveservices.Account{ + Name: to.Ptr("oai-test"), + Kind: to.Ptr("OpenAi"), + }, + scanContext: &scanners.ScanContext{}, + }, + want: want{ + broken: false, + result: "", + }, + }, + { + name: "CognitiveScanner ContentModerator CAF", + fields: fields{ + rule: "cog-006", + target: &armcognitiveservices.Account{ + Name: to.Ptr("cm-test"), + Kind: to.Ptr("ContentModerator"), + }, + scanContext: &scanners.ScanContext{}, + }, + want: want{ + broken: false, + result: "", + }, + }, + { + name: "CognitiveScanner ContentSafety CAF", + fields: fields{ + rule: "cog-006", + target: &armcognitiveservices.Account{ + Name: to.Ptr("cs-test"), + Kind: to.Ptr("ContentSafety"), + }, + scanContext: &scanners.ScanContext{}, + }, + want: want{ + broken: false, + result: "", + }, + }, + { + name: "CognitiveScanner CustomVision.Prediction CAF", + fields: fields{ + rule: "cog-006", + target: &armcognitiveservices.Account{ + Name: to.Ptr("cstv-test"), + Kind: to.Ptr("CustomVision.Prediction"), + }, + scanContext: &scanners.ScanContext{}, + }, + want: want{ + broken: false, + result: "", + }, + }, + { + name: "CognitiveScanner CustomVision.Training CAF", + fields: fields{ + rule: "cog-006", + target: &armcognitiveservices.Account{ + Name: to.Ptr("cstvt-test"), + Kind: to.Ptr("CustomVision.Training"), + }, + scanContext: &scanners.ScanContext{}, + }, + want: want{ + broken: false, + result: "", + }, + }, + { + name: "CognitiveScanner FormRecognizer CAF", + fields: fields{ + rule: "cog-006", + target: &armcognitiveservices.Account{ + Name: to.Ptr("di-test"), + Kind: to.Ptr("FormRecognizer"), + }, + scanContext: &scanners.ScanContext{}, + }, + want: want{ + broken: false, + result: "", + }, + }, + { + name: "CognitiveScanner Face CAF", + fields: fields{ + rule: "cog-006", + target: &armcognitiveservices.Account{ + Name: to.Ptr("face-test"), + Kind: to.Ptr("Face"), + }, + scanContext: &scanners.ScanContext{}, + }, + want: want{ + broken: false, + result: "", + }, + }, + { + name: "CognitiveScanner HealthInsights CAF", + fields: fields{ + rule: "cog-006", + target: &armcognitiveservices.Account{ + Name: to.Ptr("hi-test"), + Kind: to.Ptr("HealthInsights"), + }, + scanContext: &scanners.ScanContext{}, + }, + want: want{ + broken: false, + result: "", + }, + }, + { + name: "CognitiveScanner ImmersiveReader CAF", + fields: fields{ + rule: "cog-006", + target: &armcognitiveservices.Account{ + Name: to.Ptr("ir-test"), + Kind: to.Ptr("ImmersiveReader"), + }, + scanContext: &scanners.ScanContext{}, + }, + want: want{ + broken: false, + result: "", + }, + }, + { + name: "CognitiveScanner TextAnalytics CAF", + fields: fields{ + rule: "cog-006", + target: &armcognitiveservices.Account{ + Name: to.Ptr("lang-test"), + Kind: to.Ptr("TextAnalytics"), + }, + scanContext: &scanners.ScanContext{}, + }, + want: want{ + broken: false, + result: "", + }, + }, + { + name: "CognitiveScanner SpeechServices CAF", + fields: fields{ + rule: "cog-006", + target: &armcognitiveservices.Account{ + Name: to.Ptr("spch-test"), + Kind: to.Ptr("SpeechServices"), + }, + scanContext: &scanners.ScanContext{}, + }, + want: want{ + broken: false, + result: "", + }, + }, + { + name: "CognitiveScanner TextTranslation CAF", + fields: fields{ + rule: "cog-006", + target: &armcognitiveservices.Account{ + Name: to.Ptr("trsl-test"), + Kind: to.Ptr("TextTranslation"), + }, + scanContext: &scanners.ScanContext{}, + }, + want: want{ + broken: false, + result: "", + }, + }, + { + name: "CognitiveScanner ComputerVision CAF", + fields: fields{ + rule: "cog-006", + target: &armcognitiveservices.Account{ + Name: to.Ptr("cv-test"), + Kind: to.Ptr("ComputerVision"), + }, + scanContext: &scanners.ScanContext{}, + }, + want: want{ + broken: false, + result: "", + }, + }, { name: "CognitiveScanner CAF", fields: fields{ rule: "cog-006", target: &armcognitiveservices.Account{ Name: to.Ptr("cog-test"), + Kind: to.Ptr("cog"), }, scanContext: &scanners.ScanContext{}, },