use crate::classify::rules::types::Rule;
pub(super) fn cloud_platform_rules() -> Vec<Rule> {
vec![
Rule {
id: "kw-cloud-aws".into(),
category: "cloud".into(),
subcategory: Some("aws".into()),
keywords: vec![
"aws ".into(),
" aws".into(),
"amazon web services".into(),
"cloudformation".into(),
"cloudfront".into(),
"cloudwatch".into(),
" s3 ".into(),
"s3 bucket".into(),
" ec2".into(),
" lambda".into(),
"aws lambda".into(),
" eks".into(),
" ecs".into(),
" rds".into(),
" sqs".into(),
" sns".into(),
"iam role".into(),
"iam policy".into(),
"route53".into(),
"route 53".into(),
"dynamodb".into(),
],
patterns: vec![],
priority: 70,
confidence: 0.85,
},
Rule {
id: "kw-cloud-gcp".into(),
category: "cloud".into(),
subcategory: Some("gcp".into()),
keywords: vec![
" gcp".into(),
"google cloud".into(),
"bigquery".into(),
"cloud run".into(),
"cloud functions".into(),
" gke".into(),
"pub/sub".into(),
"pubsub".into(),
"gcs bucket".into(),
],
patterns: vec![],
priority: 70,
confidence: 0.85,
},
Rule {
id: "kw-cloud-azure".into(),
category: "cloud".into(),
subcategory: Some("azure".into()),
keywords: vec![
" azure".into(),
"azure functions".into(),
"azure devops".into(),
" aks".into(),
"app service".into(),
"blob storage".into(),
"cosmos db".into(),
"cosmosdb".into(),
],
patterns: vec![],
priority: 70,
confidence: 0.85,
},
]
}
pub(super) fn observability_rules() -> Vec<Rule> {
vec![Rule {
id: "kw-monitoring".into(),
category: "monitoring".into(),
subcategory: None,
keywords: vec![
"datadog".into(),
"prometheus".into(),
"grafana".into(),
"sentry".into(),
"newrelic".into(),
"new relic".into(),
"pagerduty".into(),
"splunk".into(),
"opentelemetry".into(),
"otel".into(),
"tracing".into(),
"metrics".into(),
"alerting".into(),
"alert rule".into(),
"dashboard".into(),
"log aggregation".into(),
"elk stack".into(),
"kibana".into(),
"logstash".into(),
],
patterns: vec![],
priority: 65,
confidence: 0.8,
}]
}
pub(super) fn datastore_rules() -> Vec<Rule> {
vec![Rule {
id: "kw-database".into(),
category: "database".into(),
subcategory: None,
keywords: vec![
"postgresql".into(),
"postgres".into(),
" mysql".into(),
"mariadb".into(),
"sqlite".into(),
" redis".into(),
"mongodb".into(),
"mongo db".into(),
"elasticsearch".into(),
"cassandra".into(),
"dynamodb".into(),
"schema change".into(),
"schema migration".into(),
"db schema".into(),
"database schema".into(),
"index migration".into(),
],
patterns: vec![],
priority: 65,
confidence: 0.8,
}]
}
pub(super) fn messaging_rules() -> Vec<Rule> {
vec![Rule {
id: "kw-messaging".into(),
category: "messaging".into(),
subcategory: None,
keywords: vec![
" kafka".into(),
"rabbitmq".into(),
"rabbit mq".into(),
" sqs".into(),
" sns".into(),
"pub/sub".into(),
"pubsub".into(),
"nats".into(),
"amqp".into(),
"message queue".into(),
"event bus".into(),
"event stream".into(),
],
patterns: vec![],
priority: 65,
confidence: 0.8,
}]
}
pub(super) fn networking_rules() -> Vec<Rule> {
vec![Rule {
id: "kw-networking".into(),
category: "networking".into(),
subcategory: None,
keywords: vec![
" nginx".into(),
"traefik".into(),
"load balancer".into(),
" cdn".into(),
" ssl".into(),
" tls".into(),
"certificate".into(),
"cert manager".into(),
"letsencrypt".into(),
"let's encrypt".into(),
"reverse proxy".into(),
"ingress controller".into(),
"service mesh".into(),
" istio".into(),
"linkerd".into(),
"envoy proxy".into(),
],
patterns: vec![],
priority: 65,
confidence: 0.8,
}]
}