Files
orion/.audit-rules/access_control.yaml
Samir Boulahtit 92434c8971 feat: add audit validation rules and script
Import audit rules from scaffold project covering:
- Access control validation
- Audit trail requirements
- Change management policies
- Compliance checks
- Data governance rules
- Documentation requirements
- Third-party dependency checks

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 09:21:03 +01:00

172 lines
5.0 KiB
YAML

# Access Control Rules
# ====================
# Ensures proper authentication, authorization, and least privilege.
# Critical for preventing unauthorized access.
rules:
# ===================
# AUTHENTICATION
# ===================
- id: ACCESS-AUTH-001
name: "Protected endpoints must require authentication"
description: "API endpoints handling sensitive data must enforce authentication"
severity: critical
check:
type: pattern_required
paths:
- "app/api/v1/*.py"
patterns:
- "CurrentUser|Depends.*get_current_user|AdminUser"
exclude_patterns:
- "health.py"
- "auth.py" # Auth endpoints handle their own logic
message: "API endpoints must require authentication"
- id: ACCESS-AUTH-002
name: "Admin endpoints must verify admin role"
description: "Administrative functions must check for admin privileges"
severity: critical
check:
type: pattern_required
paths:
- "app/routes/admin.py"
patterns:
- "is_admin|AdminUser|require_admin|admin_required"
message: "Admin routes must verify admin privileges"
- id: ACCESS-AUTH-003
name: "Session management must be secure"
description: "Sessions must have proper timeout and security settings"
severity: high
check:
type: pattern_required
paths:
- "app/core/config.py"
- "app/core/security.py"
patterns:
- "ACCESS_TOKEN_EXPIRE|SESSION_TIMEOUT|token.*expire"
message: "Session/token expiration must be configured"
# ===================
# AUTHORIZATION (RBAC)
# ===================
- id: ACCESS-RBAC-001
name: "Role-based access control implementation"
description: "System must implement role-based access control"
severity: high
check:
type: pattern_required
paths:
- "models/database/user.py"
patterns:
- "is_admin|role|permission"
message: "User model must support role-based access"
- id: ACCESS-RBAC-002
name: "Authorization checks before data access"
description: "Data access must verify user permissions"
severity: high
check:
type: pattern_recommended
paths:
- "app/api/v1/*.py"
patterns:
- "user\\.id|current_user|owner|created_by"
message: "Consider ownership checks for data access"
- id: ACCESS-RBAC-003
name: "Separation of duties"
description: "Critical operations should require different roles"
severity: medium
check:
type: documentation
message: "Document separation of duties in critical workflows"
# ===================
# LEAST PRIVILEGE
# ===================
- id: ACCESS-PRIV-001
name: "Database connections use least privilege"
description: "Database user should have minimal required permissions"
severity: high
check:
type: documentation
paths:
- "docs/**/*.md"
- "README.md"
patterns:
- "database.*permission|db.*role|least.*privilege"
message: "Document database user permissions"
- id: ACCESS-PRIV-002
name: "API endpoints return minimal data"
description: "Responses should not include unnecessary sensitive fields"
severity: medium
check:
type: pattern_forbidden
paths:
- "models/schema/*.py"
patterns:
- "password_hash|password.*Field"
exclude_patterns:
- "password.*exclude.*True"
message: "Password hashes must not be included in API responses"
- id: ACCESS-PRIV-003
name: "Environment-specific access"
description: "Debug/admin features disabled in production"
severity: high
check:
type: pattern_required
paths:
- "main.py"
- "app/core/environment.py"
patterns:
- "is_production|ENVIRONMENT|DEBUG"
message: "Environment-based feature flags required"
# ===================
# ACCOUNT SECURITY
# ===================
- id: ACCESS-ACCT-001
name: "Account lockout mechanism"
description: "Failed login attempts should trigger account lockout"
severity: high
check:
type: pattern_recommended
paths:
- "app/api/v1/auth.py"
- "app/services/user_service.py"
patterns:
- "failed.*attempt|lockout|rate.*limit|throttle"
message: "Consider implementing account lockout after failed attempts"
- id: ACCESS-ACCT-002
name: "Password complexity requirements"
description: "Passwords must meet minimum complexity requirements"
severity: high
check:
type: pattern_required
paths:
- "models/schema/auth.py"
- "models/schema/user.py"
patterns:
- "min_length|MinLen|Field.*ge.*8"
message: "Password minimum length must be enforced"
- id: ACCESS-ACCT-003
name: "Secure password storage"
description: "Passwords must be hashed with strong algorithm"
severity: critical
check:
type: pattern_required
paths:
- "app/core/security.py"
patterns:
- "bcrypt|argon2|scrypt|pbkdf2"
message: "Passwords must use approved hashing algorithms"