あなたが取ることができる3つのアプローチがあります:
- アプリ内で実行
- データベースプロキシ内で、アプリとデータベース間で実行します
- データベース内で実行する
最初のオプション アプリケーションロジックがフィルタリング/マスキングを担当するため、行レベルのアクセス制御としては実際には適格ではありません。 (フィルタリングは行レベルのアクセス制御ですが、マスキングはセルレベルです。)
2番目のオプション 、プロキシを使用することは、ますます採用されているアプローチです。次のような専用のソリューションがあります:
- GreenSQL
- Informatica DDM、および
- Axiomaticsデータアクセスフィルター。
これらのソリューションは通常、SQLトラフィックをインターセプトし、許可されたデータのみが返されるように変更します。これは動的データマスキングと呼ばれます 。 Wikipedia でもう少し説明されています。 。
3番目のオプション データベースのネイティブ機能を使用することです。たとえば、Oracleには、高度な行フィルタリング機能を構成できる仮想プライベートデータベース(VPD)と呼ばれるものがあります。
あなたの場合(MySQL)、きめ細かいアクセス制御と呼ばれるものがあります (FGAC)。 ここ のトピックに関するすばらしい記事があります。 。より多くのリソースのためにその用語をグーグル。