INSERT、UPDATE、DELETEおよびSELECTのUDFは、現行セッションのセキュリティ ラベルや対象行のセキュリティ ラベルの入力引数を受け取り、それらのセキュリティ値をUDFで定義したセキュリティ ポリシーのルールと比較して、INSERT、UPDATE、DELETEまたはSELECTを許可するかどうかを決定します。
セキュリティ制約UDFは、入力値がセキュリティ ポリシーを満たすかどうかに応じてTrueまたはFalseの結果を返します。INSERT UDFとUPDATE UDFは、SQLリクエストがセキュリティ ポリシーを満たした場合に、現行セッションのセキュリティ ラベルも返します。セキュリティ制約UDFの有効な戻り値についての詳細は、INSERT UDFまたはUPDATE UDFの戻り値およびSELECT UDFまたはDELETE UDFの戻り値を参照してください。
次のセキュリティ ポリシー ルールの例では、セキュリティ制約UDFを作成する際のガイドを示します。このルールは、Bell-Lapadulaモデルに基づいています。このモデルは、アクセス制御を実施するために政府や軍事目的で広く使用されています。
- セッション階層レベルは、行階層レベル以上である必要があります。
ユーザーは上位に等級分けされたデータを読み取ることができません。
- セッション ラベルには、行ラベルに存在する階層化されていないコンポーネントを、すべて含める必要があります。
ユーザーには、その行の下位に等級分けされたすべてのコンポーネントが割り当てられている必要があります。
- 行階層レベルは、セッション階層レベル以上である必要があります。
新規の行または更新された行は、セッションのレベルを継承します。このルールによって、更新を実行するユーザーが誤って行を上位レベルに再等級化することを防止します。
- 行ラベルには、セッション ラベルに存在する階層化されていないコンポーネントが、すべて含まれている必要があります。
新しい行または更新された行は、すべてのセッション コンパートメントを継承します。このルールは、更新を行なうユーザーが誤って過剰なコンパートメント分類を行に追加することを防止します。
セキュリティ等級のカテゴリおよびラベルの詳細について、<Teradata Vantage™ - Advanced SQL Engineセキュリティ管理ガイド、B035-1100>を参照してください。