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.read
및 document_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
으로 바꿉니다.동기화
read
및write
을(를)document_filters.read
및document_filters.write
로 이동합니다.document_filters.read
및document_filters.write
이(가) 모두 정의되어 있는지 확인합니다.사용 사례에 맞게 조정하여 역할에 다음을 추가합니다.
true
또는false
만 사용할 수 있습니다. 일반적으로true
가 필요할 것입니다.document_filters
은(는) 문서별 수준에서 읽기 및 쓰기 액세스를 제한합니다."read": true, "write": true, "insert": true, "delete": true, "search": true