Docs Menu
Docs Home
/ /
Atlas App Services
/

Edge Server 권한 가이드 - 미리 보기

이 페이지의 내용

  • Edge Server 권한
  • 모든 에지 서버
  • 특정 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 는 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 인스턴스 와 동기화 되어서는 안 되는 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_idfacility_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_idpatient_id와 일치하지 않으므로 문서가 Edge Server 에 동기화 되지 않습니다.

각각 데이터의 하위 집합에 액세스 해야 하는 다양한 유형의 클라이언트가 있는 설정에서는 다양한 클라이언트 역할을 정의할 수 있습니다. 예를 예시 의료 환경에서는 다음에 대해 다양한 역할을 사용할 수 있습니다.

  • 환자: 자신의 의료 기록과 주소 청구 정보에 대한 액세스 만 제공합니다.

  • 청구 전문가: 모든 환자 주소 및 청구 정보에 대한 액세스 권한을 제공하지만 의료 기록은 제공하지 않습니다.

  • 의사: 모든 환자의 의료 기록에 대한 액세스 권한을 제공하지만 주소 및 청구 정보는 제공하지 않습니다.

환자, 청구 전문가, 의사의 세 가지 역할이 서로 다른 데이터를 사용할 수 있음을 보여주는 문서입니다.
클릭하여 확대

Edge Server 는 문서의 특정 필드에 대한 읽기 또는 쓰기 액세스 권한을 결정하는 필드 수준 권한 도 지원합니다. Edge Server Edge Server 에 연결하는 클라이언트 또는 둘 다에 대한 필드 수준 권한을 정의할 수 있습니다.

돌아가기

에지 서버에서 MongoDB API 사용