파이프라인 작업의 보안 규칙
파이프라인 작업 규칙을 사용하면 기존 규칙 엔진의 필터링 기능을 일치시킬 수 있습니다. 파이프라인 작업은 다양한 기능을 제공하지만 규칙 엔진은 쿼리 만족도와 보안을 보장하기 위해 간단한 필터만 인식하도록 제한됩니다.
버전 및 모드 요구사항
이 문서는 네이티브 모드의 Firestore Enterprise 버전에 적용됩니다.
지원되는 필터 표현식
쿼리가 규칙에 의해 제한되려면 상수에 대해 표준 비교 연산자를 사용해야 합니다. 규칙 엔진에서 인식하는 필터 유형은 다음과 같습니다.
- 같음 및 같지 않음:
eq,neq - 비교:
gt,gte,lt,lte. - 멤버십:
in,arrayContains
예를 들면 다음과 같습니다.
where(eq("foo", 2))where(lt("foo", 2))documents("/user/1", "/user/2").where(...)
요청 속성
request 객체를 사용하여 인증을 검증하고 컨텍스트를 쿼리할 수 있습니다. 단, 표준 쿼리에서 사용할 수 있는 일부 속성은 파이프라인에서 지원되지 않습니다.
지원되는 속성
새 엔진은 다음 속성을 계속 지원합니다.
request.auth: 사용자 uid 및 토큰 데이터에 액세스합니다.request.method: 작업을 식별합니다 (예:get,list).request.path: 액세스되는 리소스의 경로입니다.request.time: 요청의 서버 측 타임스탬프입니다.
지원되지 않는 속성
limit, offset, orderBy와 같은 request.query 속성은 다단계 쿼리에서 이러한 값을 결정하는 복잡성으로 인해 파이프라인 규칙 검사에서 지원되지 않습니다.
파이프라인 단계 처리 및 권한
보안 규칙의 세부 작업에 매핑되는 다양한 파이프라인 단계가 있습니다.
allow list권한:collection(),collectionGroup(),database()단계에서 트리거됩니다.allow get권한: 일괄get작업과 유사하게 처리되는documents()단계에 의해 트리거됩니다.- 필드 수정 단계: 규칙은 파생 값이 아닌 저장된 데이터에만 적용됩니다. 파이프라인에 필드를 수정하는 단계 (예:
AddFields,ReplaceWith,Select)가 포함된 경우 규칙 엔진은 해당 단계가 발생한 후 필터 제약 조건을 적용하는 것을 중지합니다. - 리터럴 단계:
literals()단계는 데이터베이스에서 읽지 않지만 비용이 발생할 수 있습니다. 악용을 방지하려면 규칙으로 확인할 수 있는 다른 단계 (예:collection())와 페어링해야 합니다.