Zum Hauptinhalt springen

Sicherheit und Berechtigungen

Ein über MCP verbundener Assistent handelt als Beas-Benutzer. Was er tun kann, entscheiden drei voneinander unabhängige Prüfstufen, und alle drei müssen einen Vorgang zulassen, bevor er ausgeführt wird. Wer sie in ihrer Reihenfolge versteht, kann den Endpunkt sicher freigeben.

Die drei Prüfstufen​

PrüfstufeFestgelegt durchWirkung
Die KonfigurationEnableWriteTools und EnableODataQueryTool auf dem ServerEin ausgeschaltetes Tool wird niemandem angeboten, unabhängig von seinen Berechtigungen. Dies ist der Schalter für die gesamte Bereitstellung.
Das AuthentifizierungsschemaDie Art, wie sich der Assistent verbunden hatEin Aufrufer mit API-Schlüssel kann nur lesen: Schreib-Tools und das generische OData-Tool weisen ihn ab, bevor die Berechtigungen geprüft werden. Eine Benutzersitzung passiert diese Prüfstufe.
Die Berechtigung des BenutzersDie Beas-Berechtigungen des BenutzersJedes Schreib-Tool verlangt dieselbe Berechtigung Vollzugriff, die der Web Client für die entsprechende Aktion verlangt.

Die Reihenfolge ist wichtig, wenn Sie eine Abweisung untersuchen. Die Konfiguration hat Vorrang vor der Authentifizierung, und die Authentifizierung hat Vorrang vor den Berechtigungen — „der Benutzer ist Administrator" erklärt für sich allein also nichts.

Warum Schreib-Tools den Web Client nicht umgehen können​

Jedes Schreib-Tool ermittelt die Berechtigung des Benutzers über dieselbe Richtlinie, die auch die REST-Controller verwenden. Ein Benutzer, der im Web Client keinen Fertigungsauftrag anlegen kann, kann also auch über einen Assistenten keinen anlegen. Die Prüfstufe ist keine Nachbildung, die davon abweichen könnte: Es ist dieselbe Prüfung, mit demselben Ressourcennamen und derselben erforderlichen Stufe.

ToolErforderliche Berechtigung
work_orders_create, work_orders_updateVollzugriff auf Fertigungsaufträge
production_times_createVollzugriff auf Aktive Auftragszeiten
resource_downtimes_createVollzugriff auf Ressourcen

Der API-Schlüssel​

Der Zugriff per API-Schlüssel verwendet den Wert BeasWebServerKey aus dem Beas-Setup, zusammen mit Headern, die die Unternehmensdatenbank und den Benutzercode angeben, als der gehandelt wird.

vorsicht

Dies ist ein einziger, gemeinsam genutzter, lange gültiger Serverschlüssel, keine Anmeldeinformation, die Sie pro Assistent ausstellen. Wer ihn besitzt, kann die Daten jeder Unternehmensdatenbank lesen, die der Server erreicht, unter jedem Benutzercode, den er angibt; einem einzelnen Nutzer den Zugriff zu entziehen bedeutet, den Schlüssel für alle zu ändern. Belassen Sie ihn auf der Serverseite und verwenden Sie für alles Interaktive bevorzugt eine Benutzersitzung.

Seine einzige strukturelle Schutzmaßnahme ist, dass er nicht schreiben kann: Die Schreib-Tools und beas_odata_query verlangen beide eine Sitzung und sagen das bei einer Abweisung auch deutlich.

Was Fehlermeldungen preisgeben​

Ein Tool, das fehlschlägt, gibt eine Meldung zurück, die so formuliert ist, dass der Assistent darauf reagieren kann. Fachliche Probleme werden vollständig zurückgemeldet — ein Datensatz, der nicht existiert, eine Validierungsregel, ein erforderlicher Änderungsgrund, ein fehlgeschlagener Vorgang —, weil der Assistent oder der Benutzer, der seine Antwort liest, etwas dagegen tun kann. Alles Unerwartete wird als allgemeine Meldung zurückgegeben, dass ein interner Fehler aufgetreten ist; die Einzelheiten gehen stattdessen in das Serverprotokoll. Kein Stacktrace und kein internes Detail erreicht den Client.

Bevor Sie ihn aktivieren​

  1. Entscheiden Sie, ob Schreib-Tools in dieser Bereitstellung überhaupt verfügbar sein sollen. Sie sind standardmäßig eingeschaltet. Schalten Sie sie aus, kann der Endpunkt für alle nur lesen — der richtige Ausgangspunkt für eine erste Einführung.
  2. Entscheiden Sie, ob das generische OData-Abfrage-Tool verfügbar sein soll. Es ist ebenfalls standardmäßig eingeschaltet und erweitert den Lesezugriff auf jede Entität, die die API bereitstellt, weit über die kuratierte Tool-Liste hinaus.
  3. Legen Sie fest, wie sich Assistenten authentifizieren, und belassen Sie den API-Schlüssel auf der Serverseite.
  4. Prüfen Sie, wer Vollzugriff auf Fertigungsaufträge, Aktive Auftragszeiten und Ressourcen hat — die Berechtigungen dieser Benutzer bestimmen jetzt auch, was ein Assistent tun kann, der als einer von ihnen verbunden ist.
  5. Schalten Sie VerifySSL für eine gehärtete Bereitstellung ein. Die Einstellung ist standardmäßig aus, damit ein selbstsigniertes Entwicklungszertifikat den eigenen Loopback-Aufruf des Servers nicht blockiert.

Beispiele​

Eine Einführung nur mit Lesezugriff, die trotzdem die meisten Fragen beantwortet. Lassen Sie Enabled eingeschaltet, schalten Sie EnableWriteTools aus und lassen Sie EnableODataQueryTool eingeschaltet. Der Assistent behält alle 68 Lese-Tools und die generische Abfrage, und weder ein Konfigurationsfehler noch ein Benutzer mit zu weitreichenden Berechtigungen kann Daten ändern, weil die Schreib-Tools gar nicht veröffentlicht werden.

Eine Abweisung nennt eine Berechtigung, die der Benutzer hat. Die Meldung nennt die Ressource und die Stufe, die der Vorgang benötigt. Besitzt der Benutzer diese Stufe tatsächlich, ist er mit dem API-Schlüssel statt mit einer Sitzung verbunden — die Prüfstufe für den reinen Lesezugriff erzeugt eine Abweisung, die Berechtigungen erwähnt, weil sie denselben Meldungsweg nutzt. Verbinden Sie sich erneut mit einer Benutzersitzung.

Verwandte Funktionen​

  • Verbindung — die Konfigurationseinstellungen und die beiden Authentifizierungsschemata.
  • Berechtigungen — wie Beas-Berechtigungen vergeben werden.