16 インバース・グループを使用した解放性
Oracle Label Securityでは、インバース・グループを使用して解放性を実装できます。
- インバース・グループおよび解放性について
インバース・グループは、情報の解放性を示します。 - スタンダード・グループとインバース・グループの比較
Oracle Label Securityのグループは、データを所有またはデータにアクセスする組織を識別します。 - インバース・グループの動作
インバース・グループは特殊な方法で実装され、Oracle Label Securityのニーズに合わせて編成されます。 - インバース・グループでの読取りアクセスのアルゴリズム
インバース・グループが関連する読取りアクセスのアルゴリズムの動作を理解しておく必要があります。 - インバース・グループでの書込みアクセスのアルゴリズム
インバース・グループが関連する書込みアクセスのアルゴリズムを理解しておく必要があります。 - インバース・グループでのCOMPACCESS権限のアルゴリズム
Oracleでは、ユーザーがCOMPACCESS
権限を持つ場合の、インバース・グループに関連する読取りおよび書込みアクセスのアルゴリズムが提供されています。 - セッション・ラベルおよびインバース・グループ
インバース・グループは、セッション・ラベルおよび行ラベルに影響を与えます。 - インバース・グループでのプロシージャの動作の変更
INVERSE_GROUP
オプションは、ラベル付きデータに対するユーザーの読取りおよび書込みアクセスを決定するアルゴリズムに影響を与えます。 - インバース・グループでのラベルの支配規則
Oracleラベルおよびインバース・グループに対する支配規則の動作を理解しておく必要があります。
16.1 インバース・グループおよび解放性について
インバース・グループは、情報の解放性を示します。
データの送信にマークを付けるために使用されます。インバース・グループをデータ・ラベルに追加すると、データの機密性は低下します。
たとえば、インバース・グループUKおよびUSを持つユーザーは、インバース・グループUKのみを持つデータにはアクセスできません。そのデータにUSを追加すると、インバース・グループUKおよびUSを持つすべてのユーザーがデータにアクセスできるようになります。
ユーザーに解放性を割り当てる場合は、ユーザーに通信チャネルのマークを付けます。データを通信チャネルで転送するには、データの解放性が、ユーザーに割り当てられた解放性を支配する必要があります。つまり、データ・レコードに割り当てられた解放性には、ユーザーに割り当てられたすべての解放性が含まれる必要があります。
解放性のメリットは、情報を広く送信できることです。マーケティング組織全体にデータを解放することは、データ・レコードにマーケティングの解放性を追加すること同様に単純になります。
親トピック: インバース・グループを使用した解放性
16.2 スタンダード・グループとインバース・グループの比較
Oracle Label Securityのグループは、データを所有またはデータにアクセスする組織を識別します。
スタンダード・グループと同様に、インバース・グループは情報の送信を制御します。ただし、インバース・グループとOracle Label Securityのスタンダード・グループの動作は異なります。デフォルトでは、Oracle Label Securityで作成されたすべてのポリシーではスタンダード・グループの動作を使用します。
解放性という用語は、インバース・グループによって提供される動作を表すために使用されることがあります。インバース・グループをデータ・ラベルに含めた場合、ユーザーにラベル区分認可を割り当てた場合と同様の影響があります。Oracle Label Securityは、インバース・グループを持つラベルが割り当てられたデータの行をユーザーが参照できるかどうかを評価する場合、ユーザーではなく、データに適切なグループ認可があるかどうかを確認します。データに、ユーザーに割り当てられたすべてのインバース・グループがあるかどうかを確認します。対照的にスタンダード・グループでは、Oracle Label Securityは、データ行に割り当てられた少なくとも1つのグループに対してユーザーが認可されているかどうかを確認します。
Eastern、Western、Southernなどの3つのスタンダード・グループを含むポリシーについて考えます。ユーザー1のラベル認可には、グループEasternおよびWesternが含まれます。ユーザー1に、ポリシー内の適切なレベルおよび区分認可が割り当てられていることを前提とした場合:
-
スタンダードOracle Label Securityグループでは、ユーザー1はグループEastern、グループWestern、またはEasternとWesternの両方を持つすべてのデータ・レコードを表示できます。
-
インバース・グループでは、ユーザー1は少なくとも、ユーザーに割り当てられたすべてのグループ、つまりEasternとWesternの両方を持つデータ・レコードのみ表示できます。ユーザー1は、Easternグループのみ、またはWesternグループのみを持つか、グループをまったく持たないレコードを表示できません。
表16-1に、ポリシーで使用されるグループのタイプと、ユーザー1がアクセスできるすべての行を示します。
表16-1 スタンダード・グループおよびインバース・グループへのアクセス
行ラベルに含まれるグループ | スタンダード・グループでのユーザー1のアクセス可否 | インバース・グループでのユーザー1のアクセス可否 |
---|---|---|
なし |
Y |
N |
|
Y |
N |
|
Y |
N |
|
N |
N |
|
Y |
Y |
|
Y |
N |
|
Y |
N |
|
Y |
Y |
スタンダード・グループは、情報の所有権を示します。したがって、特定部門に関するすべてのデータのラベルには、その部門のグループを指定できます。データ・ラベルにグループを追加する場合、データはさらに機密性が強くなります。たとえば、グループを持たないユーザーはラベルにグループを持たないデータにアクセスできます。データ・ラベルにグループUSを追加すると、そのユーザーはもとのデータにはアクセスできなくなります。
関連項目:
親トピック: インバース・グループを使用した解放性
16.3 インバース・グループの動作
インバース・グループは特殊な方法で実装され、Oracle Label Securityのニーズに合わせて編成されます。
- INVERSE_GROUP強制を指定したインバース・グループの実装
Oracle Label Securityポリシーを作成する場合、ポリシーがインバース・グループ機能を使用して解放性を実装できるかどうかを指定できます。 - インバース・グループおよびラベル・コンポーネント
インバース・グループ・オプションを指定して作成したOracle Label Securityポリシーでは、スタンダード・グループと同じポリシー・ラベル・コンポーネントが使用されます。 - インバース・グループでの計算されるラベル
インバース・グループは、計算されるラベルの値に影響を与えます。 - インバース・グループおよび階層構造
Oracle Label Securityのスタンダード・グループは階層構造になっており、グループを親グループに関連付けることができます。 - インバース・グループおよびユーザー権限
インバース・グループが実装されている場合は、ユーザー権限の意味は従来どおりです。
親トピック: インバース・グループを使用した解放性
16.3.1 INVERSE_GROUP強制を指定したインバース・グループの実装
Oracle Label Securityポリシーを作成する場合、ポリシーがインバース・グループ機能を使用して解放性を実装できるかどうかを指定できます。
これを行うには、CREATE_POLICY
文で、default_options
の1つとしてINVERSE_GROUP
を指定する必要があります。
INVERSE_GROUP
オプションは、ポリシーの作成時にのみ設定できます。ポリシーが作成されると、このオプションは変更できません。
そのため、INVERSE_GROUP
オプションはポリシー単位です。ポリシーが表またはスキーマに適用されている場合は、このオプションをオンまたはオフにできません。APPLY_TABLE_POLICY
またはAPPLY_SCHEMA_POLICY
プロシージャを使用して、オプションをオンまたはオフにしようとするとエラーが発生します。
ポリシーからその他のポリシー強制オプションを削除できるのに対して、設定後にINVERSE_GROUP
ポリシー構成オプションを削除することはできません。オプションを削除するには、ポリシーを削除した後、再作成する必要があります。
各ユーザーに1つ以上のインバース・グループに対する認可を付与できます。
親トピック: インバース・グループの動作
16.3.2 インバース・グループおよびラベル・コンポーネント
インバース・グループ・オプションを指定して作成したOracle Label Securityポリシーでは、スタンダード・グループと同じポリシー・ラベル・コンポーネントが使用されます。
これには、レベル、区分およびグループなどのコンポーネントがあります。
ただし、インバース・グループでは、ユーザーの読取りグループおよび書込みグループのデータ・アクセスでの意味およびロールは異なります。
次のポリシーの例を考えてみます。このポリシーには3つのレベル、1つの区分および3つのグループがあります。
表16-2 ポリシーの例
ポリシー・コンポーネント | 短縮形 |
---|---|
レベル: |
- |
|
|
|
|
|
|
区分: |
- |
|
|
グループ: |
- |
EASTERN |
EAS |
WESTERN |
WES |
SOUTHERN |
SOU |
2つのユーザー・ラベル(CON:FIN
およびSE:FIN:EAS
,WES
)が割り当てられました。
2つのデータ・ラベル(CON:FIN:EAS
およびSE:FIN:EAS
)が割り当てられました。
使用されているグループのタイプによって、データへのユーザー・アクセスは次のように異なります。
-
ポリシーでスタンダード・グループが使用されている場合:
ラベル
CON:FIN
を持つユーザーはCON:FIN:EAS
データを読み取ることができません。ラベル
SE:FIN:EAS
,WES
を持つユーザーはSE:FIN:EAS
データを読み取ることができます。 -
ポリシーに
INVERSE
GROUPS
ポリシー強制オプションが指定されている場合:ラベル
CON: FIN
を持つユーザーはCON:FIN:EAS
データを読み取ることができます。ラベル
SE:FIN:EAS
,WES
を持つユーザーはSE:FIN:EAS
データを読み取ることができません。
親トピック: インバース・グループの動作
16.3.3 インバース・グループで計算されるラベル
インバース・グループは、計算されるラベル値に影響を与えます。
- インバース・グループでの計算されるセッション・ラベル
管理者がユーザーにラベル認可を割り当てた後、Oracle Label Securityは自動的にいくつかのラベルを計算します。 - インバース・グループ、計算される最大読取りグループおよび最大書込みグループ
Oracle Label Securityには、読取りおよび書込み操作を処理するための様々なインバース・グループが用意されています。
親トピック: インバース・グループの動作
16.3.3.1 インバース・グループで計算されるセッション・ラベル
管理者がユーザーにラベル認可を割り当てた後、Oracle Label Securityは自動的にいくつかのラベルを計算します。
インバース・グループでのこれらのラベルは次のとおりです。
表16-3 インバース・グループで計算されるセッション・ラベル
計算されるラベル | 定義 |
---|---|
Max Read Label |
認可された区分とユーザー・ラベル(セッション・ラベル)で必要な最小限のインバース・グループを組み合せたユーザーの最大レベル。 |
Max Write Label |
ユーザーに書込みアクセス権が付与されている区分を組み合せたユーザーの最大レベル。任意のラベルで設定できる認可された最大限のインバース・グループが含まれます。ユーザーは、すべてのインバース・グループへの書込み認可を持っています。 |
Min Write Label |
ユーザーの最小レベル。 |
デフォルト読取りラベル |
ユーザーのデフォルトとして指定された区分とインバース・グループを組み合せたデフォルト・レベル。 |
デフォルト書込みラベル |
ユーザーに書込みアクセス権が付与されている区分とインバース・グループを含むデフォルト読取りラベルのサブセット。ただし、常に書込みアクセスに使用される最大書込みグループなので、インバース・グループ・コンポーネントによる影響は受けません。 |
デフォルト行ラベル |
挿入されるデータのデータ・ラベルのデフォルトとして指定されている、ユーザーの最小書込みラベルと最大書込みラベル間のコンポーネントの組合せ。インバース・グループは、デフォルト・ラベルのインバース・グループのスーパーセットで、最大書込みグループのサブセットである必要があります。 |
関連項目
親トピック: インバース・グループで計算されるラベル
16.3.3.2 インバース・グループ、計算される最大読取りグループおよび最大書込みグループ
Oracle Label Securityには、読取りおよび書込み操作を処理するための様々なインバース・グループが用意されています。
表16-3の計算される値から、次の2つのグループのセットが読取りおよび書込みアクセスのラベル評価として識別されます。
表16-4 読取りアクセスと書込みアクセスの評価として識別されるグループのセット
グループのセット | 意味 |
---|---|
最大読取りグループ |
最大読取りグループは、最大読取りラベルに含まれるグループで、任意のユーザー・ラベルで設定できるインバース・グループの最小セットを識別します。 |
最大書込みグループ |
最大書込みグループは、最大書込みラベルに含まれるグループで、任意のユーザー・ラベルで設定できる最大認可インバース・グループを識別します。このグループ・セットは、書込みアクセス時およびセッション・ラベルの設定時に確認されます。 最大書込みグループは、最大読取りグループのスーパーセットです。 |
表16-5に示すとおり、スタンダード・グループではREAD
ONLY
およびREAD
/WRITE
認可、インバース・グループではWRITE
ONLY
およびREAD
/WRITE
認可を持つことができます。
表16-5 スタンダード・グループおよびインバース・グループに対する読取り/書込み認可
グループのタイプ | 読取り専用 | 読取り/書込み | 書込み専用 |
---|---|---|---|
スタンダード・グループ |
グループは、最大書込みレベルではなく、最大読取りレベルのみに表示されます。 |
グループは、最大読取りレベルと最大書込みレベルの両方に表示されます。 |
サポートされません。 |
インバース・グループ |
サポートされません。 |
グループは、最大読取りレベルと最大書込みレベルの両方に表示されます。 |
グループは、最大読取りレベルではなく、最大書込みレベルのみに表示されます。 |
最大読取りグループは、最大読取りラベルに含まれるグループのセットを識別しますが、この値は、設定できるインバース・グループの最小セットを表します。たとえば:
最大読取りグループ: S:C1:G1
,G2
最大書込みグループ: S:C1:G1
,G2
,G3
,G4
,G5
この場合、ユーザーは、少なくとも最大読取りグループにリストされた2つのグループを含むデータを読み取ることができます。
スタンダード・グループでは、最大読取りレベルより最大書込みレベルに多くのグループが含まれることはありません。
親トピック: インバース・グループで計算されるラベル
16.3.4 インバース・グループおよび階層構造
Oracle Label Securityのスタンダード・グループは階層構造になっており、グループを親グループに対応付けることができます。
たとえば、EASTERN
領域は2つの下位グループEAS_SALES
およびEAS_HR
の親になることができます。
スタンダード・グループを持つポリシーでは、ユーザー・ラベルに親グループがある場合、そのユーザー・ラベルから下位グループのすべてのデータにアクセスできます。
インバース・グループでは、親子関係はサポートされていません。
親トピック: インバース・グループの動作
16.3.5 インバース・グループおよびユーザー権限
インバース・グループが実装されている場合は、ユーザー権限の意味は従来どおりです。
ユーザーに特別な権限がない場合、読取りアルゴリズムと書込みアルゴリズムはスタンダード・グループとインバース・グループとで異なります。相違点については、「インバース・グループでの読取りアクセスのアルゴリズム」および「インバース・グループでの書込みアクセスのアルゴリズム」を参照してください。
COMPACCESS権限に与えるインバース・グループの影響については、「インバース・グループでのCOMPACCESS権限のアルゴリズム」を参照してください。
インバース・グループは、次のユーザー権限には影響を与えません。
-
PROFILE_ACCESS
-
WRITEUP
-
WRITEDOWN
-
WRITEACROSS
親トピック: インバース・グループの動作
16.4 インバース・グループでの読取りアクセスのアルゴリズム
インバース・グループが関連する読取りアクセスのアルゴリズムの動作を理解しておく必要があります。
INVERSE
GROUP
オプションを指定して表のデータを読み取る場合、図16-1に示すように、ラベル評価プロセスは、レベル、グループ、区分の順に進行します。(現行のセッション・ラベルが、評価されているラベルであることに注意してください。)
-
ユーザーのレベルは、データのレベル以上であることが必要です。
-
ユーザーのラベルは、データに割り当てられたすべての区分を含んでいる必要があります。
-
データ・ラベルのグループは、ユーザー・ラベルのグループのスーパーセットである必要があります。
ユーザーのラベルがこれらのテストにパスすると、そのユーザーはデータにアクセスできます。パスしなかった場合、アクセスは拒否されます。データ・ラベルがNULLまたは無効の場合、ユーザーのアクセスは拒否されます。
ノート:
次のフロー図は、ユーザーに特別な権限が付与されていない場合にのみ適用されます。
16.5 インバース・グループでの書込みアクセスのアルゴリズム
インバース・グループが関連する書込みアクセスのアルゴリズムを理解しておく必要があります。
INVERSE
GROUP
オプションを指定して表のデータを書き込む場合、図16-2に示すように、ラベル評価プロセスは、レベル、グループ、区分の順に進行します。(現行のセッション・ラベルが、評価されているラベルであることに注意してください。)
-
データ・ラベル内のレベルは、ユーザーの最小レベル以上で、かつユーザーのセッション・レベル以下であることが必要です。
-
次のいずれかの条件を満たしている必要があります。
データ・ラベルのグループは、ユーザー・ラベルのグループのスーパーセットである必要があります。
または
ユーザーに、ポリシーに対する
READ
アクセス権がある。 -
ユーザーの最大書込みグループは、データ・ラベル・グループのスーパーセットである必要があります。
-
ユーザー・ラベルには、データ・ラベルのすべての区分に対する書込みアクセス権が必要です。
データ・ラベルがNULLまたは無効の場合、ユーザーのアクセスは拒否されます。
ノート:
次のフロー図は、ユーザーに特別な権限が付与されていない場合にのみ適用されます。
16.6 インバース・グループでのCOMPACCESS権限のアルゴリズム
Oracleでは、ユーザーがCOMPACCESS
権限を持つ場合の、インバース・グループに関連する読取りおよび書込みアクセスのアルゴリズムが提供されています。
COMPACCESS
権限により、ユーザーは行のグループから独立し、行の区分に基づいてデータにアクセスできます。
-
区分が存在し、かつ、その区分へのアクセスが認可されていれば、グループの認可はバイパスされます。
-
行に区分がない場合、アクセスはインバース・グループの認可により決定されます。
図16-3および図16-4は、ユーザーがCOMPACCESS
権限を持つ場合の読取りアクセスおよび書込みアクセスのラベル評価プロセスを示しています。データ・ラベルがNULLまたは無効の場合、ユーザーのアクセスは拒否されます。
(現行のセッション・ラベルが、評価されているラベルであることに注意してください。)
親トピック: インバース・グループを使用した解放性
16.7 セッション・ラベルおよびインバース・グループ
インバース・グループは、セッション・ラベルおよび行ラベルに影響を与えます。
- スタンダード・グループまたはインバース・グループの初期セッション・ラベルおよび行ラベル
Oracleには、スタンダード・グループまたはインバース・グループの初期セッション・ラベルおよび行ラベルが用意されています。 - スタンダード・グループまたはインバース・グループの現行セッション・ラベルまたは行ラベルの設定
スタンダード・グループまたはインバース・グループに現行セッション・ラベルまたは行ラベルを設定できます。 - セッション・ラベルおよびインバース・グループの例
Oracleでは、インバース・グループの使用例が提供されています。
親トピック: インバース・グループを使用した解放性
16.7.1 スタンダード・グループまたはインバース・グループの初期セッションおよび行ラベル
Oracleには、スタンダード・グループまたはインバース・グループの初期セッション・ラベルおよび行ラベルが用意されています。
- スタンダード・グループまたはインバース・グループの初期セッション・ラベルおよび行ラベルについて
インバース・グループを使用すると、セッション・ラベルを決定するOracle Label Securityプロシージャの動作に影響します。 - スタンダード・グループ: 初期セッション/行ラベルの変更規則
ユーザーのデフォルト・セッション・ラベルは、SA_USER_ADMIN.SET_DEFAULT_LABEL
を使用して変更できます。 - インバース・グループ: 初期セッション/行ラベルの変更規則
現行のデフォルト行ラベルが新しい書込みラベルによって支配されている場合、デフォルト・セッション・ラベルには認可リストのグループを含めることができます。
親トピック: セッション・ラベルおよびインバース・グループ
16.7.1.1 スタンダード・グループまたはインバース・グループの初期セッション・ラベルおよび行ラベルについて
インバース・グループを使用すると、セッション・ラベルを決定するOracle Label Securityプロシージャの動作に影響します。
SA_USER_ADMIN.SET_DEFAULT_LABEL
およびSA_USER_ADMIN.SET_ROW_LABEL
プロシージャは、ユーザーの初期セッション・ラベルおよび行ラベルを、それぞれ指定された値に設定します。
16.7.1.2 スタンダード・グループ: 初期セッション/行ラベルの変更規則
ユーザーのデフォルト・セッション・ラベルは、SA_USER_ADMIN.SET_DEFAULT_LABEL
を使用して変更できます。
スタンダード・グループでは、現在のデフォルトの行ラベルが新しい書込みラベルによって支配されている間は、デフォルトのセッション・ラベルが認可リストの任意のグループを含むように設定できます。つまり、行ラベルには新しい書込みレベルと同じかそれより少ないスタンダード・グループがあります。
同じ規則が、SA_USER_ADMIN.SET_ROW_LABEL
にも適用されます。
16.7.2 スタンダード・グループまたはインバース・グループの現行セッション・ラベルまたは行ラベルの設定
スタンダード・グループまたはインバース・グループに現行セッション・ラベルまたは行ラベルを設定できます。
- スタンダード・グループまたはインバース・グループの現行セッション・ラベルまたは行ラベルの設定について
インバース・グループを使用すると、SA_SESSION.SET_LABEL
およびSA_SESSION.SET_ROW_LABEL
プロシージャの動作に影響します。 - スタンダード・グループ: 現行のセッション/行ラベルの変更規則
スタンダード・グループでは、SA_SESSION.SET_LABEL
プロシージャは、ユーザーの認可グループ・リストのグループを含めるようにセッション・ラベルを設定できます。 - インバース・グループ: 現行のセッション/行ラベルの変更規則
インバース・グループでは、セッション・ラベルにグループを追加すると、グループの数が少ないときより、ユーザーが機密データにアクセスする能力が低下します。
親トピック: セッション・ラベルおよびインバース・グループ
16.7.2.1 スタンダード・グループまたはインバース・グループの現行セッション・ラベルまたは行ラベルの設定について
インバース・グループを使用すると、SA_SESSION.SET_LABEL
およびSA_SESSION.SET_ROW_LABEL
プロシージャの動作に影響します。
これらのプロシージャはそれぞれ、ユーザーの現行のセッション・ラベルと行ラベルを設定するために使用できます。
16.7.2.2 スタンダード・グループ: 現行のセッション/行ラベルの変更規則
スタンダード・グループでは、SA_SESSION.SET_LABEL
プロシージャは、ユーザーの認可グループ・リストのグループを含めるようにセッション・ラベルを設定できます。
認可グループのサブグループは、認可リストに暗黙的に含まれます。
セッション・ラベルを変更すると、そのセッションの行ラベルの値に影響する場合があることに注意してください。
SET_ROW_LABEL
プロシージャを使用すると、現行データベース・セッションの行ラベル値を設定できます。ラベルの区分とグループは、ユーザーが書込みアクセス権を持つセッション・ラベルの区分およびグループのサブセットであることが必要です。
16.7.2.3 インバース・グループ: 現行のセッション/行ラベルの変更規則
インバース・グループでは、セッション・ラベルにグループを追加すると、ユーザーが少数のグループで機密データにアクセスする能力が低下します。
グループを削除すると、ユーザーはより多くの機密情報にアクセスできます。そのため、最大読取りグループがセッション・ラベルのグループのサブセットであり、最大書込みグループがセッション・ラベルのグループのスーパーセットである間は、ユーザーはセッション・ラベルにグループを追加できる必要があります。ユーザーがセッション・ラベルからグループを削除する場合にも、同じ制限が適用されます。
インバース・グループを使用する場合、認可グループのサブグループは存在しないことに注意してください。これは、インバース・グループを使用するポリシーで親グループが許可されないためです。
SET_ROW_LABEL
プロシージャを使用すると、現行データベース・セッションの行ラベル値を設定できます。ラベルの区分は、ユーザーが書込みアクセス権を持つセッション・ラベルの区分のサブセットであることが必要です。
セッション・グループのインバース・グループが行ラベルのインバース・グループのサブセットであり、最大書込みグループが行ラベルのインバース・グループのスーパーセットである間は、ユーザーは行ラベルにインバース・グループを追加できます。
たとえば:
-
ユーザーが、最大読取りグループとしてインバース・グループUKおよびUSを持ち、最大書込みグループとして
UK
,US
,CAN
を持つとします。この場合、そのユーザーはセッション・ラベルをC:ALPHA:UK
,US
,CAN
に設定できますが、C:ALPHA:UK
には設定できません。 -
ユーザーが、最大読取りグループとしてインバース・グループ
UK
を持ち、割り当てられた最大書込みグループとしてUK
,CAN
を持つとします。この場合、そのユーザーはセッション・ラベルをC:ALPHA:UK
,CAN
に設定できますが、C:ALPHA
またはC:ALPHA:UK
,US
,CAN
に変更することはできません。
16.7.3 セッション・ラベルおよびインバース・グループの例
Oracleでは、インバース・グループの使用例が提供されています。
- 例: 単純なインバース・グループ
特殊なラベルのセットを持つインバース・グループを実装する単純なポリシーを作成できます。 - 例: 複雑なインバース・グループ
特殊なラベルのセットを持つインバース・グループを実装する、より複雑なポリシーを作成できます。
親トピック: セッション・ラベルおよびインバース・グループ
16.7.3.1 例: 単純なインバース・グループ
特殊なラベルのセットが設定されたインバース・グループを持つ単純なポリシーを作成できます。
表16-6 インバース・グループの例1のラベル
名前 | 定義 |
---|---|
Max Read Label |
|
Max Write Label |
|
デフォルト読取りラベル |
|
デフォルト書込みラベル |
|
デフォルト行ラベル |
|
次の値の導出元: |
- |
最大読取りグループ |
|
最大書込みグループ |
|
その結果、次のことがいえます。
-
ユーザー01
は、ラベルSE:ALPHA:G1
,G2
を持つデータと、ラベルSE:ALPHA:G1
,G2
,G3
を持つデータを更新できます。ただし、ユーザー1
はラベルSE:ALPHA:G1
を更新できません。インバース・グループではなくスタンダード・グループが使用されていれば、
ユーザー1
はラベルSE:ALPHA:G1
を持つデータを更新できました。 -
ユーザー01
が挿入するデータには、ラベルSE:ALPHA:G1
,G2
があります。(これはスタンダード・グループと同じです。) -
ユーザー01
がデフォルト・ラベルを変更せずに行ラベルをSE:ALPHA:G1
,G2
,G3
に設定した場合、ユーザー1
が、書き込まれるデータの新しい行にSE:ALPHA:G1
,G2
,G3
を挿入します。(スタンダード・グループでは、ユーザー1はデフォルト・ラベルに含まれるグループ以外のグループを設定することはできません。)
親トピック: セッション・ラベルおよびインバース・グループの例
16.7.3.2 例: 複雑なインバース・グループ
特殊なラベルのセットを持つインバース・グループを実装する、より複雑なポリシーを作成できます。
表16-7 インバース・グループの例2のラベル
名前 | 定義 |
---|---|
Max Read Label |
|
Max Write Label |
|
デフォルト読取りラベル |
|
デフォルト書込みラベル |
|
デフォルト行ラベル |
|
次の値の導出元: |
- |
最大読取りグループ |
(設定なし) |
最大書込みグループ |
|
その結果、次のことがいえます。
-
ユーザー01
は、レベルC、区分ALPHA
を持ち、グループG1
、G2
、G3
の組合せを持つデータ、またはグループを持たないデータを更新できます。ユーザー01
は、ユーザー01
が書き込む新しいデータにラベルC:ALPHA:
を挿入します。 -
G1
,G2
やG1
,G3
などの最大読取りグループを持つユーザー02
は、ユーザー01
が書き込んだデータを表示できません。これは、ユーザー01
のデフォルト行ラベルにグループが含まれていないためです。 -
ユーザー01
は、セッション・ラベルのインバース・グループが行ラベルを支配している間(つまり、ユーザー01
のセッション・ラベルに、行ラベルに含まれるグループ以下の数のグループが含まれる場合)は、行ラベルにインバース・グループを設定できます。これは、行ラベルはセッション・ラベルのグループ以上のグループを持つ必要があり、最大書込みグループ以下のグループを持つことができるためです。セッション・ラベルが
G1
の場合は、行ラベルのグループをG1
から最大書込みグループ(G1
,G2
,G3
)に設定できます。 -
ユーザー01
がセッション・ラベルおよび行ラベルをC:ALPHA:G1
:G2
:G3
に設定すると、ユーザー01のデータは、最大読取りグループにG1
、G2
、G3
の任意の組合せを持つユーザーからアクセスできるようになります。
親トピック: セッション・ラベルおよびインバース・グループの例
16.8 インバース・グループでのプロシージャの動作の変更
INVERSE_GROUP
オプションは、ラベル付きデータに対するユーザーの読取りおよび書込みアクセスを決定するアルゴリズムに影響を与えます。
- インバース・グループでのSA_SYSDBA.CREATE_POLICY
SA_SYSDBA.CREATE_POLICY
プロシージャは、ポリシーを作成し、オプションでポリシー固有の列名を定義し、ポリシー・オプションを指定します。 - インバース・グループでのSA_SYSDBA.ALTER_POLICY
SA_SYSDBA.ALTER_POLICY
プロシージャは、INVERSE_GROUP
オプションを除くポリシーのデフォルトの強制オプションを変更します。 - インバース・グループでのSA_USER_ADMIN.ADD_GROUPS
SA_USER_ADMIN.ADD_GROUPS
プロシージャは、ユーザーにグループを追加し、そのグループについて書込みと読取りを認可するかどうかを示します。 - インバース・グループでのSA_USER_ADMIN.ALTER_GROUPS
SA_USER_ADMIN.ALTER_GROUPS
プロシージャは、各グループについて、書込みアクセス、デフォルト・ラベル・インジケータおよび行ラベル・インジケータを変更します。 - インバース・グループでのSA_USER_ADMIN.SET_GROUPS
SA_USER_ADMIN.SET_GROUPS
プロシージャは、ユーザーにグループを割り当てて、そのユーザーのセッション・ラベルと行ラベルのデフォルト値を識別します。 - インバース・グループでのSA_USER_ADMIN.SET_USER_LABELS
SA_USER_ADMIN.SET_USER_LABELS
プロシージャは、個々のコンポーネントではなくラベル・セットを使用して、ユーザーのレベル、区分およびグループを設定します。 - インバース・グループでのSA_USER_ADMIN.SET_DEFAULT_LABEL
SA_USER_ADMIN.SET_DEFAULT_LABEL
プロシージャは、ユーザーの初期セッション・ラベルを設定します。 - インバース・グループでのSA_USER_ADMIN.SET_ROW_LABEL
SA_USER_ADMIN.SET_ROW_LABEL
プロシージャは、ユーザーの初期行ラベルを設定します。 - インバース・グループでのSA_COMPONENTS.CREATE_GROUP
SA_COMPONETS.CREATE_GROUP
プロシージャは、グループを作成し、その短縮名と詳細名、およびオプションで親グループを指定します。 - インバース・グループでのSA_COMPONENTS.ALTER_GROUP_PARENT
SA_COMPONENTS.ALTER_GROUP_PARENT
ファンクションは、インバース・グループ・オプションを指定したポリシーには無効です。 - インバース・グループでのSA_SESSION.SET_LABEL
SA_SESION.SET_LABEL
プロシージャは、現行データベース・セッションのラベルを設定します。 - インバース・グループでのSA_SESSION.SET_ROW_LABEL
SET_ROW_LABEL
プロシージャは、現行データベース・セッションのデフォルトの行ラベル値を設定します。 - インバース・グループでのLEAST_UBOUND
LEAST_UBOUND
(LUBD)ファンクションは、label1
およびlabel2
の最小の上限である文字列ラベルを戻します。 - インバース・グループでのGREATEST_LBOUND
GREATEST_LBOUND
(GLBD)ファンクションは、2つの異なるラベルがある場合、操作に関連付けることができるデータの最下位ラベルを決定します。
親トピック: インバース・グループを使用した解放性
16.8.1 インバース・グループでのSA_SYSDBA.CREATE_POLICY
SA_SYSDBA.CREATE_POLICY
プロシージャは、ポリシーを作成し、オプションでポリシー固有の列名を定義し、ポリシー・オプションを指定します。
インバース・グループのサポートによって、ユーザーはINVERSE_GROUP
強制オプションも使用できます。たとえば:
PROCEDURE CREATE_POLICY ( HR IN VARCHAR2, SA_LABEL IN VARCHAR2 DEFAULT NULL, INVERSE_GROUP IN VARCHAR2 DEFAULT NULL);
親トピック: インバース・グループでのプロシージャの動作の変更
16.8.2 インバース・グループでのSA_SYSDBA.ALTER_POLICY
SA_SYSDBA.ALTER_POLICY
プロシージャは、INVERSE_GROUP
オプションを除くポリシーのデフォルトの強制オプションを変更します。
ポリシーがインバース・グループ用に構成されると、変更することはできません。OLSポリシーに関連付けられている列名も変更できます。
親トピック: インバース・グループでのプロシージャの動作の変更
16.8.3 インバース・グループでのSA_USER_ADMIN.ADD_GROUPS
SA_USER_ADMIN.ADD_GROUPS
プロシージャは、ユーザーにグループを追加し、そのグループについて書込みと読取りを認可するかどうかを示します。
認可されるアクセスのタイプは、access_mode
パラメータによって決定されます。
表16-8 access_modeパラメータの値により認可されるアクセス
access_modeパラメータ | 意味 |
---|---|
|
書込みが認可されることを示します。(つまり、グループは最大読取りグループと最大書込みグループの両方に含まれます。) |
|
グループが最大読取りグループではなく、最大書込みグループに含まれることを示します。 |
|
|
|
指定したグループがデフォルト・グループ内にあることが必要かどうか(
access_modeが access_modeが |
|
ただし、 |
行でin_def
がY
の場合、in_row
もY
に設定する必要があります(ただし、その逆の場合は必要ありません)。
これはin_row
フィールドの場合も同様です。
16.8.4 インバース・グループでのSA_USER_ADMIN.ALTER_GROUPS
SA_USER_ADMIN.ALTER_GROUPS
プロシージャは、各グループについて、書込みアクセス、デフォルトのラベル・インジケータおよび行ラベル・インジケータを変更します。
インバース・グループの動作は、ADD_GROUPS
の場合と同じです。
関連項目:
親トピック: インバース・グループでのプロシージャの動作の変更
16.8.5 インバース・グループでのSA_USER_ADMIN.SET_GROUPS
SA_USER_ADMIN.SET_GROUPS
プロシージャは、ユーザーにグループを割り当てて、そのユーザーのセッション・ラベルと行ラベルのデフォルト値を識別します。
次のように、インバース・グループの処理はスタンダード・グループとは異なります。
表16-9 ユーザーに対するグループの割当て
グループ・セット名 | 意味 |
---|---|
|
最大読取りグループとなるグループのカンマ区切りのリストです。 |
|
最大書込みグループとなるグループのカンマ区切りのリストです。これは
|
def_groups |
デフォルトのグループを指定します。少なくとも
|
|
行グループを指定します。少なくとも インバース・グループの場合は、すべての |
関連項目:
親トピック: インバース・グループでのプロシージャの動作の変更
16.8.6 インバース・グループでのSA_USER_ADMIN.SET_USER_LABELS
SA_USER_ADMIN.SET_USER_LABELS
プロシージャは、個々のコンポーネントではなくラベル・セットを使用して、ユーザーのレベル、区分およびグループを設定します。
次のように、インバース・グループの処理はスタンダード・グループとは異なります。
表16-10 インバース・グループのラベル定義
名前 | 定義 |
---|---|
|
ユーザーが認可される最大読取りラベルの初期化に使用するラベル文字列を指定します。ユーザーの最大レベル、読取りアクセスが認可される区分、および(インバース・グループの場合)任意のラベルで設定できるグループの最小セットで構成されます(最大読取りグループ)。 |
|
ユーザーが認可される最大書込みラベルの初期化に使用するラベル文字列を指定します。ユーザーの最大レベル、書込みアクセスが認可される区分、および(インバース・グループの場合)任意のラベルで設定できる最大認可グループで構成されます(最大書込みグループ)。この場合のすべてのインバース・グループは、書込み認可も持っています。 |
|
レベル、区分、グループなど、ユーザーのセッション・ラベルの初期化に使用するラベル文字列( |
|
プログラムの行ラベルの初期化に使用するラベル文字列を指定します。レベル、区分およびグループ、つまり |
関連項目:
親トピック: インバース・グループでのプロシージャの動作の変更
16.8.7 インバース・グループでのSA_USER_ADMIN.SET_DEFAULT_LABEL
SA_USER_ADMIN.SET_DEFAULT_LABEL
プロシージャは、ユーザーの初期セッション・ラベルを設定します。
この場合も、セッション・ラベルのインバース・グループ・コンポーネントの設定で説明したすべての規則が適用されます(「セッション・ラベルおよびインバース・グループ」を参照)。
関連項目:
親トピック: インバース・グループでのプロシージャの動作の変更
16.8.8 インバース・グループでのSA_USER_ADMIN.SET_ROW_LABEL
SA_USER_ADMIN.SET_ROW_LABEL
プロシージャは、ユーザーの初期行ラベルを設定します。
row_label
を指定する場合、インバース・グループ・コンポーネントは、少なくともdef_label
のすべてのインバース・グループを含み、最大書込みグループのサブセットである必要があります。
16.8.9 インバース・グループでのSA_COMPONENTS.CREATE_GROUP
SA_COMPONETS.CREATE_GROUP
プロシージャは、グループを作成し、その短縮名と詳細名、およびオプションで親グループを指定します。
インバース・グループでは、parent_name
フィールドは常にNULL
である必要があります。このフィールドに値を指定すると、グループ階層が無効であることを示すエラー・メッセージが表示されます。
関連項目:
親トピック: インバース・グループでのプロシージャの動作の変更
16.8.10 インバース・グループでのSA_COMPONENTS.ALTER_GROUP_PARENT
SA_COMPONENTS.ALTER_GROUP_PARENT
ファンクションは、インバース・グループ・オプションを指定したポリシーには無効です。
このファンクションをコールすると、エラー・メッセージが表示されます。
関連項目:
親トピック: インバース・グループでのプロシージャの動作の変更
16.8.11 インバース・グループでのSA_SESSION.SET_LABEL
SA_SESION.SET_LABEL
プロシージャは、現行データベース・セッションのラベルを設定します。
現行ユーザーの場合、このプロシージャは、SA_USER_ADMIN.SET_USER_LABEL
ファンクションの場合と同様に、セッション・ラベルを設定する場合と同じ規則に従います。
16.8.12 インバース・グループでのSA_SESSION.SET_ROW_LABEL
SET_ROW_LABEL
プロシージャは、現行データベース・セッションのデフォルトの行ラベル値を設定します。
現行ユーザーの場合、このプロシージャは、sa_user_admin.set_row_label
ファンクションの場合と同様に、行ラベルを設定する場合と同じ規則に従います。
16.8.13 インバース・グループでのLEAST_UBOUND
LEAST_UBOUND
(LUBD)ファンクションは、label1
およびlabel2
の最小の上限である文字列ラベルを戻します。
スタンダード・グループでは、最小の上限は、最上位レベル、ラベル内の区分の共用部分およびラベル内のグループの共用部分です。
インバース・グループでは、最小の上限は、最上位レベル、ラベル内の区分の共用部分およびラベル内のインバース・グループの共通部分です。
たとえば、インバース・グループでは、HIGHLY_SENSITIVE
:ALPHA:G1
,G2
およびSENSITIVE:BETA:G1
の最小の上限は、HIGHLY_SENSITIVE:ALPHA
,BETA:G1
です。
親トピック: インバース・グループでのプロシージャの動作の変更
16.8.14 インバース・グループでのGREATEST_LBOUND
GREATEST_LBOUND
(GLBD)ファンクションは、2つの異なるラベルがある場合、操作に関連付けることができるデータの最下位ラベルを決定します。
このファンクションは、label1
およびlabel2
の最大の下限である文字列ラベルを戻します。
スタンダード・グループでは、最大の下限は、最下位レベルであり、ラベルの区分とラベルのグループの共通部分です。
インバース・グループでは、最大の下限は、最下位レベルであり、ラベルの区分の共通部分とラベルのインバース・グループの共用部分です。
たとえば、インバース・グループでは、HIGHLY_SENSITIVE:ALPHA:G1
,G3
およびSENSITIVE::G1
の最大の下限は、SENSITIVE:G1
,G3
です。
関連項目
親トピック: インバース・グループでのプロシージャの動作の変更
16.9 インバース・グループでのラベルの支配規則
支配規則がOracleラベルおよびインバース・グループに対してどのように機能するかを理解しておく必要があります。
スタンダード・グループを使用したOracle Label Securityの支配規則は次のとおりです。
次の場合、ユーザー・ラベルがデータ・ラベルを支配します。
-
ユーザー・レベルがデータ・レベル以上である。
-
ユーザー区分がデータ区分のスーパーセットである。
-
ユーザー・グループとデータ・グループに共通部分がある(ユーザー・グループに、データ・グループの1つ以上のグループがある)。
インバース・グループを使用したOracle Label Securityの支配規則は次のとおりです。
次の場合、ユーザー・ラベルがデータ・ラベルを支配します。
-
ユーザー・レベルがデータ・レベル以上である。
-
ユーザー区分がデータ区分のスーパーセットである。
-
データ・グループがユーザー・グループのスーパーセットである。
関連項目
親トピック: インバース・グループを使用した解放性