1 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は、政府および防衛組織に見られるマルチレベル・セキュリティ(MLS)要件に基づいています。

Oracle Label Securityソフトウェアはデフォルトでインストールされますが、自動的には有効になりません。Oracle Label Securityは、SQL*Plusで、またはOracle Database Configuration Assistant (DBCA)を使用して有効化できます。Oracle Label Securityのデフォルトの管理者は、ユーザーLBACSYSです。Oracle Label Securityを管理するには、コマンドライン・レベルまたはOracle Enterprise Manager Cloud Controlで一連のPL/SQLパッケージおよびスタンドアロン・ファンクションを使用できます。Oracle Label Securityポリシーに関する情報を調べるには、ALL_SA_*DBA_SA_*またはUSER_SA_*データ・ディクショナリ・ビューを問い合せることができます。

1.2 Oracle Label Securityの利点

Oracle Label Securityには、行レベルの管理の制御に関していくつかの利点があります。

  • 行レベルのデータ分類を有効にし、データ分類とユーザー・ラベル認可またはセキュリティ・クリアランスに基づいて即時利用可能なアクセス調整を提供します。

  • ラベル認可またはセキュリティ・クリアランスをデータベース・ユーザーとアプリケーション・ユーザーの両方に割り当てることができます。

  • データ分類ラベルとユーザー・ラベル認可を定義および格納するためのAPIとグラフィカル・ユーザー・インタフェースの両方を提供します。

  • Oracle Database VaultおよびOracle Advanced Security Data Redactionと統合され、セキュリティ・クリアランスをDatabase Vaultコマンド・ルールとData Redactionポリシー定義の両方で使用できるようにします。

1.3 Oracle Label Securityを使用する権限を持つユーザー

Oracle Label Securityをデータベースに登録すると、登録プロセスによってLBAC_DBAロールを持つLBACSYSという名前の管理ユーザーが作成されます。

このロールを、Oracle Label Securityポリシーの管理を担当するデータベース・ユーザーに付与できます。また、Oracle Label Security管理者に、Oracle Label Securityパッケージに対するEXECUTE権限と、個々のOracle Label Securityポリシーを管理する権限を付与できます。

他のOracle管理ユーザー・アカウントと同様に、LBAC_DBAには2つのアカウントを保持することをお薦めします。一方のアカウントはその名前付きユーザーのプライマリ・アカウントであり、日常的に使用されます。他方のアカウントは、プライマリ・アカウントのパスワードを忘れてしまいリセットする必要がある場合に備えたバックアップ・アカウントとして使用されます。

1.4 Oracle Label Security管理者の業務

Oracle Label Security管理者には、パッケージベースおよびロールベースの権限のセットがあります。

これらの権限を次に示します。

  • パッケージ固有の権限: パブリックのSA_SESSIONおよびSA_UTLパッケージを除くほとんどのOracle Label Security PL/SQLパッケージには、EXECUTE権限が必要です。その他のパッケージは、SA_AUDIT_ADMINSA_COMPONENTSSA_LABEL_ADMINSA_POLICY_ADMINSA_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ロールを付与する必要もあります。このようにして、異なるユーザーが責任を持つポリシーの異なる側面の管理にそれらのユーザーが責任を持つことができます。たとえば、ユーザーpsmithols_hr_polポリシーのラベル定義に責任を持ち、tjonesols_oe_polポリシーのラベル定義に責任を持つことができます。ただし、ユーザーpsmithols_oe_polポリシーのラベル定義を変更できず、tjonesols_hr_polポリシーのラベル定義を変更できません。

1.5 Oracle Label Securityのコンポーネント

Oracle Label Securityポリシーには、標準のコンポーネント・セットがあります。

これらのコンポーネントは次のとおりです。

  • ラベル。 データおよびユーザー、ユーザーとプログラム・ユニットの認証のラベルは、保護されている特定のオブジェクトへのアクセスを制御します。ラベルは、次の要素で構成されています。

    • レベル。レベルにより、行に割り当てる機密性のタイプ(たとえば、SENSITIVEHIGHLY SENSITIVEなど)が指定されます。

    • 区分。(オプション)データは、同じレベル(たとえばPublic、ConfidentialおよびSecretなど)でも、会社内の別々のプロジェクト(たとえばACME MergerやIT Securityなど)に属すことができます。区分はこの例ではプロジェクトのことで、より厳密なアクセス制御を定義できます。コンパートメントは行政環境でよく使用されます。

    • グループ。(オプション)グループは、データを所有する組織またはデータにアクセスする組織を識別します(たとえば、UK、US、Asia、Europeなど)。グループは商業環境と行政環境の両方で使用され、柔軟性が高いことからコンパートメントのかわりに使用されることもあります。

  • ポリシー。 ポリシーは、これらのラベル、ルール、認可および保護された表に関連付けられた名前です。

たとえば、ユーザーがアプリケーション表のSELECT権限を持っているとします。図1-1に示すように、ユーザーがSELECT文を実行すると、Oracle Label Securityは選択された各行を評価して、このユーザーがユーザーに割り当てられた権限とラベルおよび行のラベルを使用してアクセスできるかどうかを決定します。Oracle Label Securityを設定して、UPDATEDELETEINSERT文でもセキュリティ・チェックを行うことができます。

図1-1 Oracle Label Securityのラベルベース・セキュリティ

図1-1の説明が続きます
「図1-1 Oracle Label Securityのラベルベース・セキュリティ」の説明

1.6 Oracle Label Securityのアーキテクチャ

Oracle Label Securityは、Oracle Database認証を使用して行レベルのセキュリティを実行します。

図1-2に、Oracle Label Securityでデータがアクセスされる方法とラベル・セキュリティ・チェックの順序を示します。

図1-2 Oracle Label Securityのアーキテクチャ

図1-2の説明が続きます。
「図1-2 Oracle Label Securityのアーキテクチャ」の説明

このシナリオでは、次のアクションが実行されます。

  1. Oracle Databaseセッションのアプリケーション・ユーザーは、SQLリクエストを送信して表を問い合せます。

  2. Oracle Databaseは、表に対してSELECT文を実行するためにユーザーのDAC (データ・アクセス制御) 権限をチェックします。

  3. ユーザーが適切な権限を持っている場合、Oracle DatabaseはいずれかのOracle Virtual Private Database (VPD)ポリシーが表に添付されているかどうかをチェックします。

  4. Oracle Databaseは、表に割り当てられているOracle Label Securityポリシーがあるかどうかをチェックします。

  5. Oracle Label Securityは、個々の行に割り当てられたラベルをユーザーのラベル認可と比較して、アクセスを許可または拒否します。セッション・ラベルは、ユーザーに割り当てられたラベル認可に基づいています。

1.7 Oracle Label Securityの管理インタフェース

Oracle Label Securityの開発および管理タスクは、2つのインタフェースのどちらでも実行できます。

1.7.1 Oracle Label Securityのパッケージ

Oracle Label Securityのパッケージでは、簡単に管理できるように、直接のコマンドライン・インタフェースを提供します。

表1-1に、使用可能なOracle Label Security管理パッケージを示します。

表1-1 Oracle Label Securityの管理パッケージ

パッケージ 用途

SA_SYSDBA

Oracle Label Securityポリシーの作成、変更および削除。

「SA_SYSDBAポリシー管理PL/SQLパッケージ」を参照

SA_COMPONENTS

ポリシーのレベル、区分およびグループの定義。

「SA_COMPONENTSラベル・コンポーネントPL/SQLパッケージ」を参照

SA_LABEL_ADMIN

ラベルの作成など、標準的なラベルのポリシー管理タスクの実行。

「SA_LABEL_ADMINラベル管理PL/SQLパッケージ」を参照

SA_POLICY_ADMIN

スキーマおよび表へのポリシーの適用。

「SA_POLICY_ADMINポリシー管理PL/SQLパッケージ」を参照

SA_USER_ADMIN

レベル、区分およびグループに関するユーザー認証とプログラム・ユニットの権限の管理。ユーザー権限も管理します。

「SA_USER_ADMIN.SET_USER_PRIVS」および「SA_USER_ADMIN.SET_PROG_PRIVS」を参照

SA_AUDIT_ADMIN

管理タスクと権限使用の監査オプションの設定。

「SA_AUDIT_ADMIN Oracle Label Security監査PL/SQLパッケージ」を参照

SA_SESSION

管理者によって設定された認可の範囲内のラベルをセッション中に変更。

「SA_SESSIONセッション管理PL/SQLパッケージ」を参照

SA_UTL

セッション・セキュリティ属性の現在の値に関する情報を数値ラベル値として戻すためにPL/SQLプログラム内で使用するように設計されたユーティリティ・ファンクションのセット。

「SA_UTL PL/SQLユーティリティのファンクションおよびプロシージャ」を参照

1.7.2 Oracle Label Securityのデモンストレーション・ファイル

olsdemo.sqlファイルでは、Oracle Label Securityの使用に関するデモンストレーションが提供されています。

このファイルには、提供されたパッケージを使用してOracle Label Securityポリシーを作成および開発する方法が示されています。このスクリプトは、ORACLE_HOME/rdbms/demoディレクトリからインストールできます。

1.7.3 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の説明が続きます
「図1-3 Enterprise Managerを使用したOracle Label Securityポリシーの構成」の説明

1.8 他のOracle製品でのOracle Label Securityの動作

Oracle Label Securityは、Oracle Internet Directory (OID)と統合したり、マルチテナント環境に統合することができます。

1.8.1 Oracle Label SecurityとOracle Internet Directoryとの統合

Oracle Label Securityの使用をOracle Internet Directoryと統合しているサイトでは、ラベル・セキュリティの操作と管理の効率を大幅に改善できます。

ポリシーとユーザー認可プロファイルは、Oracle Internet Directoryを使用したOracle Label Security用コマンドライン・ツールを使用してディレクトリ内で直接作成および管理できます。これらのツールにより、関連付けられたディレクトリに変更を自動的に伝播できます。

1.8.2 マルチテナント環境におけるOracle Label Security統合

Oracle Label Securityは、マルチテナント環境で使用できます。

マルチテナント環境では、プラガブル・データベース(PDB)をマルチテナント・コンテナ・データベース(CDB)やアプリケーション・コンテナにプラグインしたり、これらからプラグアウトできます。

次の点に注意してください。

  • 各PDBには、ポリシー、ラベル、ユーザー認証などの独自のOracle Label Securityメタデータがあります。LBACSYSスキーマは共通ユーザー・スキーマです。

  • PDBをCDBに接続する前に、データベースにOracle Label Securityがインストールされていない場合は、データベースに対して$ORACLE_HOME/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をOracle Internet Directoryを使用して構成する場合は、CDBに含まれるすべてのPDBで同じ構成を使用する必要があります。PDBからDBA_OLS_STATUSデータ・ディクショナリ・ビューを次のように問い合せて、データベースがOracle Internet Directoryに対して構成されているかどうかを判断できます。

    SELECT STATUS FROM DBA_OLS_STATUS WHERE NAME = 'OLS_DIRECTORY_STATUS';
    

    TRUEが返される場合、Oracle Label Securityではインターネット・ディレクトリが有効になっています。それ以外の場合はFALSEを返します。