2017-04-24 3 views
1

私の設計では、マルチテナントSAASアプリケーションのバックエンドとしてDocumentDBを使用したいと考えています。 テナントごとのデータが10GBを超えることができるため、テナントモデルごとにコレクションを使用したいと考えています。 要件は、アプリケーションでデータを確実に分離する方法です。テナント1は、テナント2のデータをコードと青空のポータルで見ることができません。コレクションのアクセス許可を同じものに設定するにはどうすればよいですか?DocumentDBコレクションのアクセス許可

答えて

1

は、私はあなたがコレクション/ドキュメントへのユーザーアクセスを制御するためにcreate DocumentDB users for each tenant and associate the permissions with the userに試みることができるテナントモデル

ごとにコレクションを使用します。

string documentCollectionlink = UriFactory.CreateDocumentCollectionUri("{database id}", "{collection id}").ToString(); 

string databaseLink = UriFactory.CreateDatabaseUri("{database id}").ToString(); 

Permission docPermission = new Permission 
{ 
    PermissionMode = PermissionMode.All, 
    ResourceLink = documentCollectionlink, 
    Id = "tenant1perm" 
}; 

await client.CreateUserAsync(databaseLink, new User { Id = "tuser" }); 

docPermission = await client.CreatePermissionAsync(UriFactory.CreateUserUri("{database id}", "tuser"), docPermission); 

、その後、あなたはDocumentDBユーザーの権限を読んで、テナントに基づいてアクセストークンを取得し、リソースを操作するためのトークンでDocumentClientの新しいインスタンスを作成することができます。

var qclient = new DocumentClient(new Uri(EndpointUri), token); 
+0

本当に助けてくれてありがとう。ユーザーのグループやコレクションの役割ベースのアクセス許可を持たせることもできますか? – MiniKh

+0

私が知る限り、Azure DocumentDBには**グループ**と**ロール**のコンセプトはありません。あなたのアプリケーションで**マルチテナント**を実装するために**私の返信で述べたように、実際のユーザーまたはアプリケーションのテナントに対応するDocumentDBでユーザーを作成することができます。 DocumentDBユーザーの詳細については、[このリンク](https://docs.microsoft.com/en-us/azure/documentdb/documentdb-resources#users)を参照してください。 –

+0

更新情報回答があなたの問題の解決に役立つ場合は、回答としてマークしてください。他の人がすぐに回答を見つけて同様の問題を解決するのに役立ちます。 –

関連する問題