Algolia에서는 특정 사용자의 데이터만 검색할 수 있습니다.

5902 단어 TypeScriptAlgoliatech
이 기사는 Algolia Advent Calendar 2020 24일째 보도다.이 문장에서 우리는 용례로 자주 사용하는 방법을 해설할 것이다.기능 자체가 이 글의 맨 아래 참고란에 실린 공식 문서에도 기재되어 있으니 여러분도 함께 보십시오.

알골리아


완벽하게 관리되는 Search asa Service응답 속도가 매우 빨라서 전체 텍스트 검색을 쉽게 가져올 때 매우 편리하다.ElasticSearch 등 기존 검색엔진과 달리 웹 브라우저, 로컬 애플리케이션 등 이른바 클라이언트 쪽에서 알골리아의 API를 직접 두드리도록 설계됐다.Firebase를 자주 사용하는 저에게는 처리하기 쉬워요. 검색할 때 꼭 말해야 할 것처럼 잘 부탁드립니다.
그나저나 2020년 7월께 요금 체계가 바뀌었고, 그 전에 사용을 논의한 경우에는 무료로 사용할 수 없는 사람이라도 사용하기에 편리할 수 있으니 확인해 주세요.(당시 나는 비용 계획이 바뀌었다는 것에 놀랐다.)
이상의 정보를 원하시는 분들은 반드시 공식 사이트 또는 Advent Calendar 페이지에 가서 다른 기사를 보십시오👍

Secured API Key


고객으로부터 직접 Algolia의 API를 두드려 검색하기 위해서는 액세스 제어에 많은 노력이 필요합니다.노션이나 에버노트 같은 비배달 서비스.자신의 모든 노트에서 키워드로 검색하고 싶은 기능.
Algolia로 이것을 실현하면 prod_notes의 Index(RDB로 비유하면 Table)는 모든 사용자의 노트북을 미리 등록합니다.Algolia의 콘솔에 있는 Search-only API Key를 사용하면 클라이언트에서 user ID Filtering을 사용하면 기본적으로 실현할 수 있습니다.그러나 브라우저에서 통신을 보면 서치온리 API Key와 인덱스의 이름이 모두 보이는데, 악용하면 남의 노트북을 쉽게 구할 수 있다(※ 공식 문서에도 API Key가 고객측에 하드코드를 적용하면 안 된다고 기재되어 있다).
이것에 대응하기 위해 활용Secured API Key(virtual).Algolia 기반 콘솔에 게재된 API Key는 Algolia에서 관리되지 않는 가상 API Key를 생성하여 각 사용자를 위해 만들고 클라이언트에서 사용할 수 있습니다.예를 들어 Firestore를 사용할 때/algoliaKeys/:userIDadminSDK를 사용하여 Secured API Key를 저장하고 고객으로부터 Algolia의 API를 읽고 두드린다.
Algolia의 API Key는 꼭 적용해야 하는 Filtering과 limit 등의 설정을 API Key 자체에 내장하는 것이 편리하다.이 경우 각 사용자가 사용자 ID를 설정한 Filtering API Key를 생성하여 클라이언트에서 사용한다면 반드시 자신의 데이터로만 검색할 수 있습니다.
그럼 실제로 만들어 보세요.

Secured API Key 생성


콘솔에서 설정


Algolia의 콘솔에서 Indexprod_notes를 제작합니다.Configuration 탭을 누르고 왼쪽 메뉴에서 Facets를 누르면 Attributes for faceting에 추가userID하여 Filter only(()로 변경됨)👇 를 참고하십시오.

Secured API Key의 기본 Key를 작성합니다.콘솔에서 API Keys를 열고 All API Keys 탭을 누르고 오른쪽 위에 있는 New API Key(👇 를 참고하십시오.

Indecies에 객체의 Index 이름(prod notes)을 추가하면 다른 항목은 요구 사항에 따라 설정됩니다.나는 신중을 기하기 위해 항상 100을 설정한다(👇 를 참고하십시오.이 설정은 다음에 생성되는 Secured API Key에서도 상속됩니다.공통적으로 설정하고 싶은 내용을 여기에 적용할 수 있다는 인상이다.

코드에서 Secured API Key 생성


다음은 Type Script를 사용하여 설명합니다.백엔드에서 실행하십시오.또한 다른 언어를 사용하는 사람은 공식 문서를 참조하고 각 SDK의 인터페이스는 통용되므로 적당히 교환해 주십시오.
SDK를 설치합니다.
$ npm i algoliasearch
$ npm i -D @types/algoliasearch
Secured API Key를 생성하는 함수를 생성합니다.
import algolia from 'algoliasearch'

const client = algolia('your app id', 'your Admin API Key')

export const generateSecuredAPIKey = async (userID: string) => {
  return client.generateSecuredApiKey('先程作っておいたベースとなるSearch Key', {
    filters: `userID:${userID}`,
  })
}
이 함수라고 부르면user ID로 필히 Filtering해야 하는 API Key를 생성할 수 있습니다🎉 그리고 각 사용자가 이 키를 얻을 수 있도록 DB에 저장하면 OK입니다.

끝말


알골리아는 매우 편리한 서비스지만 API 키의 구조를 이해하고 활용하지 못하면 악용될 때 예상치 못한 이용을 당해 취약성이 생길 수 있다.공식 문서를 자세히 읽는 기초 위에서 활용하기를 바란다🙌
참고로 이 보도는 안에 있는 사람의 초청으로 쓴 것이다.대단히 감사합니다🕺

참고 자료

  • API Keys(공식)
  • User-Restriced Access to Data(공식)
  • 좋은 웹페이지 즐겨찾기