1 Oracle Label Securityの概要
Oracle Label Securityでは、表の各行へのファイングレイン・アクセスが提供されています。
- Oracle Label Securityについて
Oracle Label Securityは、表の特定の各行およびアプリケーション・ユーザーに割り当てられたラベルを使用して個々の表の行の表示、挿入および更新を制御します。 - Oracle Label Securityの利点
Oracle Label Securityには、行レベルの管理の制御に関していくつかの利点があります。 - Oracle Label Securityを使用する権限を持つユーザー
Oracle Label Securityをデータベースにインストールすると、その登録プロセスによって、LBAC_DBA
ロールがあるLBACSYS
という名前の管理ユーザーが作成されます。 - Oracle Label Security管理者の業務
Oracle Label Security管理者には、パッケージベースおよびロールベースの権限のセットがあります。 - Oracle Label Securityのコンポーネント
Oracle Label Securityポリシーには、標準のコンポーネント・セットがあります。 - Oracle Label Securityのアーキテクチャ
Oracle Label Securityは、Oracle Database認証を使用して行レベルのセキュリティを実行します。 - Oracle Label Securityの管理インタフェース
Oracle Label Securityの開発および管理タスクは、2つのインタフェースのどちらでも実行できます。 - Oracle Label Securityのデモンストレーション・ファイル
olsdemo.sql
ファイルでは、Oracle Label Securityの使用に関するデモンストレーションが提供されています。 - マルチテナント環境におけるOracle Label Security統合
Oracle Label Securityは、マルチテナント環境で使用できます。
1.1 Oracle Label Securityについて
Oracle Label Securityは、表の特定の各行およびアプリケーション・ユーザーに割り当てられたラベルを使用して個々の表の行の表示、挿入および更新を制御します。
Oracle Label Securityは、行ラベルをユーザーのラベル認可と行ラベルを比較して、認可されたユーザーのみに簡単に機密情報を制限できるようにします。このように、異なる認可レベル(たとえばマネージャや営業担当者など)を持つユーザーが、表内の様々なデータ行にアクセスできます。1つ以上のアプリケーション表にOracle Label Securityポリシーを適用できます。Oracle Label Securityの設計は、Oracle Virtual Private Database (VPD)に似ています。ただし、VPDとは異なり、Oracle Label Securityは即時利用可能なアクセス調整機能、データ・ディクショナリ表およびポリシーベースのアーキテクチャを提供し、コーディングのカスタマイズを排除して、複数のアプリケーションで使用できる一貫性のあるラベル・ベースのアクセス制御モデルを提供します。
Oracle Label Securityは当初、政府および防衛組織の要件を満たすように設計および開発されましたが、商用ビジネス要件に対して広範囲に使用できることがわかりました。
Oracle Label Securityソフトウェアはデフォルトでインストールされますが、自動的には有効になりません。Oracle Label Securityは、SQL*Plusで、またはOracle Database Configuration Assistant (DBCA)を使用して有効化できます。Oracle Label Securityを管理するには、Oracle Database管理者がOracle Label Security管理ユーザーを作成し、このユーザーに、Oracle Label SecurityのSA_*
パッケージに対する必要なEXECUTE
権限とともに、LBAC_DBA
ロールを付与する必要があります。Oracle Label Securityを管理するには、コマンドライン・レベルまたはOracle Enterprise Manager Cloud Controlで一連のPL/SQLパッケージおよびスタンドアロン・ファンクションを使用できます。Oracle Label Securityポリシーに関する情報を調べるには、ALL_SA_*
、DBA_SA_*
またはUSER_SA_*
データ・ディクショナリ・ビューを問い合せます。
親トピック: Oracle Label Securityの概要
1.2 Oracle Label Securityの利点
Oracle Label Securityには、行レベルの管理の制御に関していくつかの利点があります。
-
行レベルのデータ分類を有効にし、データ分類とユーザー・ラベル認可またはセキュリティ・クリアランスに基づいて即時利用可能なアクセス調整を提供します。
-
ラベル認可またはセキュリティ・クリアランスをデータベース・ユーザーとアプリケーション・ユーザーの両方に割り当てることができます。
-
これには、データ分類ラベルとユーザー・ラベル認可を定義および格納するためのAPIとグラフィカル・ユーザー・インタフェース(Oracle Enterprise Manager内)が両方用意されています。
-
Oracle Database Vault、Oracle Data RedactionおよびOracle Real Application Securityと統合されているため、これらの製品でセキュリティ・クリアランスを使用できます。
親トピック: Oracle Label Securityの概要
1.3 Oracle Label Securityを使用する権限を持つユーザー
Oracle Label Securityをデータベースにインストールすると、その登録プロセスによって、LBAC_DBA
ロールがあるLBACSYS
という名前の管理ユーザーが作成されます。
LBAC_DBA
ロールを、Oracle Label Securityポリシーの管理を担当するデータベース・ユーザーに付与できます。(これは、LBACSYS
ユーザーを使用するのではなくOracle Label Securityを管理するためのお薦めの方法です。)また、Oracle Label Security管理者に、Oracle Label Securityパッケージに対するEXECUTE
権限と、個々のOracle Label Securityポリシーを管理する権限を付与できます。
他のOracle管理ユーザー・アカウントと同様に、LBAC_DBA
には2つのアカウントを保持することをお薦めします。一方のアカウントはその名前付きユーザーのプライマリ・アカウントであり、日常的に使用されます。他方のアカウントは、プライマリ・アカウントのパスワードを忘れてしまいリセットする必要がある場合に備えたバックアップ・アカウントとして使用されます。
親トピック: Oracle Label Securityの概要
1.4 Oracle Label Security管理者の業務
Oracle Label Security管理者には、パッケージベースおよびロールベースの権限のセットがあります。
これらの権限を次に示します。
-
パッケージ固有の権限: パブリックの
SA_SESSION
およびSA_UTL
パッケージを除くほとんどのOracle Label Security PL/SQLパッケージには、EXECUTE
権限が必要です。その他のパッケージは、SA_AUDIT_ADMIN
、SA_COMPONENTS
、SA_LABEL_ADMIN
、SA_POLICY_ADMIN
、SA_SYSDBA
およびSA_USER_ADMIN
です。 -
ロールベースの権限: Oracle Label Security固有のロールは次のとおりです。
-
ポリシー作成時に作成されてユーザーに付与される
policy
_DBA
ロール。たとえば、ols_hr_pol
というポリシーの場合、作成されるロールの名前はols_hr_pol_DBA
です。このロールは、サイトのOracle Label Securityポリシーのアクセス制御の粒度のレイヤーを追加します。 -
SA_SYSDBA
パッケージにEXECUTE
権限を提供するLBAC_DBA
ロール。このロールは、LBACSYS
ユーザー・アカウントによって所有されます。SA_SYSDBA
パッケージにより、ユーザーはOracle Label Securityポリシーを作成、変更、有効化、無効化および削除できます。
-
Oracle Label SecurityパッケージのEXECUTE
権限付与をpolicy
_DBA
ロールの付与と組み合せて使用して、さらに業務を分離できます。パッケージは様々なタスクに基づいて分類されます。たとえば、SA_COMPONENTS
およびSA_LABEL_ADMIN
パッケージに対するEXECUTE
権限を1人のユーザーまたは1つ以上のロールに付与してラベル定義を管理し、SA_USER_ADMIN
に対するEXECUTE
を別のユーザーまたはロールに付与してユーザー・ラベルと権限を管理できます。これらのユーザーまたはロールの両方に、それらが責任を持つポリシーに対するpolicy
_DBA
ロールを付与する必要もあります。このようにして、異なるユーザーが責任を持つポリシーの異なる側面の管理にそれらのユーザーが責任を持つことができます。たとえば、ユーザーpsmith
はols_hr_pol
ポリシーのラベル定義に責任を持ち、tjones
はols_oe_pol
ポリシーのラベル定義に責任を持つことができます。ただし、ユーザーpsmith
はols_oe_pol
ポリシーのラベル定義を変更できず、tjones
はols_hr_pol
ポリシーのラベル定義を変更できません。
関連トピック
親トピック: Oracle Label Securityの概要
1.5 Oracle Label Securityのコンポーネント
Oracle Label Securityポリシーには、標準のコンポーネント・セットがあります。
これらのコンポーネントは次のとおりです。
-
ラベル。 データおよびユーザー、ユーザーとプログラム・ユニットの認証のラベルは、保護されている特定のオブジェクトへのアクセスを制御します。ラベルは、次の要素で構成されています。
-
レベル。レベルにより、行に割り当てる機密性のタイプ(たとえば、
SENSITIVE
やHIGHLY SENSITIVE
など)が指定されます。少なくとも1つのレベルが必須です。 -
区分。(オプション)データは、同じレベル(たとえばPublic、ConfidentialおよびSecretなど)でも、会社内の別々のプロジェクト(たとえばACME MergerやIT Securityなど)に属すことができます。区分はこの例ではプロジェクトのことで、より厳密なアクセス制御を定義できます。コンパートメントは行政環境でよく使用されます。
-
グループ。(オプション)グループは、データを所有する組織またはデータにアクセスする組織を識別します(たとえば、UK、US、Asia、Europeなど)。グループは商業環境と行政環境の両方で使用され、柔軟性が高いことからコンパートメントのかわりに使用されることもあります。
-
-
ポリシー。 ポリシーは、これらのラベル、ルール、認可および保護された表に関連付けられた名前です。
たとえば、ユーザーがアプリケーション表のSELECT
権限を持っているとします。図1-1に示すように、ユーザーがSELECT
文を実行すると、Oracle Label Securityは選択された各行を評価して、このユーザーがユーザーに割り当てられた権限とラベルおよび行のラベルを使用してアクセスできるかどうかを決定します。Oracle Label Securityを設定して、UPDATE
、DELETE
、INSERT
文でもセキュリティ・チェックを行うことができます。
親トピック: Oracle Label Securityの概要
1.6 Oracle Label Securityのアーキテクチャ
Oracle Label Securityは、Oracle Database認証を使用して行レベルのセキュリティを実行します。
図1-2に、Oracle Label Securityでデータがアクセスされる方法とラベル・セキュリティ・チェックの順序を示します。
このシナリオでは、次のアクションが実行されます。
-
Oracle Databaseセッションのアプリケーション・ユーザーは、SQLリクエストを送信して表を問い合せます。
-
Oracle Databaseは、表に対して
SELECT
文を実行するためにユーザーのDAC (データ・アクセス制御) 権限をチェックします。 -
ユーザーが適切な権限を持っている場合、Oracle DatabaseはいずれかのOracle Virtual Private Database (VPD)ポリシーが表に添付されているかどうかをチェックします。
-
Oracle Databaseは、表に割り当てられているOracle Label Securityポリシーがあるかどうかをチェックします。
-
Oracle Label Securityは、個々の行に割り当てられたラベルをユーザーのラベル認可と比較して、アクセスを許可または拒否します。セッション・ラベルは、ユーザーに割り当てられたラベル認可に基づいています。
親トピック: Oracle Label Securityの概要
1.7 Oracle Label Securityの管理インタフェース
Oracle Label Securityの開発および管理タスクは、2つのインタフェースのどちらでも実行できます。
- Oracle Label Securityのパッケージ
Oracle Label Securityのパッケージには、管理を容易にするための直接的なコマンドライン・インタフェースが用意されています。 - Oracle Enterprise Manager Cloud Control
Oracle Label Securityの管理には、Oracle Enterprise Manager Cloud Control Webインタフェースを使用できます。
親トピック: Oracle Label Securityの概要
1.7.1 Oracle Label Securityのパッケージ
Oracle Label Securityのパッケージでは、簡単に管理できるように、直接のコマンドライン・インタフェースを提供します。
表1-1に、使用可能なOracle Label Security管理パッケージを示します。
表1-1 Oracle Label Securityの管理パッケージ
パッケージ | 用途 |
---|---|
|
Oracle Label Securityポリシーの作成、変更および削除。 |
|
ポリシーのレベル、区分およびグループの定義。 |
|
ラベルの作成など、標準的なラベルのポリシー管理タスクの実行。 |
|
スキーマおよび表へのポリシーの適用。 |
|
レベル、区分およびグループに関するユーザー認証とプログラム・ユニットの権限の管理。ユーザー権限も管理します。 「SA_USER_ADMIN.SET_USER_PRIVS」および「SA_USER_ADMIN.SET_PROG_PRIVS」を参照 |
|
管理タスクと権限使用の監査オプションの設定。 |
|
管理者によって設定された認可の範囲内のラベルをセッション中に変更。 |
|
セッション・セキュリティ属性の現在の値に関する情報を数値ラベル値として戻すためにPL/SQLプログラム内で使用するように設計されたユーティリティ・ファンクションのセット。 |
1.7.2 Oracle Enterprise Manager Cloud Control
Oracle Label Securityの管理には、Oracle Enterprise Manager Cloud Control Webインタフェースを使用できます。
図1-3に、Oracle Enterprise Managerインタフェースを示します。
図1-3 Enterprise Managerを使用したOracle Label Securityポリシーの構成

「図1-3 Enterprise Managerを使用したOracle Label Securityポリシーの構成」の説明
1.8 Oracle Label Securityのデモンストレーション・ファイル
olsdemo.sql
ファイルでは、Oracle Label Securityの使用に関するデモンストレーションが提供されています。
このファイルには、提供されたパッケージを使用してOracle Label Securityポリシーを作成および開発する方法が示されています。このスクリプトは、ORACLE_HOME/rdbms/demo
ディレクトリからインストールできます。
親トピック: Oracle Label Securityの概要
1.9 マルチテナント環境におけるOracle Label Security統合
Oracle Label Securityは、マルチテナント環境で使用できます。
ノート:
マルチテナント・コンテナ・データベースが、Oracle Database 21c以降のリリースで唯一サポートされているアーキテクチャです。ドキュメントが改訂されている間は、従来の用語が残っている可能性があります。ほとんどの場合、データベースおよび非CDBは、コンテキストに応じてCDBまたはPDBを指しています。アップグレードなど、一部のコンテキストでは、非CDBは以前のリリースの非CDBを指しています。
マルチテナント環境では、プラガブル・データベース(PDB)をマルチテナント・コンテナ・データベース(CDB)やアプリケーション・コンテナにプラグインしたり、これらからプラグアウトできます。
-
ラベルベースのフレームワーク、データ・ディクショナリ、データ型およびパッケージをインストールするためのデータベース上の
rdbms/admin/catols.sql
スクリプト。このスクリプトは、LBACSYS
アカウントを作成します。 -
Oracle Label Securityのポリシーは個々のPDBに格納されるので、PDBごとに個別のポリシーを作成できます。PDBに対して定義されたポリシーは、PDBに含まれるローカル表およびスキーマ・オブジェクトに対して強制できます。
-
単一のCDBに、それぞれOracle Label Securityで構成されている複数のPDBがある場合があります。
-
Oracle Label SecurityポリシーをCDBルートやアプリケーション・ルートに作成することはできません。
-
ローカルのOracle Label Securityポリシーを共通のCDBオブジェクトまたは共通のアプリケーション・オブジェクトに対して強制することはできません。
-
Oracle Label Securityポリシー・ラベルおよび権限を、プラガブル・データベース内の共通のユーザーおよびアプリケーション共通ユーザーに割り当てることはできません。
-
Oracle Label Securityの権限を、プラガブル・データベース内の共通のプロシージャまたはファンクション、およびアプリケーション共通のプロシージャまたはファンクションに割り当てることはできません。
-
Oracle Label Securityは、
/rdbms/admin/catnools.sql
スクリプトを使用してアンインストールできます。
関連トピック
親トピック: Oracle Label Securityの概要