Docs Menu
Docs Home
/ /
Atlas App Services
/

Edge Server 権限ガイド - プレビュー

項目一覧

  • Edge Server 権限
  • すべての Edge Server
  • 特定の Edge Server
  • クライアント権限
  • フィールドレベルの権限

Edge Server のデータ アクセスは、次の共通部分によって管理されます。

  • 役割ベースの権限

  • ユーザー認証

  • Edge Server インスタンスにデータを同期するために使用されるクエリ

  • Atlas Device SDK を使用する場合、クライアントとのデータ同期に使用されるクエリ

Edge Server は、ドキュメント レベルとフィールド レベルでロールベースの権限をサポートしています。 このページでは、Edge Server とクライアントの権限の概要について説明し、基本的な権限の原則を説明するための例を示します。

関連ドキュメント:

Edge Server インスタンスは、他の受信クライアント接続と同様のユーザーです。 Edge Server は Atlas による認証が必要であり、 インスタンスが読み書きできるデータを決定するための独自の権限があります。

サービス内のすべての Edge Server に通常適用されるルールを構成できます。 または、Edge Server インスタンスが読み取りおよび書込みできるデータのサブセットを指定するための、より細かいルールを取得できます。

%%user_type が である ルール式 を指定することで、すべての Edge ServerapplyWhenedge インスタンスに適用するロールを作成できます。

{
"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 を データのサブセットに制限する必要がある場合があります。

  • データセットには、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_idpatient_idと一致しないため、ドキュメントは Edge Server に同期されません。

データのサブセットへのアクセス権を持つ必要がある異なるタイプのクライアントが多数ある設定では、異なるクライアント ロールを多数定義できます。 たとえば、ヘルスヘルス設定では、次の場合に異なるロールを使用できます。

  • 対象: 自分の医療レコードと請求情報にのみアクセスでき、請求情報に対処します。

  • 請求スペシャリスト: すべてのユーザーの住所と請求情報にアクセスできますが、医療レコードにはアクセスできません。

  • レストラン: すべてのクライアントの医療レコードへのアクセスは提供されていますが、住所と請求情報は提供されていません。

ユーザ、請求スペシャリスト、レストランの 3 つの異なるロールで利用可能なさまざまなデータを示すドキュメント。
クリックして拡大します

Edge Server は、ドキュメント内の特定のフィールドへの読み取りまたは書込みアクセスを決定するフィールドレベルの権限もサポートしています。 Edge Server インスタンス、Edge Server インスタンスに接続するクライアント、またはその両方に対してフィールドレベルの権限を定義できます。

戻る

Edge Server での MongoDB API の使用