Skip to main content

iso-27001-controls

ISO 27001:2022 Annex A controls for static HTML/CSS websites on GitHub Pages

Source facts

Repository
Hack23/riksdagsmonitor
Last source activity
April 16, 2026 at 09:31
Detected SKILL.md language
English
Stars
12
Forks
4

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
iso-27001-controls
description
ISO 27001:2022 Annex A controls for static HTML/CSS websites on GitHub Pages
license
Apache-2.0
# ISO 27001:2022 Controls (Static Site) ## 🔴 AI FIRST Quality Principle > **Apply the AI FIRST principle: never accept first-pass quality. Minimum 2 iterations. Read all output, improve every section. No shortcuts.** ## Purpose Implement ISO 27001:2022 Annex A controls for Riksdagsmonitor static HTML/CSS website, ensuring systematic information security management. ## When to Use - ✅ Implementing security controls - ✅ ISMS audits or reviews - ✅ Security architecture changes - ✅ ISO 27001 certification preparation ## Key Controls for Static Sites ### A.5 - Organizational Controls **A.5.10 - Acceptable Use** - ✅ Political data for transparency purposes only - ✅ Data classification: Public (all content) - ✅ External links to CIA platform (HTTPS) **A.5.15 - Access Control** ```yaml # GitHub repository access Roles: - Admin: Security team only - Write: Core maintainers - Read: All contributors ``` **A.5.17 - Authentication** - ✅ GitHub MFA required for all contributors - ✅ SSH keys or Personal Access Tokens - ✅ GPG signing for commits **A.5.23 - Cloud Services Security** - ✅ GitHub Pages (vetted cloud provider) - ✅ Service Level Agreements reviewed - ✅ Data sovereignty: EU/US compliant ### A.8 - Technical Controls **A.8.1 - User Endpoint Devices** - ✅ Developer workstation security standards - ✅ Encrypted disks required - ✅ Antivirus/EDR software **A.8.2 - Privileged Access Rights** - ✅ Branch protection on main - ✅ Required reviews for PRs - ✅ Admin actions logged (GitHub audit) **A.8.3 - Information Access Restriction** ```yaml # All content is PUBLIC Classification: Public Restrictions: None (democratic transparency) Access: Open to all users ``` **A.8.8 - Technical Vulnerabilities** ```yaml # .github/workflows/security-scanning.yml - Dependabot: Weekly scans - CodeQL: Every PR - Secret scanning: Enabled - Security advisories: Monitored ``` **A.8.9 - Configuration Management** ```yaml # All configuration in git - index.html (14 languages) - styles.css - .github/workflows/*.yml - .github/copilot-mcp.json ``` **A.8.11 - Data Masking** - ❌ NOT applicable to Riksdagsmonitor - **Reason**: A.8.11 applies to masking sensitive data in non-production environments - **Context**: Riksdagsmonitor processes only **public government data** (Swedish Offentlighetsprincipen) - **Data Type**: Public officials in official capacity (MPs, ministers, voting records, parliamentary documents) - **Legal Basis**: GDPR Article 6(1)(e) public interest, Article 9(2)(e) manifestly public political opinions - **Journalist Exemption**: Swedish Press Freedom Act (Tryckfrihetsförordningen) - **No Masking Needed**: All data is public, no test environments with production data copies **More Appropriate Controls**: - ✅ **A.5.33** - Protection of records (source attribution, audit trails via Git) - ✅ **A.5.34** - Privacy and protection of PII (public officials, official capacity only) - ✅ **A.8.10** - Information deletion (retention policies, no excessive storage) - ✅ **A.8.19** - Security of information in use (HTTPS-only, CSP headers) **A.8.23 - Web Filtering** ```html <!-- Content Security Policy --> <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; frame-ancestors 'none';"> <!-- Additional security headers via HTTP --> <!-- X-Frame-Options: DENY --> <!-- X-Content-Type-Options: nosniff --> <!-- Strict-Transport-Security: max-age=31536000 --> ``` **A.8.24 - Cryptography** - ✅ TLS 1.3 enforced (GitHub Pages) - ✅ HTTPS-only (no HTTP allowed) - ✅ HSTS preload enabled - ✅ Perfect forward secrecy **A.8.28 - Secure Coding** - ✅ HTML5/CSS3 validation (HTMLHint, CSSLint) - ✅ Semantic HTML (accessibility) - ✅ No inline scripts (CSP) - ✅ Link integrity checking (linkinator) ### A.14 - Development Controls **A.14.2.1 - Secure Development Policy** - ✅ See: [Secure Development Policy](https://github.com/Hack23/ISMS-PUBLIC/blob/main/Secure_Development_Policy.md) - ✅ Security requirements gathering - ✅ Threat modeling (STRIDE) - ✅ Security testing (validation, scanning) **A.14.2.5 - Engineering Principles** - ✅ Defense in depth (multiple security layers) - ✅ Least privilege (minimal GitHub permissions) - ✅ Fail securely (static content, no dynamic errors) - ✅ Separation of duties (PR reviews required) **A.14.2.8 - System Security Testing** ```yaml # Automated security testing Testing: - HTML validation: HTMLHint - Link checking: linkinator - Dependency scanning: Dependabot - Secret scanning: GitHub - Security headers: manual verification ``` **A.14.2.9 - Acceptance Testing** - ✅ All quality checks passed - ✅ No broken links - ✅ WCAG 2.1 AA compliance - ✅ Security headers verified - ✅ HTTPS-only confirmed ### A.16 - Incident Management **A.16.1.4 - Security Events** ```markdown ## Incident Response Procedure Severity Levels: - CRITICAL: Site defacement, data breach - HIGH: Security misconfiguration, XSS vulnerability - MEDIUM: Broken links, accessibility issues - LOW: Cosmetic issues, minor typos Response Times: - CRITICAL: 4 hours - HIGH: 24 hours - MEDIUM: 7 days - LOW: 30 days ``` ## Control Implementation Checklist **For Each Control:** 1. ✅ Control reference documented 2. ✅ Applicability determined (static site context) 3. ✅ Implementation completed 4. ✅ Evidence collected (configs, screenshots) 5. ✅ Testing performed 6. ✅ Documentation updated ## ISMS Documentation **Required Documents:** - ✅ **SECURITY_ARCHITECTURE.md** - Current security design - ✅ **FUTURE_SECURITY_ARCHITECTURE.md** - Planned improvements - ✅ **ARCHITECTURE.md** - System architecture - ✅ **THREAT_MODEL.md** - STRIDE analysis - ✅ **SECURITY.md** - Security policy and reporting **Statement of Applicability (SOA):** - Document all Annex A controls - Justify inclusion/exclusion - Track implementation status ## Compliance Verification ```bash #!/bin/bash # iso27001-static-site-check.sh echo "=== ISO 27001 Compliance Check (Static Site) ===" # A.8.8 - Vulnerability scanning echo "Checking dependencies (A.8.8)..." npm audit if [ $? -eq 0 ]; then echo "✅ PASS"; else echo "❌ FAIL"; fi # A.8.23 - Security headers echo "Checking security headers (A.8.23)..." curl -I https://riksdagsmonitor.com | grep -q "Strict-Transport-Security" if [ $? -eq 0 ]; then echo "✅ PASS: HSTS"; else echo "❌ FAIL: Missing HSTS"; fi # A.8.24 - TLS configuration echo "Checking TLS (A.8.24)..." echo | openssl s_client -connect riksdagsmonitor.com:443 2>&1 | grep -q "TLSv1.3" if [ $? -eq 0 ]; then echo "✅ PASS: TLS 1.3"; else echo "❌ WARN: Check TLS version"; fi # A.8.28 - HTML validation echo "Validating HTML (A.8.28)..." htmlhint index.html if [ $? -eq 0 ]; then echo "✅ PASS"; else echo "❌ FAIL"; fi # A.14.2.8 - Link checking echo "Checking links (A.14.2.8)..." linkinator https://riksdagsmonitor.com/ --recurse --silent if [ $? -eq 0 ]; then echo "✅ PASS"; else echo "❌ FAIL: Broken links"; fi echo "=== Check Complete ===" ``` ## ISMS Policy References - **Information Security Policy**: https://github.com/Hack23/ISMS-PUBLIC/blob/main/policies/information-security-policy.md - **Risk Management Policy**: https://github.com/Hack23/ISMS-PUBLIC/blob/main/policies/risk-management-policy.md - **All Policies**: https://github.com/Hack23/ISMS-PUBLIC/tree/main/policies ## References - **ISO/IEC 27001:2022**: https://www.iso.org/standard/27001 - **ISO/IEC 27002:2022**: https://www.iso.org/standard/75652.html - **SECURITY_ARCHITECTURE.md**: Current security controls - **ARCHITECTURE.md**: System design
View on GitHub