Documentdb-access-control
DocumentDB-アクセス制御
DocumentDBは、DocumentDBリソースへのアクセスを制御するための概念を提供します。 DocumentDBリソースへのアクセスは、マスターキートークンまたはリソーストークンによって管理されます。 リソーストークンに基づく接続は、トークンで指定されたリソースにのみアクセスでき、他のリソースにはアクセスできません。 リソーストークンは、ユーザーのアクセス許可に基づいています。
- 最初に1人以上のユーザーを作成します。これらのユーザーはデータベースレベルで定義されます。
- 次に、各ユーザーにアクセスを許可するリソースに基づいて、各ユーザーに1つ以上のアクセス許可を作成します。
- 各アクセス許可は、特定のリソースへの読み取り専用アクセスまたはフルアクセスのいずれかを許可し、データベース内の任意のユーザーリソースにできるリソーストークンを生成します。
- ユーザーはデータベースレベルで定義され、権限はユーザーごとに定義されます。 *ユーザーと権限は、データベース内のすべてのコレクションに適用されます。
DocumentDBで詳細なセキュリティを実現するためのユーザーとアクセス許可を定義する方法を学ぶ簡単な例を見てみましょう。
新しいDocumentClientから始めて、myfirstdbデータベースを照会します。
以下は、CreateUserの実装です。
- ステップ1 *-2人のユーザー、AliceとTomを作成するリソースと同様に作成し、目的のIdで定義オブジェクトを作成し、createメソッドを呼び出します。この場合、データベースのSelfLinkとuserDefinitionでCreateUserAsyncを呼び出します。 新しく作成されたユーザーオブジェクトを取得したリソースプロパティから結果を取得します。
次に、データベース内のこれら2人の新しいユーザーを表示します。
- ステップ2 *-データベースのUsersLinkに対してCreateUserQueryを呼び出して、すべてのユーザーのリストを取得します。 次に、それらをループし、プロパティを表示します。
まず、それらを作成する必要があります。 したがって、MyCollectionコレクションに対するAliceの読み取り/書き込み権限を許可したかったが、Tomはコレクション内のドキュメントのみを読み取ることができるとしましょう。
ステップ3-MyCollectionコレクションであるリソースにアクセス許可を作成して、そのリソースをSelfLinkにする必要があります。
- ステップ4 *-次に、このコレクションでAliceのPermission.Allを作成し、このコレクションでTomのPermission.Readを作成します。
以下は、CreatePermissionの実装です。
これで期待するように、IDとPermission.AllまたはPermission.ReadであるpermissionMode、および保護されているリソースのSelfLinkを含む新しいアクセス許可の定義オブジェクトを作成することでこれを行います許可によって。
- ステップ5 *-CreatePermissionAsyncを呼び出し、結果のリソースプロパティから作成されたアクセス許可を取得します。
作成された権限を表示するために、ViewPermissionsの実装を次に示します。
今回は、ユーザーのアクセス許可リンクに対するアクセス許可クエリであり、ユーザーに対して返された各アクセス許可を単純にリストします。
アリスとトムの許可を削除しましょう。
以下は、DeletePermissionの実装です。
- ステップ6 *-許可を削除するには、許可IDで照会してSelfLinkを取得し、SelfLinkを使用して許可を削除します。
次に、ユーザー自身を削除しましょう。 両方のユーザーを削除しましょう。
以下は、DeleteUserの実装です。
- ステップ7 *-最初にクエリを実行してSelfLinkを取得し、DeleteUserAsyncを呼び出してユーザーオブジェクトを削除します。
以下は、上記のすべてのタスクを呼び出すCreateDocumentClientタスクの実装です。
上記のコードをコンパイルして実行すると、次の出力が表示されます。