Was sind Klassenberechtigungen (CLP)?

Aktualisiert: September 2026

Eine Klassenberechtigung ist eine Regel im Klassenschema, die steuert, welche Nutzer oder Rollen jede Operation dieser Klasse überhaupt ausführen dürfen. Sie ist das äußerste Tor der Sicherheit in der Datenschicht: Bevor irgendeine Prüfung pro Zeile stattfindet, entscheidet die Klasse selbst, ob dieser Aufrufer hier suchen, anlegen, ändern oder löschen darf – eine Regel, die ganze Tabelle, zuerst geprüft.

Das Wichtigste in Kürze

FrageAntwort
Was es istZugriffsregeln pro Operation auf der Klasse (Tabelle) selbst
vs. ACLsCLP kontrolliert die Klasse; ACLs kontrollieren jede Zeile – beides muss passiert werden
Die OperationenFind, get, count, create, update, delete, add field – jede einzeln gesetzt
Die goldenen StandardsAuthentifizierung verlangen, add field sperren, den Master Key nie ausliefern
SQL-VerwandterGRANT/REVOKE auf Tabellen und Schemas – gleiche Idee, andere Syntax

Das Klassentor, deklariert und erlebt

Eine CLP ist Schemakonfiguration – hier als REST-Payload, das eine Klasse Config auf öffentliches Lesen und serverseitiges Schreiben festlegt:

PUT /schemas/Config
{
  "classLevelPermissions": {
    "find":   { "*": true },              // jeder darf abfragen
    "get":    { "*": true },
    "create": {},                         // niemand von der Client-Seite
    "update": { "role:admin": true },     // nur Admins
    "delete": {},
    "addField": {}                        // Schema eingefroren
  }
}

Was Clients erleben, ist das Tor bei der Arbeit – Lesezugriffe laufen durch, Schreibzugriffe sterben an der Klassengrenze, bevor auch nur ein Datum angefasst wird:

// JavaScript / Node.js — Back4app JS SDK
// The class gate in action: Config is read-only for clients (CLP),
// so reads succeed and writes never reach the data
const config = await new Parse.Query('Config').first(); // ✓ public read

const c = new Parse.Object('Config');
c.set('flag', true);
try {
  await c.save(); // ✗ CLP blocks client writes to this class entirely
} catch (e) {
  console.log(e.code); // 119: operation forbidden by class-level permissions
}

Wie Klassenberechtigungen und ACLs zusammenwirken

Wie Klassenberechtigungen und ACLs zusammenwirkenJede Anfrage passiert zuerst das Tor der Klassenberechtigungen für ihre Operation; nur wenn die Klasse sie zulässt, wird die ACL des Objekts herangezogen, und jedes der beiden Tore kann die Anfrage ablehnen.

nein

ja

nein

ja

Anfrage:
Objekt X in Klasse C ändern

Klassentor (CLP):
darf dieser Aufrufer
Klasse C ändern?

Abgelehnt – 119

Objekttor (ACL):
darf dieser Aufrufer
Objekt X schreiben?

Abgelehnt – Objekt verborgen

Erlaubt

Jede Anfrage passiert zuerst das Tor der Klassenberechtigungen für ihre Operation; nur wenn die Klasse sie zulässt, wird die ACL des Objekts herangezogen, und jedes der beiden Tore kann die Anfrage ablehnen.

Die Granularitätsleiter: CLP vs. ACL vs. Pointer Permissions vs. geschützte Felder

MechanismusReichweiteDeklariert woGeprüftTypische Aufgabe
KlassenberechtigungGanze Klasse, pro OperationSchemaZuerst”Clients schreiben nie in Config”
Pointer PermissionPro Objekt, über eine SchemaregelSchema (an ein Feld gebunden)Danach”Nur der owner fasst seine Zeilen an”
ACLPro ObjektAuf jeder Zeile, als DatenDanach”Diese Notiz: nur ihr Autor”
Geschützte FelderPro SpalteSchemaBeim Lesen”email vor anderen Nutzern verbergen”

Daraus folgt die Entwurfsregel: grobe Linien im Schema, feines Korn in den Zeilen. Klassen mit einheitlicher Zugriffsregel (Konfiguration, Kataloge, Logs) brauchen nur das Klassentor; Klassen mit Daten pro Nutzer ergänzen darunter ACLs oder Pointer Permissions.

Dasselbe Tor in anderen Engines

-- PostgreSQL: Tabellenprivilegien sind CLPs unter anderem Namen
GRANT SELECT ON films TO PUBLIC;
GRANT INSERT, UPDATE ON films TO role_editor;
REVOKE ALL ON launch_codes FROM PUBLIC;

Dokumentdatenbanken bilden es mit Rollen ab, die auf Aktionen einer Collection beschränkt sind – eine Rolle mit find und insert auf genau einer Collection. Das Konzept ist universell; was sich unterscheidet, ist die Ergonomie: SQL-GRANTs und Rollendokumente werden im Code verwaltet, während BaaS-Plattformen dieselbe Matrix als Schalter im Dashboard anbieten.

Empfohlene Einstellungen nach Inhaltstyp

InhaltstypFind/GetCreateUpdate/DeleteAdd field
Öffentliche Inhalte (Katalog, Beiträge)ÖffentlichRollen/ServerRollen/ServerAus
Nutzereigene Daten (Notizen, Bestellungen)Authentifiziert + ACLsAuthentifiziertPer ACL begrenztAus
Konfiguration und FlagsÖffentlich oder authentifiziertNiemand (nur Server)Admin-RolleAus
Logs und AnalyticsNiemand (nur Server)Authentifiziert (nur schreiben)NiemandAus
Nur für AdminsAdmin-RolleAdmin-RolleAdmin-RolleAus

Diese Tabelle ist die Checkliste, die die meisten Markteinführungen tatsächlich brauchen – beachten Sie die Konstante in der letzten Spalte und ihre Schwesterregel: clientseitige Klassenerstellung in Produktion aus, damit sich das Schema nur absichtlich ändert.

Typische Anwendungsfälle

  • Produktionsschemas einfrieren. Add field überall aus; Klassen tauchen nicht mehr durch Client-Verkehr auf und verändern sich nicht mehr dadurch.
  • Referenzdaten nur zum Lesen. Kataloge und Einstellungen öffentlich lesbar, beschreibbar nur durch Servercode – das Config-Muster von oben.
  • Postfächer nur zum Schreiben. Klassen für Feedback und Telemetrie, in die Clients anlegen, aber niemals lesen dürfen – das umgekehrte Tor, das Code in der Anwendungsschicht gern vergisst.
  • Adminbereiche nach Rollenstufen. Update und delete einer Admin-Rolle vorbehalten, während die App frei liest.
  • Abwehr des klassischen Datenabzugs. Der berüchtigte Einzeiler – ein curl mit einer App-ID gegen eine offene User-Klasse – stirbt am find-Tor, sobald die Klasse Authentifizierung verlangt.

Klassentor oder Servercode? Eine Entscheidungsmatrix

Mit CLPs (+ ACLs) durchsetzen, wenn …Über Servercode leiten, wenn …
Die Regel lautet “wer darf was, wo”Die Regel Geschäftslogik braucht (“nur vor dem Versand der Bestellung”)
Sie pro Klasse oder pro Eigentümer einheitlich istSie mehrere Objekte oder Klassen umspannt
Sie auf jedem Pfad gelten soll, auch für neue ClientsSie einen geprüften Engpass für einen sensiblen Ablauf wollen
Deklarativ bei der Durchsicht besser ist als imperativValidierung, Anreicherung oder Seiteneffekte mitlaufen
Der Schalter im Dashboard die ganze Spezifikation istDie Spezifikation ein Absatz voller Bedingungen ist

Beides ergänzt sich: Das gehärtete Muster für wirklich sensible Klassen sperrt die CLPs vollständig und stellt serverseitige Funktionen als einzige Tür bereit – das Klassentor garantiert, dass niemand um den Engpass herumläuft.

Grenzen und Trade-offs

  • Klassengranularität ist per Definition grob. Alles pro Zeile gehört zu ACLs und Pointer Permissions; alles Bedingte gehört in serverseitige Validierung – CLPs kontrollieren, sie schlussfolgern nicht.
  • Die Standardwerte sind für die Entwicklung großzügig. Neue Klassen kommen offen zur Welt, damit Prototypen schnell entstehen; der Durchgang vor dem Start, der die obige Tabelle umsetzt, ist Disziplin, kein Automatismus.
  • Der Master Key ignoriert alles. Jedes Tor in diesem Artikel ist wirkungslos, wo dieser Schlüssel hinkommt – deshalb lebt er ausschließlich serverseitig, wird pro Operation eingesetzt und niemals ausgeliefert.
  • Die Durchsetzungsfläche muss vollständig sein. Echtzeit-Abonnements und Spezial-Endpoints hatten in der Vergangenheit Lücken in der Durchsetzung – halten Sie die Plattform aktuell und testen Sie die Tore von einem echten Client aus, nicht nur aus dem Dashboard.
  • Auch Schalter brauchen eine Durchsicht. Deklarative Sicherheit ist nur dann prüfbare Sicherheit, wenn jemand sie prüft – die Einstellungsmatrix gehört in Ihre Startcheckliste, nicht in mündlich überliefertes Wissen.

Klassenberechtigungen mit Back4app

Back4app ist eine Open-Source-Plattform für Backend as a Service (BaaS), die eine verwaltete Datenbank, automatisch generierte REST- und GraphQL-APIs, Authentifizierung, Dateispeicher und Serverless-Funktionen mit Cloud Code kombiniert. Klassenberechtigungen sind die sichtbar gemachte Oberfläche ihrer Schema-Sicherheit: Jede Klasse im Dashboard trägt die Operationsmatrix als Häkchen – öffentlich, requiresAuthentication, pro Rolle – dazu Pointer Permissions und geschützte Felder, serverseitig bei jeder Anfrage durchgesetzt, über SDKs, REST und GraphQL gleichermaßen. Darunter sitzen die ACLs pro Objekt, darüber Cloud-Code-Trigger für die Regeln, die Logik brauchen. Die Sicherheitsrichtlinien führen durch den vollständigen Durchgang vor dem Start – die Einstellungsmatrix aus diesem Artikel, Klick für Klick angewendet.

Häufige Fragen

Was sind Klassenberechtigungen?

Regeln am Schema einer Klasse (Tabelle/Collection), die steuern, welche Nutzer oder Rollen jede Operation – find, get, count, create, update, delete, add field – auf einem beliebigen Objekt dieser Klasse ausführen dürfen. Sie sind das gröbste Zugriffstor und das erste, das geprüft wird: Verweigert die Klassenregel eine Operation, wird nie eine Berechtigung pro Objekt herangezogen.

Was ist der Unterschied zwischen CLP und ACL?

Reichweite und Reihenfolge. Eine CLP beantwortet "wer darf diese Klasse überhaupt anfassen" – eine Regel für die ganze Tabelle. Eine ACL beantwortet "wer darf genau diese Zeile anfassen" – Daten, die jedes Objekt selbst trägt. Eine Anfrage muss beide Tore passieren: zuerst das Klassentor, dann das Objekttor, und jedes kann ablehnen. Grobe Linien auf Klassenebene, feines Korn auf Objektebene.

Was ist requiresAuthentication?

Die mittlere Einstellung zwischen öffentlich und namentlich genannten Rollen: Sie beschränkt eine Operation auf jeden angemeldeten Nutzer mit gültiger Session, ohne bestimmte Nutzer oder Rollen zu benennen. Für die meisten Anwendungsdaten ist das der richtige Standard – anonyme Anfragen werden abgewiesen, während jeder authentifizierte Nutzer das Klassentor passiert und zu den ACL-Prüfungen pro Objekt weitergeht.

Was sind Pointer Permissions?

Regeln auf Klassenebene, die an ein Pointer-Feld auf einen Nutzer im Objekt gebunden sind – zum Beispiel "nur der Nutzer im Feld owner darf lesen oder schreiben". Sie wirken wie eine virtuelle ACL: Die Durchsetzung erfolgt pro Objekt, die Regel wird aber einmal im Schema deklariert statt auf jeder Zeile gespeichert. Sie überschneiden sich mit echten ACLs; beide müssen die Aktion erlauben.

Was sind geschützte Felder (protected fields)?

Regeln auf Feldebene, gelegt über das Klassentor: Bestimmte Spalten – eine E-Mail-Adresse, eine interne Bewertung – bleiben für manche Anfragenden verborgen, während der Rest des Objekts lesbar bleibt. Sie machen aus der Berechtigungsleiter drei Sprossen an einem Schema: Operationen für die ganze Klasse, Zugriff pro Objekt und Sichtbarkeit pro Feld.

Was ist das SQL-Äquivalent von Klassenberechtigungen?

Tabellen- und Schema-Privilegien: GRANT SELECT, INSERT, UPDATE, DELETE ON eine Tabelle an eine Rolle, REVOKE zum Entziehen, dazu die Rechte USAGE und CREATE auf Schemaebene. Das Konzept lässt sich eins zu eins übertragen – ein GRANT auf Tabellenebene ist eine Klassenberechtigung mit anderer Syntax – und Dokumentdatenbanken bilden es mit Rollen ab, die auf Aktionen einer Collection beschränkt sind.

Sollten Clients in Produktion Felder hinzufügen oder Klassen anlegen dürfen?

Nein – das ist der Härtungsschritt, über den Einigkeit herrscht. Schema-Flexibilität ist eine Entwicklungsbequemlichkeit; in Produktion deaktivieren Sie die Berechtigung "add field" auf jeder Klasse und schalten die Klassenerstellung durch Clients vollständig ab, womit das Schema gegenüber Clients eingefroren ist. Schemaänderungen laufen dann über das Dashboard oder serverseitigen Code, wo sie hingehören.

Reichen Klassenberechtigungen aus, um eine App abzusichern?

Sie sind die erste Schicht, nicht die ganze Verteidigung. Der übliche Stack: CLPs kontrollieren Operationen pro Klasse, ACLs oder Pointer Permissions grenzen Zeilen ein, geschützte Felder verbergen sensible Spalten, und serverseitige Trigger validieren Schreibzugriffe. Und eine Regel über allen: Der Master Key – der jedes Tor umgeht – landet niemals im Client-Code.

Verwandte Begriffe

Vergleichen mit

Weiterführende Quellen

Bereit, Ihr Backend zu bauen?

Starten Sie Ihr Projekt auf Back4app in wenigen Minuten — Datenbank, Authentifizierung, APIs und Cloud Code inklusive. Keine Kreditkarte erforderlich.

Geschrieben und geprüft von Back4app Engineering, Back4app Engineering · Veröffentlicht am 2026-09-24