ヘッダーをスキップ
Oracle Label Security管理者ガイド
11g リリース1(11.1)
E05728-01
  目次へ
目次
索引へ
索引

戻る
戻る
 
次へ
次へ
 

15 インバース・グループを使用した解放性

この章では、インバース・グループを使用したOracle Label Securityの解放性の実装について説明します。この章の内容は、次のとおりです。

15.1 インバース・グループおよび解放性の概要

インバース・グループは、情報の解放性を示し、データの送信にマークを付けるために使用されます。インバース・グループをデータ・ラベルに追加すると、データの機密性は低下します。たとえば、インバース・グループUKおよびUSを持つユーザーは、インバース・グループUKのみを持つデータにはアクセスできません。そのデータにUSを追加すると、インバース・グループUKおよびUSを持つすべてのユーザーがデータにアクセスできるようになります。

ユーザーに解放性を割り当てる場合は、ユーザーに通信チャネルのマークを付けます。データを通信チャネルで転送するには、データの解放性が、ユーザーに割り当てられた解放性を支配する必要があります。つまり、データ・レコードに割り当てられた解放性には、ユーザーに割り当てられたすべての解放性が含まれる必要があります。

解放性のメリットは、情報を広く送信できることです。マーケティング組織全体にデータを解放することは、データ・レコードにマーケティングの解放性を追加すること同様に単純になります。

15.2 スタンダード・グループおよびインバース・グループの比較

Oracle Label Securityのグループは、データを所有またはデータにアクセスする組織を識別します。 スタンダード・グループと同様に、インバース・グループは情報の送信を制御します。ただし、インバース・グループとOracle Label Securityのスタンダード・グループの動作は異なります。デフォルトでは、Oracle Label Securityで作成されたすべてのポリシーではスタンダード・グループの動作を使用します。

解放性という用語は、インバース・グループの動作を示す場合があります。インバース・グループをデータ・ラベルに含めた場合、ユーザーにラベル区分認可を割り当てた場合と同様の影響があります。Oracle Label Securityは、インバース・グループを持つラベルが割り当てられたデータの行をユーザーが参照できるかどうかを評価する場合、ユーザーではなく、データに適切なグループ認可があるかどうかを確認します。つまり、データにユーザーに割り当てられたすべてのインバース・グループがあるかを確認します。それに対して、スタンダード・グループでは、Oracle Label Securityは、ユーザーが1行のデータに割り当てられたグループのうちの1つ以上に対して認可されているかどうかを確認します。

3つのスタンダード・グループ(Eastern、WesternおよびSouthern)を含むポリシーがあるとします。ユーザー1のラベル認可には、グループEasternおよびWesternが含まれます。ユーザー1には、ポリシーで適切なレベルおよび区分認可が割り当てられているとします。また、次のことも想定します。

表15-1に、ポリシーで使用されるグループのタイプと、ユーザー1がアクセスできるすべての行を示します。

表15-1 スタンダード・グループおよびインバース・グループへのアクセス

行ラベルに含まれるグループ スタンダード・グループでのユーザー1のアクセス可否 インバース・グループでのユーザー1のアクセス可否

なし

Y

N

Eastern

Y

N

Western

Y

N

Southern

N

N

Eastern、Western

Y

Y

Eastern、Southern

Y

N

Western、Southern

Y

N

Eastern、Western、Southern

Y

Y


スタンダード・グループは、情報の所有権を示します。したがって、特定部門に関するすべてのデータのラベルには、その部門のグループを指定できます。データ・ラベルにグループを追加する場合、データはさらに機密性が強くなります。たとえば、グループを持たないユーザーはラベルにグループを持たないデータにアクセスできます。 データ・ラベルにグループUSを追加すると、そのユーザーはもとのデータにはアクセスできなくなります。


関連項目:

グループ

15.3 インバース・グループの動作

この項では、インバース・グループの実装方法および動作について説明します。 この項の内容は、次のとおりです。

15.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つ以上のインバース・グループに対する認可を付与できます。

15.3.2 インバース・グループおよびラベル・コンポーネント

Oracle Label Securityポリシーをインバース・グループ・オプションを使用して作成する場合、ポリシー・ラベル(レベル、区分、グループなど)のコンポーネントはスタンダード・グループと同じです。ただし、インバース・グループでは、ユーザーの読取りグループおよび書込みグループのデータ・アクセスでの意味およびロールは異なります。

次のポリシーの例を考えてみます。このポリシーには3つのレベル、1つの区分および3つのグループがあります。

表15-2 ポリシーの例

ポリシー・コンポーネント 短縮形

レベル


UNCLASSIFIED

UN

CONFIDENTIAL

CON

SECRET

SE

区分


FINANCIAL

FIN

グループ


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データを読み取れません。

15.3.3 インバース・グループで計算されるラベル

この項では、インバース・グループが計算されるラベルの値に与える影響について説明します。 この項の内容は、次のとおりです。

15.3.3.1 インバース・グループで計算されるセッション・ラベル

管理者がユーザーにラベル認可を割り当てた後、Oracle Label Securityは自動的にいくつかのラベルを計算します。インバース・グループでのこれらのラベルは次のとおりです。

表15-3 インバース・グループで計算されるセッション・ラベル

計算されるラベル 定義

最大読取りラベル

認可された区分とユーザー・ラベル(セッション・ラベル)で必要な最小限のインバース・グループを組み合せたユーザーの最大レベル。

最大書込みラベル

ユーザーに書込みアクセス権が付与されている区分を組み合せたユーザーの最大レベル。任意のラベルで設定できる認可された最大限のインバース・グループが含まれます。ユーザーは、すべてのインバース・グループへの書込み認可を持っています。

最小書込みラベル

ユーザーの最小レベル。

デフォルト読取りラベル

ユーザーのデフォルトとして指定された区分とインバース・グループを組み合せたデフォルト・レベル。

デフォルト書込みラベル

ユーザーに書込みアクセス権が付与されている区分とインバース・グループを含むデフォルト読取りラベルのサブセット。ただし、常に書込みアクセスに使用される最大書込みグループなので、インバース・グループ・コンポーネントによる影響は受けません。

デフォルト行ラベル

挿入されるデータのデータ・ラベルのデフォルトとして指定されている、ユーザーの最小書込みラベルと最大書込みラベル間のコンポーネントの組合せ。インバース・グループは、デフォルト・ラベルのインバース・グループのスーパーセットで、最大書込みグループのサブセットである必要があります。


15.3.3.2 インバース・グループ、計算される最大読取りグループおよび最大書込みグループ

表15-3の計算される値から、次の2つのグループのセットが読取りおよび書込みアクセスのラベル評価として識別されます。

表15-4 読取りアクセスと書込みアクセスの評価として識別されるグループのセット

グループのセット 意味

最大読取りグループ

最大読取りグループは、最大読取りラベルに含まれるグループであり、任意のユーザー・ラベルに設定できるインバース・グループの最小セットを識別します。

最大書込みグループ

最大書込みグループは、最大書込みラベルに含まれるグループであり、任意のユーザー・ラベルに設定できる認可された最大限のインバース・グループを識別します。このグループ・セットは、書込みアクセス時およびセッション・ラベルの設定時に確認されます。

最大書込みグループは、最大読取りグループのスーパーセットです。


表15-5に示すとおり、スタンダード・グループでは読取り専用および読取り/書込み認可、インバース・グループでは書込み専用および読取り/書込み認可を持つことができます。

表15-5 スタンダード・グループおよびインバース・グループに対する読取り/書込み認可

グループのタイプ 読取り専用 読取り/書込み 書込み専用

スタンダード・グループ

グループは、最大書込みレベルではなく、最大読取りレベルのみに表示されます。

グループは、最大読取りレベルと最大書込みレベルの両方に表示されます。

サポートされません。

インバース・グループ

サポートされません。

グループは、最大読取りレベルと最大書込みレベルの両方に表示されます。

グループは、最大読取りレベルではなく、最大書込みレベルのみに表示されます。


最大読取りグループは、最大読取りレベルに含まれるグループのセットを識別しますが、この値は、設定できるインバース・グループの最小セットを表します。 次に例を示します。

最大読取りグループ: S:C1:G1,G2

最大書込みグループ: S:C1:G1,G2,G3,G4,G5

この場合、ユーザーは、少なくとも最大読取りグループにリストされた2つのグループを含むデータを読み取ることができます。

スタンダード・グループでは、最大読取りレベルより最大書込みレベルに多くのグループが含まれることはありません。

15.3.4 インバース・グループおよび階層構造

Oracle Label Securityのスタンダード・グループは階層構造になっており、グループを親グループに対応付けることができます。たとえば、EASTERN領域は2つの下位グループEAS_SALESおよびEAS_HRの親になることができます。

スタンダード・グループを持つポリシーでは、ユーザー・ラベルに親グループがある場合、そのユーザー・ラベルから下位グループのすべてのデータにアクセスできます。

インバース・グループでは、親子関係はサポートされていません。

15.3.5 インバース・グループおよびユーザー権限

インバース・グループが実装されている場合は、ユーザー権限の意味は従来どおりです。

ユーザーに特別な権限が付与されていない場合、読取りアルゴリズムと書込みアルゴリズムはスタンダード・グループとインバース・グループでは異なります。相違点については、「インバース・グループでの読取りアクセスのアルゴリズム」および「インバース・グループでの書込みアクセスのアルゴリズム」を参照してください。

COMPACCESS権限に与えるインバース・グループの影響については、「インバース・グループでのCOMPACCESS権限のアルゴリズム」を参照してください。

インバース・グループは、次のユーザー権限には影響を与えません。

  • PROFILE_ACCESS

  • WRITEUP

  • WRITEDOWN

  • WRITEACROSS

15.4 インバース・グループでの読取りアクセスのアルゴリズム

この項では、インバース・グループでの読取りアクセスのアルゴリズムについて説明します。

実際にINVERSE GROUPオプションを指定した表のデータを読み取るには、図15-1「インバース・グループでの読取りアクセスのラベル評価」のように、ラベル評価プロセスは、レベル、グループ、区分の順に進行します。(現行のセッション・ラベルが、評価されているラベルであることに注意してください。)

  1. ユーザーのレベルは、データのレベル以上であることが必要です。

  2. ユーザーのラベルは、データに割り当てられたすべての区分を含んでいる必要があります。

  3. データ・ラベルのグループは、ユーザー・ラベルのグループのスーパーセットである必要があります。

ユーザーのラベルがこれらのテストにパスすると、そのユーザーはデータにアクセスできます。パスしなかった場合、アクセスは拒否されます。データ・ラベルがNULLまたは無効の場合、ユーザーのアクセスは拒否されます。


注意:

次のフロー図は、ユーザーに特別な権限が付与されていない場合にのみ適用されます。

図15-1 インバース・グループでの読取りアクセスのラベル評価

インバース・グループでの読取りアクセスのラベル評価
「図15-1 インバース・グループでの読取りアクセスのラベル評価」の説明

15.5 インバース・グループでの書込みアクセスのアルゴリズム

この項では、インバース・グループでの書込みアクセスのアルゴリズムについて説明します。

INVERSE GROUPオプションを指定した表でデータを書き込むには、図15-2「インバース・グループでの書込みアクセスのラベル評価」のように、ラベル評価プロセスは、レベル、グループ、区分の順に進行します。(現行のセッション・ラベルが、評価されているラベルであることに注意してください。)

  1. データ・ラベル内のレベルは、ユーザーの最小レベル以上で、かつユーザーのセッション・レベル以下であることが必要です。

  2. 次のいずれかの条件を満たしている必要があります。

    データ・ラベルのグループは、ユーザー・ラベルのグループのスーパーセットであること。

    または

    ユーザーに、ポリシーに対する読取りアクセス権がある。

  3. ユーザーの最大書込みグループは、データ・ラベル・グループのスーパーセットである必要があります。

  4. ユーザー・ラベルには、データ・ラベルのすべての区分に対する書込みアクセス権が必要です。

データ・ラベルがNULLまたは無効の場合、ユーザーのアクセスは拒否されます。


注意:

次のフロー図は、ユーザーに特別な権限が付与されていない場合にのみ適用されます。

図15-2 インバース・グループでの書込みアクセスのラベル評価

インバース・グループでの書込みアクセスのラベル評価
「図15-2 インバース・グループでの書込みアクセスのラベル評価」の説明

15.6 インバース・グループでのCOMPACCESS権限のアルゴリズム

この項では、ユーザーがCOMPACCESS権限を持つ場合に、インバース・グループでの読取りおよび書込みアクセスのアルゴリズムについて説明します。

COMPACCESS権限により、ユーザーは行のグループから独立し、行の区分に基づいてデータにアクセスできます。

図15-3「読取りアクセスのラベル評価: COMPACCESS権限およびインバース・グループ」および図15-4「書込みアクセスのラベル評価: COMPACCESS権限およびインバース・グループ」に、COMPACCESS権限を持つユーザーの読取りアクセスおよび書込みアクセスのラベル評価プロセスを示します。データ・ラベルがNULLまたは無効の場合、ユーザーのアクセスは拒否されます。

(現行のセッション・ラベルが、評価されているラベルであることに注意してください。)

図15-3 読取りアクセスのラベル評価: COMPACCESS権限およびインバース・グループ

評価: COMPACCESS権限およびインバース・グループ
「図15-3 読取りアクセスのラベル評価: COMPACCESS権限およびインバース・グループ」の説明

図15-4 書込みアクセスのラベル評価: COMPACCESS権限およびインバース・グループ

評価: COMPACCESS権限およびインバース・グループ
「図15-4 書込みアクセスのラベル評価: COMPACCESS権限およびインバース・グループ」の説明

15.7 セッション・ラベルおよびインバース・グループ

この項では、インバース・グループがセッション・ラベルおよび行ラベルに与える影響について説明します。

15.7.1 スタンダード・グループまたはインバース・グループでの初期セッション/行ラベルの設定

インバース・グループを使用すると、セッション・ラベルを決定するOracle Label Securityプロシージャの動作に影響します。 SA_USER_ADMIN.SET_DEFAULT_LABELおよびSA_USER_ADMIN.SET_ROW_LABELプロシージャは、ユーザーの初期セッション・ラベルおよび行ラベルを、それぞれ指定された値に設定します。

15.7.1.1 スタンダード・グループ: 初期セッション/行ラベルの変更規則

ユーザーのデフォルト・セッション・ラベルは、SA_USER_ADMIN.SET_DEFAULT_LABELを使用して変更できます。スタンダード・グループでは、現在のデフォルトの行ラベルが新しい書込みラベルによって支配されている間は、デフォルトのセッション・ラベルが認可リストの任意のグループを含むように設定できます。つまり、行ラベルには、新しい書込みレベル以下のスタンダード・グループが含まれます。

同じ規則が、SA_USER_ADMIN.SET_ROW_LABELにも適用されます。

15.7.1.2 インバース・グループ: 初期セッション/行ラベルの変更規則

インバース・グループでは、現在のデフォルトの行ラベルが新しい書込みラベルによって支配されている間は、デフォルトのセッション・ラベルが認可リストの任意のグループを含むように設定できます。つまり、行ラベルには、新しい書込みレベル以上のインバース・グループが含まれます。

同じ規則が、SA_USER_ADMIN.SET_ROW_LABELにも適用されます。

15.7.2 スタンダード・グループまたはインバース・グループでの現行のセッション/行ラベルの設定

インバース・グループを使用すると、ユーザーの現行のセッション・ラベルおよび行ラベルをそれぞれ設定するためのSA_SESSION.SET_LABELおよびSA_SESSION.SET_ROW_LABELプロシージャの動作に影響します。

15.7.2.1 スタンダード・グループ: 現行のセッション/行ラベルの変更規則

スタンダード・グループでは、SA_SESSION.SET_LABELプロシージャを使用すると、ユーザーの認証グループ・リストの任意のグループを含めるようにセッション・ラベルを設定できます。(認可グループのサブグループは、認可リストに暗黙的に含まれます。)セッション・ラベルを変更すると、そのセッションの行ラベルの値に影響する場合があることに注意してください。

SET_ROW_LABELプロシージャを使用すると、現行データベース・セッションの行ラベル値を設定できます。ラベルの区分とグループは、ユーザーが書込みアクセス権を持つセッション・ラベルの区分およびグループのサブセットであることが必要です。

15.7.2.2 インバース・グループ: 現行のセッション/行ラベルの変更規則

インバース・グループでは、セッション・ラベルにグループを追加すると、少ないグループを持つ機密性の高いデータへのアクセス性が低下します。グループを削除すると、より機密性の高い情報にアクセスできるようになります。そのため、最大読取りグループがセッション・ラベルのグループのサブセットであり、最大書込みグループがセッション・ラベルのグループのスーパーセットである間は、ユーザーはセッション・ラベルにグループを追加できる必要があります。ユーザーがセッション・ラベルからグループを削除する場合にも、同じ制限が適用されます。

インバース・グループを使用する場合、認可グループのサブグループは存在しないことに注意してください。これは、インバース・グループを使用するポリシーで親グループが許可されないためです。

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に変更することはできません。

15.7.3 セッション・ラベルおよびインバース・グループの例

この項では、インバース・グループの使用方法を説明する例を示します。

15.7.3.1 インバース・グループの例1

インバース・グループを実装するポリシーのユーザー1について考えます。ユーザーには次のラベルがあります。

表15-6 インバース・グループの例1のラベル

名前 定義

最大読取りラベル

SE:ALPHA,BETA:G1,G2

最大書込みラベル

SE:ALPHA:G1,G2,G3

デフォルト読取りラベル

SE:ALPHA,BETA:G1,G2

デフォルト書込みラベル

SE:ALPHA:G1,G2

デフォルト行ラベル

SE:ALPHA:G1,G2

次の値の導出元:


最大読取りグループ

G1,G2

最大書込みグループ

G1,G2,G3


その結果、次のことがいえます。

  • ユーザー1は、ラベルSE:ALPHA:G1,G2を持つデータおよびラベルSE:ALPHA:G1,G2,G3を持つデータを更新できます。ただし、ラベルSE:ALPHA:G1は更新できません。

    インバース・グループではなくスタンダード・グループが使用されていた場合は、ラベルSE:ALPHA:G1を持つデータを更新できました。

  • ユーザー1が挿入するデータのラベルはSE:ALPHA:G1,G2です。(これはスタンダード・グループの場合も同様です。)

  • ユーザー1がデフォルト・ラベルを変更せずに行ラベルをSE:ALPHA:G1,G2,G3に設定する場合は、ユーザー1が書く新しい行のデータにSE:ALPHA:G1,G2,G3を挿入します。(スタンダード・グループでは、ユーザー1はデフォルト・ラベルに含まれるグループ以外のグループを設定することはできません。)

15.7.3.2 インバース・グループの例2

インバース・グループを実装するポリシーのユーザー01について考えます。ユーザーには次のラベルがあります。

表15-7 インバース・グループの例2のラベル

名前 定義

最大読取りラベル

C:ALPHA:

最大書込みラベル

C:ALPHA:G1,G2,G3

デフォルト読取りラベル

C:ALPHA:

デフォルト書込みラベル

C:ALPHA:

デフォルト行ラベル

C:ALPHA:

次の値の導出元:


最大読取りグループ

(設定なし)

最大書込みグループ

G1,G2,G3


その結果、次のことがいえます。

  • ユーザー01は、レベルC、区分ALPHAを持ち、グループG1、G2、G3の組合せを持つデータ、またはグループを持たないデータを更新できます。ユーザー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の任意の組合せを持つユーザーからアクセスできるようになります。

15.8 インバース・グループでのプロシージャの動作の変更

ポリシーの作成時にINVERSE_GROUPオプションを指定すると、ラベル付きデータに対するユーザーの読取りおよび書込みアクセスを決定するアルゴリズムが変更されます。この項では、インバース・グループが次のプロシージャの動作に与える影響について説明します。

15.8.1 インバース・グループでのSYSDBA.CREATE_POLICY

SYSDBAパッケージのCREATE_POLICYプロシージャを使用して、ポリシーを作成し、オプションのポリシー固有の列名を定義し、デフォルトのポリシー・オプション・セットを指定します。インバース・グループのサポートによって、ユーザーはINVERSE_GROUP施行オプションも使用できます。 次に例を示します。

PROCEDURE CREATE_POLICY (
 HR IN VARCHAR2,
 SA_LABEL IN VARCHAR2 DEFAULT NULL,

INVERSE_GROUP IN VARCHAR2 DEFAULT NULL);

15.8.2 インバース・グループでのSYSDBA.ALTER_POLICY

SYSDBAパッケージのALTER_POLICYプロシージャを使用して、ポリシーのデフォルトの施行オプション(INVERSE_GROUPオプションを除く)を変更します。ポリシーがインバース・グループ用に構成されると、変更することはできません。

15.8.3 インバース・グループでのSA_USER_ADMIN.ADD_GROUPS

ADD_GROUPSプロシージャでは、ユーザーにグループを追加し、そのグループの書込みおよび読取りの両方が認可されるかどうかを示します。


関連項目:

「SA_USER_ADMIN.ADD_GROUPS」の構文を参照してください。

認可されるアクセスのタイプは、access_modeパラメータによって決定されます。

表15-8 access_modeパラメータの値により認可されるアクセス

access_modeパラメータ 意味

READ_WRITE

書込みが認可されることを示します。(つまり、グループは最大読取りグループと最大書込みグループの両方に含まれます。)

WRITE_ONLY

グループが最大読取りグループではなく、最大書込みグループに含まれることを示します。

access_mode

access_modeがREAD_WRITEに設定されている場合、グループは最大読取りグループおよび最大書込みグループの両方に追加されます。

access_modeがSA_UTL.WRITE_ONLYに設定されている場合、グループは最大書込みグループにのみ追加されます。

access_modeがNULLの場合は、SA_UTL.READ_WRITEに設定されます。

in_def

指定したグループがデフォルト・グループ内にあることが必要かどうか(Y/N)を指定します。

in_defがNULLの場合は、次のようにYまたはNに設定されます。

access_modeがREAD_WRITEの場合、in_defはYに設定されます。

access_modeがWRITE_ONLYの場合、in_defはNに設定されます。

in_row

in_defの場合と同じ条件を使用して、指定したグループが行ラベル内にあることが必要かどうか(Y/N)を指定します。

ただし、in_defがYの場合は、in_rowもYに設定する必要があります。


行でin_defがYの場合、in_rowもYに設定する必要があります(ただし、その逆の場合は必要ありません)。

これはin_rowフィールドの場合も同様です。

15.8.4 インバース・グループでのSA_USER_ADMIN.ALTER_GROUPS

ALTER_GROUPSプロシージャは、リストにあるグループごとに、書込みアクセス、デフォルトのラベル・インジケータおよび行ラベル・インジケータを変更します。

インバース・グループの動作は、ADD_GROUPSの場合と同じです。


関連項目:

「SA_USER_ADMIN.ALTER_GROUPS」の構文を参照してください。

15.8.5 インバース・グループでのSA_USER_ADMIN.SET_GROUPS

SET_GROUPSプロシージャでは、ユーザーにグループを割り当てて、そのユーザーのセッション・ラベルと行ラベルのデフォルト値を識別します。


関連項目:

「SA_USER_ADMIN.SET_GROUPS」の構文を参照してください。

次のように、インバース・グループの処理はスタンダード・グループとは異なります。

表15-9 ユーザーに対するグループの割当て

グループ・セット名 意味

read_groups

最大読取りグループとなるグループのカンマ区切りのリストです。

write_groups

最大書込みグループとなるグループのカンマ区切りのリストです。このグループはread_groupsのスーパーセットである必要があります。

write_groupsがNULLの場合は、read_groupsに設定されます。

def_groups

デフォルトのグループを指定します。少なくともread_groupsが必要で、write_groupsdef_groupsのスーパーセットである必要があります。

def_groupsがNULLの場合は、read_groupsに設定されます。

row_groups

行グループを指定します。少なくともdef_groupsが必要で、最大書込みグループのサブセットである必要があります。

インバース・グループの場合は、すべてのdef_groupsがwrite_groupsにも含まれるため、row_groupsがNULLの場合はdef_groupsに設定されます。


15.8.6 インバース・グループでのSA_USER_ADMIN.SET_USER_LABELS

SET_USER_LABELSプロシージャでは、個々のコンポーネントではなくラベル・セットを使用して、ユーザーのレベル、区分およびグループを設定します。


関連項目:

「SA_USER_ADMIN.SET_USER_LABELS」の構文を参照してください。

次のように、インバース・グループの処理はスタンダード・グループとは異なります。

表15-10 インバース・グループのラベル定義

名前 定義

max_read_label

ユーザーが認可される最大読取りラベルの初期化に使用するラベル文字列を指定します。ユーザーの最大レベル、読取りアクセスが認可される区分、および(インバース・グループの場合)任意のラベルで設定できるグループの最小セットで構成されます(最大読取りグループ)。

max_write_label

ユーザーが認可される最大書込みラベルの初期化に使用するラベル文字列を指定します。ユーザーの最大レベル、書込みアクセスが認可される区分、および(インバース・グループの場合)任意のラベルで設定できる最大認可グループで構成されます(最大書込みグループ)。この場合のすべてのインバース・グループは、書込み認可も持っています。max_read_labelのグループのスーパーセットである必要があります。max_write_labelを指定しない場合は、max_read_labelに設定されます。

def_label

レベル、区分、グループなど、ユーザーのセッション・ラベルの初期化に使用するラベル文字列(max_read_labelのサブセット)を指定します。default_labelを指定しない場合は、max_read_labelに設定されます。インバース・グループの場合、コンポーネントに少なくともmax_read_labelのグループがあり、max_write_labelのグループがdef_labelのグループのスーパーセットである必要があります。

row_label

プログラムの行ラベルの初期化に使用するラベル文字列を指定します。レベル、区分およびグループ、つまりmax_write_labelおよびdef_labelのサブセットが含まれます。row_labelを指定しない場合は、def_labelに設定され、書込みアクセスが認可される区分とグループのみが含まれます。row_labelを指定しない場合、インバース・グループのコンポーネントはdef_labelと同じ値に設定されます。行ラベルのインバース・グループは、少なくともデフォルト・ラベルのインバース・グループである必要があり、最大書込みグループのサブセットである必要があります。


15.8.7 インバース・グループでのSA_USER_ADMIN.SET_DEFAULT_LABEL

SET_DEFAULT_LABELプロシージャでは、ユーザーの初期セッション・ラベルを指定のラベルに設定します。

この場合も、セッション・ラベルのインバース・グループ・コンポーネントの設定で説明したすべての規則が適用されます(「セッション・ラベルおよびインバース・グループ」を参照)。


関連項目:

「SA_USER_ADMIN.SET_DEFAULT_LABEL」の構文を参照してください。

15.8.8 インバース・グループでのSA_USER_ADMIN.SET_ROW_LABEL

SET_ROW_LABELプロシージャでは、ユーザーの初期の行ラベルを指定のラベルに設定します。


関連項目:

「SA_USER_ADMIN.SET_ROW_LABEL」の構文を参照してください。

row_labelを指定する場合、インバース・グループ・コンポーネントは、少なくともdef_labelのすべてのインバース・グループを含み、最大書込みグループのサブセットである必要があります。

15.8.9 インバース・グループでのSA_COMPONENTS.CREATE_GROUP

CREATE_GROUPプロシージャを使用してグループを作成し、短縮名と詳細名、およびオプションで親グループを指定します。


関連項目:

「SA_COMPONENTS.CREATE_GROUPを使用したグループの作成」の構文を参照してください。

インバース・グループでは、parent_nameフィールドは常にNULLである必要があります。このフィールドに値を指定すると、グループ階層が無効であることを示すエラー・メッセージが表示されます。

15.8.10 インバース・グループでのSA_COMPONENTS.ALTER_GROUP_PARENT

このファンクションは、インバース・グループ・オプションを指定したポリシーには無効です。このファンクションをコールすると、エラー・メッセージが表示されます。


関連項目:

「SA_COMPONENTS.ALTER_GROUPを使用したグループの変更」の構文を参照してください。

15.8.11 インバース・グループでのSA_SESSION.SET_LABEL

SET_LABELプロシージャを使用すると、現行のデータベース・セッションのラベルを設定できます。


関連項目:

「SA_SESSION.SET_LABELを使用したセッション・ラベルの変更」の構文を参照してください。

現行ユーザーの場合、このプロシージャは、sa_user_admin.set_user_labelファンクションの場合と同様に、セッション・ラベルを設定する場合と同じ規則に従います。

15.8.12 インバース・グループでのSA_SESSION.SET_ROW_LABEL

SET_ROW_LABELプロシージャを使用すると、現行データベース・セッションのデフォルトの行ラベル値を設定できます。


関連項目:

「SA_SESSION.SET_ROW_LABELを使用した行ラベルの変更」の構文を参照してください。

現行ユーザーの場合、このプロシージャは、sa_user_admin.set_row_labelファンクションの場合と同様に、行ラベルを設定する場合と同じ規則に従います。

15.8.13 インバース・グループでのLEAST_UBOUND

LEAST_UBOUND(LUBD)ファンクションは、label1およびlabel2の最小の上限である文字列ラベル、つまり、この2つを支配している単一のラベルを戻します。

スタンダード・グループでは、最小の上限は最高レベル、ラベルの区分の共用部分、およびラベルのグループの共用部分です。

インバース・グループでは、最小の上限は最高レベル、ラベルの区分の共用部分、およびラベルのインバース・グループの共通部分です。

たとえば、インバース・グループでは、HIGHLY_SENSITIVE:ALPHA:G1,G2およびSENSITIVE:BETA:G1の最小の上限は、HIGHLY_SENSITIVE:ALPHA,BETA:G1です。

15.8.14 インバース・グループでのGREATEST_LBOUND

GREATEST_LBOUND(GLBD)ファンクションを使用すると、指定した2つの異なるラベルに関して、操作に関与するデータの最下位ラベルを決定できます。このファンクションは、ラベル1およびラベル2の最大の下限である文字列ラベルを戻します。

スタンダード・グループでは、最大の下限は最下位レベル、ラベルの区分およびラベルのグループの共通部分です。

インバース・グループでは、最大の下限は最下位レベル、ラベルの区分の共通部分、およびラベルのインバース・グループの共用部分です。

たとえば、インバース・グループでは、HIGHLY_SENSITIVE:ALPHA:G1,G3およびSENSITIVE::G1の最大の下限は、SENSITIVE:G1,G3です。

15.9 インバース・グループでのラベルの支配規則

スタンダード・グループを使用したOracle Label Securityの支配規則は次のとおりです。

次の場合、ユーザー・ラベルがデータ・ラベルを支配します。

インバース・グループを使用したOracle Label Securityの支配規則は次のとおりです。

次の場合、ユーザー・ラベルがデータ・ラベルを支配します。