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 に通常適用されるルールを構成できます。 または、Edge Server インスタンスが読み取りおよび書込みできるデータのサブセットを指定するための、より細かいルールを取得できます。
すべての Edge Server
%%user_type が である ルール式 を指定することで、すべての Edge ServerapplyWhen
edge
インスタンスに適用するロールを作成できます。
{ "name": "edgeServerRole", "apply_when": { "%%user.type": "edge" }, ...customize the permissions for all Edge Server instances... }
たとえば、データセットに気象サービスなどの機密データが含まれていない場合は、Edge Server がすべてのデータの読み取りと書込みができることを示す ロールを追加できます。
{ "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 インスタンスに同期してはなりません
大きなデータセットで、リソースが制限されたデバイスには同期したくない
Edge Server ホストは信頼できないハードウェアであり、タスクを完了するために必要な最小データが必要です
データは法的目的または規制目的でリージョン制限されており、Edge Server のリージョンに関連するデータのみを同期したい
権限を使用して、データのサブセットへの特定のインスタンスのアクセスをフィルタリングできます。 または、 権限を使用して、Edge Server インスタンスを構成し、データを読み取るように構成しますが、書込みは行わないようにします。
すべての Edge Server インスタンスはユーザーであるため、Edge Server のuser_id
を使用して特定の インスタンスの権限を構成できます。 %%user_id が Edge Server のuser_id
である ルール式 を使用して、特定の Edge Server インスタンスと同期するデータを制限するロールを作成できます。Edge Server インスタンスuser_id
は、 Edge Server インスタンスの詳細から、または管理 API リスト Edge Serverエンドポイントから取得できます。
自分のドキュメントの読み取りと書込み
user_id
を使用して、Edge Server インスタンスを自分のドキュメントのみの読み取りと書き込みに制限できます。
たとえば、Edge Server インスタンスが整数表示の場合、その診断先のクライアントに関連するデータのみを同期したいとします。
この例では、すべてのドキュメントにfacility_id
プロパティがあり、その値は Edge Server のuser_id
です。 このロールでは、Edge Server は、 facility_id
が独自のuser_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 インスタンスは店舗の在庫システムを表す場合があります。 あるアイテムのすべての在庫を検索する機能はありますが、独自の在庫内のアイテムのみを販売したいと考えています。
{ "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 のデータとクライアントが読み書きできるデータの間のフィルターと考えることができます。
上記の Edge Server インスタンスの例のようなヘルス設定では、Edge Server インスタンスは自分の機能に関連するデータのみを読み取りおよび書込み可能です。 次に、2 番目のロールによって、接続済みクライアントの権限がさらに制限されます。 たとえば、施設内のオブジェクトは自分のデータのみを表示できます。
これらはroles
配列内で独立したロールとして表します。
ルール エンジンは、各ロールのapply_when
式を指定された順序で評価します。 apply_when
式がtrue
と評価した最初のロールが割り当てられたロールになります。 一致するロールがない場合、アクセスは拒否されます。
この例では、 PatientRecords
データベースにVisits
コレクションがあります。 The two roles determine which documents the Edge Server instance can sync, and which documents an individual client connected to the instance can sync:
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
配列の最初のエントリは Edge Server ロールであり、そのapply_when
式は Edge Server にのみ適用されます。 クライアントがロールを評価している場合、最初のロールはクライアントのためにfalse
と評価されたため、次のロールに進みます。 最初のエントリがクライアントロールで、空のapply_when
式を持つ場合、そのロールは Edge Server に対してtrue
と評価されます。 Edge Server のuser_id
はpatient_id
と一致しないため、ドキュメントは Edge Server に同期されません。
データのサブセットへのアクセス権を持つ必要がある異なるタイプのクライアントが多数ある設定では、異なるクライアント ロールを多数定義できます。 たとえば、ヘルスヘルス設定では、次の場合に異なるロールを使用できます。
対象: 自分の医療レコードと請求情報にのみアクセスでき、請求情報に対処します。
請求スペシャリスト: すべてのユーザーの住所と請求情報にアクセスできますが、医療レコードにはアクセスできません。
レストラン: すべてのクライアントの医療レコードへのアクセスは提供されていますが、住所と請求情報は提供されていません。
フィールドレベルの権限
Edge Server は、ドキュメント内の特定のフィールドへの読み取りまたは書込みアクセスを決定するフィールドレベルの権限もサポートしています。 Edge Server インスタンス、Edge Server インスタンスに接続するクライアント、またはその両方に対してフィールドレベルの権限を定義できます。