Acabei de notar que estou vendo milhares de solicitações de API de usuários por dia a partir de abril deste ano nos relatórios de segurança do painel.
Isso é muito estranho e está fora de 100 a 1000 vezes minhas expectativas.
Como obtenho relatórios mais detalhados sobre quais usuários estão solicitando chaves e quais usuários estão fazendo quantas e quais solicitações de API? Se uma chave tiver acesso a solicitações de leitura/gravação, presumo que alguém possa ler e gravar tópicos/postagens remotamente. Poderia ser um site remoto raspando postagens?
Além disso, existe uma maneira de invalidar/expirar globalmente todas as chaves de API de usuário?
Apenas para confirmar, você está perguntando sobre solicitações de API de Usuário e não sobre solicitações de API que foram executadas com uma chave de API que você gerou para usuários na página Admin / API do seu site Discourse. As solicitações de API de Usuário são destacadas em verde na captura de tela abaixo:
Isso não responde a todas as suas perguntas, mas você pode obter uma visão geral de como as chaves de API de Usuário estão sendo usadas com a seguinte consulta do Data Explorer:
SELECT * FROM user_api_keys
Para obter uma lista de aplicativos que estão fazendo solicitações de chave de API de Usuário para o seu site e uma contagem do número de usuários que estão fazendo solicitações com cada aplicativo:
SELECT
application_name,
COUNT(application_name) AS user_count
FROM user_api_keys
GROUP BY application_name
As chaves de API de Usuário que estão sendo usadas para conectar do aplicativo DiscourseHub terão seu application_name definido como “Discourse - unknown”.
Se um usuário fizer uso de uma chave de API de Usuário para interagir com o site, uma entrada de Aplicativos será adicionada à guia Segurança da página de suas preferências:
A entrada mostra os escopos que foram concedidos ao aplicativo. Ela também permite revogar o acesso ao aplicativo.
Não estou vendo nenhuma maneira de expirar ou revogar todas as chaves de API de Usuário da interface do Discourse. Existe apenas a opção de revogar uma chave por vez nas páginas de preferências dos usuários. Seria possível revogar todas as chaves de API de Usuário do console Rails, mas provavelmente vale a pena investigar como as chaves estão sendo usadas primeiro.
Parece que são muitas requisições para serem provenientes do aplicativo DiscourseHub. Se você tiver o Data Explorer instalado em seu site, ficaria curioso sobre os resultados desta consulta:
SELECT
application_name,
COUNT(application_name) AS user_count
FROM user_api_keys
GROUP BY application_name
Eu testei essa consulta em meu próprio site de teste, mas ele tem apenas uma user_api_request do aplicativo DiscourseHub. Eu acho que estruturei a consulta corretamente para lidar com vários usuários se conectando ao Discourse de vários aplicativos, mas me avise se algo nos resultados parecer estranho.
Demorou um tempo para instalar o explorador de dados, minha reconstrução falhou por algum motivo.
É isto que vejo:
application_name
user_count
Discourse - iPhone X de xhanse’s
1
Discourse - iPhone
1
Discourse - iPhone de xrett’s
2
Discourse - iPhone de xave’s
1
Discourse - iPhone de xixu’s
1
Discourse - GS8 de xevin’s
1
Mascarei alguns nomes, parece que são apenas alguns usuários. A consulta está retornando informações para um período específico? Milhares de solicitações de API para alguns usuários parecem excessivas para mim. Além disso, um usuário parece ter 2 user_count, isso significa que ele tem 2 chaves de API (ou seja, 2 aplicativos)?
Existem duas possibilidades para isso. Ou o usuário tem dois iPhones com o mesmo nome de dispositivo OU ele desinstalou o aplicativo e o reinstalou em algum momento. Em ambos os casos, ele teria várias chaves de API.
Não, ela está retornando detalhes sobre todas as chaves de API de usuário ativas.
Tente executar a consulta abaixo:
SELECT * FROM user_api_keys
Presumo que ela retornará apenas 7 linhas. Me avise se não for o caso.
Não necessariamente. Quando os usuários acessam o site pelo aplicativo DiscourseHub, suas solicitações ao site contam como solicitações de API de Usuário. Se alguns dos usuários estiverem lendo ativamente o site, eles podem gerar 2 mil solicitações em um dia.
Tudo parece razoável para mim. Para contexto, acessei brevemente meu site de teste hoje através do aplicativo DiscourseHub. O site tem quase nenhum conteúdo. Naveguei por ele por alguns minutos e gerei 36 solicitações de API de usuário. Em um site com muito conteúdo para rolar, não seria irrazoável que um único usuário gerasse muitas solicitações ao longo de um dia.
Se você ainda estiver preocupado com isso, seria possível usar o plugin Data Explorer para analisar a atividade do usuário para os usuários cujo user_id foram retornados desta solicitação:
A curiosidade falou mais alto, então verifiquei um site que uso quase exclusivamente pelo aplicativo DiscourseHub. Tenho pouco menos de 1100 solicitações de chave de API de usuário nas últimas 24 horas desse site e sou o único usuário com uma chave ativa.