Agent skill

security-baseline-controls

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/security-baseline-controls

SKILL.md

Security Baseline Controls

Overview

มาตรฐาน security ขั้นต่ำที่ทุก service ต้องมี: authentication, authorization, input validation, secrets handling, และ security headers ที่ทำให้ระบบปลอดภัยตั้งแต่ day one

Why This Matters

  • Compliance: Meet SOC2, ISO27001, GDPR requirements
  • Defense in depth: Multiple security layers
  • Consistency: Same security posture across services
  • Audit: Clear evidence of controls

Core Concepts

1. Authentication Requirements

  • ทุก endpoint (ยกเว้น health) ต้องมี authentication
  • validate tokens อย่างถูกต้อง: signature, issuer, audience, expiry, clock skew
  • สำหรับ sessions ต้องมี: secure cookie, CSRF protection, session rotation

2. Authorization Patterns

  • resource-level authorization (owner/tenant) เป็น default
  • RBAC สำหรับ roles ทั่วไป, ABAC/policies สำหรับเงื่อนไขซับซ้อน (tenant tier, attributes)
  • deny-by-default: ถ้าไม่มี policy/permission ให้ reject

3. Input Validation

  • validate ที่ boundary: request body/query/path headers (schema-based)
  • enforce limits: max size, max length, enums, number ranges
  • normalize/sanitize ตามชนิดข้อมูล (เช่น trim, canonicalize emails)

4. Output Encoding

  • ตั้ง Content-Type ถูกต้องเสมอ และใช้ JSON serialization มาตรฐาน
  • UI ที่ render HTML ต้อง escape/encode ตาม context (server ไม่ควรส่ง HTML ที่มี user input โดยตรง)
  • หลีกเลี่ยงการสะท้อน input กลับไปใน error message โดยไม่ sanitize

5. Secrets Management

  • secrets ต้องไม่อยู่ใน repo, container image, หรือ logs
  • ใช้ secret manager + least privilege access (scoped identities)
  • รองรับ rotation: short TTL tokens, reload without redeploy ถ้าเป็นไปได้

6. Security Headers

  • เปิดใช้ HSTS บน production domains ที่รองรับ HTTPS
  • ใส่ CSP ที่เหมาะสม (สำหรับ web apps) และปิด clickjacking (X-Frame-Options/frame-ancestors)
  • ตั้ง Referrer-Policy, X-Content-Type-Options เป็น baseline

7. Dependency Security

  • เปิดใช้ dependency scanning ใน CI (SCA) และกำหนด SLA ในการ patch
  • pin versions และหลีกเลี่ยง latest ใน production
  • สำหรับ containers: scan base image + SBOM ถ้า platform รองรับ

8. Audit Logging

  • log security-relevant events: login, token refresh, permission changes, admin actions, data export
  • audit logs ต้อง immutable/append-only และเข้าถึงจำกัด
  • ใส่ requestId/actorId/tenantId (ถ้ามี) และ redact PII ตาม policy

Quick Start

typescript
import helmet from "helmet";
import type { Request, Response, NextFunction } from "express";

export function securityHeaders() {
  return helmet({
    contentSecurityPolicy: false, // enable + tune per app (web) when ready
  });
}

export function requireAuth(req: Request, res: Response, next: NextFunction) {
  const auth = req.header("authorization");
  if (!auth?.startsWith("Bearer ")) return res.status(401).json({ error: "Unauthorized" });
  // verify token (issuer/audience/signature/expiry) here
  next();
}

Production Checklist

  • Authentication on all endpoints (except health)
  • Authorization checks for protected resources
  • Input validation on all user inputs
  • Security headers configured
  • Secrets from secret manager (not env/code)
  • Dependencies scanned for vulnerabilities
  • Security audit logging enabled

Security Headers

typescript
// Required headers
{
  "Strict-Transport-Security": "max-age=31536000; includeSubDomains",
  "X-Content-Type-Options": "nosniff",
  "X-Frame-Options": "DENY",
  "X-XSS-Protection": "1; mode=block",
  "Content-Security-Policy": "default-src 'self'",
  "Referrer-Policy": "strict-origin-when-cross-origin"
}

Input Validation Checklist

typescript
// Every user input must be:
// 1. Type-checked (string, number, etc.)
// 2. Length-limited (max characters)
// 3. Format-validated (regex, enum)
// 4. Sanitized (HTML escape, SQL escape)

const schema = z.object({
  email: z.string().email().max(255),
  name: z.string().min(1).max(100),
  age: z.number().int().min(0).max(150)
});

Authentication Requirements

Endpoint Type Auth Required Notes
Health check No /health, /ready
Metrics Optional Depends on exposure
Public API Yes Bearer token
Internal API Yes Service-to-service auth
Admin API Yes Additional MFA

Anti-patterns

  1. Security as afterthought: Add security later
  2. Trust internal traffic: No service-to-service auth
  3. Log everything: Including secrets
  4. Ignore dependencies: Old vulnerable packages
  5. Over-logging: log PII/credentials แล้วค่อย “ลบทีหลัง” (ทำไม่ได้จริง)

Integration Points

  • Identity providers
  • Secret managers
  • Security scanning tools
  • SIEM systems

Further Reading

Didn't find tool you were looking for?

Be as detailed as possible for better results