From datum-cloud
> **MCP integration:** pending (future phase — will be wired into `agents.datum.net` capability manifest once MCP is ready)
How this skill is triggered — by the user, by Claude, or both
Slash command
/datum-cloud:ai-edgeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **MCP integration:** pending (future phase — will be wired into `agents.datum.net` capability manifest once MCP is ready)
MCP integration: pending (future phase — will be wired into
agents.datum.netcapability manifest once MCP is ready)
Manage AI Edge traffic protection and security policies in Datum Cloud — attach Web Application Firewall (WAF), authentication, authorization, and traffic management policies to gateways and HTTP routes. Policies attach via targetRefs to existing Gateway and HTTPRoute resources, providing defense-in-depth against attacks, rate limiting, and traffic control.
TrafficProtectionPolicy (WAF):
datumctl get trafficprotectionpolicies --project <project-id>
datumctl get tpp --project <project-id>
datumctl describe trafficprotectionpolicy <name> --project <project-id>
datumctl apply -f tpp.yaml --project <project-id>
datumctl diff -f tpp.yaml --project <project-id>
datumctl delete trafficprotectionpolicy <name> --project <project-id>
datumctl auth can-i create trafficprotectionpolicies --project <project-id>
SecurityPolicy (Auth/AuthZ):
datumctl get securitypolicies --project <project-id>
datumctl get sp --project <project-id>
datumctl describe securitypolicy <name> --project <project-id>
datumctl apply -f securitypolicy.yaml --project <project-id>
datumctl diff -f securitypolicy.yaml --project <project-id>
datumctl delete securitypolicy <name> --project <project-id>
BackendTrafficPolicy (Traffic Management):
datumctl get backendtrafficpolicies --project <project-id>
datumctl get btp --project <project-id>
datumctl describe backendtrafficpolicy <name> --project <project-id>
datumctl apply -f btp.yaml --project <project-id>
datumctl diff -f btp.yaml --project <project-id>
datumctl delete backendtrafficpolicy <name> --project <project-id>
Gateway & HTTPRoute (reference):
datumctl get gateways --project <project-id>
datumctl get httproutes --project <project-id>
datumctl describe gateway <name> --project <project-id>
datumctl describe httproute <name> --project <project-id>
networking.datumapis.com ⚠️ alpha — field names may changev1alphaTrafficProtectionPolicy (plural: trafficprotectionpolicies, short: tpp)default)--project)spec.mode — Observe (detection only, logs), Enforce (blocks), or Disabled (inactive)spec.ruleSets[] — one or more rule set configurations:
type — currently supports OWASPCoreRuleSetowaspCoreRuleSet — OWASP CRS configuration:
paranoiaLevels — paranoia level thresholds (1–4; higher = stricter, more false positives)ruleExclusions — list of OWASP ModSecurity rule IDs to disablescoreThresholds — anomaly score thresholds for inbound and outbound blockingspec.targetRefs[] — policy attachment targets (required):
group — gateway.networking.k8s.iokind — Gateway or HTTPRoutename — target resource namesectionName — optional; listener or section within the targetspec.samplingPercentage — optional; percentage of traffic to analyze (0–100)status.conditions — includes Accepted and Programmed readiness conditionsgateway.envoyproxy.io ⚠️ alpha — field names may changev1alpha1SecurityPolicy (plural: securitypolicies, short: sp)default)--project)spec.targetRefs[] — policy attachment targets (required); same structure as TrafficProtectionPolicyspec.jwt — JWT token validationspec.oidc — OpenID Connect authenticationspec.apiKeyAuth — API key authenticationspec.basicAuth — HTTP Basic authenticationspec.extAuth — external authentication servicespec.authorization — fine-grained authorization rulesspec.cors — CORS policystatus.conditions — standard conditionsgateway.envoyproxy.io ⚠️ alpha — field names may changev1alpha1BackendTrafficPolicy (plural: backendtrafficpolicies, short: btp)default)--project)spec.targetRefs[] — policy attachment targets (required)spec.rateLimit — rate limiting rulesspec.circuitBreaker — circuit breaker thresholdsspec.retry — retry policyspec.faultInjection — fault injection for chaos testingspec.healthCheck — backend health check probesspec.loadBalancer — load balancing strategyspec.compression — response compressionspec.http2 — HTTP/2 settingsstatus.conditions — standard conditionsgateway.networking.k8s.iov1Gateway (plural: gateways, short: gtw)targetRefsgateway.networking.k8s.iov1HTTPRouteList existing gateways before attaching any policy:
datumctl get gateways --project my-project
datumctl get httproutes --project my-project
Start with Observe mode to detect threats without blocking traffic:
apiVersion: networking.datumapis.com/v1alpha
kind: TrafficProtectionPolicy
metadata:
name: waf-observe
namespace: default
spec:
mode: Observe
samplingPercentage: 100
ruleSets:
- type: OWASPCoreRuleSet
owaspCoreRuleSet:
paranoiaLevels:
inbound: 2
outbound: 2
scoreThresholds:
inbound: 8
outbound: 4
targetRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: my-gateway
datumctl diff -f waf-observe.yaml --project my-project
datumctl apply -f waf-observe.yaml --project my-project
datumctl describe trafficprotectionpolicy waf-observe --project my-project
# Look for status.conditions: Programmed=True
Tune ruleExclusions to suppress false positives, then switch mode: Enforce when confident.
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: SecurityPolicy
metadata:
name: jwt-auth
namespace: default
spec:
jwt:
providers:
- name: my-provider
issuer: https://auth.example.com/
audiences:
- my-api
remoteJWKS:
uri: https://auth.example.com/.well-known/jwks.json
targetRefs:
- group: gateway.networking.k8s.io
kind: HTTPRoute
name: api-route
datumctl diff -f jwt-auth.yaml --project my-project
datumctl apply -f jwt-auth.yaml --project my-project
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: BackendTrafficPolicy
metadata:
name: traffic-control
namespace: default
spec:
rateLimit:
- action: Deny
limit:
requests: 100
unit: Hour
clientSelectors:
- headers:
- name: x-user-id
circuitBreaker:
maxConnections: 500
maxPendingRequests: 100
maxRequests: 1000
maxRetries: 3
targetRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: my-gateway
datumctl diff -f traffic-control.yaml --project my-project
datumctl apply -f traffic-control.yaml --project my-project
datumctl — never kubectl--project is required for all operationsnetworking.datumapis.com/v1alpha and gateway.envoyproxy.io/v1alpha1 are unstable; field names may change between releasesGateway or HTTPRoute resources in the same namespace and project via targetRefs — policies cannot stand alonesectionName in targetRefs to scope a policy to a specific listener or route ruledatumctl auth can-i create trafficprotectionpolicies --project <project-id> before attempting creates (kubectl users only)datumctl diff -f before apply for any changes--dry-run=server validates the manifest against the API before committingdelete has no confirmation prompt — always verify the resource name firstmode: Observe and tune ruleExclusions before switching to mode: EnforceparanoiaLevels beyond 2 significantly increases false positive rate — test thoroughlynpx claudepluginhub datum-cloud/skills --plugin datum-cloudCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.