github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/scanners/azure/functions/scope.go (about) 1 package functions 2 3 import ( 4 "fmt" 5 6 "github.com/google/uuid" 7 ) 8 9 var ( 10 tenantID = uuid.NewString() 11 groupID = uuid.NewString() 12 updaterID = uuid.NewString() 13 subscriptionID = uuid.NewString() 14 managingResourceID = uuid.NewString() 15 ) 16 17 func ManagementGroup(_ ...interface{}) interface{} { 18 19 return fmt.Sprintf(`{ 20 "id": "/providers/Microsoft.Management/managementGroups/mgPlaceholder", 21 "name": "mgPlaceholder", 22 "properties": { 23 "details": { 24 "parent": { 25 "displayName": "Tenant Root Group", 26 "id": "/providers/Microsoft.Management/managementGroups/%[1]s", 27 "name": "%[1]s" 28 }, 29 "updatedBy": "%[2]s", 30 "updatedTime": "2020-07-23T21:05:52.661306Z", 31 "version": "1" 32 }, 33 "displayName": "Management PlaceHolder Group", 34 "tenantId": "%[3]s" 35 }, 36 "type": "/providers/Microsoft.Management/managementGroups" 37 } 38 `, groupID, updaterID, tenantID) 39 } 40 41 func ManagementGroupResourceID(args ...interface{}) interface{} { 42 if len(args) < 2 { 43 return "" 44 } 45 46 switch len(args) { 47 case 3: 48 return fmt.Sprintf("/providers/Microsoft.Management/managementGroups/%s/providers/%s/%s/%s", groupID, args[0], args[1], args[2]) 49 case 4: 50 return fmt.Sprintf("/providers/Microsoft.Management/managementGroups/%s/providers/%s/%s/%s", args[0], args[1], args[2], args[3]) 51 default: 52 return fmt.Sprintf("/providers/Microsoft.Management/managementGroups/%s/providers/%s/%s", groupID, args[0], args[1]) 53 } 54 55 } 56 57 func Subscription(_ ...interface{}) interface{} { 58 return fmt.Sprintf(`{ 59 "id": "/subscriptions/%[1]s", 60 "subscriptionId": "%[1]s", 61 "tenantId": "%[2]s", 62 "displayName": "Placeholder Subscription" 63 }`, subscriptionID, tenantID) 64 } 65 66 func SubscriptionResourceID(args ...interface{}) interface{} { 67 if len(args) < 2 { 68 return nil 69 } 70 71 switch len(args) { 72 73 case 3: 74 return fmt.Sprintf("/subscriptions/%s/providers/%s/%s/%s", subscriptionID, args[0], args[1], args[2]) 75 case 4: 76 // subscription ID has been provided so use that 77 return fmt.Sprintf("/subscriptions/%s/providers/%s/%s/%s", args[0], args[1], args[2], args[3]) 78 default: 79 80 return fmt.Sprintf("/subscriptions/%s/providers/%s/%s", subscriptionID, args[0], args[1]) 81 } 82 } 83 84 func Tenant(_ ...interface{}) interface{} { 85 return fmt.Sprintf(`{ 86 "countryCode": "US", 87 "displayName": "Placeholder Tenant Name", 88 "id": "/tenants/%[1]s", 89 "tenantId": "%[1]s" 90 }`, tenantID) 91 } 92 93 func TenantResourceID(args ...interface{}) interface{} { 94 if len(args) < 2 { 95 return nil 96 } 97 98 switch len(args) { 99 case 3: 100 return fmt.Sprintf("/providers/%s/%s/%s", args[0], args[1], args[2]) 101 102 default: 103 return fmt.Sprintf("/providers/%s/%s", args[0], args[1]) 104 } 105 106 }