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>
202 lines
5.7 KiB
YAML
202 lines
5.7 KiB
YAML
# Data Governance Rules
|
|
# =====================
|
|
# Ensures proper handling of PII, data classification, and retention.
|
|
# Critical for GDPR, CCPA, and data privacy compliance.
|
|
|
|
rules:
|
|
# ===================
|
|
# PII IDENTIFICATION
|
|
# ===================
|
|
|
|
- id: DATA-PII-001
|
|
name: "PII fields must be identified"
|
|
description: "Personal Identifiable Information fields must be marked/documented"
|
|
severity: high
|
|
check:
|
|
type: pattern_recommended
|
|
paths:
|
|
- "models/database/*.py"
|
|
patterns:
|
|
- "# PII|pii.*=.*True|sensitive.*=.*True"
|
|
message: "Consider marking PII fields with comments or metadata"
|
|
|
|
- id: DATA-PII-002
|
|
name: "Email addresses are PII"
|
|
description: "Email fields must be treated as PII"
|
|
severity: medium
|
|
check:
|
|
type: documentation
|
|
message: "Document email as PII in data classification"
|
|
|
|
- id: DATA-PII-003
|
|
name: "PII must not be logged"
|
|
description: "Sensitive data must not appear in logs"
|
|
severity: critical
|
|
check:
|
|
type: pattern_forbidden
|
|
paths:
|
|
- "app/**/*.py"
|
|
- "middleware/**/*.py"
|
|
patterns:
|
|
- "logger.*password|log.*password"
|
|
- "logger.*credit.*card|log.*ssn"
|
|
- "print\\(.*password"
|
|
message: "PII/sensitive data must not be logged"
|
|
|
|
# ===================
|
|
# DATA CLASSIFICATION
|
|
# ===================
|
|
|
|
- id: DATA-CLASS-001
|
|
name: "Data classification scheme"
|
|
description: "System must have documented data classification"
|
|
severity: medium
|
|
check:
|
|
type: file_exists
|
|
paths:
|
|
- "docs/**/data-classification.md"
|
|
- "docs/**/data-governance.md"
|
|
- "docs/**/security*.md"
|
|
message: "Document data classification scheme"
|
|
|
|
- id: DATA-CLASS-002
|
|
name: "Sensitive data encryption at rest"
|
|
description: "Highly sensitive data should be encrypted in database"
|
|
severity: medium
|
|
check:
|
|
type: pattern_recommended
|
|
paths:
|
|
- "models/database/*.py"
|
|
patterns:
|
|
- "encrypt|EncryptedType|Fernet"
|
|
message: "Consider encryption for highly sensitive fields"
|
|
|
|
- id: DATA-CLASS-003
|
|
name: "Data masking in non-production"
|
|
description: "PII should be masked in development/test environments"
|
|
severity: medium
|
|
check:
|
|
type: documentation
|
|
message: "Document data masking procedures for non-production"
|
|
|
|
# ===================
|
|
# DATA RETENTION
|
|
# ===================
|
|
|
|
- id: DATA-RET-001
|
|
name: "Soft delete for audit trail"
|
|
description: "Records should use soft delete to maintain audit trail"
|
|
severity: medium
|
|
check:
|
|
type: pattern_recommended
|
|
paths:
|
|
- "models/database/*.py"
|
|
patterns:
|
|
- "deleted_at|is_deleted|soft_delete"
|
|
message: "Consider soft delete for audit trail preservation"
|
|
|
|
- id: DATA-RET-002
|
|
name: "Data retention policy"
|
|
description: "System must have documented data retention policy"
|
|
severity: high
|
|
check:
|
|
type: file_exists
|
|
paths:
|
|
- "docs/**/retention*.md"
|
|
- "docs/**/data*.md"
|
|
message: "Document data retention policy"
|
|
|
|
- id: DATA-RET-003
|
|
name: "Automated data cleanup"
|
|
description: "Old data should be automatically purged per retention policy"
|
|
severity: low
|
|
check:
|
|
type: pattern_recommended
|
|
paths:
|
|
- "app/tasks/*.py"
|
|
- "scripts/*.py"
|
|
patterns:
|
|
- "cleanup|purge|archive|retention"
|
|
message: "Consider automated data retention enforcement"
|
|
|
|
# ===================
|
|
# DATA PRIVACY RIGHTS
|
|
# ===================
|
|
|
|
- id: DATA-PRIV-001
|
|
name: "Right to access (GDPR Art. 15)"
|
|
description: "Users must be able to access their personal data"
|
|
severity: high
|
|
check:
|
|
type: pattern_required
|
|
paths:
|
|
- "app/api/v1/users.py"
|
|
patterns:
|
|
- "/me|/current|get_current_user"
|
|
message: "Endpoint for users to access their data required"
|
|
|
|
- id: DATA-PRIV-002
|
|
name: "Right to erasure (GDPR Art. 17)"
|
|
description: "System must support user data deletion requests"
|
|
severity: high
|
|
check:
|
|
type: pattern_recommended
|
|
paths:
|
|
- "app/api/v1/users.py"
|
|
- "app/services/user_service.py"
|
|
patterns:
|
|
- "delete|remove|erase|anonymize"
|
|
message: "Support for user data deletion required"
|
|
|
|
- id: DATA-PRIV-003
|
|
name: "Right to portability (GDPR Art. 20)"
|
|
description: "Users should be able to export their data"
|
|
severity: medium
|
|
check:
|
|
type: pattern_recommended
|
|
paths:
|
|
- "app/api/v1/*.py"
|
|
patterns:
|
|
- "export|download|portable"
|
|
message: "Consider data export functionality for portability"
|
|
|
|
# ===================
|
|
# DATA INTEGRITY
|
|
# ===================
|
|
|
|
- id: DATA-INT-001
|
|
name: "Input validation"
|
|
description: "All input data must be validated"
|
|
severity: high
|
|
check:
|
|
type: pattern_required
|
|
paths:
|
|
- "models/schema/*.py"
|
|
patterns:
|
|
- "Field|validator|field_validator"
|
|
message: "Pydantic validation required for data integrity"
|
|
|
|
- id: DATA-INT-002
|
|
name: "Database constraints"
|
|
description: "Database should enforce data integrity constraints"
|
|
severity: medium
|
|
check:
|
|
type: pattern_required
|
|
paths:
|
|
- "models/database/*.py"
|
|
patterns:
|
|
- "nullable|unique|ForeignKey|CheckConstraint"
|
|
message: "Database constraints should enforce data integrity"
|
|
|
|
- id: DATA-INT-003
|
|
name: "Referential integrity"
|
|
description: "Foreign key relationships must be properly defined"
|
|
severity: medium
|
|
check:
|
|
type: pattern_required
|
|
paths:
|
|
- "models/database/*.py"
|
|
patterns:
|
|
- "ForeignKey|relationship"
|
|
message: "Define foreign key relationships for referential integrity"
|