ポリインスタンス化

ポリインスタンス化とは

ポリインスタンス化(Polyinstantiation)とは、リレーションデータベースにおいて、同じ主キーを持つ複数の行を含むことができ、その複数のインスタンスはセキュリティレベルによって区別することです。これは、NIST SP 800-8によって定義されています。

リレーショナルデータベースとは何か?そして、リレーショナルデータベースの問題は何か?そしてそれを解決するためのポリインスタンス化、という手順を追っていく必要があります。

リレーショナルデータベースの問題

リレーショナルデータベースは、表のような構造でデータを管理するデータベースです。

リレーショナルデータベースでは、テーブルごとに読み取り、書き込みの権限を与えるために、それぞれのレコードに対して権限を付与することができません。

ここで、機密性の異なるデータがあったとします。リレーショナルデータベースでは、テーブルごとにしか権限を分けられないので、機密レベルごとにテーブルを分けます。

しかし、機密レベルの低い人がデータを参照するときには、機密性の低いテーブルのみをデータベースは見せればいいですが、機密レベルの高い人がデータを参照するときには、機密性の低いテーブル+機密性の高いテーブルの両方を見たくなります。

それぞれ別々に確認して、受け取り側でマージするという手もありますが、面倒ですね。

ポリインスタンス化

リレーショナルデータベースには、ビューという機能があります。これは、複数のテーブルをマージしたうえでDB操作できるデータベース管理サービス(DBMS)の機能です。

ポリインスタンス化にはこのビューを使います。ポリインスタンス化とは、リレーショナルデータベース固有のテーブル単位でしか権限を付与できないという制約を回避するため、複数のテーブルを一つに見せつつ、サブジェクトの権限に沿うようなビューを構成せよ、ということです。

ポリインスタンス化は、より概念的な意味で使われる時もあります。リレーショナルデータベースではなく、単純にオブジェクトやファイルやデータ格納キャッシュで使われる場合もあります。

これにより、不必要な情報を開示しないため、推論攻撃への対策として分類されます。