Docs Menu
Docs Home
/ /
Atlas App Services
/

Device Sync-Compatible Permissions(Device Sync와 호환되는 권한)를 참조하세요.

이 페이지의 내용

  • 동기화와 호환되는 역할
  • 동기화와 호환되는 표현식
  • 동기화와 호환되는 확장
  • 권한 변경
  • 통합 규칙 시스템

Device Sync(유연 모드) 를 사용할 때는 권한 시스템을 사용할 때 특별히 고려해야 할 사항이 있습니다.

일반 권한 모델을 사용하여 Flexible Sync를 설정하는 방법은 Device Sync 권한 가이드를 참조하세요.

중요

Flexible Sync는 사용자 정의 데이터 정렬 무시

Flexible Sync는 Atlas 의 MongoDB 컬렉션 에 구성했을 수 있는 모든 사용자 지정 데이터 정렬 을 무시합니다. 대신 동기화된 컬렉션은 동기화 구독 또는 권한을 평가할 때 항상 {locale: "simple"} 를 사용합니다.

Device Sync(유연 모드)가 활성화된 경우, 할당된 역할동기화와 호환 되어야 합니다. 역할이 동기화와 호환되지 않지만 "apply when"이 참으로 평가되면 다른 역할은 고려되지 않습니다. 액세스가 거부되었습니다.

다음 조건 중 하나에 해당하는 경우 역할은 동기화와 호환되지 않습니다.

  • document_filters.read 또는 document_filters.write 이(가) 정의되지 않았습니다.

  • 문서 필터, 삽입 또는 삭제 표현식:

    • 쿼리 가능 필드가 아닌 필드를 참조합니다.

    • %%true, %%false, %%values, %%environment 또는 %%user이외의 확장을 사용합니다.

    • %function 연산자를 사용합니다.

  • 최상위 수준 read , 최상위 수준 write 또는 필드 수준 권한이 부울 리터럴( true 또는 false )이 아닙니다.

  • 필드 수준 권한은 _id 필드에 지정됩니다.

Device Sync가 활성화된 경우 표현식은 데이터 모델의 쿼리 가능한 필드 만 참조할 수 있습니다. 역할이 다른 필드를 참조하는 경우 동기화가 호환되지 않으며 Device Sync와 함께 사용할 수 없습니다.

동기화가 활성화된 앱은 동기화 세션이 시작될 때 특정 문서가 쿼리되기 전에 역할을 할당하므로 'apply when' 표현식에서 문서 또는 해당 필드 값을 참조할 수 없습니다.

Realm Mobile Sync 사용 시 일부 확장 기능 은 지원되지 않습니다. 다음 표에서는 'apply when' 또는 규칙 표현식에서 동기화와 호환되는 확장을 지정합니다.

확장
"Apply When"에서 사용할 수 있나요?
규칙 표현식에 사용할 수 있나요?

No

No

아니요. 이 확장은 문서를 참조합니다. App Services는 세션 시작 시 "apply when" 표현식을 평가하므로 평가할 문서가 없습니다.

아니요. 이러한 확장은 문서의 쿼리할 수 없는 필드에 액세스할 수 있지만 이는 불가능합니다.

No

No

아니요. App Services는 세션이 시작될 때 확장을 확장하므로 함수는 문서별로 작동하지 않습니다.

예.

중요

App Services는 이전 세션 이후 역할에 변경된 사항이 있는 경우 클라이언트 재설정 을 유발합니다.

세션이 시작될 때 App Services는 "apply when", document_filters.readdocument_filters.write 표현식의 모든 확장을 확장하고 결과를 저장합니다. 여기에는 다음과 같은 의미가 있습니다.

  • 세션 중에 값이 변경되면 App Services는 세션 시작 시점의 값을 계속 사용합니다.

  • 다음 세션에서 값이 이 세션을 시작할 때의 값과 다르면 App Services에서 클라이언트 재설정을 수행합니다.

  • 읽기 및 쓰기 규칙에는 %function 연산자를 사용할 수 없습니다. 함수가 문서별로 작동하지 않습니다.

  • "이 사용자가 액세스할 수 있는 문서 ID는 무엇인가요?"와 같은 권한 정보를 사용자 객체에 저장할 수 없습니다. 변경 사항은 다음 사용자 세션까지 다시 평가되지 않으며 업데이트로 인해 클라이언트 재설정됩니다.

마지막 동기화 세션 이후 사용자의 권한이 변경된 경우, Atlas Triggers는 클라이언트 재설정 을 트리거하고 새 권한이 적용된 모든 데이터를 다시 다운로드합니다.

사용자의 권한은 다음과 같은 상황에서 변경될 수 있습니다.

다음과 같은 경우에는 클라이언트 재설정이 트리거 되지 않습니다 .

  • App Services 스키마에 새 collection을 추가하고 새 네임스페이스에 대한 권한을 정의하거나 기본 역할을 사용합니다. 이전에 권한이 적용된 적이 없으므로 클라이언트 재설정이 trigger되지 않습니다.

  • 새 스키마와 동일한 초안 에서 새 collection에 대한 사용자 지정 권한을 구성합니다. 반대로 스키마를 배포한 후 권한을 변경하여 초안을 배포하면 초기 배포에서 기본 권한이 적용되었으므로 클라이언트 재설정이 발생합니다.

2023년 2월 23일 이전에는 동기화 구성permissions 필드에 Realm Mobile Sync(유연 모드) 규칙이 있었습니다. 이러한 권한은 이제 비동기화 권한과 동일한 구성 파일에 존재합니다.

이전 권한 시스템용으로 구성된 앱을 가져오는 경우 App Services는 권한을 새 통합 규칙 시스템으로 자동 마이그레이션합니다. 앱을 수동으로 마이그레이션할 필요가 없습니다. 이전 앱 구성이 있는 경우 마이그레이션된 구성을 가져온 다음 다시 내보낼 수 있습니다.

참고로 마이그레이션 시 다음과 같은 변경 사항이 적용됩니다.

  • permissions.defaultRoles 을(를) 데이터 소스 구성 디렉토리 data_sources/<data-source-name>/ 에 있는 default_rule.json 파일로 이동합니다.

  • collection별 규칙을 data_sources/<data-source-name>/<database-name>/<collection-name>/ 의 해당 collection 구성 디렉토리에 있는 rules.json 파일로 이동합니다.

  • defaultRoles 의 이름을 roles 으로 바꿉니다.

  • applyWhen 의 이름을 apply_when 으로 바꿉니다.

  • 동기화 readwrite 을(를) document_filters.readdocument_filters.write 로 이동합니다. document_filters.readdocument_filters.write 이(가) 모두 정의되어 있는지 확인합니다.

  • 사용 사례에 맞게 조정하여 역할에 다음을 추가합니다. true 또는 false 만 사용할 수 있습니다. 일반적으로 true 가 필요할 것입니다. document_filters 은(는) 문서별 수준에서 읽기 및 쓰기 액세스를 제한합니다.

    "read": true,
    "write": true,
    "insert": true,
    "delete": true,
    "search": true

돌아가기

수신 쿼리 필터링