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üfstufe | Festgelegt durch | Wirkung |
|---|---|---|
| Die Konfiguration | EnableWriteTools und EnableODataQueryTool auf dem Server | Ein ausgeschaltetes Tool wird niemandem angeboten, unabhängig von seinen Berechtigungen. Dies ist der Schalter für die gesamte Bereitstellung. |
| Das Authentifizierungsschema | Die Art, wie sich der Assistent verbunden hat | Ein 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 Benutzers | Die Beas-Berechtigungen des Benutzers | Jedes 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.
| Tool | Erforderliche Berechtigung |
|---|---|
| work_orders_create, work_orders_update | Vollzugriff auf Fertigungsaufträge |
| production_times_create | Vollzugriff auf Aktive Auftragszeiten |
| resource_downtimes_create | Vollzugriff 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.
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
- 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.
- 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.
- Legen Sie fest, wie sich Assistenten authentifizieren, und belassen Sie den API-Schlüssel auf der Serverseite.
- 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.
- Schalten Sie
VerifySSLfü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.