Tausende von Nutzer-API-Anfragen und Invalidierung

Mir ist gerade aufgefallen, dass ich seit April dieses Jahres Tausende von Benutzer-API-Anfragen pro Tag in den Sicherheitsberichten des Dashboards sehe.

Das ist sehr seltsam und weicht um den Faktor 100 bis 1000 von meinen Erwartungen ab.

Wie erhalte ich detailliertere Berichte darüber, welche Benutzer Schlüssel anfordern und welche Benutzer wie viele und welche API-Anfragen stellen? Wenn ein Schlüssel Lese-/Schreibzugriff hat, gehe ich davon aus, dass jemand remote Themen/Beiträge lesen und schreiben kann. Könnte es sich um eine Remote-Site handeln, die Beiträge abkratzt?

Gibt es auch eine Möglichkeit, alle Benutzer-API-Schlüssel global zu invalidieren/ablaufen zu lassen?

1 „Gefällt mir“

Nur zur Bestätigung: Sie fragen nach Benutzer-API-Anfragen und nicht nach API-Anfragen, die mit einem API-Schlüssel ausgeführt wurden, den Sie für Benutzer auf der Seite Admin / API Ihrer Discourse-Site generiert haben. Benutzer-API-Anfragen werden in der folgenden Abbildung in Grün hervorgehoben:

Details darüber, wofür Benutzer-API-Schlüssel verwendet werden, finden Sie hier: User API keys specification.

Sofern Sie keine App erstellt haben, die sich in Ihre Discourse-Site integriert, sind die wahrscheinlichsten Erklärungen entweder, dass sich Benutzer über die DiscourseHub-App (https://play.google.com/store/apps/details?id=com.discourse&hl=en&gl=US&pli=1) bei der Site anmelden oder dass sie eine App wie Fig - Native Discourse client for iOS verwenden, um mit der Site zu interagieren.

Dies beantwortet nicht alle Ihre Fragen, aber Sie können einen allgemeinen Überblick darüber erhalten, wie die Benutzer-API-Schlüssel verwendet werden, mit der folgenden Data Explorer-Abfrage:

SELECT * FROM user_api_keys

Um eine Liste der Anwendungen zu erhalten, die Benutzer-API-Schlüssel-Anfragen an Ihre Site senden, und eine Zählung der Benutzer, die Anfragen mit jeder Anwendung stellen:

SELECT
application_name,
COUNT(application_name) AS user_count
FROM user_api_keys
GROUP BY application_name

Benutzer-API-Schlüssel, die zum Verbinden von der DiscourseHub-App verwendet werden, haben ihren application_name auf “Discourse - unknown” gesetzt.

Wenn ein Benutzer einen Benutzer-API-Schlüssel verwendet, um mit der Site zu interagieren, wird der Sicherheitseintrag auf der Einstellungsseite des Benutzers hinzugefügt:

Der Eintrag zeigt die der App erteilten Berechtigungen an. Er ermöglicht Ihnen auch, den Zugriff auf die App zu widerrufen.

Ich sehe keine Möglichkeit, alle Benutzer-API-Schlüssel über die Discourse-Benutzeroberfläche ablaufen zu lassen oder zu widerrufen. Es gibt nur die Option, einen Schlüssel nach dem anderen von den Einstellungsseiten der Benutzer zu widerrufen. Es wäre möglich, alle Benutzer-API-Schlüssel über die Rails-Konsole zu widerrufen, aber es lohnt sich wahrscheinlich zuerst zu untersuchen, wie die Schlüssel verwendet werden.

1 „Gefällt mir“

Danke, ja, es sind User-API-Anfragen

1 „Gefällt mir“

Das scheinen zu viele Anfragen für die DiscourseHub-App zu sein. Wenn Sie den Data Explorer auf Ihrer Website installiert haben, wäre ich an den Ergebnissen dieser Abfrage interessiert:

SELECT
application_name,
COUNT(application_name) AS user_count
FROM user_api_keys
GROUP BY application_name

Ich habe diese Abfrage auf meiner eigenen Testseite getestet, aber dort gibt es nur eine user_api_request von der DiscourseHub-App. Ich glaube, ich habe die Abfrage korrekt für den Umgang mit mehreren Benutzern, die sich von mehreren Apps mit Discourse verbinden, strukturiert, aber lassen Sie mich wissen, wenn etwas an den Ergebnissen seltsam erscheint.

1 „Gefällt mir“

Die Installation des Datenexplorers hat einige Zeit gedauert, mein Rebuild ist aus irgendeinem Grund fehlgeschlagen.

Das sehe ich:

application_name user_count
Discourse - xhanse’s iPhone X 1
Discourse - iPhone 1
Discourse - xrett’s iPhone 2
Discourse - xave’s iPhone 1
Discourse - xixu’s iPhone 1
Discourse - xevin’s GS8 1

Ich habe einige Namen maskiert, das sieht nach nur wenigen Benutzern aus. Gibt die Abfrage Informationen für einen bestimmten Zeitraum zurück? Tausende von API-Anfragen für wenige Benutzer erscheinen mir übertrieben. Außerdem scheint ein Benutzer 2 user_count zu haben, bedeutet das, dass er 2 API-Schlüssel (d. h. 2 Apps) hat?

1 „Gefällt mir“

Dafür gibt es zwei Möglichkeiten. Entweder hat der Benutzer zwei iPhones mit demselben Gerätenamen ODER er hat die App deinstalliert und zu einem späteren Zeitpunkt neu installiert. In beiden Fällen hätte er mehrere API-Schlüssel.

1 „Gefällt mir“

Nein, sie gibt Details zu allen aktiven Benutzer-API-Schlüsseln zurück.

Versuchen Sie, die folgende Abfrage auszuführen:

SELECT * FROM user_api_keys

Ich gehe davon aus, dass dies nur 7 Zeilen zurückgibt. Lassen Sie mich wissen, wenn dies nicht der Fall ist.

Nicht unbedingt. Wenn Benutzer über die DiscourseHub-App auf die Website zugreifen, zählen ihre Anfragen an die Website als Benutzer-API-Anfragen. Wenn einige der Benutzer die Website aktiv lesen, könnten sie 2.000 Anfragen an einem Tag generieren.

Ja, das stimmt, ich sehe nur 7 Elemente.

Bedeutet das, dass alles in Ordnung ist? Ich kenne den Kontext hier nicht, ist das eine normale Auslastung für das Forum?

Das erscheint mir alles vernünftig. Zur Veranschaulichung habe ich mich heute kurz über die DiscourseHub-App in meine Testseite eingeloggt. Die Seite hat fast keine Inhalte. Ich habe mich ein paar Minuten darin umgesehen und 36 User-API-Anfragen generiert. Auf einer Seite mit vielen Inhalten zum Scrollen wäre es nicht unvernünftig, wenn ein einzelner Benutzer im Laufe eines Tages viele Anfragen generiert.

Wenn Sie sich darüber immer noch Sorgen machen, könnten Sie das Data Explorer-Plugin verwenden, um die Benutzeraktivität der Benutzer zu untersuchen, deren user_id aus dieser Anfrage zurückgegeben wurden:

SELECT * FROM user_api_keys
1 „Gefällt mir“

Die Neugier hat mich übermannt, also habe ich eine Seite überprüft, die ich fast ausschließlich über die DiscourseHub-App nutze. Ich habe knapp 1100 Benutzer-API-Schlüssel-Anfragen für die letzten 24 Stunden von dieser Seite und ich bin der einzige Benutzer mit einem aktiven Schlüssel. :slight_smile:

2 „Gefällt mir“