Azureリレーショナル応用

ある教育機関がAzure SQL Managed Instanceで学生成績管理システムを構築しています。「特定の科目の担当教員には、その科目の学生成績のみ参照可能」という行レベルセキュリティ(RLS)を実装する必要があります。同時に、「管理者だけは全学生データを参照可能」という要件があります。この要件を満たすための最適な実装方法はどれですか?

A.RLS述語で[Subject]カラムと教員の割当科目を比較し、管理者ロールは述語を除外する← 正解
✓ 正解です。RLS述語で[Subject]カラムをフィルタリングし、管理者ロールはALTER AUTHORIZATION等で述語を除外できます。
B.ビューで教員ごとにフィルタリングし、管理者には元テーブルへの直接アクセス権を付与
✗ ビュー方式はアプリがビューか元テーブルか選択する必要があり、セキュリティが管理しづらい。
C.ユーザー個別にテーブルアクセス権を管理し、SQLコマンドで動的に権限を付与する
✗ テーブルレベル権限管理では、新科目追加時に毎回権限設定が必要で、スケーラビリティが低い。
D.アプリケーション側で教員ロールに応じた条件分岐を実装し、クエリ結果をフィルタリング
✗ アプリケーション側フィルタリングはSQL Injection脆弱性やバイパス可能性があり、推奨されません。

この問題のポイント

RLS述語で[Subject]カラムをフィルタリングし、管理者ロールはALTER AUTHORIZATION等で述語を除外できます。

DP-900:Microsoft Azure Data Fundamentals の問題一覧