Edge Server 권한 가이드 - 미리 보기
Edge Server 데이터 액세스는 다음의 교집합에 의해 관리됩니다.
역할 기반 권한
사용자 인증
Edge Server 인스턴스에 데이터를 동기화하는 데 사용되는 쿼리
Atlas Device SDK 를 사용하는 경우 클라이언트 와 데이터를 동기화 하는 데 사용되는 쿼리 입니다.
Edge Server 는 문서 및 필드 수준에서 역할 기반 권한을 지원합니다. 이 페이지에서는 높은 수준의 Edge Server 및 클라이언트 권한 구성을 살펴보고 기본 권한 원칙을 설명하는 예제를 제공합니다.
관련 문서:
Atlas의 역할 기반 권한을 처음 접하는 경우 역할 기반 권한에서 권한 엔진에 대한 개요를 확인하세요 .
역할 및 권한을 정의하는 방법에 대한 자세한 내용은 역할 및 권한 정의를 참조하세요.
Edge Server 는 Device Sync 를 사용하여 Edge Server 인스턴스와 Atlas 간에 데이터를 동기화 합니다. Edge Server 및 클라이언트 역할은 Device Sync 호환 권한을 사용해야 합니다.
Edge Server 권한
Edge Server 인스턴스는 다른 수신 클라이언트 연결과 마찬가지로 사용자입니다. Edge Server 는 Atlas 로 인증해야 하며, 인스턴스가 읽고 쓸 수 있는 데이터를 결정할 수 있는 자체 권한이 있습니다.
서비스의 모든 에지 서버에 일반적으로 적용 되도록 규칙을 구성할 수 있습니다. 또는 Edge Server 인스턴스 가 읽고 쓰기 (write) 수 있는 데이터의 하위 집합을 지정하는 규칙을 사용하여 더 세분화할 수 있습니다.
모든 에지 서버
%%user_type 이 인 규칙 표현식 Edge Server 을 지정하여 applyWhen
모든 인스턴스에 적용되는 역할을 만들 수 edge
있습니다.
{ "name": "edgeServerRole", "apply_when": { "%%user.type": "edge" }, ...customize the permissions for all Edge Server instances... }
예를 예시 데이터 세트 에 날씨 서비스와 같은 민감한 데이터가 포함되어 있지 않은 경우 에지 서버가 모든 데이터를 읽고 쓰기 (write) 수 있음을 나타내는 역할 을 추가할 수 있습니다.
{ "name": "readAndWriteAll", "apply_when": { "%%user.type": "edge" }, "document_filters": { "read": true, "write": true }, "insert": true, "delete": true, "search": true, "read": true, "write": true }
특정 Edge Server
경우에 따라 비즈니스 로직에 따라 데이터의 하위 집합만 지정된 Edge Server 인스턴스 에 동기화 하려는 경우가 있습니다. 예를 예시 다음과 같은 경우 Edge Server 를 데이터의 하위 집합으로 제한할 수 있습니다.
데이터 세트 에 모든 Edge Server 인스턴스 와 동기화 되어서는 안 되는 PII 또는 기타 민감한 데이터가 포함되어 있습니다.
리소스가 제한된 기기에 동기화하고 싶지 않은 대규모 데이터 세트입니다.
Edge Server 호스팅하다 는 작업 을 완료하는 데 필요한 최소한의 데이터가 있어야 하는 신뢰할 수 없는 hardware 입니다.
법률 또는 규제 목적으로 데이터가 리전으로 제한되어 있으며 Edge Server 의 리전과 관련된 데이터만 동기화하려는 경우
권한을 사용하여 데이터의 하위 집합에 대한 특정 인스턴스의 액세스를 필터링할 수 있습니다. 또는 권한을 사용하여 데이터를 읽지만 쓸 수는 없도록 Edge Server 인스턴스를 구성할 수 있습니다.
모든 Edge Server 인스턴스 는 사용자이므로 Edge Server 의 user_id
를 사용하여 지정된 인스턴스 에 대한 권한을 구성할 수 있습니다. Edge Server %%user_id Edge Server user_id
가 의 인 규칙 표현식 을 사용하여 특정 인스턴스 와 동기화되는 데이터를 제한하는 역할 을 만들 수 있습니다. Edge Server user_id
Edge Server 인스턴스 세부 정보 또는 API 관리자 목록 에지 서버 엔드포인트에서 인스턴스 를 가져올 수 있습니다.
자체 문서 읽기/쓰기
Edge Server 인스턴스가 user_id
를 사용하여 자체 문서만 읽고 쓰도록 제한할 수 있습니다.
예를 들어 Edge Server 인스턴스가 의료 클리닉을 나타내는 경우 해당 클리닉의 환자와 관련된 데이터만 동기화하고 싶을 수 있습니다.
이 예제에서 모든 문서에는 값이 Edge Server 의 user_id
인 facility_id
속성이 있습니다. 이 역할은 Edge Server 가 자체 user_id
와 일치하는 facility_id
가 있는 문서만 읽고 쓸 수 있음을 의미합니다.
{ "name": "facilityItemsOnly", "apply_when": { "%%user.type": "edge" }, "document_filters": { "write": { "facility_id": "%%user.id" }, "read": { "facility_id": "%%user.id" }, }, "read": true, "write": true, "insert": true, "delete": true, "search": true }
모두 읽기, 자체 문서 쓰기
Edge Server 인스턴스가 모든 데이터를 읽을 수 있지만 자체 데이터만 쓸 수 있도록 구성할 수 있습니다. 예를 들어 소매점 설정에서 Edge Server 인스턴스는 매장 인벤토리 시스템을 나타낼 수 있습니다. 스토어에서 항목의 모든 인벤토리에서 Atlas Search를 수행할 수 있지만 자체 인벤토리에 있는 항목만 판매할 수 있도록 설정할 수 있습니다.
{ "name": "readAllWriteOnlyStoreItems", "apply_when": { "%%user.type": "edge" }, "document_filters": { "write": { "store_id": "%%user.id" }, "read": true }, "read": true, "write": true, "insert": true, "delete": true, "search": true }
클라이언트 권한
Edge Server 인스턴스 에 연결하는 클라이언트에게는 고유한 권한이 있습니다. Edge Server 인스턴스의 권한은 Atlas 의 데이터와 클라이언트 가 읽고 쓰기 (write) 수 있는 데이터 간의 필터하다 로 생각할 수 있습니다.
위의 에지 서버 인스턴스 예시와 유사한 의료 설정에서 에지 Edge Server 인스턴스는 자체 시설과 관련된 데이터만 읽고 쓸 수 있습니다. 그런 다음 두 번째 역할은 연결된 클라이언트에 대한 권한을 추가로 제한할 수 있습니다. 예를 들어, 시설에 있는 환자는 자신의 데이터만 볼 수 있습니다.
이를 roles
배열 내에서 독립적인 역할로 나타냅니다.
규칙 엔진 은 지정된 순서대로 각 역할의 apply_when
표현식 을 평가합니다. apply_when
표현식 이 true
로 평가되는 첫 번째 역할 이 할당된 역할 이 됩니다. 일치하는 역할 이 없으면 액세스 가 거부됩니다.
이 예제에서 PatientRecords
데이터베이스에는 Visits
컬렉션이 있습니다. 두 가지 역할은 Edge Server 인스턴스가 동기화할 수 있는 문서와 인스턴스에 연결된 개별 클라이언트가 동기화할 수 있는 문서를 결정합니다.
facilityItemsOnly
역할은 Edge Server 인스턴스와 동기화되는 항목을 필터링합니다. 시설에 동기화되는 유일한 항목은facility_id
이(가) Edge Server 인스턴스user_id
와(과) 일치하는 레코드입니다.patientOwnRecordsOnly
역할은 연결된 클라이언트 장치에 동기화할 수 있는 항목을 필터링합니다. 연결된 클라이언트에 동기화되는 유일한 항목은patient_id
이 클라이언트의user_id
인 방문입니다.
{ "collection": "Visits", "database": "PatientRecords", "roles": [ { "name": "facilityItemsOnly", "apply_when": { "%%user.type": "edge" }, "document_filters": { "write": { "facility_id": "%%user.id" }, "read": { "facility_id": "%%user.id" }, }, "insert": true, "delete": true, "search": true, "read": true, "write": true }, { "name": "patientOwnRecordsOnly", "apply_when": {}, "document_filters": { "write": { "patient_id": "%%user.id" }, "read": { "patient_id": "%%user.id" } }, "read": true, "write": true, "insert": true, "delete": true, "search": true } ] }
중요
역할 순서가 중요합니다.
이 예시 에서 roles
배열 의 첫 번째 항목은 apply_when
표현식 이 Edge Server 에만 적용되는 Edge Server 역할 입니다. 클라이언트 가 역할을 평가할 때 첫 번째 역할 은 클라이언트 에 대해 false
로 평가되므로 다음 역할 로 진행합니다. 첫 번째 항목이 빈 apply_when
표현식 을 가진 클라이언트 역할 인 경우 해당 역할 은 Edge Server 에 대해 true
로 평가됩니다. Edge Server 의 user_id
는 patient_id
와 일치하지 않으므로 문서가 Edge Server 에 동기화 되지 않습니다.
각각 데이터의 하위 집합에 액세스 해야 하는 다양한 유형의 클라이언트가 있는 설정에서는 다양한 클라이언트 역할을 정의할 수 있습니다. 예를 예시 의료 환경에서는 다음에 대해 다양한 역할을 사용할 수 있습니다.
환자: 자신의 의료 기록과 주소 청구 정보에 대한 액세스 만 제공합니다.
청구 전문가: 모든 환자 주소 및 청구 정보에 대한 액세스 권한을 제공하지만 의료 기록은 제공하지 않습니다.
의사: 모든 환자의 의료 기록에 대한 액세스 권한을 제공하지만 주소 및 청구 정보는 제공하지 않습니다.
필드 수준 권한
Edge Server 는 문서의 특정 필드에 대한 읽기 또는 쓰기 액세스 권한을 결정하는 필드 수준 권한 도 지원합니다. Edge Server Edge Server 에 연결하는 클라이언트 또는 둘 다에 대한 필드 수준 권한을 정의할 수 있습니다.