올해 4월부터 대시보드의 보안 보고서에서 매일 수천 건의 사용자 API 요청이 발생하고 있는 것을 방금 확인했습니다.
이는 제 예상치와 100배에서 1000배 정도 차이가 나는 매우 이상한 상황입니다.
키를 요청하는 상위 사용자와 각 사용자가 얼마나 많은 API 요청을 하고 있는지, 그리고 어떤 API 요청을 하고 있는지에 대한 더 자세한 보고서를 어떻게 받을 수 있을까요? 키에 읽기/쓰기 요청 권한이 있다면 누군가가 원격으로 토픽/게시글을 읽고 쓸 수 있다고 추정됩니다. 원격 사이트에서 게시글을 스크래핑하고 있는 것일까요?
확인차 말씀드리면, 질문하신 내용은 사용자 API 요청(User API requests)에 관한 것이 맞고, Discourse 사이트의 관리자 / API 페이지에서 사용자를 위해 생성한 API 키로 실행된 API 요청은 아닙니다. 아래 스크린샷에서 사용자 API 요청은 초록색으로 강조되어 있습니다:
해당 항목에는 앱에 부여된 권한(scopes)이 표시됩니다. 또한 앱의 액세스 권한을 취소할 수도 있습니다.
Discourse UI에서 모든 사용자 API 키를 만료시키거나 취소하는 방법을 찾지 못했습니다. 사용자 설정 페이지에서 한 번에 하나의 키만 취소할 수 있는 옵션만 존재합니다. Rails 콘솔을 통해 모든 사용자 API 키를 취소하는 것은 가능하지만, 먼저 키가 어떻게 사용되고 있는지 조사하는 것이 가치가 있을 것입니다.
DiscourseHub 앱에서 발생하는 요청이 너무 많은 것 같습니다. 사이트에 Data Explorer가 설치되어 있다면, 다음 쿼리의 결과를 확인해 보고 싶습니다:
SELECT
application_name,
COUNT(application_name) AS user_count
FROM user_api_keys
GROUP BY application_name
저는 제 테스트 사이트에서 해당 쿼리를 테스트해 보았지만, DiscourseHub 앱에서 발생한 user_api_request는 단 하나뿐이었습니다. 여러 사용자가 여러 앱을 통해 Discourse에 연결하는 상황을 처리하기 위해 쿼리를 올바르게 구성했다고 _생각_하지만, 결과에 이상한 부분이 있다면 알려 주세요.
일부 이름을 마스킹 처리했는데, 사용자 수가 매우 적은 것으로 보입니다. 이 쿼리는 특정 기간의 정보를 반환하는 것일까요? 몇몇 사용자에 대해 수천 건의 API 요청이 발생한다는 것은 과하게 느껴집니다. 또한 한 사용자의 user_count가 2로 표시되는 것은 (해당 사용자가) 2개의 API 키(즉, 2개의 앱)를 가지고 있다는 의미인가요?
내 생각에는 모두 합리적입니다. 맥락을 설명하자면, 오늘 DiscourseHub 앱을 통해 테스트 사이트에 잠시 로그인했습니다. 해당 사이트에는 콘텐츠가 거의 없습니다. 몇 분간 둘러보면서 36개의 사용자 API 요청을 발생시켰습니다. 스크롤할 콘텐츠가 많은 사이트라면, 한 사용자가 하루 동안 상당수의 요청을 생성하는 것은 비합리적이지 않을 수 있습니다.
여전히 이 부분에 대해 우려가 있다면, Data Explorer 플러그인을 사용하여 이 요청에서 반환된 user_id를 가진 사용자들의 활동 내역을 살펴볼 수 있습니다: