Comprehensive security architecture combining threat modeling, security-first design, secure coding review, and compliance validation. Consolidated from threat-modeling, security-first-design, secure-coding-review, and compliance-validator.
Security Architect
Overview
Security Architect is a consolidated skill that covers the complete security lifecycle: threat modeling, secure design principles, secure coding practices, and regulatory compliance. It ensures security is integrated from the start, not bolted on at the end.
Consolidated from:
- threat-modeling - STRIDE threat analysis and risk assessment
- security-first-design - Security principles and secure design patterns
- secure-coding-review - OWASP Top 10 and vulnerability detection
- compliance-validator - GDPR, HIPAA, SOC2, PCI-DSS compliance
When to Use This Skill
Use Security Architect when:
- Starting a new project (design phase)
- Conducting security architecture review
- Reviewing code for security vulnerabilities
- Ensuring regulatory compliance
- Responding to security incidents
- Planning for security certifications (SOC2, ISO 27001)
- Designing authentication and authorization systems
Key Capabilities
Threat Modeling (from threat-modeling)
- Apply STRIDE methodology for threat identification
- Assess risk levels (Likelihood × Impact)
- Create threat models and mitigation plans
- Identify attack surfaces and trust boundaries
Security Design (from security-first-design)
- Apply security principles (Defense in Depth, Least Privilege, Zero Trust)
- Design secure authentication and authorization
- Implement encryption and key management
- Design secure APIs and data protection
Secure Coding (from secure-coding-review)
- Review code against OWASP Top 10
- Detect injection vulnerabilities (SQL, XSS, command)
- Identify broken authentication and access control
- Ensure secure data handling and validation
Compliance (from compliance-validator)
- Ensure GDPR, HIPAA, CCPA, SOC2, PCI-DSS compliance
- Implement data subject rights (access, erasure, portability)
- Design audit logging and retention policies
- Configure encryption and access controls
Workflow
Part 1: Threat Modeling (STRIDE)
STRIDE Framework
S - Spoofing (Authentication)
- Threat: Attacker impersonates a user or system
- Examples:
- Stolen credentials
- Session hijacking
- Weak or no authentication
- Mitigations:
- Multi-factor authentication (MFA)
- Strong password policies
- JWT with short expiration
- Secure session management
T - Tampering (Integrity)
- Threat: Attacker modifies data or code
- Examples:
- SQL injection
- Man-in-the-middle attacks
- Parameter manipulation
- Code injection
- Mitigations:
- Input validation and sanitization
- HTTPS/TLS everywhere
- Signed tokens (JWT)
- Integrity checks (hashing)
R - Repudiation (Accountability)
- Threat: User denies performing an action
- Examples:
- No audit logs
- Unsigned transactions
- Anonymous actions
- Mitigations:
- Comprehensive audit logging
- Digital signatures for transactions
- Immutable log storage
- User action tracking
I - Information Disclosure (Confidentiality)
- Threat: Sensitive data exposed to unauthorized parties
- Examples:
- Exposed API keys
- Database dumps
- Verbose error messages
- Insufficient access controls
- Mitigations:
- Encryption at rest and in transit
- Principle of least privilege
- Secure secret management (AWS Secrets Manager, Vault)
- Role-based access control (RBAC)
D - Denial of Service (Availability)
- Threat: System becomes unavailable to legitimate users
- Examples:
- DDoS attacks
- Resource exhaustion
- Unhandled exceptions
- Mitigations:
- Rate limiting and throttling
- Input validation (reject massive payloads)
- Auto-scaling infrastructure
- CDN and DDoS protection (Cloudflare)
E - Elevation of Privilege (Authorization)
- Threat: User gains unauthorized access to higher privileges
- Examples:
- Broken access control
- Insecure direct object references (IDOR)
- Missing authorization checks
- Mitigations:
- Authorization checks on every request
- Principle of least privilege
- Attribute-based access control (ABAC)
- Regular permission audits
Threat Modeling Process
Step 1: Identify Assets
- User data (PII, passwords, financial info)
- Business data (IP, customer lists, transactions)
- System credentials (API keys, certificates)
- Infrastructure (servers, databases, APIs)
Step 2: Identify Trust Boundaries
- User ↔ Web App
- Web App ↔ API
- API ↔ Database
- Internal services ↔ External APIs
- Admin ↔ Production systems
Step 3: Apply STRIDE to Each Boundary
For each boundary, ask:
- S: Can an attacker spoof identity?
- T: Can data be tampered with?
- R: Can actions be repudiated?
- I: Can information be disclosed?
- D: Can service be denied?
- E: Can privileges be elevated?
Step 4: Assess Risk
Risk = Likelihood × Impact
Likelihood:
- High (likely to occur)
- Medium (may occur)
- Low (unlikely to occur)
Impact:
- Critical (data breach, financial loss, legal liability)
- High (significant damage, downtime)
- Medium (limited damage, temporary disruption)
- Low (minimal impact)
Risk Level:
- Critical: Immediate action required
- High: Address before launch
- Medium: Address post-launch
- Low: Monitor, may accept risk
Step 5: Define Mitigations
For each threat, document:
- Mitigation strategy
- Implementation effort (low, medium, high)
- Residual risk after mitigation
- Owner and timeline
Part 2: Security-First Design
Security Principles
1. Defense in Depth
Multiple layers of security controls. If one fails, others still protect.
Example:
- Layer 1: Firewall
- Layer 2: Authentication
- Layer 3: Authorization
- Layer 4: Encryption
- Layer 5: Audit logs
2. Least Privilege
Users/systems only have minimum permissions needed.
Example:
- Read-only database credentials for reporting service
- User can only see their own data
- Admin access requires MFA + time-limited token
3. Zero Trust
Never trust, always verify. Even internal networks are untrusted.
Example:
- Every request authenticated and authorized
- No "trusted" internal network
- Encrypt internal traffic
- Assume breach mentality
4. Secure by Default
Default configuration is secure. Users must opt-in to less secure options.
Example:
- HTTPS enforced by default
- Strict password policy by default
- MFA recommended on signup
- Secure cookies (HttpOnly, Secure, SameSite)
5. Fail Securely
When errors occur, fail in a way that doesn't compromise security.
Example:
- Access denied on error (not granted)
- Log error but don't expose details to user
- Graceful degradation without exposing internals
Secure Design Patterns
Authentication:
- Pattern: OAuth 2.0 + OpenID Connect (OIDC)
- Implementation:
- Use Auth0, AWS Cognito, or Okta (don't build your own)
- JWT tokens with short expiration (15 min access, 7 day refresh)
- Secure token storage (HttpOnly cookies or secure local storage)
- MFA for sensitive operations
Authorization:
- Pattern: Role-Based Access Control (RBAC) or Attribute-Based Access Control (ABAC)
- Implementation:
- Define roles: admin, user, viewer
- Check authorization on every API request
- Use middleware:
@requireRole('admin') - Implement IDOR protection (verify ownership)
Data Protection:
- Pattern: Encryption at rest and in transit
- Implementation:
- TLS 1.3 for all external traffic
- AES-256 for data at rest
- Key management service (AWS KMS, Google Cloud KMS)
- Encrypt PII fields (email, SSN, credit cards)
API Security:
- Pattern: Rate limiting + authentication + input validation
- Implementation:
- Rate limit: 100 requests/minute per user
- API keys for server-to-server
- OAuth tokens for user-to-server
- Validate all inputs (type, length, format)
- Whitelist allowed values
Secrets Management:
- Pattern: Never commit secrets, use secret managers
- Implementation:
- AWS Secrets Manager or HashiCorp Vault
- Environment variables for config (never in code)
- Rotate secrets regularly (90 days)
- Use IAM roles (not long-lived credentials)
Part 3: Secure Coding Review (OWASP Top 10)
OWASP Top 10 (2021)
A01: Broken Access Control
- Risk: Users access data/functions they shouldn't
- Examples:
- URL tampering:
/user/123→/user/456 - Missing authorization checks
- Insecure Direct Object References (IDOR)
- URL tampering:
How to Detect:
// BAD: No authorization check
app.get('/api/users/:id', (req, res) => {
const user = db.users.findById(req.params.id)
res.json(user) // Anyone can see any user!
})
// GOOD: Check ownership
app.get('/api/users/:id', authMiddleware, (req, res) => {
const requestedId = req.params.id
const currentUserId = req.user.id
if (requestedId !== currentUserId && !req.user.isAdmin) {
return res.status(403).json({ error: 'Forbidden' })
}
const user = db.users.findById(requestedId)
res.json(user)
})
A02: Cryptographic Failures
- Risk: Sensitive data exposed due to weak or missing encryption
- Examples:
- Plaintext passwords in database
- HTTP instead of HTTPS
- Weak hashing (MD5, SHA1)
How to Detect:
// BAD: Plaintext password
const user = { email, password: req.body.password }
db.users.create(user)
// GOOD: Hash with bcrypt
const bcrypt = require('bcrypt')
const hashedPassword = await bcrypt.hash(req.body.password, 10)
const user = { email, password: hashedPassword }
db.users.create(user)
A03: Injection
- Risk: Attacker injects malicious code (SQL, XSS, command)
- Examples:
- SQL injection
- Cross-site scripting (XSS)
- Command injection
How to Detect:
// BAD: SQL Injection
const query = `SELECT * FROM users WHERE email = '${req.body.email}'`
db.query(query) // Attacker can send: ' OR '1'='1
// GOOD: Parameterized query
const query = 'SELECT * FROM users WHERE email = ?'
db.query(query, [req.body.email])
// BAD: XSS
;<div dangerouslySetInnerHTML={{ __html: userInput }} />
// GOOD: Escape user input
import DOMPurify from 'dompurify'
const sanitized = DOMPurify.sanitize(userInput)
;<div dangerouslySetInnerHTML={{ __html: sanitized }} />
A04: Insecure Design
- Risk: Flawed architecture or missing security controls
- Examples:
- No rate limiting
- Lack of threat modeling
- No security requirements
How to Detect:
- Review architecture diagram
- Check for rate limiting, authentication, authorization
- Validate threat model exists
A05: Security Misconfiguration
- Risk: Default configs, verbose errors, unnecessary features enabled
- Examples:
- Default admin password
- Directory listing enabled
- Stack traces in production
How to Detect:
// BAD: Exposes stack trace
app.use((err, req, res, next) => {
res.status(500).json({ error: err.stack })
})
// GOOD: Generic error message
app.use((err, req, res, next) => {
logger.error(err)
res.status(500).json({ error: 'Internal server error' })
})
A06-A10: Other Critical Issues
- A06: Vulnerable and Outdated Components (use
npm audit, Dependabot) - A07: Identification and Authentication Failures (weak passwords, no MFA)
- A08: Software and Data Integrity Failures (supply chain attacks)
- A09: Security Logging and Monitoring Failures (no audit logs)
- A10: Server-Side Request Forgery (SSRF) (validate URLs)
Part 4: Compliance Validation
Regulatory Frameworks
GDPR (General Data Protection Regulation)
- Scope: EU data subjects
- Key Requirements:
- Lawful basis for processing (consent, contract, legitimate interest)
- Data subject rights (access, rectification, erasure, portability)
- Privacy by design and default
- Data breach notification (72 hours)
- Data Protection Impact Assessment (DPIA) for high-risk processing
Implementation Checklist:
- [ ] Consent mechanism for data collection
- [ ] Data subject access request (DSAR) process
- [ ] Right to erasure ("right to be forgotten") implementation
- [ ] Data portability export (JSON/CSV)
- [ ] Privacy policy and cookie banner
- [ ] Data Processing Agreement (DPA) with vendors
- [ ] Breach notification process
HIPAA (Health Insurance Portability and Accountability Act)
- Scope: Healthcare data in the US
- Key Requirements:
- Protected Health Information (PHI) must be encrypted
- Access controls and audit logs
- Business Associate Agreements (BAA)
- Breach notification
Implementation Checklist:
- [ ] Encrypt PHI at rest (AES-256) and in transit (TLS 1.3)
- [ ] Role-based access control to PHI
- [ ] Audit logs for all PHI access
- [ ] BAA with cloud providers (AWS, Azure)
- [ ] Breach notification process
- [ ] Regular security risk assessments
SOC 2 (Service Organization Control 2)
- Scope: SaaS companies handling customer data
- Key Requirements:
- Trust Service Criteria (Security, Availability, Confidentiality)
- Access controls and monitoring
- Change management
- Incident response
Implementation Checklist:
- [ ] Security policies documented
- [ ] Background checks for employees
- [ ] Multi-factor authentication (MFA) enforced
- [ ] Encryption at rest and in transit
- [ ] Audit logging and monitoring
- [ ] Incident response plan
- [ ] Vendor management program
- [ ] Regular security training
PCI-DSS (Payment Card Industry Data Security Standard)
- Scope: Organizations handling credit card data
- Key Requirements:
- Never store CVV/CVC codes
- Encrypt cardholder data
- Regularly update and patch systems
- Restrict access to cardholder data
Implementation Checklist:
- [ ] Use payment processor (Stripe, Braintree) - DON'T store cards yourself
- [ ] If storing cards, use tokenization
- [ ] PCI-compliant hosting (Level 1 certified)
- [ ] Network segmentation (isolate cardholder data)
- [ ] Vulnerability scanning and penetration testing
- [ ] Strong access controls
Examples
Example 1: Threat Model for SaaS Application
Application: Project Management SaaS
Assets:
- User credentials (email, password)
- Project data (documents, tasks, comments)
- Payment information (via Stripe)
- API keys for integrations
Trust Boundaries:
- User Browser ↔ Web App (HTTPS)
- Web App ↔ API Server (internal TLS)
- API Server ↔ Database (encrypted connection)
- API Server ↔ Stripe API (HTTPS)
STRIDE Analysis for Boundary 1 (User ↔ Web App):
| Threat | Risk | Mitigation |
|---|---|---|
| S: Credential theft | High | MFA, password hashing (bcrypt) |
| T: Session hijacking | Medium | HttpOnly cookies, SameSite, CSRF tokens |
| R: Denied action | Low | Audit logs for all user actions |
| I: Data exposure via XSS | High | Content Security Policy, input sanitization |
| D: Brute force login | Medium | Rate limiting (5 attempts/min) |
| E: Account takeover | High | Email verification, MFA |
Priority Mitigations:
- Implement MFA (High risk, high impact)
- Add rate limiting (Medium risk, easy fix)
- Enable CSP headers (High risk, easy fix)
Example 2: Secure Code Review Findings
Code Review: User authentication endpoint
Findings:
CRITICAL: SQL Injection (A03)
// Current code (VULNERABLE):
const query = `SELECT * FROM users WHERE email = '${email}' AND password = '${password}'`
// Recommended fix:
const query = 'SELECT * FROM users WHERE email = ? AND password_hash = ?'
const hashedPassword = bcrypt.hashSync(password, user.salt)
db.query(query, [email, hashedPassword])
HIGH: Plaintext Passwords (A02)
// Current code (VULNERABLE):
db.users.create({ email, password })
// Recommended fix:
const hashedPassword = await bcrypt.hash(password, 10)
db.users.create({ email, password: hashedPassword })
MEDIUM: No Rate Limiting (A04)
// Recommended fix:
const rateLimit = require('express-rate-limit')
const loginLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 5 // 5 attempts
})
app.post('/login', loginLimiter, loginHandler)
Action: Fix CRITICAL and HIGH before deployment. Add MEDIUM post-launch.
Example 3: GDPR Compliance Implementation
Requirement: Implement data subject rights
Implementation:
1. Right to Access (DSAR)
app.get('/api/user/data-export', authMiddleware, async (req, res) => {
const userId = req.user.id
const userData = {
profile: await db.users.findById(userId),
projects: await db.projects.findByUser(userId),
comments: await db.comments.findByUser(userId),
activity: await db.activityLog.findByUser(userId)
}
res.setHeader('Content-Type', 'application/json')
res.setHeader('Content-Disposition', 'attachment; filename=my-data.json')
res.json(userData)
})
2. Right to Erasure
app.delete('/api/user/account', authMiddleware, async (req, res) => {
const userId = req.user.id
// Anonymize instead of delete (retain for legal compliance)
await db.users.update(userId, {
email: `deleted-${userId}@example.com`,
name: 'Deleted User',
deleted_at: new Date()
})
// Delete PII
await db.sessions.deleteByUser(userId)
await db.notifications.deleteByUser(userId)
res.json({ message: 'Account deleted successfully' })
})
3. Consent Management
const user = {
email,
marketing_consent: req.body.marketingConsent || false,
analytics_consent: req.body.analyticsConsent || false,
consent_date: new Date()
}
Best Practices
Threat Modeling
- Model early - Design phase, not after development
- Update regularly - When architecture changes
- Focus on high-risk threats - Don't aim for 100% coverage
- Document mitigations - Not just threats
Security Design
- Use proven solutions - Don't roll your own crypto
- Defense in depth - Multiple layers of security
- Secure by default - Opt-in to less secure, not opt-out
- Assume breach - Design with "when" not "if" mindset
Secure Coding
- Automate security scanning - SAST, DAST, SCA in CI/CD
- Validate all inputs - Trust nothing from users
- Use security libraries - OWASP, helmet.js, DOMPurify
- Keep dependencies updated - Monitor with Dependabot
Compliance
- Understand scope - Which regulations apply to you
- Document everything - Policies, procedures, decisions
- Regular audits - Internal + external reviews
- Work with legal - Don't interpret regulations alone
Common Pitfalls
1. Security as an Afterthought
Antipattern: Build first, secure later
Result: Expensive retrofitting, vulnerabilities in production
Better: Integrate security from design phase
2. Trusting Client-Side Validation
Antipattern: Only validate on frontend
Result: Attacker bypasses with curl
Better: Always validate on backend
3. Rolling Your Own Crypto
Antipattern: Custom encryption or hashing
Result: Weak crypto, vulnerabilities
Better: Use proven libraries (bcrypt, libsodium)
4. Over-Reliance on Compliance
Antipattern: "We're compliant, so we're secure"
Result: Compliant but insecure
Better: Compliance is minimum; security is ongoing
5. Ignoring Low-Risk Threats
Antipattern: Only fix CRITICAL issues
Result: Death by a thousand cuts
Better: Systematically address all severity levels
Related Skills
- quality-assurance - Security testing and validation gates
- api-designer - API security patterns
- deployment-advisor - Infrastructure security
- framework-orchestrator - Security in phase gates
- data-engineer - Data security and privacy
Deliverables
When using Security Architect, produce:
-
Threat Model
- Asset inventory
- Trust boundaries
- STRIDE analysis
- Risk assessment
- Mitigation plan
-
Security Architecture Document
- Authentication/authorization design
- Encryption strategy
- Secrets management
- Network diagram with security controls
-
Secure Code Review Report
- OWASP Top 10 findings
- Severity ratings
- Remediation recommendations
- Re-test results
-
Compliance Checklist
- Applicable regulations
- Implementation status
- Gap analysis
- Remediation plan
Success Metrics
Security Architect is effective when:
- Threat models completed before development
- Zero CRITICAL vulnerabilities in production
- Security incidents <1 per year
- Compliance audits passed
- Security gates enforced in CI/CD
- Team follows secure coding practices
- Regular security training completed
Remember: Security is not a feature, it's a foundation. Build it in from the start.
You Might Also Like
Related Skills

create-pr
Creates GitHub pull requests with properly formatted titles that pass the check-pr-title CI validation. Use when creating PRs, submitting changes for review, or when the user says /pr or asks to create a pull request.
n8n-io
electron-chromium-upgrade
Guide for performing Chromium version upgrades in the Electron project. Use when working on the roller/chromium/main branch to fix patch conflicts during `e sync --3`. Covers the patch application workflow, conflict resolution, analyzing upstream Chromium changes, and proper commit formatting for patch fixes.
electron
pr-creator
Use this skill when asked to create a pull request (PR). It ensures all PRs follow the repository's established templates and standards.
google-gemini
clawdhub
Use the ClawdHub CLI to search, install, update, and publish agent skills from clawdhub.com. Use when you need to fetch new skills on the fly, sync installed skills to latest or a specific version, or publish new/updated skill folders with the npm-installed clawdhub CLI.
moltbot
tmux
Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.
moltbot
create-pull-request
Create a GitHub pull request following project conventions. Use when the user asks to create a PR, submit changes for review, or open a pull request. Handles commit analysis, branch management, and PR creation using the gh CLI tool.
cline