Split loader.ts (3163 LOC) into categories/ subdir (8 files, each <500 LOC): - access.ts (ACCESS_CONTROL + ADMISSION_CONTROL + ACCESS_AUTHORIZATION) - transfer-input.ts (TRANSFER_CONTROL + INPUT_CONTROL) - order-availability.ts (ORDER_CONTROL + AVAILABILITY) - separation-encryption.ts (SEPARATION incl. DL-* + ENCRYPTION) - pseudonymization.ts (PSEUDONYMIZATION) - resilience-recovery.ts (RESILIENCE + RECOVERY) - review.ts (REVIEW + training/TR-* controls) - category-map.ts (category metadata Map) Split controls-library.ts (943 LOC) into domain files: - transfer-audit.ts (TRANSFER + AUDIT) - deletion-incident.ts (DELETION + INCIDENT) - subprocessor-tom.ts (SUBPROCESSOR + TOM) - contract-data-subject.ts (CONTRACT + DATA_SUBJECT) - security-governance.ts (SECURITY + GOVERNANCE) Both barrel files preserved their full public API. No consumer imports changed. Zero new TypeScript errors introduced (305 pre-existing errors unchanged). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
222 lines
6.5 KiB
TypeScript
222 lines
6.5 KiB
TypeScript
/**
|
|
* Subprocessor and TOM Controls
|
|
* Domains: SUBPROCESSOR, TOM
|
|
*/
|
|
|
|
import { Control } from '../types'
|
|
|
|
export const SUBPROCESSOR_CONTROLS: Control[] = [
|
|
{
|
|
id: 'VND-SUB-01',
|
|
domain: 'SUBPROCESSOR',
|
|
title: {
|
|
de: 'Genehmigungspflicht für Unterauftragnehmer',
|
|
en: 'Approval requirement for sub-processors',
|
|
},
|
|
description: {
|
|
de: 'Einsatz von Unterauftragnehmern nur mit Genehmigung',
|
|
en: 'Use of sub-processors only with approval',
|
|
},
|
|
passCriteria: {
|
|
de: 'Genehmigungserfordernis (spezifisch oder allgemein mit Widerspruchsrecht) vereinbart',
|
|
en: 'Approval requirement (specific or general with objection right) agreed',
|
|
},
|
|
requirements: ['Art. 28 Abs. 2, 4 DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-SUB-02',
|
|
domain: 'SUBPROCESSOR',
|
|
title: {
|
|
de: 'Aktuelle Unterauftragnehmer-Liste',
|
|
en: 'Current sub-processor list',
|
|
},
|
|
description: {
|
|
de: 'Vollständige und aktuelle Liste aller Unterauftragnehmer',
|
|
en: 'Complete and current list of all sub-processors',
|
|
},
|
|
passCriteria: {
|
|
de: 'Liste liegt vor mit Name, Sitz, Verarbeitungszweck',
|
|
en: 'List available with name, location, processing purpose',
|
|
},
|
|
requirements: ['Art. 28 Abs. 2 DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'QUARTERLY',
|
|
},
|
|
{
|
|
id: 'VND-SUB-03',
|
|
domain: 'SUBPROCESSOR',
|
|
title: {
|
|
de: 'Informationspflicht bei Änderungen',
|
|
en: 'Notification obligation for changes',
|
|
},
|
|
description: {
|
|
de: 'Information über neue oder geänderte Unterauftragnehmer',
|
|
en: 'Information about new or changed sub-processors',
|
|
},
|
|
passCriteria: {
|
|
de: 'Vorabinformation vereinbart, ausreichende Frist für Widerspruch',
|
|
en: 'Advance notification agreed, sufficient time for objection',
|
|
},
|
|
requirements: ['Art. 28 Abs. 2 DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-SUB-04',
|
|
domain: 'SUBPROCESSOR',
|
|
title: {
|
|
de: 'Weitergabe der Datenschutzpflichten',
|
|
en: 'Transfer of data protection obligations',
|
|
},
|
|
description: {
|
|
de: 'Datenschutzpflichten werden an Unterauftragnehmer weitergegeben',
|
|
en: 'Data protection obligations are transferred to sub-processors',
|
|
},
|
|
passCriteria: {
|
|
de: 'Vertraglich vereinbart, dass Unterauftragnehmer gleichen Pflichten unterliegen',
|
|
en: 'Contractually agreed that sub-processors are subject to same obligations',
|
|
},
|
|
requirements: ['Art. 28 Abs. 4 DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-SUB-05',
|
|
domain: 'SUBPROCESSOR',
|
|
title: {
|
|
de: 'Haftung für Unterauftragnehmer',
|
|
en: 'Liability for sub-processors',
|
|
},
|
|
description: {
|
|
de: 'Klare Haftungsregelung für Unterauftragnehmer',
|
|
en: 'Clear liability provision for sub-processors',
|
|
},
|
|
passCriteria: {
|
|
de: 'Auftragsverarbeiter haftet für Unterauftragnehmer wie für eigenes Handeln',
|
|
en: 'Processor is liable for sub-processors as for own actions',
|
|
},
|
|
requirements: ['Art. 28 Abs. 4 DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
]
|
|
|
|
export const TOM_CONTROLS: Control[] = [
|
|
{
|
|
id: 'VND-TOM-01',
|
|
domain: 'TOM',
|
|
title: {
|
|
de: 'TOM-Dokumentation vorhanden',
|
|
en: 'TOM documentation available',
|
|
},
|
|
description: {
|
|
de: 'Vollständige Dokumentation der technischen und organisatorischen Maßnahmen',
|
|
en: 'Complete documentation of technical and organizational measures',
|
|
},
|
|
passCriteria: {
|
|
de: 'TOM-Anlage vorhanden, aktuell, spezifisch für die Verarbeitung',
|
|
en: 'TOM annex available, current, specific to the processing',
|
|
},
|
|
requirements: ['Art. 28 Abs. 3 lit. c DSGVO', 'Art. 32 DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-TOM-02',
|
|
domain: 'TOM',
|
|
title: {
|
|
de: 'Verschlüsselung',
|
|
en: 'Encryption',
|
|
},
|
|
description: {
|
|
de: 'Angemessene Verschlüsselung für Daten in Transit und at Rest',
|
|
en: 'Appropriate encryption for data in transit and at rest',
|
|
},
|
|
passCriteria: {
|
|
de: 'TLS 1.2+ für Transit, AES-256 für at Rest',
|
|
en: 'TLS 1.2+ for transit, AES-256 for at rest',
|
|
},
|
|
requirements: ['Art. 32 Abs. 1 lit. a DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-TOM-03',
|
|
domain: 'TOM',
|
|
title: {
|
|
de: 'Zugriffskontrolle',
|
|
en: 'Access control',
|
|
},
|
|
description: {
|
|
de: 'Angemessene Zugriffskontrollmechanismen',
|
|
en: 'Appropriate access control mechanisms',
|
|
},
|
|
passCriteria: {
|
|
de: 'Rollenbasierte Zugriffskontrolle, Least Privilege, Logging',
|
|
en: 'Role-based access control, least privilege, logging',
|
|
},
|
|
requirements: ['Art. 32 Abs. 1 lit. b DSGVO', 'ISO 27001 A.9'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-TOM-04',
|
|
domain: 'TOM',
|
|
title: {
|
|
de: 'Verfügbarkeit und Wiederherstellung',
|
|
en: 'Availability and recovery',
|
|
},
|
|
description: {
|
|
de: 'Maßnahmen zur Sicherstellung der Verfügbarkeit und Wiederherstellung',
|
|
en: 'Measures to ensure availability and recovery',
|
|
},
|
|
passCriteria: {
|
|
de: 'Backup-Konzept, DR-Plan, RTO/RPO definiert',
|
|
en: 'Backup concept, DR plan, RTO/RPO defined',
|
|
},
|
|
requirements: ['Art. 32 Abs. 1 lit. b, c DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-TOM-05',
|
|
domain: 'TOM',
|
|
title: {
|
|
de: 'Regelmäßige TOM-Überprüfung',
|
|
en: 'Regular TOM review',
|
|
},
|
|
description: {
|
|
de: 'Regelmäßige Überprüfung und Aktualisierung der TOM',
|
|
en: 'Regular review and update of TOM',
|
|
},
|
|
passCriteria: {
|
|
de: 'TOM werden mindestens jährlich überprüft und bei Bedarf aktualisiert',
|
|
en: 'TOM are reviewed at least annually and updated as needed',
|
|
},
|
|
requirements: ['Art. 32 Abs. 1 lit. d DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-TOM-06',
|
|
domain: 'TOM',
|
|
title: {
|
|
de: 'Penetrationstest',
|
|
en: 'Penetration testing',
|
|
},
|
|
description: {
|
|
de: 'Regelmäßige Penetrationstests der relevanten Systeme',
|
|
en: 'Regular penetration testing of relevant systems',
|
|
},
|
|
passCriteria: {
|
|
de: 'Jährlicher Pentest, kritische Findings behoben',
|
|
en: 'Annual pentest, critical findings resolved',
|
|
},
|
|
requirements: ['ISO 27001 A.12.6.1'],
|
|
isRequired: false,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
]
|