質問: この主題に関する私の最後の質問は、stackoverflow、asp.netフォーラム、コードプロジェクトで、完全に誤解されていた!しかし今、私は自分のニーズと要件、そして実際に何が呼び出されているのかをもっと知っています。私はこの質問を読んでおり、私はCSLA .NETについてもよく知っています 。 Entity Framework 6とASP.NET MVC 5でテーブルやさらに優れた行レベルのセキュリティを実装するための、より直接的な方法はありますか?実際には、 このカスタム・アプローチははるかに簡単に聞こえます。あなたの経験に基づいてどう思いますか? 何らかの理由で、ユーザーがデータベースにログインする必要があります。しかし、私たちは彼らが逃げることを望んでいません。したがって、完璧なソリューションは、認証と承認がDBレベルで行われることです。誰かがステップを明確にして処理することができれば、感謝しています。これまで私が思いついたのは、異なるユーザーに異なるDB `logins`をさせ、その`login`を使ってデータベースに接続することです。したがって、新しいユーザーが登録されると、実際には新しいデータベースログインが作成され、セキュリティ権限はすべてデータベースに実装されます。 私はこの必要性のために何をしなければならないのか分かりません。どのようにデータベースに実装する必要があり、Entity Frameworkを使用するか、手作業で記述する必要がありますか?任意のアウトオブボックスソリューションですか?この件に関する説明は大歓迎です。
回答: **動的データマスキング**と呼ばれるものが必要です。 私が働いている会社、Axiomatics(免責条項 - 私はその会社で働いています)は、データフィルタリングとマスキングを実現するポリシー主導のソリューションを持っています。これは、ポリシーと属性に基づいて、ユーザーがSELECT / INSERT / DELETEできることを定義することが可能であることを意味します。 それが動作する方法は、例えば以下のようなポリシーを定義することです: * role == doctorのユーザーは、userId == assignedDoctorの場合にのみ、テーブル== MEDICALRECORDに対してSELECT ==アクションを実行できます。 次に、アプリケーションとデータベースの間で、フローを代行受信し、関連するSQLフィルタ文(通常はWHERE句)を追加するプロキシをデプロイします。例: * SQLインターセプト: `SELECT * FROM medicalrecords` * WHERE句が生成されました: `WHERE medicalrecords.assignedDoctor='Alice'` * 最終的なSQLステートメントは、データベースに送信: `SELECT * FROM medicalrecords WHERE medicalrecords.assignedDoctor='Alice'` ポリシーはxacmlという標準フォーマットであり、属性ベースのアクセス制御( abacとも呼ばれます )を有効にします。 以下のリンクが役に立つかもしれません: * データフィルタリングに関するブログ投稿 * データマスキングに関するブログ投稿 * すべての仕組みのデモビデオ