Quelltext des aktuellen Standes
<?php
$this->layout('layouts/main', [
'page_title' => $page_title,
'current_route' => $current_route,
'full_width' => true,
'extra_css' => ['/assets/css/isms.css?v=' . filemtime(dirname(__DIR__, 2) . '/public/assets/css/isms.css')],
]);
use OpenNIT\Isms\IsmsManager;
$canManage = $can_manage ?? false;
$view = $this;
?>
<div class="ism-wrap">
<div class="content-header">
<div>
<h1><?= $this->te('ISMS – Anleitung') ?></h1>
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/"><?= $this->te('Home') ?></a></li>
<li class="breadcrumb-item"><a href="/isms">ISMS</a></li>
<li class="breadcrumb-item active"><?= $this->te('Anleitung') ?></li>
</ol>
</div>
</div>
<div class="page-body ism-guide">
<div class="subnav">
<a href="/isms" class="subnav-tab"><?= $this->te('Risikoregister') ?></a>
<a href="/isms/controls" class="subnav-tab"><?= $this->te('Statement of Applicability (Annex A)') ?></a>
<a href="/isms/reviews" class="subnav-tab"><?= $this->te('Management-Review') ?></a>
<a href="/isms/guide" class="subnav-tab active"><?= $this->te('Anleitung') ?></a>
</div>
<!-- Einführung -->
<div class="detail-card">
<div class="detail-card-header"><h2 class="detail-card-title"><?= $this->te('Worum geht es?') ?></h2></div>
<div class="detail-card-body">
<p><?= $this->t('Das Modul <strong>Informationssicherheit (ISMS)</strong> bildet ein Informationssicherheits-Managementsystem nach <strong>ISO/IEC 27001:2022</strong> ab. Es hilft, Risiken für eure Informationswerte strukturiert zu erfassen, zu bewerten, zu behandeln und gegenüber Auditoren nachzuweisen. Zwei Bausteine arbeiten zusammen:') ?></p>
<ul>
<li><?= $this->t('<strong>Risikoregister</strong> – alle erkannten Risiken mit Bewertung, Behandlung und Maßnahmen.') ?></li>
<li><?= $this->t('<strong>Statement of Applicability (SoA)</strong> – alle 93 Annex-A-Controls mit Angabe, ob sie anwendbar sind, wie sie umgesetzt werden und wer dafür verantwortlich ist.') ?></li>
</ul>
<p class="ism-muted"><?= $this->t('Alle Änderungen werden revisionssicher im Audit-Log protokolliert (<a href="/admin/audit" class="table-link">Administration → Audit</a>).') ?></p>
</div>
</div>
<!-- Schritt-für-Schritt -->
<div class="detail-card">
<div class="detail-card-header"><h2 class="detail-card-title"><?= $this->te('In 6 Schritten befüllen') ?></h2></div>
<div class="detail-card-body">
<ol class="ism-steps">
<li>
<?= $this->t('<strong>SoA durchgehen</strong> – Öffnet das <a href="/isms/controls" class="table-link">Statement of Applicability</a> und entscheidet je Control, ob es <em>anwendbar</em> ist. Nicht anwendbare Controls bekommen eine kurze Begründung (Pflicht für das Audit). Setzt für anwendbare Controls den Umsetzungsstatus und eine verantwortliche Person.') ?>
</li>
<li>
<?= $this->t('<strong>Werte/Assets klären</strong> – Überlegt, welche Informationswerte schützenswert sind (Server, Anwendungen, Daten, Dienstleister). Geräte pflegt ihr im <a href="/inventory" class="table-link">Inventar</a>; ein Risiko lässt sich später direkt damit verknüpfen.') ?>
</li>
<li>
<?= $this->t('<strong>Risiken erfassen</strong> – Legt im <a href="/isms" class="table-link">Risikoregister</a> je Bedrohung/Schwachstelle ein Risiko an. Verknüpft das betroffene Asset (Suche) und gebt einen Risiko-Owner an.') ?>
</li>
<li>
<?= $this->t('<strong>Bewerten</strong> – Schätzt <em>Eintrittswahrscheinlichkeit</em> und <em>Schadenshöhe</em> (je 1–5). Das Modul berechnet Score und Risikostufe automatisch (siehe Skala unten).') ?>
</li>
<li>
<?= $this->t('<strong>Behandeln & Maßnahmen planen</strong> – Wählt eine Behandlungsoption und legt Maßnahmen an. Jede Maßnahme könnt ihr per Klick als <strong>Todo</strong> oder <strong>Ticket</strong> ausspielen – der Abschluss fließt automatisch zurück. Nach Umsetzung tragt ihr das <em>Restrisiko</em> nach.') ?>
</li>
<li>
<?= $this->t('<strong>Wiedervorlage & Nachweis</strong> – Setzt ein Wiedervorlage-Datum für die nächste Neubewertung. Für das Audit exportiert ihr Register und SoA als CSV bzw. den Bericht als PDF (Buttons oben rechts).') ?>
</li>
</ol>
</div>
</div>
<!-- Bewertungsskala -->
<div class="ism-detail-grid">
<div>
<div class="detail-card">
<div class="detail-card-header"><h2 class="detail-card-title"><?= $this->te('Bewertungsskala (5×5)') ?></h2></div>
<div class="detail-card-body">
<p><?= $this->t('<strong>Risiko-Score = Eintrittswahrscheinlichkeit × Schadenshöhe</strong> (1–25). Daraus ergibt sich die Stufe:') ?></p>
<ul class="ism-legend" style="justify-content:flex-start;">
<li><span class="status-pill status-pill--success"><?= $this->te('Gering · 1–4') ?></span></li>
<li><span class="status-pill status-pill--warning"><?= $this->te('Mittel · 5–9') ?></span></li>
<li><span class="status-pill status-pill--orange"><?= $this->te('Hoch · 10–15') ?></span></li>
<li><span class="status-pill status-pill--danger"><?= $this->te('Sehr hoch · 16–25') ?></span></li>
</ul>
<dl class="ism-kv">
<dt><?= $this->te('Eintrittswahrscheinlichkeit (1–5)') ?></dt>
<dd><?php $p = []; foreach (IsmsManager::LIKELIHOOD_LABELS as $n => $lbl) { $p[] = $n . ' = ' . $view->e($lbl); } echo implode(' · ', $p); ?></dd>
<dt><?= $this->te('Schadenshöhe (1–5)') ?></dt>
<dd><?php $p = []; foreach (IsmsManager::IMPACT_LABELS as $n => $lbl) { $p[] = $n . ' = ' . $view->e($lbl); } echo implode(' · ', $p); ?></dd>
</dl>
<p class="ism-muted"><?= $this->t('Tipp: Bewertet zuerst das <em>inhärente</em> Risiko (ohne Maßnahmen) und nach der Umsetzung das <em>Restrisiko</em>. Beide stehen nebeneinander im Risiko.') ?></p>
</div>
</div>
</div>
<div>
<div class="detail-card">
<div class="detail-card-header"><h2 class="detail-card-title"><?= $this->te('Begriffe') ?></h2></div>
<div class="detail-card-body">
<dl class="ism-kv">
<dt><?= $this->te('Behandlungsoptionen') ?></dt>
<dd><?= implode(' · ', array_map([$view, 'e'], IsmsManager::TREATMENTS)) ?>
<span class="ism-muted"><?= $this->te('(z. B. übertragen per Versicherung)') ?></span></dd>
<dt><?= $this->te('Risiko-Status') ?></dt>
<dd><?php foreach (IsmsManager::RISK_STATUS as $lbl) { echo '<span class="status-pill status-pill--neutral">' . $view->e($lbl) . '</span> '; } ?></dd>
<dt><?= $this->te('Maßnahmen-Status') ?></dt>
<dd><?= implode(' · ', array_map([$view, 'e'], IsmsManager::ACTION_STATUS)) ?></dd>
<dt><?= $this->te('Annex-A-Themen') ?></dt>
<dd><?= implode(' · ', array_map([$view, 'e'], IsmsManager::THEMES)) ?></dd>
<dt><?= $this->te('Control-Status (SoA)') ?></dt>
<dd><?= implode(' · ', array_map([$view, 'e'], IsmsManager::CONTROL_STATUS)) ?></dd>
</dl>
</div>
</div>
</div>
</div>
<!-- Automatisierungen -->
<div class="detail-card">
<div class="detail-card-header"><h2 class="detail-card-title"><?= $this->te('Was das Modul automatisch erledigt') ?></h2></div>
<div class="detail-card-body">
<ul class="ism-cols">
<li><?= $this->t('<strong>Score & Stufe</strong> werden aus eurer Bewertung automatisch berechnet – inkl. Heatmap auf dem Dashboard.') ?></li>
<li><?= $this->t('<strong>Auto-Wiedervorlage:</strong> Fehlt ein Wiedervorlage-Datum, wird es anhand der Risikostufe gesetzt (hoch/sehr hoch = 3, mittel = 6, gering = 12 Monate).') ?></li>
<li><?= $this->t('<strong>Maßnahmen-Synchronisation:</strong> Wird ein verknüpftes Todo erledigt oder ein Ticket gelöst/geschlossen, gilt die Maßnahme automatisch als erledigt.') ?></li>
<li><?= $this->t('<strong>Wiedervorlage-Erinnerung:</strong> Ein täglicher Hintergrund-Task benachrichtigt Risiko-Owner über fällige Neubewertungen.') ?></li>
<li><?= $this->t('<strong>Risiko-Vorschläge aus CVEs:</strong> Neue kritische/hohe CVE-Meldungen eurer Watchlist werden automatisch als Entwurfs-Risiken angelegt und verknüpft – ihr müsst sie nur prüfen und bewerten.') ?></li>
<li><?= $this->t('<strong>Gesundheitscheck:</strong> Ein wöchentlicher Task meldet unvollständige Risiken (ohne Owner, Wiedervorlage oder Maßnahme).') ?></li>
<li><?= $this->t('<strong>SoA-Ableitung:</strong> Ein Annex-A-Control wird automatisch auf „umgesetzt" gesetzt, wenn alle verknüpften Risiken behandelt sind.') ?></li>
<li><?= $this->t('<strong>Monatsbericht:</strong> Einmal im Monat erhalten die ISMS-Verantwortlichen eine Zusammenfassung der Risikolage.') ?></li>
<li><?= $this->t('<strong>Inventar- und CVE-Anbindung:</strong> Risiken lassen sich mit Assets und konkreten CVE-Meldungen verknüpfen – Schweregrad und CVSS erscheinen direkt am Risiko.') ?></li>
<li><?= $this->t('<strong>Import & Export:</strong> Risiken per CSV importieren; Register und SoA als CSV, Gesamtbericht als PDF exportieren.') ?></li>
<li><?= $this->t('<strong>Risiko-Trend:</strong> Ein täglicher Snapshot zeigt die Entwicklung (gesamt, hoch/sehr hoch, akzeptiert) als Diagramm im Register.') ?></li>
<li><?= $this->t('<strong>Risikoakzeptanz:</strong> Akzeptierte (Rest-)Risiken werden mit Freigeber, Zeitpunkt und Begründung dokumentiert (Vier-Augen-Nachweis).') ?></li>
<li><?= $this->t('<strong>Management-Review:</strong> Eigener Bereich für die periodische ISMS-Bewertung durch die Leitung (ISO 27001, 9.3).') ?></li>
<li><?= $this->t('<strong>Verknüpfungen:</strong> Risiken lassen sich mit Verträgen (z. B. Versicherung bei „Übertragen") und Controls mit Richtlinien-Seiten verbinden.') ?></li>
</ul>
<p class="ism-muted"><?= $this->t('Alle Hintergrund-Tasks lassen sich unter <a href="/admin/cronjobs" class="table-link">Administration → Cronjobs</a> aktivieren, takten und manuell auslösen.') ?></p>
</div>
</div>
</div>
</div>