Des milliers de requêtes API utilisateur et d'invalidation

J’ai remarqué que je vois des milliers de requêtes API utilisateur par jour à partir d’avril de cette année dans les rapports de sécurité du tableau de bord.

C’est très étrange et différent de 100 à 1000 de mes attentes.

Comment puis-je obtenir des rapports plus détaillés sur les utilisateurs qui demandent des clés et quels utilisateurs font combien et quelles requêtes API ? Si une clé a un accès de requête en lecture/écriture, je suppose que quelqu’un peut lire et écrire des sujets / publications à distance. Pourrait-il s’agir d’un site distant qui analyse les publications ?

Existe-t-il également un moyen d’invalider/d’expirer globalement toutes les clés API utilisateur ?

1 « J'aime »

Pour confirmer, vous parlez des requêtes API utilisateur et non des requêtes API qui ont été exécutées avec une clé API que vous avez générée pour les utilisateurs sur la page Admin / API de votre site Discourse. Les requêtes API utilisateur sont mises en surbrillance en vert dans la capture d’écran ci-dessous :

Les détails sur l’utilisation des clés API utilisateur sont ici : User API keys specification.

À moins que vous n’ayez créé une application qui s’intègre à votre site Discourse, les explications les plus probables sont soit que les utilisateurs se connectent au site via l’application DiscourseHub (https://play.google.com/store/apps/details?id=com.discourse&hl=en&gl=US&pli=1) soit qu’ils utilisent une application similaire à Fig - Native Discourse client for iOS pour interagir avec le site.

Cela ne répond pas à toutes vos questions, mais vous pouvez obtenir un aperçu général de l’utilisation des clés API utilisateur avec la requête Data Explorer suivante :

SELECT * FROM user_api_keys

Pour obtenir une liste des applications qui effectuent des requêtes de clé API utilisateur vers votre site, et un décompte du nombre d’utilisateurs qui effectuent des requêtes avec chaque application :

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

Les clés API utilisateur utilisées pour se connecter depuis l’application DiscourseHub auront leur application_name défini sur “Discourse - unknown”.

Si un utilisateur utilise une clé API utilisateur pour interagir avec le site, une entrée “Applications” sera ajoutée à l’onglet “Sécurité” de sa page de préférences :

L’entrée affiche les autorisations accordées à l’application. Elle vous permet également de révoquer l’accès à l’application.

Je ne vois aucun moyen d’expirer ou de révoquer toutes les clés API utilisateur depuis l’interface utilisateur de Discourse. Il n’y a que l’option de révoquer une clé à la fois depuis les pages de préférences des utilisateurs. Il serait possible de révoquer toutes les clés API utilisateur depuis la console Rails, mais il est probablement préférable d’examiner d’abord comment les clés sont utilisées.

1 « J'aime »

Merci, oui, ce sont des requêtes API utilisateur

1 « J'aime »

Cela semble être trop de requêtes pour provenir de l’application DiscourseHub. Si vous avez l’Explorateur de données installé sur votre site, je serais curieux de connaître les résultats de cette requête :

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

J’ai testé cette requête sur mon propre site de test, mais il n’y a qu’une seule user_api_request de l’application DiscourseHub. Je pense avoir correctement structuré la requête pour gérer plusieurs utilisateurs se connectant à Discourse à partir de plusieurs applications, mais faites-moi savoir si quelque chose dans les résultats semble étrange.

1 « J'aime »

J’ai mis du temps à installer l’explorateur de données, ma reconstruction a échoué pour une raison quelconque.

Voici ce que je vois :

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

J’ai masqué certains noms, cela ressemble à juste quelques utilisateurs. La requête renvoie-t-elle des informations pour une période spécifique ? Des milliers de requêtes API pour quelques utilisateurs me semblent excessives. De plus, un utilisateur semble avoir 2 user_count, cela signifie-t-il qu’il a 2 clés API (c’est-à-dire 2 applications) ?

1 « J'aime »

Il y a deux possibilités à cela. Soit l’utilisateur a deux iPhones avec le même nom d’appareil, soit il a désinstallé l’application et l’a réinstallée à un moment donné. Dans les deux cas, il aurait plusieurs clés API.

1 « J'aime »

Non, elle renvoie des détails sur toutes les clés d’API utilisateur actives.

Essayez d’exécuter la requête ci-dessous :

SELECT * FROM user_api_keys

Je suppose qu’elle ne renverra que 7 lignes. Faites-moi savoir si ce n’est pas le cas.

Pas nécessairement. Lorsque les utilisateurs accèdent au site via l’application DiscourseHub, leurs requêtes au site comptent comme des requêtes d’API utilisateur. Si quelques-uns des utilisateurs lisent activement le site, ils pourraient générer 2 000 requêtes par jour.

Oui, c’est exact, je ne vois que 7 éléments.

Est-ce que cela signifie que tout est en ordre. Je ne connais pas le contexte ici, est-ce une charge normale pour le forum à gérer ?

Tout cela me semble raisonnable. Pour information, je me suis brièvement connecté à mon site de test aujourd’hui via l’application DiscourseHub. Le site n’a presque aucun contenu. Je l’ai parcouru pendant quelques minutes et j’ai généré 36 requêtes API utilisateur. Sur un site avec beaucoup de contenu à parcourir, il ne serait pas déraisonnable qu’un seul utilisateur génère beaucoup de requêtes sur une journée.

Si cela vous préoccupe toujours, il serait possible d’utiliser le plugin Data Explorer pour examiner l’activité des utilisateurs dont le user_id a été renvoyé par cette requête :

SELECT * FROM user_api_keys
1 « J'aime »

La curiosité l’a emporté, j’ai donc consulté un site que j’utilise presque exclusivement via l’application DiscourseHub. J’ai un peu moins de 1100 requêtes de clé API utilisateur pour les dernières 24 heures provenant de ce site et je suis le seul utilisateur avec une clé active. :slight_smile:

2 « J'aime »