Oracle® Label Security

管理者ガイド

12cリリース1 (12.1)

E56367-02(原本部品番号:E48437-08)

2017年3月

Oracle Label Security管理者ガイド, 12cリリース1 (12.1)

E56367-02

Copyright © 2006, 2015, Oracle and/or its affiliates.  All rights reserved.

原本著者: Sumit Jeloka

原本協力者: Chi Ching Chui、Rishabh Gupta、John Kati、Lakshmi Kethana、Gopal Mulagund、Hozefa Palitanawala、Vikram Pesati、Amoghavarsha Ramappa、Digvijay Sirmukaddam、Srividya Tata、Peter Wahl

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

『Oracle Label Security管理者ガイド』のこのリリースの変更

- Oracle Database 12cリリース1 (12.1.0.2)での変更点

- 新機能

- OLS_LABEL_DOMINATESファンクション

- 非推奨となった機能

- SA_UTL.DOMINATESファンクション

- Oracle Database 12cリリース1 (12.1.0.1)での変更点

- 新機能

- Oracle Database Release 12c (12.1)のアップグレードおよびダウングレード要件

- Oracle Label SecurityおよびOracleマルチテナント・オプション

- Oracle Label Securityインストールの簡略化

- 統合監査証跡とOracle Label Security

- 簡略化されたOracle Label Securityメタデータのエクスポートおよびインポート

- 非推奨となった機能

- その他の変更点

第I部 Oracle Label Securityスタート・ガイド

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の管理インタフェース

- Oracle Label Securityのパッケージ

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

- Oracle Enterprise Manager Cloud Control

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

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

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

2 データ・ラベルおよびユーザー・ラベル

- ラベルベース・セキュリティについて

- ユーザー・ラベルと権限管理について

- ラベル・コンポーネント

- ラベル・コンポーネントの定義および有効な文字

- レベル機密性コンポーネント

- 区分コンポーネント

- グループ・コンポーネント

- 業界別のレベル、区分およびグループの例

- ラベルの構文とタイプ

- データ・ラベルとユーザー・ラベルの相互動作

- ラベルの管理

3 アクセス制御および権限

- アクセス調整

- セッション・ラベルおよび行ラベルの動作

- セッション・ラベル

- 行ラベル

- セッション・ラベルの例

- ユーザー認証の動作

- 管理者が設定する認可

- 認可レベル

- 認可区分

- 認可グループ

- 計算されるセッション・ラベル

- アクセス調整のためのラベルの評価

- 読取りおよび書込みアクセスについて

- 読取り操作と書込み操作の違い

- グループに対する読取り/書込み認可の伝播

- Oracle Label Securityの読取りアクセス・アルゴリズムの動作

- Oracle Label Securityの書込みアクセス・アルゴリズムの動作

- Oracle Label Securityの権限

- Oracle Label Securityのポリシーで定義される権限

- 特殊なアクセス権限

- READ権限

- FULL権限

- COMPACCESS権限

- PROFILE_ACCESS権限

- 特殊な行ラベル権限

- WRITEUP権限

- WRITEDOWN権限

- WRITEACROSS権限

- システム権限、オブジェクト権限およびポリシー権限

- アクセス調整およびビュー

- アクセス調整およびプログラム・ユニットの実行

- アクセス調整およびポリシー強制オプション

- 複数のOracle Label Securityポリシーの処理

- 単一データベース内の複数のOracle Label Securityポリシー

- 分散環境での複数のOracle Label Securityポリシー

第II部 Oracle Label Securityの機能の使用

4 Oracle Label Securityスタート・ガイド

- Oracle DatabaseでのOracle Label Securityの登録

- Oracle Label Securityの登録について

- Oracle Label Securityが登録されて有効になっているかどうかの確認

- SQL*PlusからのOracle Label Securityの登録および有効化

- DBCAを使用したOracle Label Securityの登録および有効化

- LBACSYS Oracle Label Securityの有効化

- Oracle Label SecurityのためのCloud ControlまたはSQL*Plusへのログイン

- Enterprise Manager Cloud ControlからのOracle Label Securityへのログイン

- SQL*PlusからのOracle Label Securityへのログイン

5 Oracle Label Securityポリシーの作成

- Oracle Label Securityポリシーの作成について

- 手順1: ラベル・セキュリティ・ポリシー・コンテナの作成

- ラベル・セキュリティ・ポリシー・コンテナについて

- ラベル・ポリシー・コンテナの作成

- 手順2: ラベル・セキュリティ・ポリシーのデータ・ラベルの作成

- データ・ラベルについて

- ポリシー・レベルの機密性コンポーネントについて

- ポリシー・レベル・コンポーネントの作成

- ポリシー区分コンポーネントについて

- ポリシー区分コンポーネントの作成

- ポリシー・グループ・コンポーネントについて

- ポリシー・データ・ラベル・グループの作成

- 名前付きデータ・ラベルへのポリシー・コンポーネントの関連付けについて

- 名前付きデータ・ラベルへのポリシー・コンポーネントの関連付け

- 手順3: ラベル・セキュリティ・ポリシーのユーザーの認可

- ラベル・セキュリティ・ポリシーのユーザーの認可について

- レベルの認可について

- レベルの認可

- 区分の認可について

- 区分の認可

- グループの認可について

- グループの認可

- 手順4: ユーザーおよびトラステッド・ストアド・プログラム・ユニットへの権限の付与

- ポリシーのユーザーおよびトラステッド・プログラム・ユニットへの権限の付与について

- ユーザーへの権限の付与

- トラステッド・プログラム・ユニットへの権限の付与

- 手順5: データベース表またはスキーマへのポリシーの適用

- データベース表またはスキーマへのポリシーの適用について

- スキーマへのポリシーの適用

- 手順6: 表の行へのポリシー・ラベルの追加

- 表の行へのポリシー・ラベルの追加について

- 表の行へのポリシー・ラベルの追加

- 手順7: (オプション)監査の構成

- 監査の構成について

- 監査の構成

- Enterprise Manager Cloud Controlを使用したOLSポリシーの作成

- Cloud Controlを使用したラベル・セキュリティ・ポリシー・コンテナの作成

- Cloud Controlを使用したポリシー・コンポーネントの作成

- Cloud Controlを使用したポリシーのデータ・ラベルの作成

- Cloud Controlを使用したポリシーに対するユーザーの認可、権限付与および監査

- Cloud Controlを使用したトラステッド・プログラム・ユニットへの権限の付与

- Cloud Controlを使用したデータベース表へのポリシーの適用

- Cloud Controlを使用した表の行へのポリシー・ラベルの適用

- Cloud Controlを使用したOracle Label Securityポリシーの監査

6 ラベル付きデータの処理

- ポリシーのラベル列とラベル・タグの動作

- ポリシーのラベル列

- ポリシーのラベル列について

- ポリシーのラベル列の非表示化

- ラベル・タグ

- ラベル・タグについて

- ラベル・タグの手動定義によるラベルの順序付け

- ラベル・タグの手動定義によるデータの操作

- 自動的に生成されるラベル・タグ

- データ行へのラベルの割当て

- ラベルの表示

- CHAR_TO_LABELを使用した文字列からラベル・タグへの変換

- LABEL_TO_CHARを使用したラベル・タグから文字列への変換

- LABEL_TO_CHARを使用したラベル・タグから文字列への変換

- LABEL_TO_CHARの例

- ポリシーのラベル列が非表示に設定されている場合の表からのすべての列の取出し

- ラベルを使用したデータのフィルタリング

- WHERE句での数値ラベル・タグの使用

- ラベル付きデータ行の順序付け

- ラベルの文字表現による順序付け

- ラベルの上限と下限の決定

- LEAST_UBOUNDを使用した最小の上限の検索

- GREATEST_LBOUNDを使用した最大の下限の検索

- MERGE_LABELファンクションを使用したラベルのマージ

- ラベル付きデータの挿入

- ラベル付きデータの挿入について

- CHAR_TO_LABELを使用したラベルの挿入

- 数値のラベル・タグ値を使用したラベルの挿入

- ラベルを指定しないデータの挿入

- ポリシーのラベル列が非表示になっている場合のデータの挿入

- TO_DATA_LABELを使用したラベルの挿入

- セッション・ラベルと行ラベルの変更

7 Oracle Label SecurityとOracle Internet Directoryとの併用

- Oracle Internet Directoryでのラベル管理について

- Oracle Internet Directory対応Label Securityの構成

- Oracle Internet Directory対応Label Securityの構成について

- OID対応Oracle Label Securityを構成するための権限の付与

- データベースの登録とOID対応Oracle Label Securityの構成

- 手順1: ディレクトリを使用するためのOracleホームの構成

- 手順2: Oracle Label Security用のOracle Internet Directoryの構成

- 手順2の代替: OID対応Oracle Label Security用のデータベースの構成

- 手順3: DIPパスワードの設定とデータの接続

- OID対応Oracle Label Securityからのデータベースの登録解除

- データベースからのOracle Internet Directory対応Oracle Label Securityの削除

- Oracle Label Securityプロファイル

- Label Securityでディレクトリを使用する場合に統合される機能

- Oracle Internet Directory内のOracle Label Securityポリシー属性

- Oracle Internet Directory対応Label Securityでのポリシーのサブスクリプション

- 新規データ・ラベル作成の制限

- Oracle Internet DirectoryおよびOracle Label Securityに対する管理者の責任

- データベースのブートストラップ

- データベースとOracle Internet Directoryの同期化

- データベースとOracle Internet Directoryの同期化について

- Oracle Directory Integration and Provisioning(DIP)プロビジョニング・プロファイル

- プロビジョニング・プロファイルの変更

- プロビジョニング・プロファイルのデータベース接続情報の変更

- Oracle Data GuardでのOID対応Oracle Label Securityの構成

- 手順1: Data Guardでのディレクトリ対応Oracle Label Securityの設定

- 手順2: スイッチオーバー後のOIDプロビジョニング・プロファイルの更新

- セキュリティ・ロールと許可されるアクション

- Oracle Internet Directoryで許可されるタスクおよびアクセス・レベル

- Oracle Internet Directory対応Oracle Label Securityのポリシー作成者の制限

- OLSでOIDが有効化されている場合に置き換えられるPL/SQL文

- ポリシー管理者用のOracle Label Securityプロシージャ

第III部 Oracle Label Securityアプリケーションの管理

8 ポリシー施行オプションとラベル付けファンクションの実装

- Oracle Label Securityのポリシー強制オプション

- ポリシー強制オプションについて

- ポリシー強制オプションのレベル

- ポリシー強制オプションのカテゴリ

- ポリシー強制オプションの関係

- HIDEポリシー列オプションの動作

- ラベル管理強制オプションの動作

- LABEL_DEFAULT: セッションのデフォルト行ラベルの使用

- LABEL_UPDATE: データ・ラベルの変更

- CHECK_CONTROL: データ・ラベルのチェック

- アクセス制御強制オプションの動作

- READ_CONTROL: データの読取り

- WRITE_CONTROL: データの書込み

- INSERT_CONTROL、UPDATE_CONTROLおよびDELETE_CONTROL

- オーバーライド強制オプションの動作

- ポリシー施行オプションの使用時のガイドライン

- Oracle Label Securityのポリシー施行からの除外

- 表およびスキーマに対するポリシー・オプションを表示するデータ・ディクショナリ・ビュー

- ラベル付けファンクション

- Oracle Label Securityでのデータ行のラベル付け

- Oracle Label Securityのポリシーでのラベル付けファンクションの動作

- ポリシー用のラベル付けファンクションの作成

- ポリシーでのラベル付けファンクションの指定

- ポリシー・オプションとラベル付けファンクションを使用したラベル付きデータの挿入

- 認可に基づいたデータの挿入または更新操作の結果

- ラベル付けファンクションが指定されている場合のラベルの挿入

- 宣言参照整合性を指定した表の子行の挿入

- ポリシー・オプションとラベル付けファンクションを使用したラベル付きデータの更新

- CHAR_TO_LABELを使用したラベルの更新

- 強制制御オプションとUPDATEの評価

- ラベル付けファンクションが指定されている場合のラベルへの更新

- 宣言参照整合性が有効になっている表の子行への更新

- ポリシー・オプションとラベル付けファンクションを使用したラベル付きデータの削除

- Oracle Label SecurityのポリシーとSQL述語

- SQL述語を使用したOracle Label Securityポリシーへの変更

- 複数のSQL述語のOracle Label Securityポリシーへの影響

9 トラステッド・ストアド・プログラム・ユニットの管理および使用

- トラステッド・ストアド・プログラム・ユニットについて

- トラステッド・ストアド・プログラム・ユニットの動作

- トラステッド・ストアド・プログラム・ユニットの例

- トラステッド・ストアド・プログラム・ユニットの作成およびコンパイル

- トラステッド・ストアド・プログラム・ユニットの作成

- トラステッド・ストアド・プログラム・ユニットの権限

- トラステッド・ストアド・プログラム・ユニットの再コンパイル

- トラステッド・ストアド・プログラム・ユニットの再作成

- トラステッド・ストアド・プログラム・ユニットの実行

- ラベル情報を設定して戻す動作

10 Oracle Label Securityでの監査

- Oracle Label Securityの監査について

- システム単位の監査: AUDIT_TRAIL初期化パラメータ

- Oracle Label Security監査の有効化または無効化方法

- Oracle Label Securityと統合監査

- Oracle Label Securityの監査のヒント

- SA_AUDIT_ADMINオプションの設定方針

- 権限付き操作の監査

11 分散データベースでのOracle Label Securityの使用

- Oracle Label Securityの分散構成について

- Oracle Label Securityでのリモート・データベースへの接続の動作

- リモート・セッションでのセッション・ラベルと行ラベル

- 分散環境でのラベル

- 分散環境でのラベル・タグ

- 分散環境での数値書式によるラベル・コンポーネント

- 分散環境でのOracle Label Securityポリシー

- Oracle Label Securityでのレプリケーション

- Oracle Label Securityでのレプリケーションについて

- Oracle Label Securityでサポートされているレプリケーション機能

- Oracle Label Securityでのレプリケーションに対する行レベルのセキュリティ制限

- マテリアライズド・ビューの内容

- マテリアライズド・ビューの内容の決定方法

- 完全マテリアライズド・ビュー

- 部分マテリアライズド・ビュー

- Oracle Label Securityでのマテリアライズド・ビューの作成要件

- レプリケーション管理者の要件

- マテリアライズド・ビューの所有者の要件

- マルチレベルの部分マテリアライズド・ビューの作成要件

- マルチレベルの完全マテリアライズド・ビューの作成要件

- マテリアライズド・ビューのリフレッシュ方法

12 Oracle Label SecurityでのDBAファンクションの実行

- Oracle Label SecurityでのOracle Data Pumpエクスポートの使用

- データベースの全体エクスポート

- スキーマおよび表レベルのエクスポート

- Oracle Label SecurityでのData Pumpインポートの使用

- LBACSYSスキーマ・メタデータの完全データベース・インポート

- スキーマおよび表レベル・インポート

- Oracle Label Securityでのインポート要件

- インポート・データベースの準備

- インポート・ユーザーの認証の検証

- インポート用データ・ラベルの定義

- Oracle Label Securityをインストールしない場合のラベル付きデータのインポート

- ラベルなしデータのインポート

- 非表示列を含む表のインポート

- Oracle Label SecurityでのSQL*Loaderの使用

- Oracle Label SecurityでのSQL*Loaderの使用要件

- Oracle Label SecurityからSQL*Loaderへの入力

- Oracle Label Securityのパフォーマンス上のヒント

- ANALYZEを使用したOracle Label Securityのパフォーマンス改善

- ポリシーのラベル列での索引の作成

- パフォーマンス強化のためのラベル・タグ方針の計画

- 数値ラベル・タグに基づいてパーティション化されたデータ

- インストール後のデータベースの追加作成

- インストール後のデータベースの追加作成について

- ラベル・セキュリティ・スキーマがシード内にある場合の追加データベースの作成

- カスタム・インストールでの追加データベースの作成オプション

- Oracle Label Securityのアップグレードおよびダウングレード

- Oracle Label Securityのアップグレードおよびダウングレードについて

- Oracle Label Securityのアップグレード

- Oracle Label Securityのアップグレードについて

- アップグレード前のOracle Label Security事前処理スクリプトの実行

- Oracle Label Securityのダウングレード

- Oracle Label Securityのダウングレードについて

- ダウングレード前のOracle Label Security事前処理スクリプトの実行

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

- インバース・グループおよび解放性について

- スタンダード・グループとインバース・グループの比較

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

- INVERSE_GROUP強制を指定したインバース・グループの実装

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

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

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

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

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

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

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

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

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

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

- スタンダード・グループまたはインバース・グループでの初期のセッションおよび行ラベル

- スタンダード・グループまたはインバース・グループでの初期のセッションおよび行ラベルについて

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

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

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

- スタンダード・グループまたはインバース・グループでの現行のセッションまたは行ラベルの設定について

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

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

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

- 例: 単純なインバース・グループ

- 例: 複雑なインバース・グループ

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

- インバース・グループでのSA_SYSDBA.CREATE_POLICY

- インバース・グループでのSA_SYSDBA.ALTER_POLICY

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

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

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

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

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

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

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

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

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

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

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

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

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

第IV部 付録

A Oracle Label Securityの無効化および有効化

- Oracle Label Securityを無効にする必要がある場合

- Oracle Label Securityの無効化

- Oracle Label Securityの有効化

B Oracle Label Securityの高度なトピック

- ラベル間の関係の分析

- 支配するラベルと支配されるラベルについて

- 比較できないラベル

- 支配ファンクションの使用

- 支配ファンクションについて

- OLS_DOMINATESスタンドアロン・ファンクション

- OLS_LABEL_DOMINATESスタンドアロン・ファンクション

- OLS_STRICTLY_DOMINATESスタンドアロン・ファンクション

- OLS_DOMINATED_BYスタンドアロン・ファンクション

- OLS_STRICTLY_DOMINATED_BYスタンドアロン・ファンクション

- SA_UTL.DOMINATES

- SA_UTL.STRICTLY_DOMINATES

- SA_UTL.DOMINATED_BY

- SA_UTL.STRICTLY_DOMINATED_BY

- 監査対象のOracle Label Securityセッション・ラベルの問合せ

- 監査対象のOracle Label Securityセッション・ラベルの問合せについて

- ORA_GET_AUDITED_LABELファンクション

- セッション・ラベル設定用のOracle Call Interface

- Oracle Call Interfaceを使用したセッション・ラベルの設定について

- Oracle Call Interfaceを使用したセッション・ラベルの設定

- 例: SYS_CONTEXTファンクションによるOracle Call Interfaceの使用

C Oracle Internet Directoryを使用したLabel Security用コマンドライン・ツール

- Oracle Label Securityのコマンドライン・ツールについて

- Oracle Label Securityカテゴリ別のコマンド

- olsadmintool Command Reference

- olsadmintoolコマンドについて

- olsadmintool addadmin

- olsadmintool addpolcreator

- olsadmintool adduser

- olsadmintool altercompartent

- olsadmintool altergroup

- olsadmintool altergroupparent

- olsadmintool alterlabel

- olsadmintool alterlevel

- olsadmintool alterpolicy

- olsadmintool audit

- olsadmintool createcompartment

- olsadmintool creategroup

- olsadmintool createlabel

- olsadmintool createlevel

- olsadmintool createprofile

- olsadmintool createpolicy

- olsamindtool describeprofile

- olsadmintool dropadmin

- olsadmintool dropcompartment

- olsadmintool dropgroup

- olsadmintool droplabel

- olsadmintool droplevel

- olsadmintool droppolicy

- olsadmintool dropprofile

- olsadmintool droppolcreator

- olsadmintool dropuser

- olsadmintool --help

- olsadmintool noaudit

- olsadmintool listprofile

- olsadmintoolコマンドの関連パラメータ

- olsadmintoolコマンドの関連パラメータについて

- olsadmintoolパラメータのサマリー

- olsadmintoolユーティリティの使用例

- 例: 他のユーザーをポリシー作成者として設定

- 例: 有効なオプションを指定してポリシーを作成

- 例: ポリシー管理者の作成

- 例: レベルの作成

- 例: 区分の作成

- 例: グループの作成

- 例: ラベルの作成

- 例: プロファイルの作成

- 例: プロファイルへのユーザーの追加

- 例: プロファイルへの別のユーザーの追加

- 例: 監査オプションの設定

- 前述の例の結果

D Oracle RAC 環境でのOracle Label Security

- Oracle RAC環境におけるOracle Label Securityのポリシー機能

- Oracle Label Securityでの透過的アプリケーション・フェイルオーバー

E Oracle Label SecurityのPL/SQLパッケージ

- SA_AUDIT_ADMIN Oracle Label Security監査PL/SQLパッケージ

- SA_AUDIT_ADMIN.AUDIT

- SA_AUDIT_ADMIN.AUDIT_LABEL

- SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLED

- SA_AUDIT_ADMIN.CREATE_VIEW

- SA_AUDIT_ADMIN.DROP_VIEW

- SA_AUDIT_ADMIN.NOAUDIT

- SA_AUDIT_ADMIN.NOAUDIT_LABEL

- SA_COMPONENTSラベル・コンポーネントPL/SQLパッケージ

- SA_COMPONENTS.ALTER_COMPARTMENT

- SA_COMPONENTS.ALTER_GROUP

- SA_COMPONENTS.ALTER_GROUP_PARENT

- SA_COMPONENTS.ALTER_LEVEL

- SA_COMPONENTS.CREATE_COMPARTMENT

- SA_COMPONENTS.CREATE_GROUP

- SA_COMPONENTS.CREATE_LEVEL

- SA_COMPONENTS.DROP_COMPARTMENT

- SA_COMPONENTS.DROP_GROUP

- SA_COMPONENTS.DROP_LEVEL

- SA_LABEL_ADMINラベル管理PL/SQLパッケージ

- SA_LABEL_ADMIN.ALTER_LABEL

- SA_LABEL_ADMIN.CREATE_LABEL

- SA_LABEL_ADMIN.DROP_LABEL

- SA_POLICY_ADMINポリシー管理PL/SQLパッケージ

- SA_POLICY_ADMIN.ALTER_SCHEMA_POLICY

- SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY

- SA_POLICY_ADMIN.APPLY_TABLE_POLICY

- SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICY

- SA_POLICY_ADMIN.DISABLE_TABLE_POLICY

- SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICY

- SA_POLICY_ADMIN.ENABLE_TABLE_POLICY

- SA_POLICY_ADMIN.POLICY_SUBSCRIBE

- SA_POLICY_ADMIN.POLICY_UNSUBSCRIBE

- SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICY

- SA_POLICY_ADMIN.REMOVE_TABLE_POLICY

- SA_SESSIONセッション管理PL/SQLパッケージ

- SA_SESSION.COMP_READ

- SA_SESSION.COMP_WRITE

- SA_SESSION.GROUP_READ

- SA_SESSION.GROUP_WRITE

- SA_SESSION.LABEL

- SA_SESSION.MAX_LEVEL

- SA_SESSION.MAX_READ_LABEL

- SA_SESSION.MAX_WRITE_LABEL

- SA_SESSION.MIN_LEVEL

- SA_SESSION.MIN_WRITE_LABEL

- SA_SESSION.PRIVS

- SA_SESSION.RESTORE_DEFAULT_LABELS

- SA_SESSION.ROW_LABEL

- SA_SESSION.SET_LABEL

- SA_SESSION.SA_USER_NAME

- SA_SESSION.SAVE_DEFAULT_LABELS

- SA_SESSION.SET_ACCESS_PROFILE

- SA_SESSION.SET_ROW_LABEL

- SA_SYSDBAポリシー管理PL/SQLパッケージ

- SA_SYSDBA.ALTER_POLICY

- SA_SYSDBA.CREATE_POLICY

- SA_SYSDBA.DISABLE_POLICY

- SA_SYSDBA.DROP_POLICY

- SA_SYSDBA.ENABLE_POLICY

- SA_USER_ADMIN PL/SQLパッケージ

- SA_USER_ADMIN.ADD_COMPARTMENTS

- SA_USER_ADMIN.ADD_GROUPS

- SA_USER_ADMIN.ALTER_COMPARTMENTS

- SA_USER_ADMIN.ALTER_GROUPS

- SA_USER_ADMIN.DROP_ALL_COMPARTMENTS

- SA_USER_ADMIN.DROP_ALL_GROUPS

- SA_USER_ADMIN.DROP_COMPARTMENTS

- SA_USER_ADMIN.DROP_GROUPS

- SA_USER_ADMIN.DROP_USER_ACCESS

- SA_USER_ADMIN.SET_COMPARTMENTS

- SA_USER_ADMIN.SET_DEFAULT_LABEL

- SA_USER_ADMIN.SET_GROUPS

- SA_USER_ADMIN.SET_LEVELS

- SA_USER_ADMIN.SET_PROG_PRIVS

- SA_USER_ADMIN.SET_ROW_LABEL

- SA_USER_ADMIN.SET_USER_LABELS

- SA_USER_ADMIN.SET_USER_PRIVS

- SA_UTL PL/SQLユーティリティのファンクションおよびプロシージャ

- SA_UTL.CHECK_LABEL_CHANGE

- SA_UTL.CHECK_READ

- SA_UTL.CHECK_WRITE

- SA_UTL.DATA_LABEL

- SA_UTL.GREATEST_LBOUND

- SA_UTL.LEAST_UBOUND

- SA_UTL.NUMERIC_LABEL

- SA_UTL.NUMERIC_ROW_LABEL

- SA_UTL.SET_LABEL

- SA_UTL.SET_ROW_LABEL

F Oracle Label Securityリファレンス

- Oracle Label Securityのデータ・ディクショナリ表およびビュー

- Oracle Databaseのデータ・ディクショナリ表

- Oracle Label Securityのデータ・ディクショナリ・ビュー

- ALL_SA_AUDIT_OPTIONSビュー

- ALL_SA_COMPARTMENTS

- ALL_SA_DATA_LABELS

- ALL_SA_GROUPS

- ALL_SA_LABELS

- ALL_SA_LEVELS

- ALL_SA_POLICIES

- ALL_SA_PROG_PRIVS

- ALL_SA_SCHEMA_POLICIES

- ALL_SA_TABLE_POLICIES

- ALL_SA_USERS

- ALL_SA_USER_LABELS

- ALL_SA_USER_LEVELS

- ALL_SA_USER_PRIVS

- DBA_SA_AUDIT_OPTIONS

- DBA_SA_COMPARTMENTS

- DBA_SA_DATA_LABELS

- DBA_SA_GROUPS

- DBA_SA_GROUP_HIERARCHY

- DBA_SA_LABELS

- DBA_SA_LEVELS

- DBA_SA_POLICIES

- DBA_SA_PROG_PRIVS

- DBA_SA_SCHEMA_POLICIES

- DBA_SA_TABLE_POLICIES

- DBA_SA_USERS

- DBA_SA_USER_COMPARTMENTS

- DBA_SA_USER_GROUPS

- DBA_SA_USER_LABELS

- DBA_SA_USER_LEVELS

- DBA_SA_USER_PRIVS

- DBA_OLS_STATUS

- USER_SA_SESSION

- Oracle Label Securityのユーザー作成の監査ビュー

- Oracle Label Securityでの制限事項

G Oracle Label Securityに関するよくある質問

- Oracle Label Securityのユーザーは誰ですか。

- Oracle Label Securityはセキュリティ・ニーズにどのように対応できますか。

- すべての表の保護にOracle Label Securityを使用する必要がありますか。

- Oracle Virtual Private DatabaseとOracle Label Securityの違いは何ですか。

- Oracle Virtual Private DatabaseとOracle Label Securityを組み合せることはできますか。

- Oracle Label SecurityはOracle E-Business Suiteと併用できますか。

- Oracle Label SecurityはOracle Database Vaultと併用できますか。

- Oracle Label Securityでは列レベルのアクセス制御が提供されていますか。

- Oracle Label Securityに基づいたセキュアなアプリケーション・ロールは可能ですか。

- トラステッド・ストアド・プログラム・ユニットとは何ですか。

- VPDまたはOLSでは、保護された表に列が追加されますか。

- 追加したOLS行ラベル列を非表示にする理由は何ですか。

索引

はじめに

Oracle Label Securityにより、データベースの特定の(ラベル付き)行へのアクセス制御が可能になります。

Oracle Label Securityがあると、様々な権限レベルを持つユーザーが、データのラベル付き行を参照または変更する権限を自動的に持つようになります(または除外されます)。

『Oracle Label Security管理者ガイド』では、Oracle Label Securityを使用して機密データを保護する方法を説明しています。ラベルベース・セキュリティの基本概念を説明し、その使用方法を示す例を提供します。

内容は次のとおりです。

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

対象読者

『Oracle Label Security管理者ガイド』は、データベース管理者(DBA)、アプリケーション・プログラマ、セキュリティ管理者、システム・オペレータを対象としています。また、次の作業を行うOracleユーザーも対象としています。

- アプリケーション・セキュリティ要件の分析

- ラベルベース・セキュリティ・ポリシーの作成

- ラベルベース・セキュリティ・ポリシーの管理

- ラベルベース・セキュリティ・ポリシーの使用

このマニュアルを活用するには、SQLおよびOracleに関する実用的な基礎知識が必要です。「関連ドキュメント」に記載されているOracleのセキュリティ機能についても理解している必要があります。SQL*Loaderを使用するには、オペレーティング・システムのファイル管理機能の使用方法を理解しておく必要があります。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

サポートをご購入のOracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info) か、聴覚に障害のあるお客様は (http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。

関連ドキュメント

詳細は、次のOracleドキュメントを参照してください。

- Oracle Database概要

- 『Oracle Databaseセキュリティ・ガイド』

- 『Oracle Database 2日でセキュリティ・ガイド』

- 『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』

- 『Oracle Database開発ガイド』

- Oracle Database管理者ガイド

- Oracle Database SQL言語リファレンス

- 『Oracle Databaseリファレンス』

- 『Oracle Databaseユーティリティ』

- 『Oracle Databaseパフォーマンス・チューニング・ガイド』

- 『Oracle Fusion Middleware Oracle Internet Directory管理者ガイド』

- Oracle Identity Management統合ガイド

このマニュアルの例の多くは、Oracle Databaseのインストール時に基本インストール・オプションを選択した場合にデフォルトでインストールされるサンプル・スキーマを使用しています。スキーマの作成方法および使用方法については、『Oracle Databaseサンプル・スキーマ』を参照してください。

リリース・ノート、インストール関連ドキュメント、ホワイト・ペーパーまたはその他の関連ドキュメントは、次の場所にあるOTN (Oracle Technology Network)から、無償でダウンロードできます。

http://www.oracle.com/technetwork/index.html

このマニュアルを含むOracleマニュアルの最新バージョンは、次の場所を参照してください。

http://www.oracle.com/technetwork/documentation/index.html

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

『Oracle Label Security管理者ガイド』のこのリリースの変更

この章の内容は次のとおりです。

- Oracle Database 12cリリース1 (12.1.0.2)での変更点

- Oracle Database 12cリリース1 (12.1.0.1)での変更点

Oracle Database 12cリリース1 (12.1.0.2)での変更点

Oracle Database 12cリリース1 (12.1.0.2)の『Oracle Label Security管理者ガイド』の変更点は、次のとおりです。

この項の内容は次のとおりです。

- 新機能

- 非推奨となった機能

新機能

この項の内容は次のとおりです。

- OLS_LABEL_DOMINATESファンクション

OLS_LABEL_DOMINATESファンクション

このリリースの新機能は、SA_UTL.DOMINATESファンクションを置き換えるスタンドアロンOLS_LABEL_DOMINATESファンクションです。

詳細は、「OLS_LABEL_DOMINATESスタンドアロン・ファンクション」を参照してください。

非推奨となった機能

この項の内容は次のとおりです。

- SA_UTL.DOMINATESファンクション

SA_UTL.DOMINATESファンクション

次のスタンドアロン・ファンクションは今回のリリースで非推奨となり、今後のリリースではサポートされない可能性があります。

次の構文を使用するSA_UTL.DOMINATES:

FUNCTION DOMINATES (
ols_policy_name  IN VARCHAR2,
label            IN VARCHAR2)
RETURN BOOLEAN

NUMBERデータ型を使用するSA_UTL.DOMINATESファンクションは非推奨ではありません。

Oracle Database 12cリリース1 (12.1.0.1)での変更点

Oracle Database 12cリリース1 (12.1.0.1)の『Oracle Label Security管理者ガイド』の変更点は、次のとおりです。

この項の内容は次のとおりです。

- 新機能

- 非推奨となった機能

- その他の変更点

新機能

このリリースの新機能は次のとおりです。

- Oracle Database Release 12c (12.1)のアップグレードおよびダウングレード要件

- Oracle Label SecurityおよびOracleマルチテナント・オプション

- Oracle Label Securityインストールの簡略化

- 統合監査証跡とOracle Label Security

- 簡略化されたOracle Label Securityメタデータのエクスポートおよびインポート

Oracle Database Release 12c (12.1)のアップグレードおよびダウングレード要件

Oracle Label Securityには、Oracle Database 12cリリース1 (12.1)からのアップグレードおよびOracle Database 12cリリース1 (12.1)へのダウングレードに特定の要件があります。

詳細は、「Oracle Label Securityのアップグレードおよびダウングレード」を参照してください。

Oracle Label SecurityおよびOracleマルチテナント・オプション

Oracle Databaseリリース12.1には、1つ以上のプラガブル・データベース(PDB)をマルチテナント・コンテナ・データベース(CDB)に接続できるOracleマルチテナント・オプションが導入されています。

Oracle Label SecurityはCDBで使用できます。各PDBには、ポリシー、ラベル、ユーザー認証などの独自のLabel Securityメタデータがあります。また、任意の子のPDBでLBACSYSスキーマ内のオブジェクトを自動的に利用できます。LBACSYSスキーマは共通ユーザー・スキーマです。

詳細は、「マルチテナント環境におけるOracle Label Security統合」を参照してください。

Oracle Label Securityインストールの簡略化

Oracle Label Securityは、Oracle Database 12cリリース1 (12.1)でデフォルトでインストールされ、インストール・プロセスを簡単にします。高度なインストールを実行する必要はなく、「Oracle Label Security」チェック・ボックスを選択します。

詳細は、「Oracle Label Securityを無効にする必要がある場合」を参照してください。

統合監査証跡とOracle Label Security

Oracle Database 12cリリース1 (12.1)は、統合監査証跡を使用して、Oracle Label Securityなどの様々な監査ソースから情報を取得します。OLSの監査は、監査ポリシーを使用して構成されます。12cリリース1 (12.1)のOLS監査により、OLSポリシーの有効化や無効化などの追加のイベントを監査できます。

データベースを12cリリース1 (12.1)にアップグレードし、統合監査を使用するように構成していない場合は、12cより前のOLS監査を使用する必要があります。

詳細は、「Oracle Label Securityでの監査」を参照してください。

関連項目:

統合監査を使用するようにアップグレード後のデータベースを構成する手順は、『Oracle Databaseアップグレード・ガイド』を参照してください。移行後に、統合監査ポリシーを作成できます。『Oracle Databaseセキュリティ・ガイド』を参照してください。

簡略化されたOracle Label Securityメタデータのエクスポートおよびインポート

Oracle Database 12cリリース1 (12.1)以降、完全なデータベース・エクスポートおよびインポート操作を実行するときに、LBACSYSスキーマにあるOracle Label Securityのメタデータを含めることができます。ソース・データベースは、Oracle Database 11gリリース2 (11.2.0.3)以上に対応しますが、ターゲット・データベースはOracle Database 12cリリース1 (12.1)以上である必要があります。

詳細は、「Oracle Label SecurityでのDBAファンクションの実行」を参照してください。

非推奨となった機能

次のスタンドアロン・ファンクションは今回のリリースで非推奨となり、今後のリリースではサポートされない可能性があります。

- LEAST_UBOUND
かわりにOLS_GREATEST_LBOUNDを使用できます。

代替の詳細は、「GREATEST_LBOUNDを使用した最大の下限の検索」を参照してください。

- LUBD
かわりにOLS_GLBDを使用できます。

代替の詳細は、「GREATEST_LBOUNDを使用した最大の下限の検索」を参照してください。

- DOMINATES
代替の詳細は、「OLS_DOMINATESスタンドアロン・ファンクション」を参照してください。

- DOM
代替の詳細は、「OLS_STRICTLY_DOMINATESスタンドアロン・ファンクション」を参照してください。

- STRICTLY_DOMINATES
代替の詳細は、「OLS_STRICTLY_DOMINATESスタンドアロン・ファンクション」を参照してください。

- S_DOM
代替の詳細は、「OLS_DOMINATESスタンドアロン・ファンクション」を参照してください。

- DOMINATED_BY
代替の詳細は、「OLS_DOMINATED_BYスタンドアロン・ファンクション」を参照してください。

- DOM_BY
代替の詳細は、「OLS_DOMINATED_BYスタンドアロン・ファンクション」を参照してください。

- STRICTLY_DOMINATED_BY
代替の詳細は、「OLS_STRICTLY_DOMINATED_BYスタンドアロン・ファンクション」を参照してください。

- S_DOM_BY
代替の詳細は、「OLS_STRICTLY_DOMINATED_BYスタンドアロン・ファンクション」を参照してください。

その他の変更

このリリースでの追加変更は次のとおりです。

- 章と付録が再編成されています。
新しい付録「Oracle Label SecurityのPL/SQLパッケージ」が追加されました。以前に各章で説明されていたほとんどのパッケージは、この付録に移動されました。

「Oracle Label SecurityのPL/SQLパッケージ」を参照してください

第I部 Oracle Label Securityスタート・ガイド

第I部では、Oracle Label Securityの基本要素を構成する用語、概念および相互関係について説明します。

- Oracle Label Securityの概要

- データ・ラベルおよびユーザー・ラベル

- アクセス制御および権限

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のアーキテクチャ

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

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

Oracle Label Securityについて

Oracle Label Securityでは、個々の表の行およびアプリケーション・ユーザーに割り当てられたラベルを使用して個々の表の行の表示を制御します。

Oracle Label Securityは、政府および防衛組織に見られるマルチレベル・セキュリティ(MLS)要件に基づいています。機密情報を認可されたユーザーのみに簡単に制限できます。Oracle Label Securityは、Oracle Virtual Private Database (VPD)に基づいています。ただし、VPDとは異なり、Oracle Label Securityは即時利用可能なアクセス調整機能、データ・ディクショナリ表およびポリシー・ベースのアーキテクチャを提供し、コーディングのカスタマイズを排除して、複数のアプリケーションで使用できる一貫性のあるラベル・ベースのアクセス制御モデルを提供します。Oracle Label Securityポリシーは、1つ以上のアプリケーション表に適用できます。Oracle Label Securityは、行ラベルをユーザーのラベル認可と比較することで機能します。Oracle Label Securityソフトウェアはデフォルトでインストールされますが、自動的には有効になりません。Oracle Label Securityは、SQL*Plusで、またはOracle Database Configuration Assistant (DBCA)を使用して簡単に有効化できます。Oracle Label Securityを管理するには、Oracle Enterprise Manager Cloud Controlを使用するか、PL/SQLパッケージとスタンドアロン・ファンクションのセットをコマンド・ライン・レベルで使用できます。Oracle Label Securityのデフォルトの管理者は、ユーザーLBACSYSです。Oracle Label Securityポリシーに関する情報を調べるには、ALL_SA_*、DBA_SA_*またはUSER_SA_*データ・ディクショナリ・ビューを問い合せることができます。

Oracle Label Securityの利点

Oracle Label Securityには、行レベル管理を制御する場合のいくつかの利点があります。

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

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

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

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

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

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

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

Oracle Label Security管理者のロール

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

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

- パッケージ固有の権限: パブリックのSA_SESSIONおよびSA_UTLパッケージを除くほとんどのOracle Label Security PL/SQLパッケージには、EXECUTE権限が必要です。

- ロールベースの権限: 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のパッケージ

Oracle Label Securityのコンポーネント

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

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

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

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

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

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

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

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

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

Oracle Label Securityのアーキテクチャ

Oracle Label Securityは、行レベルのセキュリティを実行するためにOracle Database認証で動作します。

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

図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は、個々の行に割り当てられたラベルをユーザーのラベル認可と比較して、アクセスを許可または拒否します。セッション・ラベルは、ユーザーに割り当てられたラベル認可に基づいています。

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

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

内容は次のとおりです。

- Oracle Label Securityのパッケージ

- Oracle Enterprise Manager Cloud Control

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ユーティリティのファンクションおよびプロシージャ」を参照

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

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

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

Oracle Enterprise Manager Cloud Control

Oracle Enterprise Manager Cloud Control Webインタフェースを使用して、Oracle Label Securityを管理できます。

図1-3に、Oracle Enterprise Managerインタフェースを示します。

図1-3 Enterprise Managerを使用したOracle Label Securityポリシーの構成

関連項目:

- Oracle Label Securityポリシーを管理するためのCloud ControlまたはSQL*Plusへのログインの詳細は、「Oracle Label SecurityのためのCloud ControlまたはSQL*Plusへのログイン」を参照してください

- Enterprise Managerを使用したOracle Label Securityの管理の詳細は、「Oracle Label Securityスタート・ガイド」を参照してください

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

Oracle Label Securityは、Oracle Internet Directory (OID)との統合およびマルチテナント環境における統合が可能です。

内容は次のとおりです。

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

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

Oracle Label SecurityとOracle Internet Directoryとの統合

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

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

この統合の詳細は、「Oracle Label SecurityとOracle Internet Directoryとの併用」を参照してください。

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

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

マルチテナント環境では、プラガブル・データベース(PDB)をコンテナ・データベース(CDB)で接続および切断できます。各PDBには、ポリシー、ラベル、ユーザー認証などの独自のOracle Label Securityメタデータがあります。LBACSYSスキーマは共通ユーザー・スキーマです。LBACSYSアカウントの詳細は、「LBACSYS Oracle Label Securityの有効化」を参照してください。

PDBをCDBに接続する前に、データベースにOracle Label Securityがインストールされていない場合は、データベースに対して$ORACLE_HOME/rdbms/admin/catols.sqlスクリプトを実行します。CDBの作成の詳細は、『Oracle Database管理者ガイド』を参照してください。

Oracle Label Securityのポリシーは個々のPDBに格納されるので、PDBごとに個別のポリシーを作成できます。PDBに対して定義されたポリシーは、PDBに含まれるローカル表およびスキーマ・オブジェクトに対して強制できます。

Oracle Label Securityポリシーをルートに作成することはできません。単一のCDBに、それぞれOracle Label Securityで構成されている複数のPDBがある場合があります。

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を返します。

関連項目:

- マルチテナント・アーキテクチャが権限に与える影響は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

- インターネット・ディレクトリ対応Oracle Label Securityの詳細は、「Oracle Label SecurityとOracle Internet Directoryとの統合」を参照してください

2 データ・ラベルおよびユーザー・ラベル

データ・ラベルおよびユーザー・ラベルの基本概念を理解する必要があります。

内容は次のとおりです。

- ラベルベース・セキュリティについて

- ラベル・コンポーネント

- ラベルの構文とタイプ

- データ・ラベルとユーザー・ラベルの相互動作

- ラベルの管理

ラベルベース・セキュリティについて

ラベルベース・セキュリティは、機密データへのアクセスを柔軟に制御する手段を提供します。

Oracle Label Securityでは、データへのアクセスは、ユーザーの識別情報とラベル、およびデータの機密性とラベルに基づいて制御されます。ラベル・セキュリティは、ユーザーが表やビューなどのオブジェクト内のデータに対して実行できる操作を決定する任意アクセス制御以外の保護を追加します。

表2-1に、Oracle Label Securityポリシーがデータへのアクセス制御に使用する3つのディメンションを示します。

表2-1 Oracle Label Securityのデータ・ディメンション

データ・ディメンション

説明

データ・ラベル

データの行ラベルは、その行の機密性のレベルと性質を示し、ユーザーがその行にアクセスするために満たす必要のある追加の基準を指定します。

ユーザー・ラベル

ユーザー・ラベルは、ユーザーの機密レベルに加えてユーザーのアクセスをラベル付きデータに制約する区分とグループを指定します。各ユーザーには、レベル、区分およびグループの範囲が割り当てられ、各セッションはその認可範囲内で動作してその範囲内のラベル付きデータにアクセスできます。

ポリシー権限

ユーザーに、特殊な操作を実行する権利(権限)、またはそのラベル認可を超えてデータにアクセスする権利(権限)を付与できます。

ここでの説明はデータへのアクセスに関するものです。データの読取りや書込みなどの特定のタイプのアクセスは、「アクセス制御および権限」で説明しています。

データベース表にOracle Label Securityポリシーが適用されると、各行のラベルを格納するために表に1列が追加されます。管理者は、この列を表示するか非表示にするかを選択できます。

ユーザー・ラベルと権限管理について

ユーザーのラベルと権限を管理するには、SA_USER_ADMINパッケージに対するEXECUTE権限およびpolicy_DBAロールを持っている必要があります。

SA_USER_ADMINパッケージには、Oracle Label Securityユーザーのセキュリティ属性を管理するためのファンクションが用意されています。また、ユーザーのレベル、区分およびグループを指定するなど、ユーザー・ラベルをコンポーネント別に管理できるように複数のプロシージャが含まれています。さらに、コンポーネントではなくラベル全体の文字列表現を受け入れるプロシージャもあります。レベル、区分およびグループのパラメータでは、各コンポーネントに対して定義された短縮名が使用されることに注意してください。

すべてのラベルおよび権限情報は、Oracle Label Securityのデータ・ディクショナリ表に格納されます。ユーザーがデータベースに接続すると、Oracle Label Securityのデータ・ディクショナリに格納されている情報に基づいてそのセッション・ラベルが確立されます。

ユーザーを複数のポリシーに基づいて認可できることに注意してください。

関連項目:

- SA_USER_ADMIN PL/SQLパッケージ

- SA_USER_ADMIN.SET_USER_PRIVS

- policy_DBAロールの詳細は、「Oracle Label Security管理者の責任」を参照してください

ラベル・コンポーネント

ラベルで使用される要素について理解する必要があります。

内容は次のとおりです。

- ラベル・コンポーネントの定義および有効な文字

- レベル機密性コンポーネント

- 区分コンポーネント

- グループ・コンポーネント

- 業界別のレベル、区分およびグループの例

ラベル・コンポーネントの定義および有効な文字

機密性ラベルは、複数のコンポーネントを持つ単一の属性です。

すべてのデータ・ラベルにはレベル・コンポーネントを含める必要がありますが、区分コンポーネントとグループ・コンポーネントはオプションです。管理者は、ラベルを作成する前にラベル・コンポーネントを定義する必要があります。

注意:

管理者はラベル・コンポーネントに詳細名と短縮名の両方を定義しますが、検索時に表示されるのは短縮名のみです。ユーザーがラベルを操作する際は、コンポーネントの短縮名のみが使用されます。簡易名の例を、次のコンポーネント固有の例の表に示します。

表2-2 機密性ラベルのコンポーネント

コンポーネント

説明

例

レベル

設定済の順序付けランク内のラベル付きデータの機密性の単一指定

CONFIDENTIAL (1)、SENSITIVE (2)、HIGHLY_SENSITIVE (3)

区分

ラベル付きデータに対応付けられた0個以上のカテゴリ

FINANCIAL、STRATEGIC、NUCLEAR

グループ

データを所有するか、データにアクセスする組織の0個以上の識別子

EASTERN_REGION、WESTERN_REGION

すべてのラベル・コンポーネント指定に有効な文字には、英数字、アンダースコアおよび空白も含まれます。(先頭および後続の空白は無視されます。)

次の図に、レベル、区分およびグループを使用してデータを論理的に分類できる3つのディメンションを示します。

図2-1 レベル、区分およびグループを持つデータ・カテゴリ

レベル機密性コンポーネント

レベル は、ラベルを付ける情報の機密性を示すランキングです。

情報の機密性が高いほど、レベルも高くなります。情報の機密性が低いほど、レベルも低くなります。

情報の機密性が高いほど、レベルも高くなります。情報の機密性が低いほど、レベルも低くなります。

ラベルには必ず1つのレベルを含める必要があります。Oracle Label Securityでは、1つのポリシーに最大10,000のレベルを定義できます。レベルごとに、Oracle Label Security管理者が数値書式、詳細名および必須の簡易名を定義する必要があります。

たとえば、次のようなレベル・セットを定義できます。

表2-2に、レベルの例を示します。

表2-3 レベルの例

数値

詳細名

短縮名

40

HIGHLY_SENSITIVE

HS

30

SENSITIVE

S

20

CONFIDENTIAL

C

10

PUBLIC

P

表2-4に、レベルを指定する様々な方法を示します。

表2-4 レベル指定の書式

書式

説明

数値(タグとも呼ばれる)

数値のレベルは0から9999です。機密性はこの数値でランキングされるため、機密性の高いレベルほど大きい数値、機密性の低いレベルほど小さい数値を割り当てる必要があります。表2-3では、40 (HIGHLY_SENSITIVE)は30、20および10より上位レベルです。

管理者は、レベルの数値に連番を使用しないようにします。適切な方法は、レベル間に等間隔の増分(50や100など)を使用することです。これにより、既存の2つのレベル間に後からレベルを追加挿入できます。

詳細名

レベルの詳細名は80文字以内です。

短縮名

短縮名は30文字以内です。

管理者はレベル(およびその他の各ラベル・コンポーネント)に詳細名と短縮名の両方を定義しますが、Oracle Label Securityポリシーが有効な場合にレコードの検索時に表示されるのは短縮名のみです。ユーザーがラベルを操作する際は、コンポーネントの短縮名のみが使用されます。

一般にユーザーが定義することの多いその他のレベル・セットとして、TOP_SECRET、SECRET、CONFIDENTIAL、UNCLASSIFIED、またはTRADE_SECRET、PROPRIETARY、COMPANY_CONFIDENTIAL、PUBLIC_DOMAINなどがあります。

レベルのみを使用する場合、この例のレベル40のユーザーであれば、レベル40以下のすべてのデータ行に対して、アクセスまたは変更ができます。

注意:

このマニュアルで使用されているレベルおよびラベル(TOP_SECRET、SECRET、CONFIDENTIALなど)はすべて一例です。

区分コンポーネント

区分はラベル付きデータの機密性を記述する領域であり、レベルに対して、さらに細分化したレベルを提供します。

区分により、データが1つ以上のセキュリティ領域に対応付けられます。特定のプロジェクトに関連するすべてのデータに、同じ区分をラベル付けすることができます。たとえば、次のような区分セットを定義できます。

表2-5に、区分の例を示します。

表2-5 区分の例

数値

詳細名

短縮名

85

FINANCIAL

FINCL

65

CHEMICAL

CHEM

45

OPERATIONAL

OP

表2-6に、区分を指定する様々な方法を示します。

表2-6 区分指定の書式

書式

説明

数値

数値の範囲は0から9999です。レベルに使用されている数値とは無関係です。区分の数値は、機密性のレベルを示すわけではありません。区分の数値は、ラベル文字列での区分短縮名の表示順序を制御します。たとえば、表2-5に示した3つの区分すべてとレベルSENSITIVEを持つラベルを作成するとします。このラベルを文字列で表示すると、次のようになります。

S:OP,CHEM,FINCL

これは、SENSITIVE: OPERATIONAL, CHEMICAL, FINANCIALを意味します。

表示順序は、区分に割り当てられた数値の順序に従います。45は65より小さく、65は85より小さい数値です。対照的に、FINCL区分に割り当てられた数値が5の場合、ラベルの文字列書式は次のようになります。

S:FINCL,OP,CHEM

詳細名

区分の詳細名は80文字以内です。

短縮名

短縮名は30文字以内です。

区分はオプションです。ラベルには0個以上の区分を含めることができます。Oracle Label Securityでは、最高10,000の区分を定義できます。

区分を含まないラベルがあってもかまいません。たとえば、HIGHLY_SENSITIVEおよびCONFIDENTIALレベルは区分なしで指定し、SENSITIVEレベルは区分を含むように指定できます。

データの機密性を分析すると、一部の区分が特定のレベルでのみ有用であることがわかる場合があります。

図2-2に、区分を使用してデータをカテゴリに分類する方法を示します。

図2-2 ラベルのマトリックス

この図では、区分FINCL、CHEMおよびOPがレベルHIGHLY_SENSITIVE (40)とともに使用されています。ラベルHIGHLY_SENSITIVE:FINCL, CHEMは、2つの名前付き区分を持つレベル40を示します。区分FINCLとCHEMの機密性は同じです。保護されている表の一部のデータがどの区分にも属さない場合もあることに注意してください。

区分が指定されている場合、行データへのアクセスが通常は許可されるレベルのユーザーであっても、行ラベルで表示されるすべての区分もユーザーのラベルに含まれていないかぎりアクセスは禁止されます。

グループ・コンポーネント

グループでは、EASTERN_REGION、WESTERN_REGION、WR_SALESなど、データを所有する組織またはデータにアクセスする組織を識別します。

特定の部門に関連するすべてのデータに、その部門のグループをラベル付けすることができます。グループは、データを制御された方法で送信したり、組織の変更に適切なタイミングで対処する場合に役立ちます。会社組織の再編時には、データ・アクセス権も再編成に沿って適切に変更できます。

グループは階層型です。組織のインフラストラクチャに基づいてデータにラベルを付けることができます。つまり、グループを親グループに対応付けることができます。

図2-3に、次のような組織階層に対応するグループ・セットを定義する方法を示します。

図2-3 グループの例

WESTERN_REGIONグループには、3つのサブグループWR_SALES、WR_HUMAN_RESOURCESおよびWR_FINANCEが含まれています。WR_FINANCEサブグループは、WR_ACCOUNTS_RECEIVABLEおよびWR_ACCOUNTS_PAYABLEに分割されています。

表2-7に、この例の組織構造をOracle Label Securityのグループの書式で表す方法を示します。グループに割り当てられた数値が表示順序のみに影響することに注意してください。管理者は、階層(つまり、親子関係)を別々に指定します。

表2-7 グループの例

数値

詳細名

短縮名

親グループ

1000

WESTERN_REGION

WR

1100

WR_SALES

WR_SAL

WR

1200

WR_HUMAN_RESOURCES

WR_HR

WR

1300

WR_FINANCE

WR_FIN

WR

1310

WR_ACCOUNTS_PAYABLE

WR_AP

WR_FIN

1320

WR_ACCOUNTS_RECEIVABLE

WR_AR

WR_FIN

表2-8に、グループを指定する様々な方法を示します。

表2-8 グループ指定の書式

書式

説明

数値

グループの数値の範囲は0から9999で、ポリシーごとに一意である必要があります。

数値は、ランキングを示すわけではありません。また、親子関係も機密性レベルも示しません。単に、ラベル文字列でのグループの短縮名の表示順序を制御します。

たとえば、表2-7にリストしたようにレベルSENSITIVE、区分CHEMICAL、グループWESTERN_REGIONおよびWR_HUMAN_RESOURCESを持つラベルが作成されているとします。このラベルを文字列で表示すると、次のようになります。

S:CHEM:WR,WR_HR

1000は1200より前に位置するため、WRはWR_HRより前に表示されます。

詳細名

グループの詳細名は80文字以内です。

短縮名

短縮名は30文字以内です。

グループはオプションであり、ラベルには0個以上のグループを含めることができます。Oracle Label Securityでは、最高10,000のグループを定義できます。

グループを含まないラベルがあってもかまいません。データの機密性を分析すると、一部のグループが特定のレベルでのみ使用されている場合があります。たとえば、HIGHLY_SENSITIVEおよびCONFIDENTIALラベルはグループなしで指定し、SENSITIVEラベルはグループを含むように指定できます。

関連項目:

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

業界別のレベル、区分およびグループの例

Oracle Label Securityのレベル、区分およびグループは、様々な業界での実装に対応するように設計されています。

表2-9に、各種業界での代表的な実装方法をリストし、Oracle Label Securityのレベル、区分およびグループの柔軟性を示します。

表2-9 業界別の代表的なレベル、区分およびグループ

業界

レベル

区分

グループ

B2B

TRADE_SECRET

PROPRIETARY

COMPANY_CONFIDENTIAL

PUBLIC

MARKETING

FINANCIAL

SALES

PERSONNEL

AJAX_CORP

BILTWELL_CO

ACME_INC

ERSATZ_LTD

金融サービス

ACQUISITIONS

CORPORATE

CLIENT

OPERATIONS

INSURANCE

EQUITIES

TRUSTS

COMMERCIAL_LOANS

CONSUMER_LOANS

CLIENT

TRUSTEE

BENEFICIARY

MANAGEMENT

STAFF

司法

NATIONAL_SECURITY

SENSITIVE

PUBLIC

CIVIL

CRIMINAL

ADMINISTRATION

DEFENSE

PROSECUTION

COURT

医療

PRIMARY_PHYSICIAN

PATIENT_CONFIDENTIAL

PATIENT_RELEASE

PHARMACEUTICAL

INFECTIOUS_DISEASES

CDC

RESEARCH

NURSING_STAFF

HOSPITAL_STAFF

防衛

TOP_SECRET

SECRET

CONFIDENTIAL

UNCLASSIFIED

ALPHA

DELTA

SIGMA

UK

NATO

SPAIN

ラベルの構文とタイプ

ラベル・コンポーネントを定義した後に、レベル、区分およびグループの特定セットを組み合せてデータ・ラベルを作成できます。

Oracle Enterprise Managerのグラフィカル・ユーザー・インタフェースまたはコマンドライン・プロシージャを使用できます。ラベルの文字列表現の構文は、次のとおりです。

LEVEL:COMPARTMENT1,...,COMPARTMENTn:GROUP1,...,GROUPn

ラベルを指定するテキスト文字列は、英数字、空白およびアンダースコアを含めて4,000文字以内です。ラベルには大/小文字区別がありません。そのため大文字、小文字または大/小文字両方で入力できますが、文字列がデータ・ディクショナリに格納され、表示されるときには大文字が使用されます。コロン(:)は、コンポーネント間のデリミタとして使用されます。この構文では、後続のデリミタを入力する必要はありません。

たとえば、次のような有効なラベルを作成できます。

SENSITIVE:FINANCIAL,CHEMICAL:EASTERN_REGION,WESTERN_REGION
CONFIDENTIAL:FINANCIAL:VP_GRP
SENSITIVE
HIGHLY_SENSITIVE:FINANCIAL
SENSITIVE::WESTERN_REGION

有効なデータ・ラベルが作成されると、さらに次の2つのことが行われます。

- ラベルが有効なデータ・ラベルとして自動的に指定されます。この機能では、データに割当て可能なラベルが制限されます。Oracle Label Securityでは、Oracle Internet Directoryで事前定義済のデータ・ラベルから、有効なデータ・ラベルを実行時に動的に作成することもできます。ただし、ほとんどのユーザーは、データ・ラベルの増加を制限するために、ラベルを手動で作成する方法を選択します。

- ラベルを表すテキスト文字列に数値ラベル・タグが関連付けられます。保護されている表のポリシー・ラベル列には、テキスト文字列ではなく、このラベル・タグが格納されます。

注意:

Oracle Internet Directoryを使用しないOracle Label Securityインストールでは、有効なデータ・ラベルの動的作成にはTO_DATA_LABELファンクションを使用します。また、その使用は厳密に制御する必要があります。「TO_DATA_LABELを使用したラベルの挿入」を参照してください。

関連項目:

- ポリシーのラベル列とラベル・タグの動作

- ラベル・タグ

データ・ラベルとユーザー・ラベルの相互動作

ユーザーがアクセスできるのは、各自のラベル認可の範囲内にあるデータのみです。

ユーザーには、次の情報が割り当てられています。

- 最大レベルと最小レベル

- 認可された区分のセット

- 認可されたグループ(および、暗黙的にすべてのサブグループの認可)のセット

たとえば、ユーザーに最大レベルSENSITIVEが割り当てられている場合、そのユーザーは潜在的にSENSITIVE、CONFIDENTIALおよびUNCLASSIFIEDのデータへのアクセス権を持つことになります。このユーザーは、HIGHLY_SENSITIVEデータにはアクセスできません。

図2-4に、アクセス制御を行うためにデータ・ラベルとユーザー・ラベルがOracle Label Securityでどのように相互作用するかを示します。データ・ラベルはディスクリートですが、ユーザー・ラベルは包含的です。認可された区分およびグループに応じて、ユーザーは潜在的に各自の範囲内で全レベルに対応するデータにアクセスできます。

図2-4 例: データ・ラベルとユーザー・ラベル

この図のように、ユーザー1は、最大レベルがHSであるため、行2、3および4にアクセスできます。また、FIN区分へのアクセス権を持っており、階層形式のグループWRへのアクセス権にはグループWR_SALが含まれています。CHEM区分はないため、行1にはアクセスできません。(ユーザーが行にアクセスするためには、その行のデータ・ラベルのすべての区分に対する認可が必要です。)

ユーザー2は行3および4にアクセスできます。その最大レベルはSで、これは行2のHSより下位です。このユーザーは、FIN区分へのアクセス権を持っていますが、グループWR_SALに対する認可しか持っていません。そのため、行1にはアクセスできません。

図2-5に、組織階層に関連したデータがどのようにデータのレベルおよび区分に一致するかを示します。

図2-5 ラベル・コンポーネントの相互関係

たとえば、UNITED_STATESグループには3つのサブグループEASTERN_REGION、CENTRAL_REGIONおよびWESTERN_REGIONが含まれています。WESTERN_REGIONサブグループは、さらにCALIFORNIAおよびNEVADAに分割されています。各グループおよびサブグループにはそれぞれ、有効な区分およびレベルに属するデータがデータベース内に存在している可能性があります。したがって、CALIFORNIAサブグループ内に、FINANCIALであるSENSITIVEデータが存在する場合があります。

データには通常、単一グループがラベル付けされますが、これに対し、ユーザーのラベルは階層形式であることに注意してください。ユーザーが特定のグループを持つ場合、そのグループに暗黙的に子グループが含まれている場合があります。このように、UNITED_STATESグループに関連付けられたユーザーはすべてのデータへのアクセス権を持ちますが、CALIFORNIAに関連付けられたユーザーは、そのサブグループに関連するデータへのアクセス権のみを持ちます。

ラベルの管理

Oracle Label Securityには、データベース内で使用するラベルを定義して管理できるように、管理インタフェースが用意されています。

Oracle Database内でラベルを定義するには、Oracle Label Securityパッケージを使用する方法と、Oracle Enterprise Managerを使用する方法があります。管理者は、最初にラベルを構成するレベル、区分およびグループを定義してから、データベースの内容に関して有効なデータ・ラベルのセットを定義できます。

管理者は、データベース内の個々の表またはアプリケーション・スキーマ全体にポリシーを適用できます。最後に、管理者は各データベース・ユーザーに、個々のジョブに必要なラベル・コンポーネント(および、必要に応じて権限)を割り当てます。

3 アクセス制御および権限

Oracleには、ユーザーがラベル付きの行に対して持つことのできるアクセス権のタイプを決定するアクセス制御と権限が用意されています。

内容は次のとおりです。

- アクセス調整

- セッション・ラベルおよび行ラベルの動作

- ユーザー認証の動作

- アクセス調整のためのラベルの評価

- Oracle Label Securityの権限

- 複数のOracle Label Securityポリシーの処理

関連項目:

ラベル(およびそのレベル、区分およびグループ)の概念と、行のデータ・ラベルとユーザーのラベルに基づくアクセス制御の基本概念の概要は、「データ・ラベルおよびユーザー・ラベル」を参照してください

アクセス調整

Oracle Label Securityポリシーで保護されているデータにユーザーがアクセスするには、そのポリシーに定義されているラベルに基づく認可が必要です。

図3-1に、ユーザー、データおよびラベル間の関係を示します。

- データ・ラベルでは、データ行の機密性が指定されます。

- ユーザー・ラベルは、ユーザーに適切な認可を付与します。

- ユーザーとデータ行とのアクセス調整は、ユーザーのラベルに依存します。

図3-1 ユーザー、データおよびラベル間の関係

注意:

Oracle Label Securityの施行オプションは、表およびスキーマに対するアクセス制御の適用方法に影響します。この章では、すべてのポリシー施行オプションが有効になっているものとします。

関連項目:

詳細は、「Oracle Label Securityのポリシー強制オプション」を参照してください

セッション・ラベルおよび行ラベルの動作

セッション・ラベルおよび行ラベルを理解するのは重要なことです。

内容は次のとおりです。

- セッション・ラベル

- 行ラベル

- セッション・ラベルの例

セッション・ラベル

Oracle Label Securityの各ユーザーには、特別なコンポーネントを含む認可があります。

- 最大レベルと最小レベル

- 認可された区分のセット

- 認可されたグループのセット

- 区分およびグループごとの、読取り専用アクセスまたは読取り/書込みアクセスの指定

管理者はユーザーに対してこれらの認可を設定するときに、そのユーザーの初期セッション・ラベルも指定します。

セッション・ラベルは、ユーザーが任意の時点で作業する、レベル、区分およびグループの特定の組合せです。ユーザーは、認可されているコンポーネントを任意に組み合せてセッション・ラベルを変更できます。

関連項目:

SA_SESSIONセッション管理PL/SQLパッケージ

行ラベル

ユーザーがラベルを指定せずにデータを書き込む場合、ユーザーのセッション・ラベルを使用して行ラベルが自動的に割り当てられます。

ただし、ユーザーは書き込んだ行のラベルを、指定したラベルのコンポーネントに関する特定の制限の範囲内で設定できます。このラベルのレベルは、管理者が指定した範囲内で任意に設定できます。たとえば、ユーザーの現行のセッション・ラベルのレベルから最小レベルの間に設定できます。ただし、この行の新規ラベルの区分とグループは、さらに制限されます。新規ラベルに含めることができるのは、現行のセッション・ラベルに含まれていて、ユーザーが書込みアクセス権を持っている区分とグループのみです。

管理者はユーザー認証を設定するときに、初期のデフォルト行ラベルも指定します。

関連項目:

- SA_USER_ADMIN PL/SQLパッケージ

- SA_SESSIONセッション管理PL/SQLパッケージ

セッション・ラベルの例

セッション・ラベルと行ラベルは、ユーザーのレベル、区分およびグループの認可の範囲内でどこにでも置くことができます。

図3-2では、ユーザーの最大レベルはSENSITIVE、最小レベルはUNCLASSIFIEDです。ただし、デフォルトのセッション・ラベルはC:FIN,OP:WRです。この例では、管理者は、ユーザーがCONFIDENTIALレベルでデータベースに接続するように、そのセッション・ラベルを設定しています。

同様に、ユーザーは区分FINおよびOPとグループWRに対して認可されていても、管理者はそのユーザーが区分FINとグループWRにのみ接続するように、セッション・ラベルを設定できます。

図3-2 ユーザー・セッション・ラベル

関連項目:

- SA_USER_ADMIN.SET_COMPARTMENTS

- SA_USER_ADMIN.ALTER_COMPARTMENTS

ユーザー認証の動作

Oracle Label Securityでは、Oracle Label Security管理者によって設定される認証、および計算されるセッション・ラベルによって設定される認証が提供されます。

内容は次のとおりです。

- 管理者が設定する認可

- 計算されるセッション・ラベル

管理者が設定する認可

管理者は、レベル、区分およびグループの認可を明示的に設定します。

内容は次のとおりです。

- 認可レベル

- 認可区分

- 認可グループ

認可レベル

管理者は、Oracle Label Securityポリシーのレベル認可を明示的に設定します。

表3-1 管理者が設定する認可レベル

認可レベル

意味

最大レベル

ユーザーが読取りおよび書込み操作中にアクセスできる機密性の最大ランキング。

最小レベル

ユーザーが書込み操作中にアクセスできる機密性の最小ランキング。最大レベルは最小レベル以上に設定する必要があります。

デフォルト・レベル

Oracle Databaseへの接続時にデフォルトで想定されるレベル

デフォルト行レベル

Oracle Databaseへのデータの挿入時にデフォルトで使用されるレベル

たとえば、Oracle Enterprise Managerでは、管理者がユーザーJoeに対して次の認可レベルを設定します。

型

短縮名

詳細名

説明

最大値

HS

HIGHLY_SENSITIVE

ユーザーの最上位レベル

最小値

P

PUBLIC

ユーザーの最下位レベル

デフォルト

C

CONFIDENTIAL

ユーザーのデフォルト・レベル

行

C

CONFIDENTIAL

INSERTの行レベル

認可区分

管理者は、ユーザーがセッション・ラベルに使用できる区分のリストを指定します。

区分ごとに、書込みアクセス権を明示的に指定する必要があります。ユーザーは、書込み認可を持たない区分を含む行を直接挿入、更新または削除することはできません。

たとえば、Oracle Enterprise Managerでは、管理者がユーザーJoeに対して次の認可区分を設定します。

短縮名

詳細名

書込み

デフォルト

行

CHEM

CHEMICAL

あり

あり

なし

FINCL

FINANCIAL

あり

あり

なし

OP

OPERATIONAL

あり

あり

あり

図3-3 Enterprise Managerでの認可区分の設定

図3-3では、行指定は、新規に挿入するデータのデフォルト行ラベルの一部として、区分を使用する必要があるかどうかを示します。この設定を有効にするには、ポリシー・オプションも有効にする必要があることに注意してください。

認可グループ

ユーザーがセッション・ラベルに配置できるグループのリストを指定し、各グループに書込みアクセス権を付与する必要があります。

たとえば、Oracle Enterprise Managerでは、管理者は次の認可グループを設定します。

短縮名

詳細名

書込み

デフォルト

行

親

WR_HR

WR_HUMAN_RESOURCES

あり

あり

あり

WR

WR_AP

WR_ACCOUNTS_PAYABLE

あり

あり

なし

WR_FIN

WR_AR

WR_ACCOUNTS_RECEIVABLE

あり

あり

なし

WR_FIN

図3-4 Enterprise Managerでの認可グループの設定

この図では、行指定は、新規に挿入するデータのデフォルト行ラベルの一部として、グループを使用する必要があるかどうかを示します。この設定を有効にするには、LABEL_DEFAULTポリシー・オプションも有効にする必要があることに注意してください。

関連項目:

LABEL_DEFAULT: セッションのデフォルト行ラベルの使用

計算されるセッション・ラベル

Oracle Label Securityでは、多数のラベルがセッション・ラベルの値に基づいて自動的に計算されます。

計算されるセッション・ラベルを次に示します。

表3-2 計算されるセッション・ラベル

計算されるラベル

定義

最大読取りラベル

ユーザーが認可されている区分とグループを組み合せた最大レベル。

最大書込みラベル

ユーザーが書込みアクセス権を付与されている区分とグループを組み合せた最大レベル。

最小書込みラベル

ユーザーの最小レベル。

デフォルト読取りラベル

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

デフォルト書込みラベル

ユーザーが書込みアクセス権を付与されている区分とグループを含む、デフォルト読取りラベルのサブセット。レベル・コンポーネントは、読取りラベルのデフォルト・レベルと同じです。このラベルは、ユーザーの書込み認可に基づいて読取りラベルから自動的に導出されます。

デフォルト行ラベル

挿入されるデータのデータ・ラベルのデフォルト値として指定されている、ユーザーの最小書込みラベルと最大書込みラベル間のコンポーネントの組合せ。

関連項目:

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

アクセス調整のためのラベルの評価

Oracle Label Securityは、ユーザーのラベル・コンポーネントを行のラベル・コンポーネントと比較することでラベルを評価します。

このようにして、Oracle Label Securityポリシーでは、ユーザーがデータにアクセスできるかどうかを判断できます。これにより、Oracle Label Securityでは、ユーザーが行のデータに対して要求した操作を実行できるように認可されているかどうかを評価できます。

内容は次のとおりです。

- 読取りおよび書込みアクセスについて

- Oracle Label Securityの読取りアクセス・アルゴリズムの動作

- Oracle Label Securityの書込みアクセス・アルゴリズムの動作

読取りおよび書込みアクセスについて

データ・ラベルはデータ・レコードの列に格納されますが、ユーザー認証に関する情報はリレーショナル表に格納されます。

ユーザーがログオンすると、表を使用して、セッション中に使用するユーザー・ラベルが動的に生成されます。

読取り操作と書込み操作の違い

保護された表には、データ操作言語(DML)操作に関して2つの基本的なタイプのアクセス調整(読取りアクセスと書込みアクセス)が存在します。

ユーザーは、読み取ることができるデータについての最大認可を持ち、ユーザーの書込み認可はそのサブセットです。最小書込みレベルにより、ユーザーが機密性を下げてデータを送信できるかどうかが制御されます。ユーザーは、管理者から各自に割り当てられた最小レベルより低いレベルのデータは書き込めません。

また、ユーザーが認可されている(つまり、ユーザーが少なくとも読取りアクセス権を持つ)区分とグループのリストが個別にあります。アクセス・フラグは、ユーザーが個々の区分またはグループに書き込むこともできるかどうかを示します。

グループに対する読取り/書込み認可の伝播

グループが階層形式で編成されている場合、ユーザーに割り当てられるグループには、そのユーザーが属しているグループに従属するすべてのサブグループが含まれます。

この場合、親グループに対するユーザーの読取り/書込み認可は、すべてのサブグループに伝播します。

図3-5のように、3つのサブグループを持つ親グループWESTERN_REGIONを考えます。ユーザーがWESTERN_REGIONへの読取りアクセス権を持っている場合は、3つのサブグループへの読取りアクセス権も付与されていることになります。管理者は、ユーザーにWESTERN_REGION親グループ(または他のサブグループ)への書込みアクセス権を付与せずに、サブグループWR_FINANCEへの書込みアクセス権を付与できます。これに対して、ユーザーがWESTERN_REGIONへの読取り/書込みアクセス権を持っている場合は、ツリー上でこのグループより下位にあるすべてのサブグループへの読取り/書込みアクセス権も付与されていることになります。

グループに対する書込み認可があっても、親グループに対する書込み認可が与えられるわけではありません。ユーザーがWESTERN_REGIONおよびWR_FINANCEへの読取り専用アクセス権を持っている場合に、管理者はそのユーザーが持っている上位レベルのグループへの読取り専用アクセス権に影響を与えずに、WR_ACCOUNTS_RECEIVABLEへの書込みアクセス権を付与できます。

図3-5 サブグループによる読取り/書込みアクセス権の継承

関連項目:

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

Oracle Label Securityの読取りアクセス・アルゴリズムの動作

READ_CONTROLの強制により、行のデータを読み取ることができるかどうかが判断されます。

次のルールが順番に使用され、データ行に対するユーザーの読取りアクセス権が判断されます。

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

2. ユーザーのラベルには、データに属する少なくとも1つのグループ (またはそのようなサブグループの親グループ)が含まれている必要があります。

3. ユーザーのラベルは、データに属するすべての区分を含んでいる必要があります。

ユーザーのラベルがこれらのテストにパスした場合、このユーザーのラベルは行のラベルを支配している、と表現されます。

レベルに連結した読取りまたは書込みアクセス権という概念はないことに注意してください。これは、管理者が指定したレベル範囲(最小から最大)内で、ユーザーが潜在的に読取りおよび書込み可能になるためです。ユーザーは、各自の現行セッション・レベル以下のすべてのデータを常に読み取ることができます。ユーザーに最小認可レベルを下回る書込みを許可する権限は(FULL以外には)ありません。

図3-6に、ラベル評価プロセスが、レベル、グループ、区分の順にどのように進行するかを示します。データ・ラベルがNULLまたは無効の場合、ユーザーのアクセスは拒否されます。

図3-6 読取りアクセス権のラベル評価プロセス

Oracle Label Securityは読取りアクセス要求を受け取ると、各行を評価して次のことを判断します。

1. ユーザーのレベルがデータのレベル以上かどうか

2. データのレベル以上の場合、ユーザーはデータ・ラベルに示されたグループのうち1つ以上へのアクセス権を持っているかどうか

3. 持っている場合、ユーザーはデータ・ラベルに示されたすべての区分へのアクセス権を持っているかどうか(つまり、データの区分がユーザーの区分のサブセットかどうか)

この評価プロセスのいずれかの段階で答えがいいえになる場合、Oracle Label Securityはその行へのアクセスを拒否して、次のデータ行の評価に移ります。

Oracle Label Securityポリシーでは、ユーザー・セッションはラベル以下の行の読取りを許可されます。これを 下位読取りと呼びます。セッションでは、支配していないラベルの行を読み取ることはできません。

たとえば、SENSITIVE:ALPHA,BETAでログインすると、ラベルは行のラベルSENSITIVE:ALPHAを支配しているため、このラベルが付いた行を読み取ることができます。ただし、ラベルは行のラベルSENSITIVE:ALPHA,GAMMAを支配していないため、このラベルが付いた行を読み取ることはできません。

ユーザーが特殊なOracle Label Security権限を持っていると、他の場合には拒否される行へのアクセスを取得できることに注意してください。

関連項目:

- Oracle Label Securityのポリシーで定義される権限

- アクセス制御強制オプションの動作

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

Oracle Label Securityの書込みアクセス・アルゴリズムの動作

Oracle Label Securityのコンテキストでは、WRITE_CONTROLの強制により行データを挿入、更新または削除できるかどうかが決定されます。

WRITE_CONTROLにより、データへのアクセスをより細かい最小単位で制御できます。レベルに区分を追加すると最小単位は細かくなります。区分にグループを追加するとさらに細かくなります。アクセス制御は、ユーザーが読み取れるデータを書き込む権限を管理できれば、ファイングレイン・アクセス・コントロールとなります。

ユーザーが特定のデータ行を書き込むことができるかどうかを判断するために、Oracle Label Securityは次のルールを順番に評価します。

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

2. グループが存在する場合、ユーザーのラベルには、データ・ラベルに表示される書込みアクセス権のある少なくとも1つのグループ(またはそのようなサブグループの親)が含まれている必要があります。また、ユーザーのラベルには、データ・ラベルにすべての区分が含まれている必要があります。

3. グループが存在しない場合、ユーザーのラベルには、データ・ラベル内のすべての区分に対する書込みアクセス権が必要です。

テスト2および3は、次のように書き換えることができます。

- ラベルにグループがない場合、ユーザーがデータに書き込むためには、ラベル内のすべての区分に対する書込みアクセス権が必要です。

- ラベルにグループがあり、ユーザーがグループの1つに対する書込みアクセス権を持つ場合、データに書き込むには区分に対する読取りアクセス権のみ必要です。

読取り操作の場合と同様に、ラベル評価プロセスはレベル、グループ、区分の順に進行します。ユーザーは、最小認可レベルより下位にも、現行セッション・レベルより上位にも、データを書き込むことはできないことに注意してください。最小レベルより下位の読取りは常に可能です。

図3-7に、このプロセスによるINSERT、UPDATEおよびDELETE操作の処理方法を示します。データ・ラベルがNULLまたは無効の場合、ユーザーのアクセスは拒否されます。

図3-7 書込みアクセス権のラベル評価プロセス

Oracle Label Securityはアクセス要求を受け取ると、各行を評価して次のことを判断します。

1. データのレベルがユーザーのレベル以下かどうか

2. データのレベルがユーザーの最小レベル以上かどうか

3. データのレベルが上限以下の場合、ユーザーはデータ・ラベルに示された1つ以上のグループへの書込みアクセス権を持っているか

4. 1つ以上のグループへのアクセス権を持っている場合、ユーザーはデータ・ラベルに示された、少なくとも読取りアクセス権付きのすべての区分へのアクセス権を持っているかどうか

5. グループはないが、区分がある場合、ユーザーはすべての区分への書込みアクセス権を持っているかどうか

この評価プロセスのいずれかの段階で答えがいいえになる場合、Oracle Label Securityはその行へのアクセスを拒否して、次のデータ行の評価に移ります。

セッション・ラベルがS:ALPHA,BETAで、区分ALPHAへの書込みアクセス権のみを持っている場合を考えます。この場合、ラベルS:ALPHA,BETAが付いた行を読み取ることはできますが、更新はできません。

要約すると、書込みアクセス権は、行データのINSERT、UPDATEおよびDELETE操作に対して強制されます。

また、各ユーザーには、書込みできる最小レベルを対応付けることができます。最小レベルより下位のレベルのラベルが付いた行の更新や削除も、最小レベルより下位のレベルを含む行ラベルが付いた行の挿入もできません。

関連項目:

- アクセス制御強制オプションの動作

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

Oracle Label Securityの権限

Oracle Label Securityでは、データベースおよび行のラベルの一連の権限を提供します。

内容は次のとおりです。

- Oracle Label Securityのポリシーで定義される権限

- 特殊なアクセス権限

- 特殊な行ラベル権限

- システム権限、オブジェクト権限およびポリシー権限

Oracle Label Securityのポリシーで定義される権限

Oracle Label Securityでは、認可されたユーザーに対してポリシーの特定部分をバイパスすることを許可する特殊な権限がサポートされます。

表3-3に、ユーザーまたはトラステッド・ストアド・プログラム・ユニットに付与できるすべての権限セットのサマリーを示します。各権限については、表の後に詳しく説明します。

表3-3 Oracle Label Securityの権限

セキュリティ権限

説明

READ

ポリシーで保護されている全データへの読取りアクセスを許可します。

FULL

ポリシーで保護されている全データへの完全な読取りおよび書込みアクセスを許可します。

COMPACCESS

行のグループから独立して、行の区分で認可されているデータへのセッション・アクセスを許可します。

PROFILE_ACCESS

セッションに対して、そのラベルと権限を別のユーザーのラベルおよび権限に変更することを許可します。

WRITEUP

ユーザーに対して、行ラベル内でそのユーザーが認可されている最大レベル以下のレベルのみの設定または引上げを許可します。(LABEL_UPDATEがアクティブな場合にのみアクティブです。)

WRITEDOWN

ユーザーに対して、行ラベル内でそのユーザーが認可されている最小レベル以上のレベルへの設定または引下げを許可します。(LABEL_UPDATEがアクティブな場合にのみアクティブです。)

WRITEACROSS

ユーザーに対して、行ラベルのグループと区分の設定または変更は許可し、レベルの変更は禁止します。(LABEL_UPDATEがアクティブな場合にのみアクティブです。)

特殊なアクセス権限

ユーザーの認証は、4つの権限のいずれかで変更できます。

内容は次のとおりです。

- READ権限

- FULL権限

- COMPACCESS権限

- PROFILE_ACCESS権限

READ権限

READ権限を持つユーザーは、認可またはセッション・ラベルに関係なく、ポリシーで保護されているすべてのデータを読み取ることができます。

ラベル認可がなくてもかまいません。

また、READ権限を持つユーザーは、ラベル認可に基づいて、書込みアクセス権を持つ任意のデータ行に書き込むことができます。

注意:

UPDATE、INSERTおよびDELETE操作に対しては、アクセス調整が適用されます。

この権限は、データ変更が許可されていないシステム管理者がデータをエクスポートする場合に便利です。また、データ変更を行わないユーザーがレポートを実行して情報をコンパイルする場合にも便利です。READ権限により、システムはOracle Label Securityポリシーが存在しないかのように動作するため、SELECT文のパフォーマンスが最適化されます。

FULL権限

FULL権限の効果とメリットはREAD権限と同じですが、1つ違いがあります。

FULL権限を持つユーザーは、すべてのデータに書き込むこともできます。

FULL権限を持つユーザーの場合、READおよびWRITEのアルゴリズムは強制されません。

この場合でもOracleのシステムおよびオブジェクトに対する認可は適用されることに注意してください。たとえば、この場合でもユーザーはアプリケーション表に対するSELECT権限が必要です。FULL認可では、個々の行レベルでのアクセス調整チェックがオフになります。

COMPACCESS権限

COMPACCESS権限により、ユーザーは行ラベルのグループとは無関係に、行ラベルの区分に基づいてデータにアクセスできます。

行ラベルに区分がない場合、アクセスはグループの認可により決定されます。ただし、区分が存在し、かつ、その区分へのアクセスが認可されていれば、グループの認可はバイパスされます。これにより、データの全区分と一致するラベルを持つ、権限を持ったユーザーは、所有グループが何かということによるデータ・アクセス許可とは関係なく、特定の区分内のデータにアクセスできます。

図3-8に、COMPACCESS権限を持つ読取りアクセスのラベル評価プロセスを示します。データ・ラベルがNULLまたは無効の場合、ユーザーのアクセスは拒否されます。

図3-8 COMPACCESS権限を持つ読取りアクセスのラベル評価プロセス

図3-9に、COMPACCESS権限を持つ書込みアクセスのラベル評価プロセスを示します。データ・ラベルがNULLまたは無効の場合、ユーザーのアクセスは拒否されます。

図3-9 COMPACCESS権限を持つ書込みアクセスのラベル評価プロセス

PROFILE_ACCESS権限

PROFILE_ACCESS権限により、セッションで、そのセッション・ラベルおよびセッション権限を他のユーザーのラベルおよび権限に変更することが可能になります。

これは、ユーザーは潜在的にFULL権限を持つユーザーになることができるため、きわめて強力な権限です。この権限は、トラステッド・ストアド・プログラム・ユニットには付与できません。

特殊な行ラベル権限

行にラベルが設定されている場合、そのラベルを変更するにはOracle Label Securityの権限が必要です。

これらのラベル変更権限を強制するには、LABEL_UPDATE強制オプションをオンにする必要があることに注意してください。ユーザーが行ラベルを更新すると、新旧のラベルが比較され、必要な権限が判断されます。

特殊な行ラベル権限は次のとおりです。

- WRITEUP権限

- WRITEDOWN権限

- WRITEACROSS権限

WRITEUP権限

WRITEUP権限により、ユーザーは区分やグループを損なわずに行のデータ・レベルを引き上げることができます。

この権限により、ユーザーは、ユーザーの最大認可レベルまでレベルを引き上げることができます。ユーザーが持つ権限を確認するには、ALL_SA_USER_PRIVSデータ・ディクショナリ・ビューに問い合せます。

たとえば、認可されたユーザーは、各自の最小レベルより下位のレベルを持つデータ行のレベルを引き上げることができます。行がUNCLASSIFIEDでユーザーの最大レベルがSENSITIVEであれば、その行のレベルをSENSITIVEに引き上げることができます。現行セッション・レベルより上位に引き上げることはできますが、区分は変更できません。

WRITEDOWN権限

WRITEDOWN権限により、ユーザーは区分やグループを損なわずに行のデータ・レベルを引き下げることができます。

ユーザーの最小認可レベル以上のレベルであれば、どのレベルにでも引き下げることができます。ユーザーに付与された権限を確認するには、ALL_SA_USER_PRIVSデータ・ディクショナリ・ビューに問い合せます。

WRITEACROSS権限

WRITEACROSS権限により、ユーザーは機密性レベルを変更せずにデータの区分およびグループを変更できます。

これにより、たとえばSENSITIVEデータはSENSITIVEレベルにしたままで、データの配信を管理できることが保証されます。

これにより、ユーザーはレベルを変更せずに、区分とグループを、ポリシー内で有効として現在定義されている他の区分またはグループに変更できます。WRITEACROSS権限があれば、1つ(以上)のグループへの読取りアクセス権を持つユーザーは、アクセス権を明示的に付与されていなくても、別のグループに書き込むことができます。

ユーザーに付与された権限を確認するには、ALL_SA_USER_PRIVSデータ・ディクショナリ・ビューに問い合せます。

システム権限、オブジェクト権限およびポリシー権限

Oracle Label Security権限は、標準Oracle Databaseシステムおよびオブジェクト権限とは異なります。

表3-4 権限のタイプ

ソース

権限

定義

Oracle Database

システム権限

特定タイプのSQL文を実行する権限

Oracle Database

オブジェクト権限

別のユーザーのオブジェクトにアクセスする権限

Oracle Label Security

ポリシー権限

Label Securityポリシーの特定部分をバイパスする権限

Oracle Databaseは、ユーザーに付与された任意アクセス制御権限を強制します。デフォルトでは、ユーザーはPUBLICユーザー・グループに付与される権限のみを持ちます。ユーザーが操作を実行するには、該当する権限を明示的に付与される必要があります。

たとえば、Oracle Databaseでオブジェクトを読み取るには、そのオブジェクトの所有者であるか、オブジェクトに対するSELECT権限を付与されているか、SELECT ANY TABLEシステム権限を付与されている必要があります。同様に、オブジェクトを更新するには、そのオブジェクトの所有者であるか、オブジェクトに対するUPDATE権限を付与されているか、UPDATE ANY TABLE権限を付与されている必要があります。

関連項目:

システム権限とオブジェクト権限の管理の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください

アクセス調整およびビュー

ビューを通じてデータにアクセスする前に、ユーザーにはビューに対する適切なシステム権限およびオブジェクト権限が必要です。

基礎となる表(ビューの基礎となる表)がOracle Label Securityで保護されている場合、ビューのユーザーがラベル付きデータの特定行にアクセスするには、Oracle Label Securityから認可を受ける必要があります。

アクセス調整およびプログラム・ユニットの実行

異なるユーザーが所有するプロシージャの権限は、Oracle DatabaseおよびOracle Label Securityで異なる方法で実行されます。

たとえば、Oracle Databaseでは、ユーザー1がユーザー2に属するプロシージャを実行した場合、プロシージャはユーザー2のシステムおよびオブジェクト権限で実行されます。ユーザーに付与された権限を確認するには、DBA_SYS_PRIVSデータ・ディクショナリ・ビューに問い合せます。ただし、ユーザー1により実行されるプロシージャは、ユーザー1自身のOracle Label Securityのラベルおよび権限で実行されます。これは、ユーザー1が、他のユーザーが所有しているストアド・プログラム・ユニットを実行する場合も同じです。

図3-10は、このプロセスを示しています。

- ストアド・プログラム・ユニットは、プロシージャの所有者(ユーザー2)のDAC権限で実行されます。

- また、Oracle Label Securityで保護されている表にアクセスするストアド・プログラム・ユニットは、行に連結されているラベルと、プロシージャの実行者(ユーザー1)のOracle Label Securityのラベルおよび権限に基づいて、データ行へのアクセスを調整します。

図3-10 ストアド・プログラム・ユニットの実行

ストアド・プログラム・ユニットは、管理者によってOracle Label Security権限を割り当てられた場合にトラステッドになります。ストアド・プログラム・ユニットは、それをコールするユーザーの権限ではなく、固有の自律型Oracle Label Security権限で実行できます。たとえば、ユーザーの権利にOracle Label Security権限がなくても、WRITEDOWN権限を持つストアド・プログラム・ユニットを実行すれば、ラベルを更新できます。この場合、使用されるのは、ユーザー自身の権限ではなくストアド・プログラム・ユニットの権限です。

トラステッド・プログラム・ユニットにより、権限付きの操作を制御された方法でカプセル化できます。権限が割り当てられているプロシージャ、パッケージおよびファンクションを使用することで、各自のラベルと権限では認可されないデータにアクセスできます。たとえば、参照可能なデータのみでなく、表のすべてのデータに対して集計関数を実行するには、管理者により設定されたトラステッド・プログラムを使用します。これにより、プログラム・ユニットでユーザーのかわりに操作を実行でき、ユーザーに権限を直接付与する必要はありません。

関連項目:

トラステッド・ストアド・プログラム・ユニットの管理および使用

アクセス調整およびポリシー強制オプション

管理者は、Oracle Label Securityポリシーを個々の表に適用するときに、ポリシー施行オプション・セットの中から選択できます。

これらのオプションを使用すると、データベース表ごとに施行を様々に調整できます。ラベルに基づくアクセス制御のみでなく、SQL述語を各表に関連付けることもできます。述語により、表のうちユーザーがアクセスできる行をさらに厳密に定義できます。ポリシー強制オプションと述語については、「ポリシー施行オプションとラベル付けファンクションの実装」を参照してください。

新規または更新する行に対応付けられているラベルを自動的に計算する必要がある場合、管理者はポリシーの適用時にラベル付けファンクションを指定できます。アクティブなラベル付けファンクションはラベルを提供する他の手段よりも優先されるため、以降、そのファンクションは常にコールされ、ポリシーに基づいて書き込まれるデータ・ラベルを提供します。

特に明記されている場合を除き、このマニュアルではすべての施行オプションが有効になっているものと想定しています。

関連項目:

- ラベル付けファンクション

- SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY

複数のOracle Label Securityポリシーの処理

単一のデータベース環境と分散環境の両方で複数のOracle Label Securityポリシーを使用できます。

内容は次のとおりです。

- 単一データベース内の複数のOracle Label Securityポリシー

- 分散環境での複数のOracle Label Securityポリシー

単一データベース内の複数のOracle Label Securityポリシー

単一データベース内のデータが複数のOracle Label Securityポリシーで保護されている場合があります。

定義済の各ポリシーは、そのポリシーでのみ使用されるラベル・セットに対応付けられています。データ・ラベルには、各ポリシーの定義済ラベル・セットによる制約が適用されます。

各ポリシーは異なる表を保護しますが、複数のポリシーを単一の表に適用することもできます。データにアクセスするには、そのデータを保護しているポリシーすべてについて、ラベル認可が必要です。特定の行にアクセスするには、目的の行を含む表を保護するすべてのポリシーによって認可されている必要があります。権限が必要な場合は、作業に影響するすべてのポリシーの権限を必要とする場合があります。

分散環境での複数のOracle Label Securityポリシー

Oracle Label Securityを使用する分散環境では、リモート接続はOracle Label Securityによって制御されます。

関連項目:

分散データベースでのOracle Label Securityの使用

第II部 Oracle Label Securityの機能の使用

第II部では、Oracle Label Securityの機能の使用方法について説明します。

- Oracle Label Securityポリシーの作成

- ラベル付きデータの処理

- Oracle Label SecurityとOracle Internet Directoryとの併用

4 Oracle Label Securityスタート・ガイド

Oracle Label Securityを使用する前に、データベースに登録し、LBACSYS Oracle Label Securityアカウントを有効にする必要があります。

内容は次のとおりです。

- Oracle DatabaseでのOracle Label Securityの登録

- LBACSYS Oracle Label Securityの有効化

- Oracle Label SecurityのためのCloud ControlまたはSQL*Plusへのログイン

Oracle DatabaseでのOracle Label Securityの登録

使用する予定のデータベースにOracle Label Securityを登録する必要があります。

内容は次のとおりです。

- Oracle Label Securityの登録について

- Oracle Label Securityが登録されて有効になっているかどうかの確認

- SQL*PlusからのOracle Label Securityの登録および有効化

- DBCAを使用したOracle Label Securityの登録および有効化

Oracle Label Securityの登録について

Oracle Databaseをインストールする場合、デフォルトではOracle Label Securityは有効になっていません。

Oracle Label Securityをデータベースに登録する必要があります。その後、デフォルトのOracle Label Securityユーザー・アカウントLBACSYSを有効にする必要があります。Oracle Label Securityを登録した後で、必要に応じて無効化および再有効化できます。

マルチテナント環境を使用している場合は、Oracle Label Securityポリシーの作成を計画しているプラガブル・データベース(PDB)でのみOracle Label Securityを登録します。Oracle Label Securityはデータ・ディクショナリ・オブジェクトを保護するように設計されていないため、ルートではポリシーを保護できません。

Oracle Label Securityが登録されて有効になっているかどうかの確認

DBA_OLS_STATUSデータ・ディクショナリ・ビューを問い合せて、Oracle Label Securityがすでに登録され有効になっているかどうかを確認できます。

1. SYSDBA管理権限を持つユーザーSYSとして、データベース・インスタンスにログインします。

sqlplus sys as sysdba
Enter password: password

2. マルチテナント環境を使用している場合は、適切なPDBに接続します。

たとえば、PDB hrpdbに接続するには、次のようにします。

CONNECT SYS@hrpdb AS SYSDBA
Enter password: password

利用可能なPDBを検索するには、DBA_PDBSデータ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_nameコマンドを実行します。

3. Oracle Label Securityが登録されているかどうかを調べるには、次の問合せを実行します。

SELECT STATUS FROM DBA_OLS_STATUS WHERE NAME = 'OLS_CONFIGURE_STATUS';

TRUEと出力される場合、Oracle Label Securityは登録されています。出力がFALSEの場合は、Oracle Label Securityを登録する必要があります。

4. Oracle Label Securityが登録されている場合は、有効になっているかどうかを確認します。PARAMETER列では大/小文字が区別されるため、ここに示されているとおりに入力してください。

SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Oracle Label Security';

TRUEが返される場合、Oracle Label Securityは有効です。「LBACSYS Oracle Label Securityの有効化」に移動します。出力がFALSEの場合は、Oracle Label Securityを有効にする必要があります。

注意:

Oracle Label Securityが登録されている場合、それが有効になっている場合となっていない場合があります。V$OPTION動的ビューに問い合せて、有効になっているかどうかを調べることができます。

SQL*PlusからのOracle Label Securityの登録および有効化

SQL*PlusからOracle Label Securityの登録と有効化の両方を行うことができます。

1. SYSDBA管理権限を持つユーザーSYSとして、データベース・インスタンスにログインします。

次に例を示します。

sqlplus sys as sysdba
Enter password: password

2. マルチテナント環境を使用している場合は、適切なPDBに接続します。

たとえば、PDB hrpdbに接続するには、次のようにします。

CONNECT SYS@hrpdb AS SYSDBA
Enter password: password

利用可能なPDBを検索するには、DBA_PDBSデータ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_nameコマンドを実行します。

3. 次のように、Oracle Label Securityを登録して有効にします。

EXEC LBACSYS.CONFIGURE_OLS; -- This procedure registers Oracle Label Security.
EXEC LBACSYS.OLS_ENFORCEMENT.ENABLE_OLS; -- This procedure enables it.

4. SYSOPER権限を持つユーザーSYSとして接続します。

CONNECT SYS AS SYSOPER -- Or, CONNECT SYS@hrpdb AS SYSOPER
Enter password: password

5. データベースを再起動します。

次に例を示します。

SHUTDOWN IMMEDIATE
STARTUP

DBCAを使用したOracle Label Securityの登録および有効化

Database Configuration Assistantを使用してOracle Label Securityの登録と有効化の両方を行うことができます。

1. Database Configuration Assistant(DBCA)を開始します。

- UNIX: 次のコマンドを実行します。

$ORACLE_HOME/bin/dbca

- Windows: 「スタート」メニューから「すべてのプログラム」をクリックします。次に「Oracle - ORACLE_HOME」→「Configuration and Migration Tools」→「Database Configuration Assistant」の順にクリックします。

「ようこそ」画面が表示されます。

2. 「次へ」をクリックします。

「操作」画面が表示されます。

3. 「データベース・オプションの構成」を選択します。「次」をクリックします。

「データベース」画面が表示されます。

4. リストから、OLSを構成および有効化する必要のあるデータベースを選択します。「次」をクリックします。

「データベース・コンテンツ」画面が表示されます。

5. 「Oracle Label Security」を選択します。「次」をクリックします。

「接続モード」画面が表示されます。

6. 「専用サーバー・モード」または「共有サーバー・モード」を選択します。「終了」をクリックします。

操作にはデータベースの再起動が必要があることを知らせるダイアログ・ボックスが表示されます。

7. 「OK」をクリックします。

「確認」ダイアログ・ボックスが表示されます。

8. 「OK」をクリックします。

DBCAの進捗状況を示す画面が表示されます。

9. 操作が完了すると、別の操作を実行するためのプロンプトが表示されます。「いいえ」をクリックしてDBCAを終了します。

LBACSYS Oracle Label Securityの有効化

登録プロセスの完了後、デフォルト・ユーザー・アカウントLBACSYSにLBAC_DBAデータベース・ロールが付与されます。このロールは、Oracle Label Securityの管理に必要な権限を提供します。

LBACSYSは、パスワードの期限が切れている、ロックされたアカウントとして作成されます。

1. ALTER USERシステム権限を付与されているユーザー(たとえば、SYSTEMユーザー)として、データベース・インスタンスにログインします。

次に例を示します。

sqlplus system -- Or, sqlplus system@hrpdb for the hrpdb pluggable database (PDB)
Enter password: password

Oracle Database Vaultが有効になっている場合は、DV_ACCTMGRロールを付与されたユーザーとしてログインします。

2. 次の文を入力します。

ALTER USER LBACSYS ACCOUNT UNLOCK IDENTIFIED BY password;

passwordを安全なパスワードに置き換えます。パスワードを作成するための最小限の要件は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

LBACSYSをロック解除し、パスワードを指定します。このアカウントをバックアップ・ユーザー・アカウントとして予約することをお薦します。日常的な使用では、Oracle Label Securityを管理する信頼できるユーザーにLBAC_DBAデータベース・ロールを付与することを検討します。

Enterprise Manager Cloud Controlを使用してOracle Label Securityを管理することを計画している場合は、LBAC_DBAロールを付与したユーザーがSELECT ANY DICTIONARY権限も持っていることを確認します。デフォルトでは、LBACSYSユーザーにはすでにこの権限があります。

Oracle Label SecurityのためのCloud ControlまたはSQL*Plusへのログイン

Oracle Label Securityの登録および有効化プロセスが完了したら、使用を開始できます。

内容は次のとおりです。

- Enterprise Manager Cloud ControlからのOracle Label Securityへのログイン

- SQL*PlusからのOracle Label Securityへのログイン

Enterprise Manager Cloud ControlからのOracle Label Securityへのログイン

Enterprise Manager Cloud Controlから、Oracle Label Securityページを使用してOracle Label Securityポリシーを作成および管理します。

1. Oracle Label Securityで使用する予定のCloud Controlターゲット・データベースが構成されていることを確認します。

ターゲット・データベースの構成の詳細は、Oracle Enterprise Managerオンライン・ヘルプおよび『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

2. ブラウザでCloud Controlのログイン・ページを開きます。

次に例を示します。

https://myserver.example.com:7799/em

3. SYSMANユーザーとしてCloud Controlにログインします。

4. Cloud Controlのホーム・ページで、「ターゲット」メニューから「データベース」を選択します。

5. 「データベース」ページで、接続先のデータベースのリンクを選択します。

データベースのホームページが表示されます。

6. 「セキュリティ」メニューで、「Label Security」を選択します。

「データベース・ログイン」ページが表示されます。

7. 次の情報を入力します。

- ユーザー名: LBAC_DBAデータベース・ロールを付与されたユーザーのユーザー名を入力するか、LBACSYSと入力します。

- パスワード: パスワードを入力します。

- ロール: リストから「通常」を選択します。

- 別名保存: 次回このページが表示されるときに、これらの資格証明が自動入力されているようにするには、このチェック・ボックスを選択します。資格証明は、Enterprise Managerに安全な方法で格納されます。これらの資格証明へのアクセスは、現在ログインしているユーザーによって異なります。

SQL*PlusからのOracle Label Securityへのログイン

LBAC_DBAデータベース・ロールを付与されている場合、SQL*PlusからOracle Label Securityにログインできます。

- SQL*PlusからOracle Label Securityを使用するには、ユーザーLBACSYSまたはLBAC_DBAデータベース・ロールを付与されたユーザーとして接続します。ユーザーがこのロールを付与されているかどうかを調べるには、DBA_ROLE_PRIVSデータ・ディクショナリ・ビューのGRANTEEおよびGRANTED_ROLE列を問い合せます。

次に例を示します。

sqlplus psmith_ols -- Or, sqlplus psmith_ols@hrpdb for a PDB named hrpdb
Enter password: password

利用可能なPDBを検索するには、DBA_PDBSデータ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_nameコマンドを実行します。

5 Oracle Label Securityポリシーの作成

Oracle Label Securityポリシーは、Oracle Label Securityを実装するコマンドの名前付きセットです。

内容は次のとおりです。

- Oracle Label Securityポリシーの作成について

- 手順1: ラベル・セキュリティ・ポリシー・コンテナの作成

- 手順2: ラベル・セキュリティ・ポリシーのデータ・ラベルの作成

- 手順3: ラベル・セキュリティ・ポリシーのユーザーの認可

- 手順4: ユーザーおよびトラステッド・ストアド・プログラム・ユニットへの権限の付与

- 手順5: データベース表またはスキーマへのポリシーの適用

- 手順6: 表の行へのポリシー・ラベルの追加

- 手順7: (オプション)監査の構成

- Enterprise Manager Cloud Controlを使用したOLSポリシーの作成

Oracle Label Securityポリシーの作成について

Oracle Label Securityポリシーを作成する場合は、一般的な一連の手順に従う必要があります。

1. ポリシー名、Oracle Label Securityが保護対象の表に追加する列の名前、この列を非表示にするかどうか、ポリシーを有効にするかどうか、およびポリシーのデフォルトの強制オプションを定義するポリシー・コンテナを作成します。
詳細は、「手順1: ラベル・セキュリティ・ポリシー・コンテナの作成」を参照してください。

2. ラベルの機密性レベルの属性を定義します。また、オプションで区分とグループの属性を定義して、ラベルの機密性をさらにフィルタします。属性を定義した後で、ラベル自体を作成し、それらの属性をラベルに関連付けます。
「手順2: ラベル・セキュリティ・ポリシーのデータ・ラベルの作成」を参照してください。

3. ポリシーに対してユーザーを認可します。
詳細は、「手順3: ラベル・セキュリティ・ポリシーのユーザーの認可」を参照してください。

4. これらのユーザーまたはトラステッド・プログラム・ユニットに権限を付与します。
詳細は、「手順4: ユーザーおよびトラステッド・ストアド・プログラム・ユニットへの権限の付与」を参照してください。

5. ポリシーをデータベース表に適用します。または、スキーマ全体にポリシーを適用できます。
詳細は、「手順5: データベース表またはスキーマへのポリシーの適用」を参照してください。

6. ポリシー・ラベルを表の行に追加します。ポリシーに使用される表を更新する必要があります。
詳細は、「手順6: 表の行へのポリシー・ラベルの追加」を参照してください。

7. オプションで、ユーザーの監査設定を構成します。
詳細は、「手順7: (オプション)監査の構成」を参照してください。

手順1: ラベル・セキュリティ・ポリシー・コンテナの作成

Oracle Label Securityポリシー・コンテナは、ポリシー設定の保管場所です。

内容は次のとおりです。

- ラベル・セキュリティ・ポリシー・コンテナについて

- ラベル・ポリシー・コンテナの作成

ラベル・セキュリティ・ポリシー・コンテナについて

Oracle Label Securityポリシー・コンテナには、ポリシーの動作方法を説明するメタデータが格納されます。

このコンテナは、ポリシー名、Oracle Label Securityが保護対象の表に追加する列の名前、この列を非表示にするかどうか、ポリシーを有効にするかどうか、およびポリシーのデフォルトの強制オプションを定義します。

保護する表に追加する列には、特定の列の値に基づいて表の特定の行に割り当てられたデータ・ラベル(後で作成)が含まれます。

Oracle Enterprise Manager Cloud Controlにポリシー・コンテナを作成するか、SA_SYSDBA.CREATE_POLICYプロシージャを使用できます。

ラベル・ポリシー・コンテナの作成

SA_SYSDBA.CREATE_POLICYプロシージャを使用して、Oracle Label Securityポリシー・コンテナを作成できます。

- ポリシーを作成するには、SA_SYSDBA.CREATE_POLICYを実行し、ポリシー名、列名およびデフォルト・オプションを指定します。

次に例を示します。

BEGIN
SA_SYSDBA.CREATE_POLICY (
policy_name      => 'emp_ols_pol',
column_name      => 'ols_col',
default_options  => 'read_control, update_control');
END;
/

関連項目:

- SA_SYSDBA.CREATE_POLICY

- 使用可能なポリシー・オプションのリストは、「ポリシー強制オプションのカテゴリ」を参照してください

- Cloud Controlを使用したラベル・セキュリティ・ポリシー・コンテナの作成

- policy_DBAロールの詳細は、「Oracle Label Security管理者の責任」を参照してください

手順2: ラベル・セキュリティ・ポリシーのデータ・ラベルの作成

ポリシー・コンテナを作成すると、各データベース表の行にデータ・ラベルを作成する準備ができます。

内容は次のとおりです。

- データ・ラベルについて

- ポリシー・レベルの機密性コンポーネントについて

- ポリシー・レベル・コンポーネントの作成

- ポリシー区分コンポーネントについて

- ポリシー区分コンポーネントの作成

- ポリシー・グループ・コンポーネントについて

- ポリシー・データ・ラベル・グループの作成

- 名前付きデータ・ラベルへのポリシー・コンポーネントの関連付けについて

- 名前付きデータ・ラベルへのポリシー・コンポーネントの関連付け

データ・ラベルについて

データ・ラベルは、データベース表の行の機密性を示します。

各ラベルは、ユーザー・アクセスに使用するフィルタのタイプを制御する複数のコンポーネントを持つ単一の属性です。

表5-1に、データ・ラベルの様々なコンポーネントについて説明します。

表5-1 機密性データ・ラベルのコンポーネント

コンポーネント

説明

例

レベル

設定済の順序付けランク内のラベル付きデータの機密性の単一指定

CONFIDENTIAL (1)、SENSITIVE (2)、HIGHLY_SENSITIVE (3)

区分

ラベル付きデータに対応付けられた0個以上のカテゴリ

FINANCIAL、STRATEGIC、NUCLEAR

グループ

データを所有するか、データにアクセスする組織の0個以上の識別子

EASTERN_REGION、WESTERN_REGION

すべてのデータ・ラベルにはレベル・コンポーネントを含める必要がありますが、区分コンポーネントとグループ・コンポーネントはオプションです。区分とグループは、ユーザーがデータに対して持つアクセス権を微調整する方法です。すべてのラベル・コンポーネント指定に有効な文字には、英数字、アンダースコアおよび空白も含まれます。(先頭および後続の空白は無視されます。)データ・ラベル自体を作成する前に、ラベル・コンポーネントを定義する必要があります。

Cloud Controlを使用して、既存のポリシーのラベルとそのコンポーネントを作成できます。また、SA_COMPONENTS PL/SQLパッケージを使用してラベル・コンポーネントを作成し、SA_LABEL_ADMINパッケージを使用してデータ・ラベルを作成できます。

関連項目:

SA_COMPONENTSラベル・コンポーネントPL/SQLパッケージ

ポリシー・レベルの機密性コンポーネントについて

レベルは、ラベルを付ける情報の機密性を示すランキングです。

情報の機密性が高いほど、レベルも高くなります。情報の機密性が低いほど、レベルも低くなります。

ラベルには必ず1つのレベルを含める必要があります。Oracle Label Securityでは、1つのポリシーに最大10,000のレベルを定義できます。レベルごとに、数値書式、詳細名および必須の簡易名を定義する必要があります。

表5-2にレベルの例を示します。

表5-2 ポリシー・レベルの例

数値

詳細名

短縮名

40

HIGHLY_SENSITIVE

HS

30

SENSITIVE

S

20

CONFIDENTIAL

C

10

PUBLIC

P

表5-2に、レベルの数値書式、詳細名および簡易名を説明します。

表5-3 レベル指定の書式

書式

説明

数値(タグとも呼ばれる)

数値のレベルは0から9999です。機密性はこの数値でランキングされるため、機密性の高いレベルほど大きい数値、機密性の低いレベルほど小さい数値を割り当てる必要があります。表5-2では、40 (HIGHLY_SENSITIVE)は30、20および10より上位レベルです。

管理者は、レベルの数値に連番を使用しないようにします。適切な方法は、レベル間に等間隔の増分(50や100など)を使用することです。これにより、既存の2つのレベル間に後からレベルを追加挿入できます。

詳細名

レベルの詳細名は80文字以内です。

短縮名

短縮名は30文字以内です。

レベル(およびその他の各ラベル・コンポーネント)に詳細名と短縮名の両方を定義しますが、検索時に表示されるのは短縮名のみです。ユーザーがラベルを操作する際は、コンポーネントの短縮名のみが使用されます。

レベルの例は、TOP_SECRET、SECRET、CONFIDENTIAL、UNCLASSIFIED、またはTRADE_SECRET、PROPRIETARY、COMPANY_CONFIDENTIAL、PUBLIC_DOMAINなどの名前です。

レベルのみを使用する場合、この例のレベル40のユーザーであれば、レベル40以下のすべてのデータ行に対して、アクセスまたは変更ができます。

ポリシー・レベル・コンポーネントの作成

SA_COMPONENTS.CREATE_LEVELプロシージャは、ポリシー・レベル・コンポーネントを作成します。

- ポリシー・レベル・コンポーネントを作成するには、SA_COMPONENTS.CREATE_LEVELを実行し、ポリシー名およびコンポーネントの詳細を指定します。

次に例を示します。

BEGIN
SA_COMPONENTS.CREATE_LEVEL (
policy_name   => 'emp_ols_pol',
level_num     => 40,
short_name    => 'HS',
long_name     => 'HIGHLY_SENSITIVE');
END;
/

関連項目:

- SA_COMPONENTS.CREATE_LEVEL

- Cloud Controlを使用したポリシー・コンポーネントの作成

ポリシー区分コンポーネントについて

コンパートメントは、ラベルが割り当てられたデータの機密性を表す領域を識別し、レベル内のより詳細なレベルを表します。

区分により、データが1つ以上のセキュリティ領域に対応付けられます。特定のプロジェクトに関連するすべてのデータに、同じ区分をラベル付けすることができます。

表5-4に、区分セットの例を示します。

表5-4 ポリシー区分の例

数値

詳細名

短縮名

85

FINANCIAL

FINCL

65

CHEMICAL

CHEM

45

OPERATIONAL

OP

表5-5に、区分を指定する様々な方法を示します。

表5-5 区分指定の書式

書式

説明

数値

数値の範囲は0から9999です。レベルに使用されている数値とは無関係です。区分の数値は、機密性のレベルを示すわけではありません。区分の数値は、ラベル文字列での区分短縮名の表示順序を制御します。たとえば、表5-4に示した3つの区分すべてとレベルSENSITIVEを持つラベルを作成するとします。このラベルを文字列で表示すると、次のようになります。

S:OP,CHEM,FINCL

これは、SENSITIVE: OPERATIONAL, CHEMICAL, FINANCIALを意味します。

表示順序は、区分に割り当てられた数値の順序に従います。45は65より小さく、65は85より小さい数値です。対照的に、FINCL区分に割り当てられた数値が5の場合、ラベルの文字列書式は次のようになります。

S:FINCL,OP,CHEM

詳細名

区分の詳細名は80文字以内です。

短縮名

短縮名は30文字以内です。

区分はオプションです。ラベルには最大10,000区分を含めることができます。

区分を含まないラベルがあってもかまいません。たとえば、HIGHLY_SENSITIVEおよびCONFIDENTIALレベルは区分なしで指定し、SENSITIVEレベルは区分を含むように指定できます。

データの機密性を分析すると、一部の区分が特定のレベルでのみ有用であることがわかる場合があります。

図5-1に、区分を使用してデータをカテゴリに分類する方法を示します。

図5-1 ラベル内の区分

この図では、区分FINCL、CHEMおよびOPがレベルHIGHLY_SENSITIVE (HS)とともに使用されています。ラベルHIGHLY_SENSITIVE:FINCL, CHEMは、2つの名前付き区分を持つレベル40を示します。区分FINCLとCHEMの機密性は同じです。保護されている表の一部のデータがどの区分にも属さない場合もあることに注意してください。

区分を指定した場合、行データへのアクセスが通常は許可されるレベルのユーザーであっても、行ラベルで表示されるすべての区分もユーザーのラベルに含まれていないかぎりアクセスは禁止されます。たとえば、HSレベルへのアクセス権を付与されるユーザーhprestonには、FINCLおよびCHEMへのアクセス権のみ付与され、OPへのアクセス権は付与されません。

ポリシー区分コンポーネントの作成

SA_COMPONENTS.CREATE_COMPARTMENTプロシージャは、Oracle Label Securityの区分を作成します。

- 区分を作成するには、SA_COMPONENTS.CREATE_COMPARTMENTプロシージャを実行して区分を作成し、ポリシー名および区分の詳細を指定します。

次に例を示します。

BEGIN
SA_COMPONENTS.CREATE_COMPARTMENT (
policy_name     => 'emp_ols_pol',
comp_num        => '85',
short_name      => 'FINCL',
long_name       => 'FINANCIAL');
END;
/

関連項目:

- SA_COMPONENTS.CREATE_COMPARTMENT

- Cloud Controlを使用したポリシー・コンポーネントの作成

ポリシー・グループ・コンポーネントについて

グループでは、EASTERN_REGION、WESTERN_REGION、WR_SALESなど、データを所有する組織またはデータにアクセスする組織を識別します。

特定の部門に関連するすべてのデータに、その部門のグループをラベル付けすることができます。グループは、データを制御された方法で送信したり、組織の変更に適切なタイミングで対処する場合に役立ちます。会社組織の再編時には、データ・アクセス権も再編成に沿って適切に変更できます。

グループは階層型です。組織のインフラストラクチャに基づいてデータにラベルを付けることができます。つまり、グループを親グループに対応付けることができます。

図5-2に、次のような組織階層に対応するグループ・セットを定義する方法を示します。

図5-2 グループの例

WESTERN_REGIONグループには、3つのサブグループWR_SALES、WR_HUMAN_RESOURCESおよびWR_FINANCEが含まれています。WR_FINANCEサブグループは、WR_ACCOUNTS_RECEIVABLEおよびWR_ACCOUNTS_PAYABLEに分割されています。

表5-6に、この例の組織構造をOracle Label Securityのグループの書式で表す方法を示します。グループに割り当てられた数値書式は表示順序のみに影響します。階層(つまり、親子関係)を別々に指定します。最初にリストされるグループWESTERN_REGIONは、表の残りのグループの親グループです。

表5-6 グループの例

数値

詳細名

短縮名

親グループ

1000

WESTERN_REGION

WR

1100

WR_SALES

WR_SAL

WR

1200

WR_HUMAN_RESOURCES

WR_HR

WR

1300

WR_FINANCE

WR_FIN

WR

1310

WR_ACCOUNTS_PAYABLE

WR_AP

WR_FIN

1320

WR_ACCOUNTS_RECEIVABLE

WR_AR

WR_FIN

表5-7に、グループを指定する際に使用する必要のある書式を示します。

表5-7 グループ指定の書式

書式

説明

数値

グループの数値の範囲は0から9999で、ポリシーごとに一意である必要があります。

数値は、ランキングを示すわけではありません。また、親子関係も機密性レベルも示しません。単に、ラベル文字列でのグループの短縮名の表示順序を制御します。

たとえば、表5-6にリストしたようにレベルSENSITIVE、区分CHEMICAL、グループWESTERN_REGIONおよびWR_HUMAN_RESOURCESを持つラベルが作成されているとします。このラベルを文字列で表示すると、次のようになります。

S:CHEM:WR,WR_HR

1000は1200より前に位置するため、WRはWR_HRより前に表示されます。

詳細名

グループの詳細名は80文字以内です。

短縮名

短縮名は30文字以内です。

グループはオプションです。ラベルには10,000グループまで含むことができます。

すべてのラベルにグループは必要ではありません。データの機密性を分析すると、一部のグループが特定のレベルでのみ使用されている場合があります。たとえば、HIGHLY_SENSITIVEおよびCONFIDENTIALラベルはグループなしで指定し、SENSITIVEラベルはグループを含むように指定できます。

ポリシー・データ・ラベル・グループの作成

SA_COMPONENTS.CREATE_GROUPプロシージャは、データ・ラベル・グループを作成します。

- 必要なデータ・ラベル・グループごとに、SA_COMPONENTS.CREATE_GROUPプロシージャを実行します。

次の例では、最初のCREATE_GROUPプロシージャは親グループWRを作成し、2番目のプロシージャはparent_nameパラメータを使用して2番目のグループをWRグループに関連付けます。

BEGIN
SA_COMPONENTS.CREATE_GROUP (
policy_name     => 'emp_ols_pol',
group_num       => 1000,
short_name      => 'WR',
long_name       => 'WESTERN_REGION');
END;
/
BEGIN
SA_COMPONENTS.CREATE_GROUP (
policy_name     => 'emp_ols_pol',
group_num       => 1100,
short_name      => 'WR_SAL',
long_name       => 'WR_SALES',
parent_name     => 'WR');
END;
/

関連項目:

- SA_COMPONENTS.CREATE_GROUP

- Cloud Controlを使用したポリシー・コンポーネントの作成

名前付きデータ・ラベルへのポリシー・コンポーネントの関連付けについて

データ・ラベル・コンポーネントを定義した後で、それを既存のレベルに関連付けることで、データ・ラベル自体を作成できます。

オプションで、この関連付けに区分およびグループを含めることができます。

Oracle Enterprise Manager Cloud ControlまたはSA_LABEL_ADMIN.CREATE_LABELプロシージャを使用できます。ラベルの文字列表現の構文は、次のとおりです。

level:compartment1,...,compartmentn:group1,...,groupn

ラベルを指定するテキスト文字列は、英数字、空白およびアンダースコアを含めて4,000文字以内です。ラベル名は、大文字/小文字を区別します。そのため大文字、小文字または大/小文字両方で入力できますが、文字列がデータ・ディクショナリに格納され、表示されるときには大文字が使用されます。各コンポーネントのセットをコロンで区切ります。この構文では、後続のデリミタを入力する必要はありません。

たとえば、次のような有効なラベルを作成できます。

SENSITIVE:FINANCIAL,CHEMICAL:EASTERN_REGION,WESTERN_REGION
CONFIDENTIAL:FINANCIAL:VP_GRP
SENSITIVE
HIGHLY_SENSITIVE:FINANCIAL
SENSITIVE::WESTERN_REGION

名前付きデータ・ラベルへのポリシー・コンポーネントの関連付け

SA_LABEL_ADMIN.CREATE_LABELプロシージャは、データ・ラベルを作成します。

- SA_LABEL_ADMIN.CREATE_LABELを実行し、ポリシー名およびポリシー・コンポーネントの詳細を指定します。

次に例を示します。

BEGIN
SA_LABEL_ADMIN.CREATE_LABEL  (
policy_name     => 'emp_ols_pol',
label_tag       => '1310',
label_value     => 'SENSITIVE:FINANCIAL,CHEMICAL:EASTERN_REGION,WESTERN_REGION',
data_label      => TRUE);
END;
/

データ・ラベルを作成する場合、2つの追加アクションが発生します。

- ラベルが有効なデータ・ラベルとして自動的に指定されます。この機能では、データに割当て可能なラベルが制限されます。Oracle Label Securityでは、Oracle Internet Directoryで事前定義済のデータ・ラベルから、有効なデータ・ラベルを実行時に動的に作成することもできます。ただし、ほとんどのユーザーは、データ・ラベルの増加を制限するために、ラベルを手動で作成する方法を選択します。

- ラベルを表すテキスト文字列に数値ラベル・タグが関連付けられます。保護されている表のポリシー・ラベル列には、テキスト文字列ではなく、このラベル・タグが格納されます。

注意:

Oracle Internet Directoryを使用しないOracle Label Securityインストールでは、有効なデータ・ラベルの動的作成にはTO_DATA_LABELファンクションを使用します。また、その使用は厳密に制御する必要があります。「TO_DATA_LABELを使用したラベルの挿入」を参照してください。

関連項目:

- SA_LABEL_ADMIN.CREATE_LABEL

- Cloud Controlを使用したポリシーのデータ・ラベルの作成

手順3: ラベル・セキュリティ・ポリシーのユーザーの認可

ユーザーがOracle Label Securityポリシーで保護されているデータにアクセスできるようになる前に、認可を受けている必要があります。

内容は次のとおりです。

- ラベル・セキュリティ・ポリシーのユーザーの認可について

- レベルの認可について

- レベルの認可

- 区分の認可について

- 区分の認可

- グループの認可について

- グループの認可

ラベル・セキュリティ・ポリシーのユーザーの認可について

ユーザーを認可する場合、データ・ラベルの定義方法に基づいて行データにアクセスできるようにします。

まず、ラベルに関連付けられる各レベル、区分およびグループについてユーザーの認可を設定します。ユーザーに現在付与されている権限を確認するには、DBA_SA_USER_PRIVSデータ・ディクショナリ・ビューに問い合せます。

レベルの認可について

デフォルト、最小および最大の認可レベルを明示的に設定できます。

表5-8 管理者が設定する認可レベル

認可レベル

意味

最大レベル

ユーザーが読取りおよび書込み操作中にアクセスできる機密性の最大ランキング。

最小レベル

ユーザーが書込み操作中にアクセスできる機密性の最小ランキング。最大レベルは最小レベル以上に設定する必要があります。

デフォルト・レベル

Oracle Databaseへの接続時にデフォルトで想定されるレベル

デフォルト行レベル

Oracle Databaseへのデータの挿入時にデフォルトで使用されるレベル

たとえば、ユーザーhprestonに対して次の認可レベルを設定できます。

型

短縮名

詳細名

説明

最大値

HS

HIGHLY_SENSITIVE

ユーザーの最上位レベル

最小値

P

PUBLIC

ユーザーの最下位レベル

デフォルト

C

CONFIDENTIAL

ユーザーのデフォルト・レベル

行

C

CONFIDENTIAL

INSERTの行レベル

レベルの認可

SA_USER_ADMIN.SET_LEVELSプロシージャは、ポリシー・レベル・コンポーネントに対してユーザーを認可します。

レベルを指定する場合は、詳細名ではなく簡易名を常に使用する必要があります。

- SA_USER_ADMIN.SET_LEVELSを実行してレベルを認可し、ポリシー名、ユーザー名およびレベルを指定します。

次に例を示します。

BEGIN
SA_USER_ADMIN.SET_LEVELS (
policy_name   => 'ols_admin_pol',
user_name     => 'hpreston',
max_level     => 'HS',
min_level     => 'P',
def_level     => 'C',
row_level     => 'C');
END;
/

関連項目:

- SA_USER_ADMIN.SET_LEVELS

- Cloud Controlを使用したポリシーに対するユーザーの認可、権限付与および監査

区分の認可について

特定のレベルに対してユーザーを認可した後、オプションでセッション・ラベルに追加する区分を指定できます。

区分ごとに、書込みアクセス権を明示的に指定する必要があります。ユーザーは、書込み認可を持たない区分を含む行を直接挿入、更新または削除することはできません。

たとえば、ユーザーhprestonに対して次の認可区分を設定できます。

短縮名

詳細名

書込み

デフォルト

行

CHEM

CHEMICAL

あり

あり

なし

FINCL

FINANCIAL

あり

あり

なし

OP

OPERATIONAL

あり

あり

あり

区分の認可

SA_USER_ADMIN.SET_COMPARTMENTSプロシージャは、区分コンポーネントに対してユーザーを認可します。

区分を指定する場合は、詳細名ではなく簡易名を常に使用する必要があります。

- SA_USER_ADMIN.SET_COMPARTMENTSを実行して区分に対してユーザーを認可し、ポリシー名、ユーザー名および区分の詳細を指定します。

次に例を示します。

BEGIN
SA_USER_ADMIN.SET_COMPARTMENTS (
policy_name   => 'ols_admin_pol',
user_name     => 'hpreston',
read_comps    => 'FINCL',
write_comps   => 'FINCL',
def_comps     => 'FINCL',
row_comps     => 'FINCL');
END;
/

このプロシージャを実行した後で、SA_USER_ADMIN.ADD_COMPARTMENTSプロシージャを実行することで追加区分に対してユーザーを認可できます。

関連項目:

- SA_USER_ADMIN.SET_COMPARTMENTS

- SA_USER_ADMIN.ADD_COMPARTMENTS

- Cloud Controlを使用したポリシーに対するユーザーの認可、権限付与および監査

グループの認可について

ユーザーがセッション・ラベルに配置できるグループのリストを指定できます。

リストに含めるグループごとに、書込みアクセス権を明示的に指定する必要があります。

たとえば、次の認可グループを設定できます。

短縮名

詳細名

書込み

デフォルト

行

親

WR_HR

WR_HUMAN_RESOURCES

あり

あり

あり

WR

WR_AP

WR_ACCOUNTS_PAYABLE

あり

あり

なし

WR_FIN

WR_AR

WR_ACCOUNTS_RECEIVABLE

あり

あり

なし

WR_FIN

グループの認可

SA_USER_ADMIN.SET_GROUPSプロシージャは、ポリシー・グループに対してユーザーを認可します。

- SA_USER_ADMIN.SET_GROUPSを実行してユーザーを認可し、ポリシー名、ユーザー名および必要な認可を指定します。グループを指定する場合は、詳細名ではなく簡易名を使用する必要があります。

次に例を示します。

BEGIN
SA_USER_ADMIN.SET_GROUPS (
policy_name   => 'ols_admin_pol',
user_name     => 'hpreston',
read_groups   => 'WR_AP',
write_groups  => 'WR_AP',
def_groups    => 'WR_AP',
row_groups    => 'WR_AP');
END;
/

関連項目:

- SA_USER_ADMIN.SET_GROUPS

- Cloud Controlを使用したポリシーに対するユーザーの認可、権限付与および監査

手順4: ユーザーおよびトラステッド・ストアド・プログラム・ユニットへの権限の付与

ユーザーがOracle Label Securityポリシーで保護されているデータを読み取ることができるように、READなどの権限をユーザーに付与できます。

内容は次のとおりです。

- ポリシーのユーザーおよびトラステッド・プログラム・ユニットへの権限の付与について

- ユーザーへの権限の付与

- トラステッド・プログラム・ユニットへの権限の付与

ポリシーのユーザーおよびトラステッド・プログラム・ユニットへの権限の付与について

ポリシー・レベル、区分およびグループに対してユーザーを認可した後で、ユーザー権限を付与する準備ができます。

トラステッド・プログラム・ユニットは、Oracle Label Security権限を付与されているファンクション、プロシージャまたはパッケージです。トラステッド・ストアド・プログラム・ユニットの作成方法は、標準的なプロシージャ、ファンクションまたはパッケージを作成する場合と同じで、CREATE PROCEDURE、CREATE FUNCTIONまたはCREATE PACKAGEおよびCREATE PACKAGE BODYの各文を使用します。プログラム・ユニットは、Oracle Label Security権限を付与するとトラステッド・プログラム・ユニットになります。

表5-9に、ユーザーまたはトラステッド・ストアド・プログラム・ユニットに付与できる権限のサマリーを示します。

表5-9 Oracle Label Securityの権限

セキュリティ権限

説明

READ

ポリシーで保護されている全データへの読取りアクセスを許可します。

FULL

ポリシーで保護されている全データへの完全な読取りおよび書込みアクセスを許可します。

COMPACCESS

行のグループから独立して、行の区分で認可されているデータへのセッション・アクセスを許可します。

PROFILE_ACCESS

セッションに対して、そのラベルと権限を別のユーザーのラベルおよび権限に変更することを許可します。

WRITEUP

ユーザーに対して、行ラベル内でそのユーザーが認可されている最大レベル以下のレベルのみの設定または引上げを許可します。(LABEL_UPDATEがアクティブな場合にのみアクティブです。)

WRITEDOWN

ユーザーに対して、行ラベル内でそのユーザーが認可されている最小レベル以上のレベルへの設定または引下げを許可します。(LABEL_UPDATEがアクティブな場合にのみアクティブです。)

WRITEACROSS

ユーザーに対して、行ラベルのグループと区分の設定または変更は許可し、レベルの変更は禁止します。(LABEL_UPDATEがアクティブな場合にのみアクティブです。)

ユーザーへの権限の付与

SA_USER_ADMIN.SET_USER_PRIVSプロシージャは、ユーザー権限を付与します。

- SA_USER_ADMIN.SET_USER_PRIVSを実行し、ポリシー名、ユーザー名および付与する権限を指定します。

次に例を示します。

BEGIN
SA_USER_ADMIN.SET_USER_PRIVS(
policy_name   => 'ols_admin_pol',
user_name     => 'hpreston',
privileges    => 'WRITEDOWN');
END;
/

関連項目:

- SA_USER_ADMIN.SET_USER_PRIVS

- Cloud Controlを使用したポリシーに対するユーザーの認可、権限付与および監査

トラステッド・プログラム・ユニットへの権限の付与

SA_USER_ADMIN.SET_PROG_PRIVSプロシージャは、トラステッド・プログラム・ユニットに権限を付与します。

- SA_USER_ADMIN.SET_PROG_PRIVSを実行して権限を付与し、ポリシー名、スキーマ名、プログラム・ユニット名および付与する権限を指定します。

次に例を示します。

BEGIN
SA_USER_ADMIN.SET_PROG_PRIVS (
policy_name         => 'oe_ols_pol',
schema_name         => 'oe',
program_unit_name   => 'check_order_updates',
privileges          => 'READ');
END;
/

関連項目:

- SA_USER_ADMIN.SET_PROG_PRIVS

- Cloud Controlを使用したトラステッド・プログラム・ユニットへの権限の付与

手順5: データベース表またはスキーマへのポリシーの適用

Oracle Label Securityポリシーへの認可および権限の付与を作成すると、それをデータベース表またはスキーマに適用できます。

データベース表またはスキーマへのポリシーの適用について

表にポリシーを適用する場合、ポリシーは自動的に有効になります。

ポリシーを無効にすると保護がオフになりますが、ポリシーは表に適用されたままになります。ポリシーを有効にすると、特定の表またはスキーマに対するそのポリシーの保護がオンになり、強制されます。

ポリシーを削除すると、表またはスキーマから完全に削除されます。ただし、ポリシーのラベル列およびそのラベルは、明示的に削除しないかぎり表に残ります。

今後スキーマに作成できる表のデフォルトのポリシー強制オプションを変更できます。ただし、この変更は、スキーマにある既存の表のポリシー施行オプションには反映されません。

既存の表の強制オプションを変更するには、最初に表からポリシーを削除し、目的の変更を行ってから、ポリシーを表に再適用します。

外部表にOracle Label Securityポリシーを強制できないことに注意してください。

ポリシー・コンポーネントを作成し、ユーザー認証、権限およびそれらの監査を構成した後で、ポリシーをデータベース表またはスキーマ全体に適用できます。

ポリシーをデータベース表に適用する場合、ポリシー名およびターゲット・スキーマ表に加えて、次の情報を指定する必要があります。

- table_options: 表に使用するポリシー強制オプションのカンマ区切りのリストです。NULLの場合は、ポリシーのデフォルト・オプションが使用されます。

- label_function: デフォルトとして使用するラベル値を戻すファンクションをコールする文字列です。たとえば、my_label(:new.dept,:new.status)を指定すると、行のDEPT列とSTATUS列の新規の値に基づいてラベルが計算されます。

- predicate: READ_CONTROLのラベルベースの述語と(ANDまたはORを使用して)結合する追加の述語です。

スキーマでOracle Label Securityのポリシーを使用する場合は、次の側面に注意してください。

- ポリシーを空のスキーマに適用すると、そのスキーマ内で表を作成するたびにポリシーが適用されます。ポリシーをスキーマに適用すると、選択したデフォルト・オプションは追加するすべての表に適用されます。

- 保護を解除するために表からポリシーを削除してから、SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICYを実行しても、その表の保護は解除されたままになります。表を再び保護する場合は、その表にポリシーを適用するか、スキーマにポリシーを再適用する必要があります。

すでにポリシーで保護されている表を含むスキーマにポリシーを適用すると、将来のすべての表には、ポリシーの適用時に指定した新規オプションが設定されます。既存の表に設定されていたオプションは変更されません。

スキーマへのポリシーの適用

SA_POLICY_ADMIN.APPLY_TABLE_POLICYプロシージャは、スキーマ内の表またはスキーマ全体のいずれかにポリシーを適用します。

- SA_POLICY_ADMIN.APPLY_TABLE_POLICYを実行してポリシーをスキーマに適用し、ポリシー名、スキーマ名および必要なオプションを指定します。

次の例に、SA_POLICY_ADMIN.APPLY_TABLE_POLICYプロシージャを使用して、ols_admin_polポリシーをHR.EMPLOYEES表に適用する方法を示します。

BEGIN
SA_USER_ADMIN.APPLY_TABLE_POLICY (
policy_name    => 'ols_admin_pol',
schema_name    => 'hr',
table_name     => 'employees',
table_options  => 'READ_CONTROL,WRITE_CONTROL,CHECK_CONTROL',
label_function => ''hr.gen_emp_label(:new.deptartment_id,:new.salary',
predicate      => NULL);
END;
/

この例に、SA_POLICY_ADMIN.APPLY_SCHEMA_POLICYプロシージャを使用してポリシーをスキーマ全体に適用する方法を示します。

BEGIN
SA_USER_ADMIN.APPLY_SCHEMA_POLICY (
policy_name      => 'ols_admin_pol',
schema_name      => 'hr',
default_options  => NULL);
END;
/

関連項目:

- SA_POLICY_ADMIN.APPLY_TABLE_POLICY

- SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY

- ポリシー強制オプションのリストは、「ポリシー強制オプションのカテゴリ」を参照してください

- Cloud Controlを使用したデータベース表へのポリシーの適用

手順6: 表の行へのポリシー・ラベルの追加

ポリシー・ラベルを表の行に追加する必要があります。

内容は次のとおりです。

- 表の行へのポリシー・ラベルの追加について

- 表の行へのポリシー・ラベルの追加

表の行へのポリシー・ラベルの追加について

ポリシーを表に適用した後は、データ・ラベルを表の行に追加する必要があります。

これらのラベルは、以前に表内に作成したポリシーのラベル列に格納されています。表を更新するユーザーには、ポリシーに対するFULLセキュリティ権限が必要です。通常、このユーザーは表の所有者です。

表の行へのポリシー・ラベルの追加

ポリシー・ラベルの追加先の表を更新する必要があります。

1. 表にデータ・ラベルを追加するには、SQL*Plusで、次の構文を使用してUPDATE文を入力します。

UPDATE table_name
SET ols_column = CHAR_TO_LABEL('ols_policy','data_label')
WHERE UPPER(table_column) IN (column_data);

たとえば、LABCSYSがACCESS_LOCATIONSというポリシーを作成した後、HR.LOCATIONS表の北京、東京およびシンガポールの各都市にラベルSENSを追加するとします。ポリシーのラベル列はROW_LABELであるとします。UPDATE文は、次のようになります。

UPDATE LOCATIONS
SET ROW_LABEL = CHAR_TO_LABEL('ACCESS_LOCATIONS','SENS')
WHERE UPPER(city) IN ('BEIJING', 'TOKYO', 'SINGAPORE');

2. 次のSELECT文を実行して、ポリシーが表に追加されたことを確認します。

SELECT LABEL_TO_CHAR (ROW_LABEL) FROM LOCATIONS;

関連項目:

Cloud Controlを使用した表の行へのポリシー・ラベルの適用

手順7: (オプション)監査の構成

SA_USER_ADMIN P/L SQLパッケージを使用して、Oracle Label Securityポリシーを監査できます。

- 監査の構成について

- 監査の構成

監査の構成について

ポリシーに対してユーザーを認可し、権限を付与した後で、各ユーザーおよびポリシー自体について監査を構成できます。

統合監査が有効になっていない場合は、この項の手順を使用して監査を構成します。有効になっている場合は、『Oracle Databaseセキュリティ・ガイド』の説明に従って統合監査ポリシーを作成する必要があります。

表5-10で、使用可能な監査オプションについて説明します。

表5-10 Oracle Label Securityの監査オプション

オプション

説明

APPLY

表およびスキーマに対する指定したOracle Label Securityポリシーの適用を監査します。

REMOVE

表およびスキーマからの指定したOracle Label Securityポリシーの削除を監査します。

SET

ユーザー認証およびユーザーとプログラムの権限の設定を監査します。

PRIVILEGES

ポリシー固有のすべての権限の使用を監査します。

監査の構成

SA_USER_ADMIN.AUDITプロシージャは、非統合監査環境でユーザーの監査を構成します。

- SA_USER_ADMIN.AUDITを実行してユーザー監査を構成し、ポリシー名、1つ以上のユーザーおよび適切な監査オプションを指定します。

次に例を示します。

BEGIN
SA_USER_ADMIN.AUDIT(
policy_name   => 'ols_admin_pol',
users         => 'hpreston',
audit_option  => 'REMOVE',
audit_type    => 'BY ACCESS',
success       => NULL);
END;
/

関連項目:

- SA_AUDIT_ADMIN.AUDIT

- Cloud Controlを使用したOracle Label Securityポリシーの監査

Enterprise Manager Cloud Controlを使用したOLSポリシーの作成

Oracle Enterprise Manager Cloud Controlで、Oracle Label Securityポリシーを作成できます。

内容は次のとおりです。

- Cloud Controlを使用したラベル・セキュリティ・ポリシー・コンテナの作成

- Cloud Controlを使用したポリシー・コンポーネントの作成

- Cloud Controlを使用したポリシーのデータ・ラベルの作成

- Cloud Controlを使用したポリシーに対するユーザーの認可、権限付与および監査

- Cloud Controlを使用したトラステッド・プログラム・ユニットへの権限の付与

- Cloud Controlを使用したデータベース表へのポリシーの適用

- Cloud Controlを使用した表の行へのポリシー・ラベルの適用

- Cloud Controlを使用したOracle Label Securityポリシーの監査

Cloud Controlを使用したラベル・セキュリティ・ポリシー・コンテナの作成

Cloud Controlで、Oracle Label Securityポリシー・コンテナを作成できます。

1. ユーザーSYSTEMとしてCloud Controlにログインします。

2. 使用するデータベースに移動するには、「ターゲット」メニューから「データベース」を選択します。

3. 表示されたリストで、データベース名をクリックします。

データベースのページが表示されます。

4. 「管理」メニューで、「セキュリティ」、「Oracle Label Security」を選択します。「Label Securityポリシー」ページが表示されます。

適切な資格証明でデータベースにログインする必要があります。「LBACSYS Oracle Label Securityの有効化」で作成したLBACSYSアカウント資格証明を使用できます。

5. 「作成」をクリックし、新しいLabel Securityポリシーの作成を開始します。「Label Securityポリシーの作成」ページが表示されます。

6. ポリシーの名前、ラベル列およびデフォルトのポリシー施行オプションを定義します。

- 名前: ポリシーの名前を入力します(例: ACCESS_LOCATIONS)。

- ラベル列: (オプション) OLS_COLUMNなど、ラベル列の名前を入力します。列名を指定せずにOLSポリシーを作成した場合、列名はPol_name_COLとして自動生成されます。後で表にポリシーを適用する際に、ラベル列がその表に追加されます。デフォルトでは、ポリシーのラベル列のデータ型はNUMBER(10)です。NUMBER(10)データ型の既存の表の列をラベル列として指定することもできます。

- ラベル列の非表示: 列を非表示にする場合に選択します。ポリシーを初めて作成する場合、ポリシーの開発中は「ラベル列の非表示」を無効にできます。ポリシーが完成し使用準備が整った時点で、アプリケーションに対して透過的になるように列を非表示にします。

- 有効: ポリシーを有効または無効に切り替えます。

- デフォルトのポリシー強制オプション: ポリシーの適用時に、デフォルトのポリシー強制オプションが使用されます。これらのオプションが、ポリシーを適用するアプリケーションのニーズと一致していることを確認してください。
次のオプションから選択します。

- ポリシー強制を適用しない(NO_CONTROL)

- ポリシー強制の適用
すべての問合せ用(READ_CONTROL)

INSERT操作用(INSERT_CONTROL)

UPDATE操作用(UPDATE_CONTROL)

ラベル列の更新にセッションのデフォルト・ラベルを使用(LABEL_DEFAULT)

ラベル列を更新する操作(LABEL_UPDATE)

読取りアクセスが可能になるUPDATEおよびINSERT操作(CHECK_CONTROL)

7. 「OK」をクリックします。

新しいポリシーが「Oracle Label Securityポリシー」ページに表示されます。

Cloud Controlを使用したポリシー・コンポーネントの作成

ポリシーのコンテナを作成し、ポリシーの強制オプションを設定すると、ポリシーのコンポーネントを作成できます。

1. 「Oracle Label Securityポリシー」ページで、前述のステップで作成したポリシーを選択します。「編集」をクリックします。

2. 「Label Securityポリシーの編集」ページで、「ラベル・コンポーネント」タブを選択します。

3. 「レベル」の下の「5行追加」をクリックし、ポリシーのレベルを追加します。作成する各レベルに対して、詳細名、短縮名および数値タグを入力します。この数値タグは、レベルの機密性に対応しています。レベルをさらに作成する場合は、「5行追加」を再度クリックします。同じ手順を使用して、区分と行を作成します。区分とグループの場合、数値タグは機密性に対応していません。

少なくとも1つのレベル(SECRETなど)を作成する必要があります。区分とグループの作成はオプションです。

レベル番号は、対応しているラベルの機密性レベルを示します。番号が大きいほど機密性が大きいことを意味します。セキュリティ・ポリシーに追加のレベルが必要になる場合に備えて、後で拡張できるような数値の範囲を選択します。たとえば、レベルをPUBLIC (7000)およびSENSITIVE (8000)として作成すると、後でCONFIDENTIALという中間レベルを作成することになった場合に、このレベルに対して7500という数値を割り当てることができます。

区分は、データに関連付けられているカテゴリを識別し、レベル内にさらに細分化したレベルを提供します。たとえば、1つの表に様々な部門に対応したデータがあり、そのデータを分類するために区分が必要な場合があります。区分はオプションです。

グループは、データを所有する組織またはデータにアクセスする組織を識別します。グループは、データを制御された方法で送信したり、組織の変更に適切なタイミングで対処する場合に役立ちます。グループはオプションです。

4. 「適用」をクリックします。

Cloud Controlを使用したポリシーのデータ・ラベルの作成

Cloud Controlで、Oracle Label Securityポリシーのデータ・ラベルを作成できます。

1. 「Label Securityポリシー」ページで、ラベルをレベルにリンクする必要のあるポリシーを選択します。

2. 「アクション」ボックスで、「データ・ラベル」を選択します。「実行」をクリックします。

「データ・ラベル」ページが表示されます。

3. 「追加」をクリックします。

「データ・ラベルの作成」ページが表示されます。

4. 次の情報を入力します。

- 数値タグ: ラベルを一意に識別する番号を入力します。この番号は、すべてのポリシーにわたって一意である必要があります。

- レベル: リストからレベルを選択します。

5. 必要に応じて、ラベルに追加する区分を選択できます。区分を追加するには、「区分」の下の「追加」をクリックします。ラベルに追加する区分を選択します。「選択」をクリックして区分を追加します。

6. オプションで、グループを追加するには、「グループ」の下の「追加」をクリックします。ラベルに追加するグループを選択します。「選択」をクリックしてグループを追加します。

7. 「データ・ラベルの作成」ページの「OK」をクリックします。

データ・ラベルが「データ・ラベル」ページに表示されます。

8. 追加のデータ・ラベルを作成するには、ステップ3から7を繰り返します。

また、SA_LABEL_ADMINパッケージを使用してポリシーのラベル・コンポーネントを定義できます。

関連項目:

SA_LABEL_ADMINラベル管理PL/SQLパッケージ

Cloud Controlを使用したポリシーに対するユーザーの認可、権限付与および監査

ユーザー作成プロセス中に、ポリシーに対するユーザーの認可、権限付与および監査の設定を行うことができます。

1. 「Label Securityポリシー」ページで、認可が必要なポリシーを選択します。

2. 「アクション」ボックスで、「認可」を選択します。「実行」をクリックします。

「ユーザーの作成」ページが表示されます。

3. 次の手順でユーザーを追加します。

- 「データベース・ユーザー」の下の「追加」をクリックします。「検索と選択」ウィンドウで、目的のユーザーを選択して「選択」をクリックします。

- 「データベース以外のユーザー」については、その下の「5行追加」をクリックし、追加対象となるデータベース以外のユーザーのユーザー名を追加します。ほとんどのアプリケーション・ユーザーは、データベース以外のユーザーと考えられます。データベース以外のユーザーはデータベースには存在しません。Oracle Databaseの命名方式に一致し、VARCHAR2(30)の長さのフィールドに適合していれば、どのユーザー名も追加できます。ただし、アプリケーションがデータベースに接続する際、データベース以外のユーザーに関するセキュリティ情報は自動的に構成されないことに注意してください。この場合、アプリケーションでは、Oracle Label Securityのファンクションをコールして、実質的なデータベース・ユーザーでない特定ユーザーのラベル認可を想定する必要があります。

4. 「ユーザーの作成」ページで、認可するユーザーを選択します。「次」をクリックします。複数のユーザーが同じ認可を必要としている場合は、同じ認可を必要とするすべてのユーザーを選択します。「次」をクリックします。

「権限」ステップが表示されます。

5. ここでは、前述のステップで選択したユーザーに権限を割り当てることができます。権限によって、データベース・ユーザーはポリシーで施行される特定の制約をバイパスできます。付与する権限を選択します。「次」をクリックします。

ユーザーに権限を割り当てない場合は、権限を選択せずに「次へ」をクリックします。

「レベル、区分およびグループ」ステップが表示されます。

6. 次に、ユーザーのユーザー・ラベルを作成するには、「レベル」で懐中電灯のアイコンを使用して次のフィールドに入力するデータを選択します。

- 最大レベル: このユーザーに対する読取りおよび書込みアクセスの最上位レベルを入力します。

- 最小レベル: 書込みアクセスの最下位レベルを入力します。

- デフォルト・レベル: ユーザーがログインする際のデフォルトのレベルを入力します。
最小レベル以上かつ最大レベル以下の値を指定します。

- 行レベル: ユーザーが表に書き込む際の、行に指定されるレベルを入力します。

7. 「区分」で「追加」をクリックして、ユーザー・ラベルに区分を追加します。追加する区分を選択します。「選択」をクリックします。

8. 追加する各区分については、次のプロパティを選択できます。

- 書込み: ユーザーは、その区分をラベルの一部として持つデータに書き込むことができます。

- デフォルト: その区分を、ユーザーのデフォルトのセッション・ラベルに追加します。

- 行: ユーザーが表に書き込む際に、その区分をデータ・ラベルに追加します。

9. 「グループ」の下の「追加」をクリックし、グループをユーザー・ラベルに追加します。グループを選択し、「選択」をクリックします。

10. 追加する各グループについては、次のプロパティを選択できます。

- 書込み: ユーザーは、そのグループをラベルの一部として持つデータに書き込むことができます。

- デフォルト: そのグループを、ユーザーのデフォルトのセッション・ラベルに追加します。

- 行: ユーザーが表に書き込む際に、そのグループをデータ・ラベルに追加します。

11. 「次」をクリックします。

「監査」ステップが表示されます。

12. 次の監査オプションから選択します。

- 適用されたポリシー:
「成功時に監査」では、表またはスキーマへのポリシー適用で、成功した適用について監査します。アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

「失敗時に監査」では、表またはスキーマへのポリシーの適用で、失敗した適用について監査します。アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

- 削除されたポリシー:
「成功時に監査」では、表またはスキーマからのポリシーの削除で、成功した削除について監査します。アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

「失敗時に監査」では、表またはスキーマからのポリシーの削除で、失敗した削除について監査します。アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

- 設定されたラベルと権限:
「成功時に監査」では、ユーザーの認証および権限の設定で、成功した設定について監査します。アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

「失敗時に監査」では、ユーザーの認証および権限の設定で、失敗した設定について監査します。アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

- すべてのポリシー固有の権限:
「成功時に監査」では、ポリシー権限の使用で、成功した使用について監査します。アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

「失敗時に監査」では、ポリシー権限の使用で、失敗した使用について監査します。アクセスごとに監査する場合はACCESSを、セッションごとに監査する場合はSESSIONを選択します。

13. 「次へ」をクリックします。

14. ポリシー認可設定を確認できます。ポリシー認可を作成するには、「終了」をクリックします。「戻る」をクリックして、認可設定を変更することもできます。

また、SA_USER_ADMINパッケージを使用してユーザーを認可する方法もあります。

Cloud Controlを使用したトラステッド・プログラム・ユニットへの権限の付与

Cloud Controlで、トラステッド・プログラム・ユニットに権限を付与できます。

1. 「Label Securityポリシー」ページで、認可が必要なポリシーを選択します。

2. 「アクション」ボックスで、「認可」を選択します。「実行」をクリックします。

「認可」ページが表示されます。

3. 「トラステッド・プログラム・ユニット」タブをクリックします。

4. 「追加」をクリックして、プロシージャ、ファンクションまたはパッケージに対するOracle Label Security権限を追加します。

「プログラム・ユニットの作成」ページが表示されます。

5. 「プログラム・ユニット」フィールドに、権限を付与する必要があるプロシージャ、ファンクションまたはパッケージの名前を入力します。「検索」アイコンを使用して、プロシージャ、ファンクションまたはパッケージを検索することもできます。

6. プログラム・ユニットに付与する必要があるポリシー固有の権限を1つ以上選択します。「OK」をクリックします。

「認可」ページに、トラステッド・プログラム・ユニットが追加されます。

また、SA_USER_ADMINパッケージを使用してトラステッド・プログラム・ユニットを認可する方法もあります。

関連項目:

- SA_USER_ADMIN.SET_PROG_PRIVS

- SA_USER_ADMIN.SET_USER_PRIVS

- トラステッド・ストアド・プログラム・ユニットの管理および使用

Cloud Controlを使用したデータベース表へのポリシーの適用

Cloud Controlのデータベース表にOracle Label Securityポリシーを適用できます。

1. 「Label Securityポリシー」ページで、表に適用する必要があるポリシーを選択します。

2. 「アクション」ボックスから「適用」を選択します。「実行」をクリックします。

「適用」ページが表示されます。

3. ポリシーを表に適用するには、「表」タブを選択します。

注意:

ポリシーをスキーマに適用する場合は「スキーマ」タブを選択します。手順は、ポリシーを表に適用する場合と同じです。

4. 「作成」をクリックします。

「表の追加」ページが表示されます。

5. 「表」ボックスの横にある懐中電灯アイコンをクリックします。

6. 「検索と選択」ウィンドウの「検索」の下に、次の情報を入力します。

- スキーマ: 表が表示されるスキーマの名前を入力します。このフィールドを空のままにすると、すべてのスキーマの表が表示されます。

- 名前: 必要に応じて表の名前を入力します。このボックスを空のままにすると、スキーマ内のすべての表が表示されます。

ワイルドカードを使用して検索範囲を絞り込むには、パーセント(%)符号を使用します。たとえば、Oの文字で開始する表をすべて検索するには、O%と入力します。

7. 表を選択し、「選択」をクリックします。

「表の追加」ページが表示されます。

8. 次の情報を入力します。

- ポリシー強制オプション: 必要に応じて施行オプションを選択します。これらのオプションは、「手順1: ラベル・セキュリティ・ポリシー・コンテナの作成」でポリシーを作成したときに選択した強制オプションに加えて表に適用されます。
施行オプションを変更しない場合、つまり、前述のステップで作成した内容と同じ施行オプションを使用する場合は、「デフォルトのポリシー強制を使用」を選択します。施行オプションをさらに追加する場合は、リストされている他のオプションを選択します。

- Labeling Function: (オプション)新しい行または更新された行に関連付けるラベルを自動的に計算する、ラベル付けの関数を指定します。アクティブなラベル付けの関数は、ラベルを提供する他の方法よりも優先されるため、この関数は常に実行され、ポリシーに書き込まれたデータ・ラベルを提供します。

- 述語: 必要に応じて、READ_CONTROLのラベルベースの述語と(ANDまたはORを使用して)結合する追加の述語を指定します。

9. 「OK」をクリックします。

また、SA_POLICY_ADMINパッケージを使用して、表およびスキーマにポリシーを適用する方法もあります。

関連項目:

SA_POLICY_ADMINポリシー管理PL/SQLパッケージ

Cloud Controlを使用した表の行へのポリシー・ラベルの適用

Cloud Controlの表の行にOracle Label Securityポリシー・ラベルを適用できます。

1. 「ラベル・セキュリティ・ポリシー」ページで、ACCESS_LOCATIONSなどのポリシーを選択します。

2. 「アクション」ボックスから「認可」を選択します。「実行」をクリックします。

「認可」ページが表示されます。

3. 「追加」をクリックします。

「ユーザーの作成」ページが表示されます。

4. 「データベース・ユーザー」の下の「追加」をクリックします。

「検索と選択」ウィンドウが表示されます。

5. 表を所有するユーザーに対応するチェック・ボックスを選択します。「選択」をクリックします。

追加されたユーザーが「ユーザーの作成」ページにリストされます。

6. 「次」をクリックします。

「権限」ステップが表示されます。

7. ユーザーに対して適切な権限を選択し、「次へ」をクリックします。

ラベル、区分およびグループ・ページが表示されます。

8. 「次」をクリックします。

「監査」ステップが表示されます。

9. 「次」をクリックします。

「確認」ステップが表示されます。

10. 「終了」をクリックします。

Cloud Controlを使用したOracle Label Securityポリシーの監査

統合監査を使用している場合を除いて、Cloud ControlでOracle Label Securityポリシーを監査できます。

1. 「Label Securityポリシー」ページで、構成する必要があるポリシーを選択します。

2. 「編集」をクリックします。

Label Securityポリシー設定の編集ページが表示されます。

3. 「詳細」タブをクリックします。「監査」セクションの下の監査設定を編集します。

4. ユーザー・セッション・ラベルを監査表に含める場合は、「監査ラベル」の下の「ラベルを監査証跡に含める」を選択します。

5. 「監査設定」の下で、監査する「操作」を選択します。次の操作から選択できます。

- 適用されたポリシー: 表またはスキーマに対するポリシーの適用を監査します。

- 削除されたポリシー: 表またはスキーマからのポリシーの削除を監査します。

- 設定されたラベルと権限: ユーザーの認証と権限の設定を監査します。

- すべてのポリシー固有の権限: ポリシー権限の使用を監査します。

6. 「適用されたポリシー」の下の「追加」をクリックして、前述のステップで選択した「操作」に対して監査されるユーザーを追加します。

「検索と選択」ウィンドウが表示されます。

7. 追加する必要があるユーザーを選択します。「選択」をクリックします。

8. 追加するユーザーごとに、「成功時に監査」および「失敗時に監査」の値を選択します。

追加したユーザーごとに、選択した操作の成功したインスタンスの監査および失敗したインスタンスの監査を選択できます。アクセスごとに監査するか、セッションごとに監査するかも選択できます。

9. 監査する操作ごとに、ステップ5から8を繰り返します。

関連項目:

Oracle Label Securityでの監査

6 ラベル付きデータの処理

ラベル付きデータの管理、セッションのセキュリティ属性のデータの表示およびセッション属性の値の変更を行うことができます。

内容は次のとおりです。

- ポリシーのラベル列とラベル・タグの動作

- ラベルの表示

- ラベルを使用したデータのフィルタリング

- ラベル付きデータの挿入

注意:

このマニュアルの多くの例では、HUMAN_RESOURCESサンプル・ポリシーを使用しています。そのポリシー名はHRで、ポリシー・ラベル列はHR_LABELです。特に明記していないかぎり、各例では、Oracle Label Securityポリシーの施行がすべて有効になっている状態で、ユーザーの認証の範囲内でSQL文が行に対して実行されるものとします。

ポリシーのラベル列とラベル・タグの動作

表またはスキーマ内でポリシーのラベル列を作成して値を格納する方法を理解する必要があります。

内容は次のとおりです。

- ポリシーのラベル列

- ラベル・タグ

ポリシーのラベル列

ポリシーのラベル列の使用方法を理解する必要があります。

内容は次のとおりです。

- ポリシーのラベル列について

- ポリシーのラベル列の非表示化

ポリシーのラベル列について

表に適用される各ポリシーにより、データベースに1列が作成されます。

デフォルトでは、データ型はNUMBERです。

ポリシーに関する各行のラベルは、文字列書式のラベル値と等価の数値を使用して、その列のタグで表されます。ラベル・タグは、ラベル作成時に管理者が手動で指定しないかぎり自動的に生成されます。

自動ラベル生成には、管理者がラベル・コンポーネントを定義するときに設定したルールが適用されます。「データ・ラベルおよびユーザー・ラベル」を参照してください。

注意:

ポリシーの作成自体は、表やスキーマに影響しません。ポリシーは表またはスキーマにのみ適用されます。次の各項を参照してください。

- SA_SYSDBA.CREATE_POLICY

- SA_POLICY_ADMIN.APPLY_TABLE_POLICY

- SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY

ポリシーのラベル列の非表示化

ポリシーを表す列を表示しないように選択できます。

- 列の表示を非表示にするには、表にHIDEオプションを適用します。

HIDEを使用するポリシーを表に適用すると、SELECT *またはDESCRIBE操作を実行するユーザーには、ポリシーのラベル列が表示されなくなります。ポリシーのラベル列が非表示でない場合、ラベル・タグはNUMBER型として表示されます。「HIDEポリシー列オプションの動作」を参照してください。

例1: 数値列データ型(NUMBER)

DESCRIBE EMP;
Name                                      Null?    Type
----------------------------------------- -------- --------
EMPNO                                     NOT NULL NUMBER(4)
ENAME                                              CHAR(10)
JOB                                                CHAR(9)
MGR                                                NUMBER(4)
SAL                                                NUMBER(7,2)
DEPTNO                                    NOT NULL NUMBER(2)
HR_LABEL                                           NUMBER(10)

例2: 数値列データ型と非表示列

この例では、HR_LABEL列は表示されません。

DESCRIBE EMP;
Name                                      Null?    Type
----------------------------------------- -------- --------
EMPNO                                     NOT NULL NUMBER(4)
ENAME                                              CHAR(10)
JOB                                                CHAR(9)
MGR                                                NUMBER(4)
SAL                                                NUMBER(7,2)
DEPTNO                                    NOT NULL NUMBER(2)

ラベル・タグ

ラベル・コンポーネントを定義するラベル・タグを、手動または自動で生成して作成できます。

- ラベル・タグについて

- ラベル・タグの手動定義によるラベルの順序付け

- ラベル・タグの手動定義によるデータの操作

- 自動的に生成されるラベル・タグ

ラベル・タグについて

最初に、管理者は、ポリシーに使用するラベル・コンポーネントのセットを定義します。

ラベルの作成時に、管理者はラベルを構成するコンポーネントの有効な組合せセット、つまり、オプションで1つ以上のグループまたは区分と組み合せたレベルを指定します。

ポリシー内で有効なこれらの各ラベルは、管理者により割り当てられた、または初回使用時に自動的に生成された、関連付けられている数値タグによって一意に識別されます。管理者がラベル・タグを手動で定義すると、ソートや論理比較を行うときのラベル値の順序付けを制御できるというメリットがあります。

ただし、ラベル・タグは、データベース内のすべてのポリシー間で一意であることが必要です。データベース内で複数のポリシーを使用する場合、異なるポリシー内で同じ数値ラベル・タグは使用できません。ラベル・タグはそれぞれが1つのラベルを一意に識別すること、およびデータ行に格納されるのはラベルの文字列表現ではなく、この数値タグであることに注意してください。

ラベル・タグの手動定義によるラベルの順序付け

ラベル・タグを手動で定義すると、ラベルを意味のある方法でソートし比較できるようなデータ操作方法を実装できます。

そのためには、保護されたデータに関連付けるラベルをすべて事前に定義し、各ラベルに意味のあるラベル・タグ値を割り当てる必要があります。手動で割り当てることができるラベル・タグは8桁以内です。ラベル・タグの値は1以上である必要があります。

ラベル・タグ値をラベル・コンポーネントの数値に関連付ける方法を実装すると、メリットが得られる場合があります。これにより、タグを使用してデータ行を意味のある方法でグループ化できます。ただし、このアプローチは必須ではありません。機密性の高いラベルのタグは、機密性の低いラベルのタグより大きい数値に設定することをお薦めします。

表6-1に、割り当てられたラベル・タグのセットを示します。この例で、管理者の設定したラベル・タグ値が、「データ・ラベルおよびユーザー・ラベル」で説明したレベル、区分および行の数値に基づいていることに注意してください。

表6-1 管理者が定義したラベル・タグ(例)

ラベル・タグ

ラベル文字列

10000

P

20000

C

21000

C:FNCL

21100

C:FNCL,OP

30000

S

31110

S:OP:WR

40000

HS

42000

HS:OP

この例では、PUBLICレベルのラベルは"1"、CONFIDENTIALレベルのラベルは"2"、SENSITIVEレベルのラベルは"3"、HIGHLY_SENSITIVEレベルのラベルは"4"で始まっています。

FINANCIAL区分を持つラベルは1000番台、OP区分を持つラベルは1100番台になっています。10の桁はグループWRなどを示します。

この他に、グループのみに基づく方法などもあります。その場合、タグは3110、3120、3130などとなります。

ただし、ラベル・タグは、個々のラベル・コンポーネントに割り当てられている数値にかかわらず、ラベル全体を識別します。ラベル・タグは、個別に評価される番号の集まりではなく、全体で1つの整数として使用されます。

ラベル・タグの手動定義によるデータの操作

管理者が定義したラベル・タグは、ラベル文字列全体(つまり、ラベル・コンポーネントの組合せ)を参照する便利な方法です。

たとえば、表6-1にあるように、タグ31110でラベル文字列S:OP:WR全体を表すことができます。

ラベル・タグは、データをパーティション化する便利な方法として使用できます。たとえば、範囲1000から1999内のラベルを持つすべてのデータを表領域Aに置き、範囲2000から2999内のラベルを持つすべてのデータを表領域Bに置くことができます。

この最も単純な表記法は、ラベル数が限られていて、それに対して各種操作を実行する必要がある場合にも役立ちます。ある会社が他の多数の会社の人事管理システムを管理している状況を考えます。会社YのユーザーはいずれもラベルC:ALPHA:CYを持ち、そのタグ210が設定されているとします。会社Yのアプリケーション・ユーザーの総数を判断するには、ホスト管理者は次のように入力します。

SELECT * FROM tab1
WHERE hr_label = 210;

自動的に生成されるラベル・タグ

動的に生成されるラベル・タグは10桁で、ラベル・コンポーネントに割り当てられている番号とは無関係です。

データをラベル別にグループ化することはできません。

表6-2で、自動的に生成されるラベル・タグの動作について説明します。

表6-2 生成されたラベル・タグ(例)

ラベル・タグ

ラベル文字列

100000020

P

100000052

C

100000503

C:FNCL

100000132

C:FNCL,OP

100000003

S

100000780

S:OP:WR

100000035

HS

100000036

HS:OP

関連項目:

- SA_LABEL_ADMIN.CREATE_LABEL

- パフォーマンス強化のためのラベル・タグ方針の計画

データ行へのラベルの割当て

既存のデータ行の場合は、ラベル付けファンクションを作成してラベルを割り当てることができます。

このファンクションでは、挿入するラベルを定義する表と行の条件を正確に指定します。ファンクション名は、表またはスキーマにポリシーを適用するためのコール、または管理者によるUPDATE時に指定できます。

挿入される行については、「ラベル付きデータの挿入」を参照してください。

関連項目:

- ラベル付けファンクション

- SA_POLICY_ADMIN.APPLY_TABLE_POLICY

- SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY

ラベルの表示

ラベルの検索時に、文字列値を自動的に取得することはありません。

デフォルトでは、ラベル・タグの値が戻されます。2つのラベル操作ファンクションを使用すると、ラベル・タグの値と文字列表現の間で変換できます。

内容は次のとおりです。

- CHAR_TO_LABELを使用した文字列からラベル・タグへの変換

- LABEL_TO_CHARを使用したラベル・タグから文字列への変換

CHAR_TO_LABELを使用した文字列からラベル・タグへの変換

CHAR_TO_LABELファンクションは、文字列をラベル・タグに変換し、指定した文字列のラベル・タグを戻します。

- 文字列からラベル・タグに変換するには、CHAR_TO_LABELファンクションの次の構文を使用します。

FUNCTION CHAR_TO_LABEL (
policy_name     IN VARCHAR2,
label_string    IN VARCHAR2)
RETURN NUMBER;

次に例を示します。

INSERT INTO emp (empno,hr_label)
VALUES (999, CHAR_TO_LABEL('HR','S:A,B:G5');

HRはラベルのポリシー名、Sは機密性レベル、A,Bは区分、G5はグループです。

FUNCTION CHAR_TO_LABEL (
policy_name     IN VARCHAR2,
label_string    IN VARCHAR2)
RETURN NUMBER;

HRはラベルのポリシー名、Sは機密性レベル、A,Bは区分、G5はグループです。

LABEL_TO_CHARを使用したラベル・タグから文字列への変換

ラベル・タグを文字列に変換できます。

内容は次のとおりです。

- LABEL_TO_CHARを使用したラベル・タグから文字列への変換

- LABEL_TO_CHARの例

LABEL_TO_CHARを使用したラベル・タグから文字列への変換

LABEL_TO_CHARファンクションは、ラベル・タグを文字列に変換する際、VARCHAR2文字列を戻します。

表またはビューを問い合せて自動的に取得される行は、表またはビュー内の行のうち、問合せの修飾を満たし、問合せを行ったユーザーのラベルに支配される行すべてです。ポリシーのラベル列が非表示に設定されていない場合は、各行のラベル・タグ値が表示されます。各ラベルの文字列値を表示するには、LABEL_TO_CHARファンクションを使用する必要があります。

すべての変換は明示的に行う必要があることに注意してください。タグと文字列表現の間の自動的なキャストはありません。

- ラベル・タグから文字列に変換するには、LABEL_TO_CHARファンクションの次の構文を使用します。

FUNCTION LABEL_TO_CHAR (
label IN NUMBER)
RETURN VARCHAR2;

LABEL_TO_CHARの例

Oracleには、LABEL_TO_CHARの使用方法を示す例が用意されています。

例: 表またはビューの行のラベルの取得

表またはビューの行のラベルを取得するには、SELECT文でポリシーのラベル列を指定します。

次に例を示します。

SELECT label_to_char (hr_label) AS label, ename FROM tab1;
WHERE ename = 'RWRIGHT';

この文では次のように戻されます。

LABEL          ENAME
------------   ----------
S:A,B:G1       RWRIGHT

例: ポリシーのラベル列の取得

SELECT文のWHERE句でポリシーのラベル列を指定することもできます。

次の文では、ポリシー・ラベルS:A,B:G1を持つすべての行が表示されます。

SELECT label_to_char (hr_label) AS label,ename FROM emp
WHERE hr_label = char_to_label ('HR', 'S:A,B:G1');

この文では次のように戻されます。

LABEL           ENAME
-------------   ---------
S:A,B:G1        RWRIGHT
S:A,B:G1        ESTANTON

また、次のように、より柔軟な文を使用して、HR_LABEL列のテキストに文字列"S:A,B:G1"を含むデータを検索することもできます。

SELECT label_to_char (hr_label) AS label,ename FROM emp
WHERE label_to_char (hr_label) like '%S:A,B:G1%';

LABEL_TO_CHARファンクションを使用しない場合は、ラベル・タグが表示されます。

例: 数値列データ型の取得

次の例は、数値列データ型(NUMBER)の動的に生成されたラベル・タグですが、LABEL_TO_CHARファンクションを使用していません。LABEL_TO_CHARファンクションを使用しない場合は、ラベル・タグが表示されます。

SQL> select empno, hr_label from emp
where ename='RWRIGHT';

EMPNO      HR_LABEL
---------- ----------
7839       1000000562

ポリシーのラベル列が非表示に設定されている場合の表からのすべての列の取出し

ポリシー・ラベル列が非表示になっている場合、表で「SELECT *」を実行しても、ポリシー・ラベル列は自動的には戻されません。

- ラベルを取り出すように明示的に指定するには、SELECT文でLABEL_TO_CHARファンクションを使用します。

たとえば、DEPT表からすべての列を(ポリシーのラベル列の文字列表現を含め)取り出すには、次のように入力します。

COLUMN LABEL FORMAT a10
SELECT LABEL_TO_CHAR (hr_label) AS LABEL, DEPT.* FROM DEPT;

これらのSQL文を実行すると、次のデータが戻されます。

表6-3 サンプルSQL文から戻された非表示列のデータ

LABEL

DEPTNO

DNAME

LOC

L1

10

ACCOUNTING

NEW YORK

L1

20

RESEARCH

DALLAS

L1

30

SALES

CHICAGO

L1

40

OPERATIONS

BOSTON

これに対して、HR_LABEL列を明示的に指定しない場合は、ラベルはまったく表示されません。ポリシー列名はポリシーに基づいて設定されますが、HIDEオプションは表単位で設定されることに注意してください。

関連項目:

HIDEポリシー列オプションの動作

ラベルを使用したデータのフィルタリング

SQL文を処理する際に、Oracle Label Securityは、作成および適用プロシージャによって、データベースに定義されているセキュリティ・ポリシーを呼び出します。

これらの作成および適用プロシージャは、「SA_POLICY_ADMINポリシー管理PL/SQLパッケージ」で説明されています。

SELECT文の場合、ポリシーはユーザーが表示を認可されているデータ行をフィルタします。INSERT、UPDATEおよびDELETE文の場合、Oracle Label Securityはユーザーの認証に基づいて要求された操作を許可または拒否します。

内容は次のとおりです。

- WHERE句での数値ラベル・タグの使用

- ラベル付きデータ行の順序付け

- ラベルの文字表現による順序付け

- ラベルの上限と下限の決定

- MERGE_LABELファンクションを使用したラベルのマージ

関連項目:

数値ラベル・タグに基づいてパーティション化されたデータ

WHERE句での数値ラベル・タグの使用

SELECT文のWHERE句に数値ラベル・タグを使用する様々な技法があります。

ラベルをNUMBER形式で使用すると、ラベル・タグのリストで様々なレベルが区別されるようにラベルを設定できます。このような数値ラベル・タグの比較を、ORDER BY処理や論理演算子とともに使用できます。

たとえば、すべてのUNCLASSIFIEDラベルを1000番台、すべてのSENSITIVEラベルを2000番台、すべてのHIGHLY_SENSITIVEラベルを3000番台に割り当てている場合は、すべてのSENSITIVEレコードをリスト表示できます。

SELECT * FROM emp
WHERE hr_label BETWEEN 2000 AND 2999;

すべてのSENSITIVEレコードとUNCLASSIFIEDレコードをリスト表示するには、次のように入力します。

SELECT * FROM emp
WHERE hr_label <3000;

すべてのHIGHLY_SENSITIVEレコードをリスト表示するには、次のように入力します。

SELECT * FROM emp
WHERE hr_label=3000;

注意:

このような問合せが意味を持つのは、管理者が、最初にラベルに割り当てたラベル・タグに、数値による順序付け方法を適用している場合のみであることに注意してください。この方法により、管理者はデータを簡単に送信できます。ただし、ラベル・タグの値が自動的に生成されると、タグの値とラベルの順序に本質的な関係は存在しません。

または、支配関係を使用して順序付け方法を設定することもできます。

関連項目:

支配ファンクションの使用

ラベル付きデータ行の順序付け

SELECT文のORDER BY句を使用すると、数値ラベル・タグで行を順序付けできます。

- ORDER BY操作を実行するには、次のようなSELECT文を使用します。

SELECT * from emp
ORDER BY hr_label;

この文にはファンクションは不要であることに注意してください。この文は、管理者が設定したラベル・タグを使用できるようにします。

注意:

この場合も、このような問合せが意味を持つのは、管理者が、最初にラベルに割り当てたラベル・タグに、数値による順序付け方法を適用している場合のみです。

ラベルの文字表現による順序付け

LABEL_TO_CHARファンクションは、ラベルの文字表現でデータ行を順序付けします。

- ラベルの文字表現でデータ行を順序付けするには、ラベルのテキスト順にソートされたすべての行が戻される、次のような文を使用します。

SELECT * FROM emp
ORDER BY label_to_char (hr_label);

ラベルの上限と下限の決定

Oracle Label Securityでは、複数のラベルの最小の上限または最大の下限を決定するファンクションが提供されます。

2つの単一行ファンクションは、問合せから戻される各行を操作します。結果は行ごとに1つずつ戻されます。

内容は次のとおりです。

- LEAST_UBOUNDを使用した最小の上限の検索

- GREATEST_LBOUNDを使用した最大の下限の検索

注意:

複数のラベルを取るすべてのファンクションでは、ラベルはすべて同じポリシーに属している必要があります。

LEAST_UBOUNDを使用した最小の上限の検索

OLS_LEAST_UBOUND (OLS_LUBD)ファンクションは、label1およびlabel2の最小の上限である文字列ラベルを戻します。

つまり、この2つを支配している単一のラベルです。最小の上限は、最上位レベル、ラベル内の区分の共用部分およびラベル内のグループの共用部分です。

たとえば、HIGHLY_SENSITIVE:ALPHAおよびSENSITIVE:BETAの最小の上限は、HIGHLY_SENSITIVE:ALPHA,BETAです。

- 最小の上限を検索するには、次の構文を使用します。

FUNCTION OLS_LEAST_UBOUND (
label1                    IN NUMBER,
label2                    IN NUMBER)
RETURN VARCHAR2;

OLS_LEAST_UBOUNDファンクションが役立つのは、異なるラベルを持つ行を結合する場合です。これは、結合された行の最高水位標ラベルを提供するためです。

次の問合せでは、各従業員のラベルを所属部署のラベルと比較し、EMP表にあるかDEPT表にあるかに関係なく上位のラベルを戻します。

SELECT ename,dept.deptno,
OLS_LEAST_UBOUND(emp.hr_label,dept.hr_label) as label
FROM emp, dept
WHERE emp.deptno=dept.deptno;

この問合せでは次のデータが戻されます。

表6-4 サンプルSQL文LEAST_UBOUNDから戻されたデータ

ENAME

DEPTNO

LABEL

KING

10

L3:M:D10

BLAKE

30

L3:M:D30

CLARK

10

L3:M:D10

JONES

20

L3:M:D20

MARTIN

30

L2:E:D30

注意:

Oracle Database 12cリリース1 (12.1)では、古いOLSファンクションであるLEAST_UBOUNDおよびLUBDは非推奨です。

このリリースではまだ古いファンクションを使用できますが、かわりにOLS_LEAST_UBOUNDおよびOLS_LUBDファンクションを使用することをお薦めします。新しいファンクション名を使用すると、他のデータベース・コンポーネントと名前が競合する可能性が回避されます。

GREATEST_LBOUNDを使用した最大の下限の検索

OLS_GREATEST_LBOUND (OLS_GLBD)スタンドアロン・ファンクションは、2つの異なるラベルが指定された場合、操作に含めることができる最下位のデータのラベルを決定します。

このファンクションは、label1およびlabel2の最大の下限である文字列ラベルを返します。最大の下限は、最下位レベルであり、ラベルの区分とラベルのグループの共通部分です。たとえば、HIGHLY_SENSITIVE:ALPHAおよびSENSITIVEの最大の下限はSENSITIVEです。

- 最大の下限を検索するには、次の構文を使用します。

FUNCTION OLS_GREATEST_LBOUND (
label1                  IN NUMBER,
label2                  IN NUMBER)
RETURN VARCHAR2;

注意:

Oracle Database 12cリリース1 (12.1)では、古いOLSファンクションであるGREATEST_LBOUNDおよびGLBDは非推奨です。

このリリースではまだ古いファンクションを使用できますが、かわりにOLS_GREATEST_LBOUNDおよびOLS_GLBDファンクションを使用することをお薦めします。新しいファンクション名を使用すると、他のデータベース・コンポーネントと名前が競合する可能性が回避されます。

MERGE_LABELファンクションを使用したラベルのマージ

MERGE_LABELファンクションは、2つのラベルをマージします。

このファンクションは、2つのラベルの文字列書式と、マージ形式の3文字の指定を受け入れます。

- ラベルをマージするには、次の構文を使用します。

FUNCTION merge_label (label1 IN number,
label2 IN number,
merge_format IN VARCHAR2)
RETURN number;

有効なマージ形式を次のように3文字の文字列で指定します。

<highest level or lowest level><union or intersection of compartments><union or intersection of groups>

- 1文字目には、2つのラベルの最上位レベルと最下位レベルのうち、どちらを使用してマージするかを示します。

- 2文字目には、2つのラベルにある区分の共用部分と共通部分のうち、どちらを使用してマージするかを示します。

- 3文字目には、2つのラベルにあるグループの共用部分と共通部分のうち、どちらを使用してマージするかを示します。

表6-5に、MERGE_LABELのフォーマット定数の定義を示します。

表6-5 MERGE_LABELのフォーマット定数

フォーマット指定

データ型

定数

意味

フォーマットの使用位置

max_lvl_fmt

CONSTANT varchar2(1)

H

最大レベル。

第1(レベル)

min_lvl_fmt

CONSTANT varchar2(1)

L

最小レベル。

第1(レベル)

union_fmt

CONSTANT varchar2(1)

U

2つのラベルの共用部分。

第2(区分)および第3(グループ)

inter_fmt

CONSTANT varchar2(1)

I

2つのラベルの共通部分。

第2(区分)および第3(グループ)

minus_fmt

CONSTANT varchar2(1)

M

第1のラベルから第2のラベルを削除します。

第2(区分)および第3(グループ)

null_fmt

CONSTANT varchar2(1)

N

区分列に指定すると、区分は戻されません。グループ列に指定すると、グループは戻されません。

第2(区分)および第3(グループ)

たとえば、HUIの場合は、2つのラベルの最上位レベル、区分の共用部分、グループの共通部分を指定したことになります。

MERGE_LABELファンクションが特に役立つのは、開発者がLEAST_UBOUNDファンクションで意図した結果が得られない場合です。グループを含む2つのラベルにLEAST_UBOUNDファンクションを使用すると、予期したよりも機密性の低いデータ・ラベルが得られる場合があります。MERGE_LABELファンクションを使用すると、LEAST_UBOUNDファンクションで得られるグループの共用部分のかわりに、グループの共通部分を計算できます。

たとえば、グループUNITED_STATESを含むデータ・レコードのラベルと、グループUNITED_KINGDOMを含む別のデータ・レコードのラベルがあり、LEAST_UBOUNDファンクションを使用してこの2つのラベルの最小の上限を計算すると、結果として得られるラベルには、UNITED_STATESまたはUNITED_KINGDOMについて認可されているユーザーがアクセスできます。

これに対して、HUIのフォーマット句とともにMERGE_LABELファンクションを使用すると、結果的に得られるラベルには最上位レベルと区分の共用部分は含まれますが、グループは含まれません。これは、UNITED_STATESとUNITED_KINGDOMには共通部分がないためです。

ラベル付きデータの挿入

様々な状況で、ラベル付きデータを挿入できます。

内容は次のとおりです。

- ラベル付きデータの挿入について

- CHAR_TO_LABELを使用したラベルの挿入

- 数値のラベル・タグ値を使用したラベルの挿入

- ラベルを指定しないデータの挿入

- ポリシーのラベル列が非表示になっている場合のデータの挿入

- TO_DATA_LABELを使用したラベルの挿入

ラベル付きデータの挿入について

Oracle Label Securityでポリシーにより保護されている表にデータを挿入する場合は、数値のラベル値タグを指定する必要があります。

通常、INSERT文自体にこの値を挿入できます。

そのためには、必要なラベルのタグを明示的に指定するか、ラベルの文字列表現を適切なタグに明示的に変換する必要があります。これは新規ラベル・タグの生成を意味するのではなく、適切なラベル・タグの参照を意味することに注意してください。Oracle Label SecurityでOracle Internet Directoryを使用している場合、許可されるラベル(および対応するタグ)は、管理者により事前定義済でOracle Internet Directoryに存在するラベルのみです。

INSERT文でラベル値を省略できるのは、次のいずれかの場合のみです。

- ポリシーの適用時にLABEL_DEFAULT強制オプションが指定されている場合

- ポリシーの適用時に強制オプションが指定されておらず、ポリシーの作成時にLABEL_DEFAULTが指定されている場合

- ポリシー適用文でラベル付けファンクションが指定されている場合

最初の2つの場合は、ユーザーのセッションのデフォルト行ラベルが、挿入される行のラベルとして使用されます。3つ目の場合、挿入される行のラベルは、そのラベル付けファンクションにより作成されます。

関連項目:

- SA_POLICY_ADMIN.APPLY_TABLE_POLICY

- SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY

- SA_SYSDBA.CREATE_POLICY

- ラベル付けファンクション

- ポリシー強制オプションおよびラベル付きデータ(およびラベル)の読取りと書込みについては、「ポリシー施行オプションとラベル付けファンクションの実装」全体を参照してください

CHAR_TO_LABELを使用したラベルの挿入

行ラベルを挿入するには、ラベル文字列を指定してから、CHAR_TO_LABELファンクションを使用してラベルに変換できます。

CHAR_TO_LABELファンクションは、有効なデータ・ラベルを自動的に作成します。

- ラベルを挿入するには、INSERT INTO文を使用します。

次の例に、表empの定義を使用して、明示的なラベルでデータを挿入する方法を示します。

INSERT INTO emp (ename,empno,hr_label)
VALUES ('ESTANTON',10,char_to_label ('HR', 'SENSITIVE'));

数値のラベル・タグ値を使用したラベルの挿入

CHAR_TO_LABELファンクションを使用するのではなく、ラベルの数値ラベル・タグ値を使用して、データを挿入できます。

- 数値のラベル・タグ値を使用してラベルを挿入するには、INSERT INTO文を使用します。

たとえば、SENSITIVEの数値ラベル・タグが3000の場合は、次のようになります。

INSERT INTO emp (ename, empno, hr_label)
VALUES ('ESTANTON', 10, 3000);

ラベルを指定しないデータの挿入

INSERT文でラベルを指定する必要がない2つの状況があります。

LABEL_DEFAULTが設定されている場合、または表に適用されているラベル付けファンクションがある場合は、INSERT文でラベルを指定する必要はありません。ラベルは自動的に提供されます。

- ラベルを指定せずにデータを挿入するには、INSERT INTO文を使用します。

次に例を示します。

INSERT INTO emp (ename, empno)
VALUES ('ESTANTON', 10);

結果として得られる行ラベルは、デフォルト値に従って(またはラベル付けファンクションにより)設定されます。

関連項目:

- ポリシー強制オプションについて

- ラベル管理強制オプションの動作

- ラベル付けファンクション

- SA_POLICY_ADMIN.APPLY_TABLE_POLICY

- SA_SYSDBA.CREATE_POLICY

ポリシーのラベル列が非表示になっている場合のデータの挿入

ラベル列が非表示の場合、その列の存在はデータの挿入に対して透過的です。

表の列を明示的にリスト表示せず、ラベル列の値を含めないINSERT文を記述できます。

データのラベル付けには、セッションの行ラベルまたはラベル付けファンクション(表またはスキーマに対するポリシーの適用時に指定した場合)が使用されます。

列名を明示的に指定しなくても、表の非表示でない各列の値を指定すれば、表に挿入できます。次の例では、「例2: 数値列データ型と非表示列」で説明した表に1行を挿入する方法を示します。

- ポリシーのラベル列が非表示になっている場合にデータを挿入するには、次の構文を使用します。

INSERT INTO emp
VALUES ('196','ESTANTON',Technician,RSTOUT,50000,10);

ラベルは、次のいずれかになります。

- 指定したラベル

- 適用されているポリシーのLABEL_DEFAULTオプションで設定されるラベル

- 適用されているポリシーで指定されたラベル付けファンクションにより作成されるラベル

注意:

ポリシー・ラベル列が非表示でない場合は、INSERT文にラベル値(場合によっては、コンマで示されるnull)を明示的に含める必要があります。

TO_DATA_LABELを使用したラベルの挿入

TO_DATA_LABELファンクションは、新規ラベルを動的に生成できます。

このアプローチにより、データ・ラベルが有効であることが保証されます。ただし、Oracle Label SecurityがOracle Internet Directoryで動作するようにインストールされている場合、ラベルはOracle Internet Directoryでolsadmintoolコマンドを使用して集中管理されるため、動的ラベル生成は許可されないことに注意してください。詳細は、「Oracle Internet Directoryを使用したLabel Security用コマンドライン・ツール」を参照してください。したがって、Oracle Label SecurityがOracle Internet Directory対応の場合、このTO_DATA_LABELファンクションは使用できず、使用するとエラー・メッセージが生成されます。

1. TO_DATA_LABELファンクションに対するEXECUTE権限があることを確認します。

2. たとえば、INSERT INTO文でTO_DATA_LABELを必要に応じて使用します。

次に例を示します。

INSERT INTO emp (ename, empno, hr_label)
VALUES ('ESTANTON', 10, to_data_label ('HR', 'SENSITIVE'));

注意:

TO_DATA_LABELファンクションを使用するには、個別に明示的に付与する必要があります。また、その使用は厳密に制御する必要があります。

セッション・ラベルと行ラベルの変更

セッション中に、ユーザーは管理者が設定した認可に基づいてラベルを変更できます。

関連項目:

SA_SESSIONセッション管理PL/SQLパッケージ

7 Oracle Label SecurityとOracle Internet Directoryとの併用

Oracle Label SecurityはOracle Internet Directoryと併用できます。

内容は次のとおりです。

- Oracle Internet Directoryでのラベル管理について

- Oracle Internet Directory対応Label Securityの構成

- Oracle Label Securityプロファイル

- Label Securityでディレクトリを使用する場合に統合される機能

- Oracle Internet Directory内のOracle Label Securityポリシー属性

- 新規データ・ラベル作成の制限

- Oracle Internet DirectoryおよびOracle Label Securityに対する管理者の責任

- データベースのブートストラップ

- データベースとOracle Internet Directoryの同期化

- セキュリティ・ロールと許可されるアクション

- OLSでOIDが有効化されている場合に置き換えられるPL/SQL文

- ポリシー管理者用のOracle Label Securityプロシージャ

Oracle Internet Directoryでのラベル管理について

Oracle Label Securityメタデータを一元的なLDAPリポジトリで管理するメリットは数多くあります。

- ポリシーおよびユーザー・ラベルの認可を容易にプロビジョニングして、企業全体に配布できます。

- 従業員が退職した場合、その従業員のラベル認可を1か所で取り消し、変更を企業全体に自動的に伝播できます。

以前のリリースのOracle Label Securityは、ポリシーおよびユーザー・ラベルの認可の集中リポジトリとしてOracle Databaseに依存していました。Oracle Databaseのスケーラビリティと高可用性が活用されていましたが、Oracle Internet Directory (OID)を含む識別情報管理インフラストラクチャは活用されていませんでした。Oracle Label SecurityのインストールをOracle Internet Directoryと統合することで、ラベル認可を標準的なプロビジョニング・プロセスの一部にできます。

これらの利点は、Oracle Label Securityがユーザーに割り当てるポリシー、ユーザー・ラベルおよび権限について、ディレクトリに格納された情報にも適用されます。これらのラベルと権限は、表およびスキーマに対するアクセス制御を定義するインストール・ポリシーに固有です。サイトでOracle Internet Directoryを使用していない場合、このような情報はデータベースにローカルに格納されます。

ディレクトリには、次のOracle Label Security情報が格納されます。

- ポリシー情報(ポリシー名、列名、ポリシー強制オプションおよび監査オプション)

- ラベルと権限を識別するユーザー・プロファイル

- ポリシー・ラベル・コンポーネント: レベル、区分およびグループ

- ポリシー・データ・ラベル

次のようなデータベース固有のメタデータは、ディレクトリに格納されません。

- ポリシー情報が関連付けられているスキーマまたは表のリスト

- ポリシー権限が関連付けられているプログラム・ユニット

Oracle Label SecurityのインストールをOracle Internet Directory (OID)と統合する場合の重要な側面を次に示します。

注意:

Oracle Label Securityのデータベース・アーキテクチャとディレクトリベース(OID)アーキテクチャは引き続きサポートされます。ただし、単一のデータベース環境で両方のアーキテクチャを管理することはできません。管理者は、LDAP集中管理モデルを使用するか、データベース中心型のモデルを使用するかを決定する必要があります。

注意:

「Oracle Internet Directoryを使用したLabel Security用コマンドライン・ツール」で説明するように、Oracle Label Security管理ツール(olsadmintool)を使用してOracle Label Securityポリシーをディレクトリ内で直接管理できます。

Oracle Label Securityの管理に、Oracle Enterprise Managerで提供されるグラフィカル・ユーザー・インタフェースも使用できます。Oracle Enterprise Managerヘルプに詳細なドキュメントが含まれています。

Oracle Internet Directoryを使用するサイトの場合、データベースはOracle Label Securityポリシー情報をディレクトリから取得します。管理者はolsadmintoolポリシー管理ツールまたはEnterprise Managerのグラフィカル・ユーザー・インタフェースを使用してディレクトリ上で直接操作し、必要に応じてメタデータを挿入、変更または削除します。エンタープライズ・ユーザーはOracle Internet Directoryに格納されている資格証明を使用して複数のデータベースにログインできるため、Oracle Label Securityポリシーの認可と権限もOracle Internet Directoryに格納するのが論理的です。これにより、管理者はこれらのメタデータをディレクトリ内で更新することで認可と権限を変更できます。

分散データベースでは、ポリシーの集中管理により、適切なポリシー情報をディレクトリ内で入手できるため、ポリシーを複製する必要がなくなります。変更はそのまま有効になり、Oracle Directory Integration Platformを使用してデータベース内のポリシー情報と同期化されます。

関連項目:

Oracle Directory Integration Platformを使用した同期化については、Oracle Identity Management統合ガイドを参照

図7-1に、Oracle Internet Directoryのメタデータ・ストレージの構造を示します。

図7-1 Oracle Internet DirectoryのOracle Label Securityメタデータ記憶域

図7-2に、様々なエンタープライズ・ユーザーがアクセスするデータベースに対して、Oracle Internet Directoryに格納されている異なるポリシーを適用する状況を示します。ユーザーおよびアクセスされるデータベースに対応するディレクトリ・エントリによって、適用されるポリシーが決まります。

図7-2 Oracle Internet Directoryを介して適用されるOracle Label Securityのポリシー

この図では、ディレクトリには2つのOracle Label Securityポリシー(データベースDB1に適用されるAlphaとデータベースDB2に適用されるBeta)に関する情報が含まれます。どちらのポリシーも各データベースで既知ですが、適切な一方のみが各ケースに適用されます。また、Oracle Label Securityによって保護されている行にアクセスするエンタープライズ・ユーザーは、Oracle Internet DirectoryのOracle Label Security属性内のプロファイルにリストされます。

図7-2に示すように、異なるデータベースとディレクトリ間の接続は、SSLまたはSASL上に確立されます。データベースは、パスワードベース認証を使用し、既知の識別情報として常にディレクトリにバインドします。データベースとクライアント(SQL*Plusセッション、任意のPL/SQLプログラムなど)間のリンクには、SSL接続または非SSL接続を使用できます。図7-2の例では、ユーザーがパスワード認証を通じてログオンしていることを想定します。どの接続タイプを選択するかは、エンタープライズ・ユーザー・モデルによって異なります。

Oracle Label Securityのポリシー管理ツールは、Oracle Internet Directory内のメタデータに対して直接動作します。ディレクトリ内の変更は、特定の間隔でデータベースに変更を送信するよう構成されているOracle Directory Integration and Provisioningサーバーに伝播します。

データベースは、表またはスキーマにポリシーが適用されている場合にのみ、Oracle Internet Directory内でポリシー情報を更新します。この更新により、使用中のポリシーがディレクトリから削除されないことが保証されます。

関連項目:

- エンタープライズ・ドメイン、ユーザー・モデルおよび認証アクティビティの詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください

- Oracle Internet Directoryの詳細は、『Oracle Fusion Middleware Oracle Internet Directory管理者ガイド』を参照してください

Oracle Internet Directory対応Label Securityの構成

Oracle Internet Directory対応Oracle Label Securityを構成できます。

内容は次のとおりです。

- Oracle Internet Directory対応Label Securityの構成について

- OID対応Oracle Label Securityを構成するための権限の付与

- データベースの登録とOID対応Oracle Label Securityの構成

- OID対応Oracle Label Securityからのデータベースの登録解除

Oracle Internet Directory対応Label Securityの構成について

データベースの作成後、またはカスタム・データベースの作成中は、データベースをOracle Internet Directory対応Label Security用に構成できます。

Oracle Internet Directory対応のLabel Securityは、Enterprise User Security機能に依存します。

関連項目:

- ディレクトリ使用のためにデータベースを構成する場合の前提条件および手順については、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください

- Database Configuration Assistant (DBCA)の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

OID対応Oracle Label Securityを構成するための権限の付与

Database Configuration Assistant(DBCA)を使用してOracle Internet Directory対応Oracle Label Securityを実行するユーザーには、追加の権限が必要です。

次の手順では、必要な権限と付与方法について説明します。

1. Enterprise Managerを使用して、ユーザーをOracleDBCreatorsグループに追加します。

管理グループへのユーザーの追加の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

2. ユーザーをProvisioning Adminsグループに追加します。

この手順が必要なのは、DBCAによりOracle Label Security用のDIPプロビジョニング・プロファイルが作成されるためです。次の.ldifファイルとともにldapmodifyコマンドを使用し、ユーザーをProvisioning Adminsグループに追加します。

dn: cn=Provisioning Admins,cn=changelog subscriber, cn=oracle internet directory
changetype: modify
add: uniquemember
uniquemember: DN of the user who is to be added

3. olsadmintoolコマンドライン・ツールを使用してユーザーをpolicyCreatorsグループに追加します。

DBCAにより、Oracle Internet DirectoryからのOracle Label Securityポリシー情報を使用してデータベースがブートストラップされます。このブートストラップを実行できるのはpolicyCreatorsのみです。

4. すでにDBCAを使用してデータベースがOracle Internet Directoryに登録されている場合は、Enterprise Managerを使用して、ユーザーをそのデータベースのOracleDBAdminsグループに追加します。

Oracle Internet Directory対応のOracle Label Security構成があるデータベースの登録を解除する管理者も、前述の権限を必要とすることに注意してください。

データベースの登録とOID対応Oracle Label Securityの構成

登録および構成プロセスでは、ディレクトリのOracleホームの構成、構成の実行、パスワードの設定およびデータの接続が必要です。

内容は次のとおりです。

- 手順1: ディレクトリを使用するためのOracleホームの構成

- 手順2: Oracle Label Security用のOracle Internet Directoryの構成

- 手順2の代替: OID対応Oracle Label Security用のデータベースの構成

- 手順3: DIPパスワードの設定とデータの接続

手順1: ディレクトリを使用するためのOracleホームの構成

最初に、Oracle Internet Directoryを使用できるようにOracleホーム・ディレクトリを構成する必要があります。

- ディレクトリ使用のためにOracleホームを構成する場合は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』の手順に従ってください。

手順2: Oracle Label Security用のOracle Internet Directoryの構成

次に、Oracle Label Security用のOracle Internet Directoryを構成する準備をします。

1. DBCA(Database Configuration Assistant)を使用して、データベースをディレクトリに登録します。
『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』 を参照してください。

2. データベースをディレクトリに登録した後、Label Securityを構成します。

a. DBCAを起動し、「データベース内のデータベース・オプションの構成」→「次へ」の順に選択します。

b. データベースを選択し、「次へ」をクリックします。

c. データベースの登録を解除するかどうかを確認するオプションで、「いいえ、データベースの登録を保持します。」を選択します。

d. データベースがOracle Internet Directoryに登録済の場合は、「データベース・オプション」画面で「Label Security」チェック・ボックスの横に「カスタマイズ」ボタンが表示されます。「Label Security」オプションを選択して「カスタマイズ」をクリックします。

e. この「カスタマイズ」ダイアログには、スタンドアロンOracle Label Security用とOracle Internet Directory対応Oracle Label Security用に1つずつ、2つの構成オプションが表示されます。OID対応Label Security構成をクリックし、該当する管理者のOracle Internet Directory資格証明を入力します。「OK」をクリックします。

f. 残りのDBCA手順を続行し、「終了」が表示された時点でクリックします。

注意:

Oracle Internet Directoryに登録済のデータベース上でスタンドアロンOracle Label Securityを構成できます。手順eでスタンドアロン・オプションを選択します。

Oracle Internet Directory対応Oracle Label Security用に構成する場合、DBCAでは、データベースの登録に加えて次のアクションが実行されます。

1. Label Securityポリシーの変更をデータベースに伝播するためのプロビジョニング・プロファイルが作成されます。

2. Oracle Internet Directory対応Oracle Label Securityのデータベース側に必要なパッケージがインストールされます。

3. Oracle Internet Directory内の既存のLabel Securityポリシー情報をすべて使用して、データベースがブートストラップされます。

関連項目:

詳細は、「データベースのブートストラップ」を参照してください。

手順2の代替: OID対応Oracle Label Security用のデータベースの構成

DBCAを1回起動して、データベースの登録とOracle Label Securityの構成を実行できます。

1. DBCAを起動します。

2. 「データベース内のデータベース・オプションの構成」を選択して「次へ」をクリックします。

3. データベースを選択し、「次へ」をクリックします。

4. 「データベースを登録する」をクリックします。

5. 該当する管理者のOracle Internet Directory資格証明と、作成されるデータベースWallet用の対応するパスワードを入力します。

6. データベースのオプションの「カスタム・データベース名」を入力します。

カスタム・データベース名を指定する機能は、Oracle Database 12cの新機能です。デフォルトで、ディレクトリ内のデータベースCN (DNの最初の部分または識別名)はDB_UNIQUE_NAMEです。これをカスタム値に変更できます。

7. 「データベース・オプション」画面で、「Label Security」チェック・ボックスの横に「カスタマイズ」ボタンが表示されます。「Label Security」オプションを選択して「カスタマイズ」をクリックします。

この「カスタマイズ」ダイアログ・ボックスが表示され、スタンドアロンOracle Label Security用とOracle Internet Directory対応Oracle Label Security用に1つずつ、2つの構成オプションが表示されます。

8. OID対応Label Security構成をクリックします。

9. 残りのDBCA手順を続行し、「終了」をクリックします。

手順3: DIPパスワードの設定とデータの接続

DIPユーザーはOracle Internet Directoryを管理します。

このユーザーのパスワードを構成したら、DIPプロビジョニング・プロファイル内のインタフェース接続情報を更新する必要があります。

1. コマンドライン・ツールoidprovtoolを使用してDIPユーザーのパスワードを設定し、そのデータベース用のDIPプロビジョニング・プロファイル内のインタフェース接続情報を新規パスワードで更新します。

詳細は、「Oracle Directory Integration and Provisioning(DIP)プロビジョニング・プロファイル」を参照してください。

2. 作成時に、DIPプロファイルはデフォルトで3600秒のスケジュール値を使用します。これは、Oracle Label Securityの変更が1時間ごとにデータベースに伝播されることを意味します。oidprovtoolを使用して、デプロイメントの考慮事項で要求されている場合にこの値を変更できます。

データベースがOracle Internet Directory対応Oracle Label Security用に構成された後、Enterprise User Securityに関する考慮事項がさらに適用される場合があります。

関連項目:

概念、ツール、手順およびプロシージャの詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください

OID対応Oracle Label Securityからのデータベースの登録解除

Oracle Internet Directory対応Oracle Label Securityからデータベースを録解除するために、DBCAを使用できます。

このプロセスでは、DBCAで次の処理が実行されます。

1. Oracle Label Security用に作成されたデータベースのDIPプロビジョニング・プロファイルを削除します。

2. スタンドアロンOracle Label Security用の必須パッケージをインストールします。これにより、登録解除後にOracle Internet Directory対応Oracle Label SecurityがスタンドアロンOracle Label Securityになります。

注意:

- データベースの登録解除に関する特殊指示は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。Oracle Internet Directory対応Oracle Label Securityの構成時には、特別な手順は不要です。

- データベースにスタンドアロンOracle Label Securityがある場合は、Oracle Internet Directory対応Oracle Label Securityに変換できません。データベースからOracle Label Securityを削除した後に、再びDBCAを使用してOracle Internet Directory対応Oracle Label Securityを構成する必要があります。

データベースからのOracle Internet Directory対応Oracle Label Securityの削除

Oracle Internet Directory対応Oracle Label Securityをデータベースから削除できます。

1. DBCAを使用してデータベースを登録解除します。

2. 次のスクリプトを実行します。

$ORACLE_HOME/rdbms/admin/catnools.sql

Oracle Label Securityプロファイル

ユーザー・プロファイルとは、ユーザーの認証と権限のセットです。

プロファイルは、ディレクトリに格納された各Oracle Label Securityポリシーの一部としてメンテナンスされます。プロファイルに追加されたユーザーには、そのポリシーに対してプロファイルに定義されている認可と権限が付与されます。これには次の属性が含まれます。

- 5つのラベル認可

- 最大読取りラベル

- 最大書込みラベル

- 最小書込みラベル

- デフォルトの読取りラベル

- デフォルトの行ラベル

- 権限

- これらの認可が適用されるエンタープライズ・ユーザーのリスト

エンタープライズ・ユーザーは、1つのプロファイルにのみ所属するか、またはどのプロファイルにも所属しません。

関連項目:

- Oracle Internet Directory内のOracle Label Securityポリシー属性

- エンタープライズ・ユーザーの作成および管理の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください

- Oracle Label Securityのプロファイルおよびポリシーの作成と管理の詳細は、Oracle Enterprise Managerのヘルプを参照してください。

Label Securityでディレクトリを使用する場合に統合される機能

Oracle Label SecurityとOracle Internet Directoryの統合により、いくつかの機能が使用可能になります。

- ユーザー/管理者アクション

- Oracle Internet Directoryへの複数のOracle Label Securityポリシーの格納

- ディレクトリ内のOracle Label Securityポリシーおよびオプションの管理

- ポリシーの作成または削除

- ポリシー・オプションの変更

- 監査設定の変更

- 任意のOracle Label Securityポリシーのラベル・コンポーネントの作成

- レベル、区分またはグループの作成または削除

- レベル、区分またはグループへの数値の割当て

- レベル、区分またはグループの詳細名の変更

- 子グループの作成

- 任意のOracle Label Securityポリシーのユーザーとして構成されたエンタープライズ・ユーザーの管理

- ポリシー内のプロファイルへのエンタープライズ・ユーザーの割当てまたは削除

- エンタープライズ・ユーザーへのポリシー固有の権限の割当てまたは削除

- エンタープライズ・ユーザーに割当済のポリシー・ラベル認可の変更

- Oracle Internet Directory内でOracle Label Securityポリシーを監視および管理する統合コマンドライン・ツール・セットを使用した、すべてのユーザー/管理者アクションおよび機能の管理

- Oracle Label Securityの自動結果

- データベースのポリシー使用を、ディレクトリ定義のポリシーのみに限定します(ローカル・ポリシーは定義または適用されません)。

- Oracle Label Securityを使用して、ディレクトリ内のポリシーに対する変更をデータベースと同期化(エンタープライズ・ユーザーの再接続後に適用)します。

- エンタープライズ・ユーザーがOracle Label Securityポリシー内で構成されている場合は、変更がOracle Directory Integration Platformにより伝播された後、エンタープライズ・ユーザーがOracle Label Securityを使用してデータベースにログオンする時点で、そのユーザーのOracle Label Security属性に即時にアクセスします。これらの属性には、ユーザーのラベル認可と権限が含まれています。

Oracle Internet Directory内のOracle Label Securityポリシー属性

Oracle Internet Directoryでは、Oracle関連のメタデータはcn=OracleContextの下に格納されます。

Label Security内では、各ポリシーに、図7-1に示す情報とパラメータが保持されます。

Oracle Label SecurityをOracle Internet Directoryと併用せずに使用した場合、ラベル付けファンクションによってデータ・ラベルの自動作成がサポートされます。Oracle Label SecurityをOracle Internet Directoryと併用した場合、このファンクションは、ディレクトリ内に既に定義されているデータ・ラベルを使用してラベルを作成できます。

表7-1 各ポリシーの内容

エントリのタイプ

内容

意味/使用例/参照先

ポリシー名

このポリシーの作成時に割り当てられた名前

olsadmintool createpolicyのようなolsadmintoolコマンドで使用します(「Oracle Internet Directoryを使用したLabel Security用コマンドライン・ツール」を参照)

列名

このポリシー関連のラベル値を保持する列の名前

データベースに列が追加されます。「ポリシーのラベル列とラベル・タグの動作」を参照してください

ラベル付きデータの挿入

HIDEポリシー列オプションの動作

Oracle Label Securityリファレンス

次のコマンドで使用します。

olsadmintool createpolicy

施行オプション

次のエントリの任意の組合せ

LABEL_DEFAULT、LABEL_UPDATE、CHECK_CONTROL、READ_CONTROL、WRITE_CONTROL、INSERT_CONTROL、DELETE_CONTROL、UPDATE_CONTROL、ALL_CONTROLまたはNO_CONTROL

「ポリシー施行オプションとラベル付けファンクションの実装」および「Oracle Label Securityリファレンス」の説明を参照してください。

次のコマンドで使用します。

olsadmintool createpolicy

およびolsadmintool alterpolicy

オプション

Enabled: TRUEまたはFALSE、Type: ACCESSまたはSESSION、Success: SUCCESSFUL、UNSUCCESSFULまたはBOTH。

次のコマンドで使用します。

olsadmintool audit

レベル

各レベルの名前と番号

次のコマンドで使用します。olsadmintool create/alter/droplevel

区分

各区分の名前と番号

次のコマンドで使用します。olsadmintool create/alter/drop compartment

グループ

各グループの名前、番号および親

次のコマンドで使用します。olsadmintool create/alter/dropgroup

プロファイル

最大およびデフォルトの読取りラベル、最大および最小書込みラベル、デフォルトの行ラベル、ユーザー・リストおよびこのリストからの権限セット

READ、FULL、

WRITEUP、WRITEDOWN、WRITEACROSS、

PROFILE_ACCESS、またはCOMPACCESS

ポリシーには1つ以上のプロファイルを使用して、各プロファイルを多数のユーザーに割り当てることができます。プロファイルにより、ユーザーのラベル認可を個別に設定する必要性が減少します。

同じラベルおよび権限セットを持つユーザー全員が1つのプロファイルにグループ化されます。各プロファイルは、ラベル、権限およびユーザーのそれぞれのセットを表します。ポリシー内の各プロファイルは一意です。

データ・ラベル

有効な各データ・ラベルのフルネームと番号

「新規データ・ラベル作成の制限」を参照してください。

管理者

このポリシー内でパラメータの変更を認可されている各管理者の名前

ポリシー管理者は、ポリシー内のパラメータを変更できます。ポリシーまたはポリシー管理者を作成または削除する権利があるポリシー作成者を兼務する必要はありません。「セキュリティ・ロールと許可されるアクション」を参照してください。

Oracle Internet Directory対応Label Securityでのポリシーのサブスクリプション

Oracle Internet Directory対応Oracle Label Securityで、ポリシーをサブスクライブしてから適用する必要があります(SA_POLICY_ADMIN.APPLY_TABLE_POLICYまたはSA_POLICY_ADMIN.APPLY_SCHEMA_POLICYを使用)。

スタンドアロンOracle Label Securityインストールでは、SA_POLICY_ADMIN.APPLY_TABLE_POLICYまたはSA_POLICY_ADMIN.APPLY_SCHEMA_POLICYファンクションを直接使用できるため、サブスクライブする必要はありません。

関連項目:

- SA_POLICY_ADMINポリシー管理PL/SQLパッケージ

- 手順5: データベース表またはスキーマへのポリシーの適用

新規データ・ラベル作成の制限

Oracle Label SecurityをOracle Internet Directoryと併用する場合は、データ・ラベルをディレクトリ内で事前定義する必要があります。

データ・ラベルは、ラベル付けファンクションで動的に作成できません。またLabel Securityがディレクトリと統合されていない場合もデータ・ラベルを作成できない可能性があります。

Oracle Internet DirectoryおよびOracle Label Securityに対する管理者の責任

ポリシーには、ポリシー固有の管理タスクの実行を認可されている管理者がリストされます。

- 既存のポリシー・オプションと監査設定の変更

- ポリシー監査の有効化または無効化

- レベル、区分、グループまたは子グループの作成または削除

- レベル、区分またはグループのフルネームまたは詳細名の変更

- このポリシー内での次のエンタープライズ・ユーザー設定の定義または変更

- 権限

- 最大レベルまたは最小レベル

- レベル、区分またはグループの読取り、書込みまたは行アクセス

- ラベル・プロファイル

- ポリシーからのエンタープライズ・ユーザーの削除

さらに上位の管理者をポリシー作成者と呼びます。ポリシー作成者は、Oracle Label Securityポリシーとそこに指定されているポリシー管理者を作成または削除できます。

データベースのブートストラップ

新規データベースをOracle Internet Directoryに登録した後、そのデータベースにOracle Internet Directory対応Oracle Label Securityをインストールできます。

このインストール・プロセスでは、Directory Integration Platform(DIP)プロビジョニング・プロファイルが自動的に作成され、それをデータベースにダウンロードすることでポリシー情報を定期的にリフレッシュできるようになります。「Oracle Directory Integration and Provisioning(DIP)プロビジョニング・プロファイル」を参照してください。

Oracle Internet Directory対応Oracle Label Security用にデータベースを構成すると、DBCAツールではOracle Internet Directory内のポリシー情報がすべてデータベースに送られます。

- データベースをブートストラップするには、次のパラメータを使用して、$ORACLE_HOME/bin/olsoidsyncにあるブートストラップ・ユーティリティ・スクリプトを実行します。

olsoidsync --dbconnectstring <"database connect string in host:port:sid format">
--dbuser <database user> --dbuserpassword <database user password> [-c] [-r]
[-b <admin context>] -h <OID host> [-p <port>] -D <bind DN> -w <bind password>

次に例を示します。

olsoidsync --dbconnectstring yippee:1521:ora101 --dbuser lbacsys
--dbuserpassword lbacsys -c
-b "ou=Americas,o=Oracle,c=US" -h yippee -D cn=policycreator -w Easy2rem

olsoidsyncコマンドは、Oracle Internet Directoryからポリシー情報をプルしてデータベースに移入します。データベースのTNS名、データベース・ユーザー名、データベース・ユーザーのパスワード、管理コンテキスト(存在する場合)、Oracle Internet Directoryホスト名、バインドDNとバインド・パスワードおよびOracle Internet Directoryポート番号(オプション)を指定する必要があります。

オプションの-cスイッチを指定すると、既存のポリシーがデータベースからすべて削除され、Oracle Internet Directoryからのポリシー情報でリフレッシュされます。

オプションの-rスイッチを指定すると、ポリシー・メタデータがすべて削除され(ポリシー自体は削除されず)、ポリシーがOracle Internet Directoryからの新規メタデータでリフレッシュされます。

この2つのスイッチを指定しなければ、Oracle Internet Directoryから新規ポリシーが作成されるのみで、リフレッシュ中にエラーが発生すると停止します。

データベースとOracle Internet Directoryの同期化

Oracle Label SecurityとともにOracle Internet Directoryをインストールして構成したら、データベースをOIDおよびOLSと同期化する必要があります。

内容は次のとおりです。

- データベースとOracle Internet Directoryの同期化について

- Oracle Directory Integration and Provisioning(DIP)プロビジョニング・プロファイル

- プロビジョニング・プロファイルの変更

- プロビジョニング・プロファイルのデータベース接続情報の変更

- Oracle Data GuardでのOID対応Oracle Label Securityの構成

データベースとOracle Internet Directoryの同期化について

Directory Integration PlatformのOracle Directory Provisioning Serviceでは、OIDディレクトリ内のOracle Label Securityメタデータをデータベースと同期化します。

ディレクトリ内のLabel Securityデータに対する変更は、Provisioning Integration Serviceによりプロビジョニング・イベントの形式で伝えられます。ソフトウェア・エージェントはこれらのイベントを受信し、適切なSQLまたはPL/SQL文を生成してデータベースを更新します。これらの文の処理後に、Oracle Label Securityデータ・ディクショナリは更新され、ディレクトリ内で行われた変更と一致するようになります。

Oracle Label Securityは、インストール時にProvisioning Integration Serviceに自動的にサブスクライブされます。プロビジョニング・サービスは、各データベースに関連付けられた情報をプロビジョニング・プロファイルの形式で格納します。ソフトウェア・エージェントは、Oracle Internet Directory内の変更をデータベースと同期する際にOracle Label Securityに対して作成されるユーザーDIPのアイデンティティを使用して、データベースに接続します。

ユーザーDIPのパスワードに変更があった場合は、このパスワードをProvisioning Integration Serviceのプロビジョニング・プロファイル内で更新する必要があります。

Oracle Directory Integration and Provisioning(DIP)プロビジョニング・プロファイル

DIPサーバーは、各データベース用に個別に作成されたDIPプロビジョニング・プロファイルを使用して、ディレクトリ内のポリシー変更を接続先データベースと同期化します。

このプロファイルは、Oracle Internet Directory対応Oracle Label Securityのインストール・プロセスの一部として自動的に作成されます。管理者は、プロビジョニング・ツールoidprovtoolとスクリプト$ORACLE_HOME/bin/oidprovtoolを使用して、データベース・プロファイルのパスワードを変更できます。この種の各プロファイルには、次の情報が含まれています。

表7-2 DIPプロビジョニング・プロファイルの要素

要素

oidprovtool起動時のこの要素の名前

LDAPホスト名

ldap_host

LDAPポート番号

ldap_port

Oracle Internet Directoryにバインドしてポリシー情報を取得するためのユーザーDNとパスワード

ldap_user

ldap_user_password

データベースDN

application_dn

組織DN、つまり変更が実行される管理コンテキスト

organization_dn

起動するコールバック・ファンクションLBACSYS.OLS_DIP_NTFY

interface_name

データベース接続情報(データベースのホスト名、データベース接続に使用するポート番号、データベースSID、データベース・ユーザー名およびパスワード)

interface_connect_info

Oracle Internet Directoryのcn=LabelSecurityの下のイベント・サブスクリプション(すべてのMODIFY、ADD、DELETEイベントなど)

operation

同期化の時間隔

schedule

ここでは、oidprovtoolの使用例に続いて、この例で使用しているパラメータについて説明します。

oidprovtool operation=modify ldap_host=yippee ldap_port=389
ldap_user=cn=defense_admin ldap_user_password=Easy2rem
application_dn="cn=db1,cn=OracleContext,ou=Americas,o=Oracle,c=US"
organization_dn="ou=Americas,o=Oracle,c=US" interface_name=LBACSYS.OLS_DIP_NTFY
interface_type=PLSQL interface_connect_info=yippee:1521:db1:dip:newdip schedule=60
event_subscription= "ENTRY:cn=LabelSecurity,cn=Products,cn=OracleContext,
ou=Americas,o=Oracle,c=US:ADD(*)" event_subscription=
"ENTRY:cn=LabelSecurity,cn=Products, cn=OracleContext,ou=Americas,
o=Oracle,c=US:MODIFY(*)" event_subscription="ENTRY:cn=LabelSecurity,cn=Products,
cn=OracleContext, ou=Americas,o=Oracle,c=US:DELETE"

このサンプルoidprovtoolコマンドでは、次の属性を持つ新規のDIPプロビジョニング・プロファイルが作成され、有効化されます。

- ポート389を使用するホストyippeeのOracle Internet Directory

- Oracle Internet DirectoryユーザーのバインドDN: cn=defense_admin、パスワードEasy2rem

- データベースDN: cn=db1, cn=OracleContext, ou=Americas, o=Oracle, c=US

- 組織DN (管理コンテキスト): ou=Americas, o=Oracle, c=US

- ポート1521でリスニングしているホストyippeeのデータベース

- Oracle SID: db1

- データベース・ユーザー: 新規パスワードnewdipを持つdip

- ディレクトリと接続先データベースとの同期間隔: 60秒

- cn=LabelSecurityの下のADD、MODIFYおよびDELETEイベントをすべてDIPに送信

DIPサーバーを起動するには、$ORACLE_HOME/bin/oidctlを使用します。次に例を示します。

oidctl server=odisrv connect=db2 config=0 instance=0 start

このコマンドでは、0に設定されたconfigおよびインスタンス番号0を使用してdb2 (Oracle Internet Directoryデータベース)に接続し、DIPサーバーを起動します。

関連項目:

DIPプロビジョニング・プロファイルの詳細は、Oracle Identity Management統合ガイドを参照

プロビジョニング・プロファイルの変更

oidprovtool modifyコマンドを使用すると、interface_connect_info接続文字列のパスワードが変更されます。

パスワードを変更する前に、一時的にプロファイルを無効化する必要があります。パスワードの変更後に、プロファイルを再び有効化します。

1. oidprovtoolを使用して、プロファイルを無効化します。

構文は次のとおりです。

oidprovtool operation=disable ldap_host=host ldap_port=port ldap_user_dn=ldap_user_dn  ldap_user_password=password application_dn=app_dn  organization_dn=org_dn

次に例を示します。

oidprovtool operation=disable ldap_host=yippee ldap_port=389

ldap_user=cn=defense_admin ldap_user_password=password
application_dn="cn=db1,cn=OracleContext,ou=Americas,o=Oracle,c=US"
organization_dn="ou=Americas,o=Oracle,c=US"

2. 次の構文を使用して、パスワードおよび接続情報を変更します。

oidprovtool operation=modify  ldap_host=ldap_host ldap_port=port

ldap_user_dn=ldap_user_dn  ldap_user_password=password application_dn=app_dn
organization_dn=org_dn interface_connect_info=new_connect_info

次に例を示します。

oidprovtool operation=modify ldap_host=yippee ldap_port=389

ldap_user=cn=defense_admin ldap_user_password=Easy2rem
application_dn="cn=db1,cn=OracleContext,ou=Americas,o=Oracle,c=US"
organization_dn="ou=Americas,o=Oracle,c=US"
interface_connect_info=yippee:1521:db1:dip:NewestDIPpassword

3. 次の構文を使用して、プロファイルを再有効化します。

oidprovtool operation=enable ldap_host=host ldap_port=port ldap_user_dn=ldap_user_dn ldap_user_password=password application_dn=app_dn organization_dn=org_dn

次に例を示します

oidprovtool operation=enable ldap_host=yippee ldap_port=389

ldap_user=cn=defense_admin ldap_user_password=password
application_dn="cn=db1,cn=OracleContext,ou=Americas,o=Oracle,c=US"
organization_dn="ou=Americas,o=Oracle,c=US"

プロビジョニング・プロファイルのデータベース接続情報の変更

DIPプロファイルでデータベース接続情報を変更できます。

1. プロビジョニング・プロファイルを無効化します。

プロビジョニング・プロファイルの無効化の詳細は、「プロビジョニング・プロファイルの変更」を参照してください。この手順により、ディレクトリからデータベースへのLabel Securityの変更の伝播が一時的に停止しますが、データは消失しません。プロファイルを有効化すると、プロファイルが無効化された後にディレクトリ内で発生したLabel Securityのすべての変更がデータベースと同期化されます。

2. プロファイル内でデータベース接続情報を更新します。

3. プロファイルを有効化します。

「プロビジョニング・プロファイルの変更」を参照してください。

注意:

Oracle Internet Directory対応Oracle Label Securityが正常に動作するには、データベース・キャラクタ・セットとOracle Internet Directoryに互換性がある必要があります。その場合にのみ、Oracle Internet Directory内のLabel Securityメタデータをデータベースと正常に同期化できます。

キャラクタ・セットとグローバリゼーション・サポート・パラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

関連項目:

- プロビジョニング・プロファイルの変更

- プロビジョニングの有効化および無効化の詳細は、Oracle Identity Management統合ガイドを参照

Oracle Data GuardでのOID対応Oracle Label Securityの構成

Oracle Directory対応Oracle Label SecurityがOracle Data Guardで動作するように構成するには、まずプライマリ・データベースを構成してから、セカンダリ・データベースを構成します。

内容は次のとおりです。

- 手順1: Data Guardでのディレクトリ対応Oracle Label Securityの設定

- 手順2: スイッチオーバー後のOIDプロビジョニング・プロファイルの更新

手順1: Data Guardでのディレクトリ対応Oracle Label Securityの設定

Oracle Data Guardでディレクトリ対応Oracle Label Securityを設定する必要があります。

1. データベース用にOracle Data Guardを構成します。
Oracle Data Guardのインストールの詳細は、『Oracle Data Guard Broker』を参照してください。

2. プライマリ・データベースのOracle Internet DirectoryにOracle Label Securityを登録します。
詳細は、「データベースの登録とOID対応Oracle Label Securityの構成」を参照してください。

3. ポリシーがプライマリ・データベースに伝播されたことを確認します。

a. olsadmintoolユーティリティを使用するかOracle Enterprise Manager Cloud Controlで、Oracle Internet DirectoryにOracle Label Securityポリシーを作成します。
olsadmintoolユーティリティの使用の詳細は、「Oracle Internet Directoryを使用したLabel Security用コマンドライン・ツール」を参照してください。

b. ユーザーLBACSYSとしてプライマリ・データベースに接続します。

c. DBA_SA_POLICIESデータ・ディクショナリ・ビューを問い合せて、ポリシーがプライマリ・データベースに伝播されたことを確認します。

SELECT POLICY_NAME FROM DBA_SA_POLICIES;

4. ユーザーLBACSYSとしてスタンバイ・データベースに接続し、REDOログ適用プロセスを通じてSELECT POLICY_NAME FROM DBA_SA_POLICIES;問合せを実行して、プライマリ・データベース上に伝播されたポリシーがスタンバイ・データベース上にあることを確認します。

5. OLS-OID登録の完了後に、ewallet.p12、sqlnet.oraおよびldap.oraファイルをプライマリ・データベースからスタンバイ・データベースにコピーします。

この手順は、フェイルオーバーの発生時にプライマリ・データベースがアクセス可能でない場合に役立ちます。デフォルトでは、これらのファイルは次の場所にあります。

- ウォレット・ファイルewallet.p12は、$ORACLE_BASE/admin/Oracle_SID/walletディレクトリまたは$ORACLE_HOME/admin/Oracle_SID/walletディレクトリにあります。

- sqlnet.oraは$ORACLE_HOME/dbsディレクトリにあります。(このファイルは、スタンバイ・データベースにコピーする前にバックアップします。)

- ldap.oraは$ORACLE_HOME/dbsディレクトリにあります。

6. ewallet.p12ファイルをコピーしたディレクトリに移動します。

7. 次の構文を使用して、PKCS#12ウォレット(ewallet.p12)に関連付けられたSSOウォレット・ファイル(cwallet.sso)を作成します。

orapki wallet create -wallet wallet_location -auto_login [-pwd password]

手順2: スイッチオーバー後のOIDプロビジョニング・プロファイルの更新

スイッチオーバー操作が完了したら、Oracle Internet Directoryプロビジョニング・プロファイルを更新する必要があります。

この手順では、スイッチオーバーを実行し、「手順1: Data Guardでのディレクトリ対応Oracle Label Securityの設定」の手順5、6および7を完了した後で、Oracle Internet Directoryのプロビジョニング・プロファイルを新しいプライマリ・データベースの接続情報で更新する準備ができます。

次の手順を完了しない場合、ポリシーは新しいスタンバイ・データベースに伝播され続け、古いプライマリ・データベースは「ORA-16000 データベースは読取り専用アクセスでオープンされています。」エラーで失敗します。プロビジョニング・プロファイルを新しいプライマリ・データベース接続情報で更新した後で、ポリシーの伝播が新しいプライマリ・データベースで行われます。また、これらのポリシーはREDO適用プロセスを通じて新しいスタンバイに伝播されます。

1. プライマリまたはスタンバイ・コンピュータで、新しいプライマリ・データベースに対して次のoidprovtoolユーティリティ・コマンドを実行します。

oidprovtool operation=modify \
ldap_host=OID_Server_hostname ldap_port=OID_Server_Port \
ldap_user_dn="cn=orcladmin"  \ application_dn="LDAP_distinguised_name_of_application" \

application_dn設定は、dn=dbname, cn=oraclecontext, default_admin_contextから導出できます。ldap.oraファイルには、default_admin_context設定がリストされます。

2. プロンプトが表示されたら、LDAPユーザー・パスワードを入力します。

Please enter the LDAP password:

3. プロンプトが表示されたら、インタフェース接続情報を次の形式で入力します。

host:port:service_name:dip:password

DIPは、Oracle Label SecurityとともにインストールされるOracle Directory Integration and Provisioning (DIP)のアカウントです。このアカウントは、Oracle Internet Directory対応Oracle Label Securityのインストール・プロセスの一部として自動的に作成されます。

インタフェース接続情報がないことを指定するには、設定を省略し、[Return]を押します。

4. プロビジョニング・プロファイルの完成後に、DIPサーバーを再起動します。

セキュリティ・ロールと許可されるアクション

Oracle Label Securityでは、ディレクトリ対応OLSポリシー作成者に対する制限など、Oracle Internet Directoryの特定のタスクおよびアクセス・レベルを許可します。

内容は次のとおりです。

- Oracle Internet Directoryで許可されるタスクおよびアクセス・レベル

- Oracle Internet Directory対応Oracle Label Securityのポリシー作成者の制限

Oracle Internet Directoryで許可されるタスクおよびアクセス・レベル

Oracle Internet DirectoryでOracle Label Securityのポリシーを管理するために、ディレクトリ内で特定のエンティティにアクセス制御の権利が付与されます。

アクセス制御メカニズムはOracle Internet Directoryにより提供されます。

表7-3に、これらのエンティティと各エンティティが実行できるタスクの概要を示します。

表7-3 特定のエンティティが実行できるタスク

エンティティ

このエンティティが実行できるタスク

ポリシー作成者

新規ポリシーの作成(または既存のポリシーの削除)、新規ポリシー管理者の作成(または既存のポリシー管理者の削除)。

ポリシー管理者

ポリシーの場合: 既存のポリシー・オプションと監査設定の変更、ポリシー監査の有効化または無効化。

ラベル・コンポーネントの場合: フルネームまたは詳細名の変更、あるいは(グループの場合)子グループの作成または削除などによる、レベル、区分およびグループの作成、変更または削除。

エンタープライズ・ユーザーの場合: ポリシーからのエンタープライズ・ユーザーの削除、エンタープライズ・ユーザーの最大または最小レベル、読取り、書込みおよび行アクセス(区分またはグループの場合)、権限(ポリシーの場合)およびラベル・プロファイルの変更。

表7-4には、ポリシー作成者、ポリシー管理者およびLabel Securityユーザーについて、特定のアクセス・レベルで許可または禁止される操作を示します。

表7-4 OIDでユーザー別に許可されるアクセス・レベル

エントリ

ポリシー作成者

ポリシー管理者

データベース

cn=Policies

変更可能

アクセスなし

アクセスなし

cn=Admins, cn=Policy1

変更可能

アクセスなし

アクセスなし

uniqueMember: cn=Policy1

参照可能

参照可能

変更可能

cn=PolicyCreators

アクセスなし脚注1

アクセスなし

アクセスなし

cn=Levels, cn=Policy1

参照および削除可能

変更可能

アクセスなし

cn=Compartments, cn=Policy1

参照および削除可能

変更可能

アクセスなし

cn=Groups, cn=Policy1

参照および削除可能

変更可能

アクセスなし

cn=AuditOptions,cn=Policy1

参照および削除可能

変更可能

アクセスなし

cn=Profiles,cn=Policy1

参照および削除可能

変更可能

アクセスなし

cn=Labels,cn=Policy1

参照および削除可能

変更可能

アクセスなし

cn=DBServers

アクセスなし脚注2

アクセスなし

アクセスなし

脚注1

グループcn=OracleContextAdminsはグループcn=PolicyCreatorsの所有者であるため、cn=OracleContextAdminsのメンバーはcn=PolicyCreatorsを変更できます。

脚注2

グループcn=OracleDBCreatorsはグループcn=DBServersの所有者であるため、cn=OracleDBCreatorsのメンバーはcn=DBServersを変更できます。

Oracle Internet Directory対応Oracle Label Securityのポリシー作成者の制限

ポリシー作成者グループのメンバーが実行できるのは、Oracle Label Securityのポリシーの作成、参照および削除のみです。

このユーザーは、そのポリシーのPolicy Adminsグループに明示的に追加されていても、ラベル・コンポーネントの作成やユーザーの追加のようなポリシー管理タスクを実行できません。つまり、ポリシー作成者をポリシーの管理者にすることはできません。

OLSでOIDが有効化されている場合に置き換えられるPL/SQL文

Oracle Label SecurityでOracle Internet Directoryが有効化されている場合、置き換えられるプロシージャがいくつかあります。

これらのプロシージャの実行が許可されるのはユーザーLBACSYSのみです。

この表に示す一部のプロシージャについては、その機能が2列目に示すolsadmintoolコマンドに置き換えられます(「Oracle Label Securityリファレンス」を参照)。

表7-5 Oracle Internet Directoryの使用時にolsadmintoolで置き換えられるプロシージャ

無効化されるプロシージャ

代替olsadmintoolコマンド

SA_SYSDBA.CREATE_POLICY

olsadmintool createpolicy

SA_SYSDBA.ALTER_POLICY

olsadmintool alterpolicy

SA_SYSDBA.DROP_POLICY

olsadmintool droppolicy

SA_COMPONENTS.CREATE_LEVEL

olsadmintool createlevel

SA_COMPONENTS.ALTER_LEVEL

olsadmintool alterlevel

SA_COMPONENTS.DROP_LEVEL

olsadmintool droplevel

SA_COMPONENTS.CREATE_COMPARTMENT

olsadmintool createcompartment

SA_COMPONENTS.ALTER_COMPARTMENT

olsadmintool altercompartment

SA_COMPONENTS.DROP_COMPARTMENT

olsadmintool dropcompartment

SA_COMPONENTS.CREATE_GROUP

olsadmintool creategroup

SA_COMPONENTS.ALTER_GROUP

olsadmintool altergroup

SA_COMPONENTS.ALTER_GROUP_PARENT

olsadmintool altergroup

SA_COMPONENTS.DROP_GROUP

olsadmintool dropgroup

SA_USER_ADMIN.SET_LEVELS

なし

SA_USER_ADMIN.SET_COMPARTMENTS

なし

SA_USER_ADMIN.SET_GROUPS

なし

SA_USER_ADMIN.ADD_COMPARTMENTS

なし

SA_USER_ADMIN.ALTER_COMPARTMENTS

なし

SA_USER_ADMIN.DROP_COMPARTMENTS

なし

SA_USER_ADMIN.DROP_ALL_COMPARTMENTS

なし

SA_USER_ADMIN.ADD_GROUPS

なし

SA_USER_ADMIN.ALTER_GROUPS

なし

SA_USER_ADMIN.DROP_GROUPS

なし

SA_USER_ADMIN.DROP_ALL_GROUPS

なし

SA_USER_ADMIN.SET_USER_LABELS

olsadmintool createprofile; olsadmintool adduser; olsadmintool dropprofile; olsadmintool dropuser;

SA_USER_ADMIN.SET_DEFAULT_LABEL

なし

SA_USER_ADMIN.SET_ROW_LABEL

なし

SA_USER_ADMIN.DROP_USER_ACCESS

olsadmintool dropuser

SA_USER_ADMIN.SET_USER_PRIVS

olsadmintool createprofile; olsadmintool adduser; olsadmintool dropprofile; olsadmintool dropuser;

SA_AUDIT_ADMIN.AUDIT

olsadmintool audit

SA_AUDIT_ADMIN.NOAUDIT

olsadmintool noaudit

SA_AUDIT_ADMIN.AUDIT_LABEL

なし

SA_AUDIT_ADMIN.NOAUDIT_LABEL

なし

ポリシー管理者用のOracle Label Securityプロシージャ

SA_POLICY_ADMIN PL/SQLパッケージのいくつかのプロシージャを実行できるのは、ポリシー管理者(Oracle Internet Directoryで定義済のエンタープライズ・ユーザー)のみです。

これらのプロシージャは次のとおりです。

- SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY

- SA_POLICY_ADMIN.APPLY_TABLE_POLICY

- SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICY

- SA_POLICY_ADMIN.DISABLE_TABLE_POLICY

- SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICY

- SA_POLICY_ADMIN.ENABLE_TABLE_POLICY

- SA_POLICY_ADMIN.GRANT_PROG_PRIVS

- SA_POLICY_ADMIN.POLICY_SUBSCRIBE

- SA_POLICY_ADMIN.POLICY_UNSUBSCRIBE

- SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICY

- SA_POLICY_ADMIN.REMOVE_TABLE_POLICY

- SA_POLICY_ADMIN.SET_PROG_PRIVS

- SA_POLICY_ADMIN.REVOKE_PROG_PRIVS

第III部 Oracle Label Securityアプリケーションの管理

第III部では、Oracle Label Securityアプリケーションの管理方法について説明します。

- ポリシー施行オプションとラベル付けファンクションの実装

- トラステッド・ストアド・プログラム・ユニットの管理および使用

- Oracle Label Securityでの監査

- 分散データベースでのOracle Label Securityの使用

- Oracle Label SecurityでのDBAファンクションの実行

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

8 ポリシー施行オプションとラベル付けファンクションの実装

Oracle Label Security ポリシーの強制をカスタマイズし、ラベル付けファンクションを実装できます。

内容は次のとおりです。

- Oracle Label Securityのポリシー強制オプション

- ラベル付けファンクション

- ポリシー・オプションとラベル付けファンクションを使用したラベル付きデータの挿入

- ポリシー・オプションとラベル付けファンクションを使用したラベル付きデータの更新

- ポリシー・オプションとラベル付けファンクションを使用したラベル付きデータの削除

- Oracle Label SecurityのポリシーとSQL述語

Oracle Label Securityのポリシー強制オプション

Oracle Label Securityでは、一連のポリシー強制オプションを提供します。

内容は次のとおりです。

- ポリシー強制オプションについて

- ポリシー強制オプションのレベル

- ポリシー強制オプションのカテゴリ

- ポリシー強制オプションの関係

- HIDEポリシー列オプションの動作

- ラベル管理強制オプションの動作

- アクセス制御強制オプションの動作

- オーバーライド強制オプションの動作

- ポリシー施行オプションの使用時のガイドライン

- Oracle Label Securityのポリシー施行からの除外

ポリシー強制オプションについて

管理者は、Oracle Label Securityで使用可能なすべての施行制御オプションから、特定のアプリケーションのニーズを満たすオプションを選択する必要があります。

これは、公開、変更または誤用に対するデータの機密性レベルを識別することの他、この種のデータへのアクセスや変更が必要なユーザー、またはその権限を持つユーザーを識別することを意味します。ポリシー施行オプションを使用すると、管理者はユーザーがデータまたはラベルの読取りや書込みができるかどうかを詳細にチューニングできます。

ポリシー強制オプションのレベル

ポリシー、スキーマおよび表のポリシー強制のレベルを設定できます。

表8-1に、ポリシー強制オプションが機能できるレベルを示します。

表8-1 ポリシー施行オプションが有効な場合

オプションの設定レベル

このレベルで設定されたオプションがユーザー操作に影響する場合

ポリシー・レベル

... ポリシーが表またはスキーマに適用されている場合のみ

スキーマ・レベル

... ユーザーがこのスキーマで操作する場合

表レベル

... ユーザーがこの表で操作する場合

表またはスキーマにポリシーを適用する場合は、その表またはスキーマの使用を制限する施行オプションを指定できます。適用時に施行オプションを指定しなければ、そのポリシーの作成時に指定したデフォルトの施行オプションが自動的に使用されます。

これらのオプションにより、ポリシーの強制はREADアクセス、WRITEアクセスおよびラベル変更に関するセキュリティ要件に合せてカスタマイズされます。また、ラベル列を表示するか非表示にするかも指定できます。保護されている表については、必要なポリシー・オプションのみを指定して一部またはすべてを施行するように選択できます。

オプションで、各表にラベル付けファンクションを割り当てることができます。これにより、その表で挿入または更新される行のラベルが決まります。オプションで、表のSQL述語を指定して、ラベルに基づいてユーザーがアクセス可能な行を制御できます。

関連項目:

- SA_POLICY_ADMIN.APPLY_TABLE_POLICY

- SA_SYSDBA.CREATE_POLICY

- ラベル付けファンクション

- Oracle Label SecurityのポリシーとSQL述語

Oracle Label Securityのポリシー施行オプションを適用すると、表示、挿入、更新または削除のためにアクセスできる行が制御されます。

ポリシー強制オプションのカテゴリ

Oracle Label Securityでは、3つのカテゴリ(ラベル管理オプション、アクセス制御オプションおよびオーバーライド・オプション)を使用して、ポリシーを強制します。

表8-2に、ポリシー強制オプションのカテゴリを示します。

- ラベル管理オプションは、挿入または更新される行に書き込まれるデータ・ラベルが、そのラベルに対して設定されているポリシーに違反しないことを保証します

- アクセス制御オプションは、SELECT、UPDATE、INSERTまたはDELETE操作で、ラベルが設定済ポリシーを満たしている行のみにアクセスできることを保証します。

- オーバーライド・オプションは、他のすべての強制オプションを一時停止または適用できます。

表8-2 ポリシー施行オプション

施行のタイプ

オプション

説明

ラベル管理強制オプションの動作

LABEL_DEFAULT

ユーザーがINSERT時にラベルを明示的に指定しないかぎり、セッションのデフォルトの行ラベル値が使用されます。

-

LABEL_UPDATE

ポリシーの強制は、行に連結されたラベルの値を設定または変更するUPDATE操作に適用されます。WRITEUP、WRITEDOWNおよびWRITEACROSS権限は、LABEL_UPDATEオプションがアクティブの場合にのみ強制されます。

-

CHECK_CONTROL

新規の行ラベルが読取りアクセス可能になるように、INSERTおよびUPDATE文にREAD_CONTROLポリシーの強制を適用します。

アクセス制御強制オプションの動作

READ_CONTROL

すべての問合せにポリシーの施行を適用します。SELECT、UPDATEおよびDELETE操作のためにアクセスできるのは、認可された行のみになります。「INSERT_CONTROL、UPDATE_CONTROLおよびDELETE_CONTROL」を参照してください。

-

WRITE_CONTROL

行のデータをINSERT、UPDATEおよびDELETEできるかどうかを決定します。このオプションがアクティブな場合は、INSERT_CONTROL、UPDATE_CONTROLおよびDELETE_CONTROLが強制されます。

-

INSERT_CONTROL

「Oracle Label Securityの読取りアクセス・アルゴリズムの動作」の図に示した書込みアクセスのアルゴリズムに従って、INSERT操作にポリシーの強制を適用します。

-

DELETE_CONTROL

「Oracle Label Securityの読取りアクセス・アルゴリズムの動作」の図に示した書込みアクセスのアルゴリズムに従って、DELETE操作にポリシーの強制を適用します。

-

UPDATE_CONTROL

「Oracle Label Securityの読取りアクセス・アルゴリズムの動作」の図に示した書込みアクセスのアルゴリズムに従って、行内のデータ列に対するUPDATE操作にポリシーの強制を適用します。

オーバーライド強制オプションの動作

ALL_CONTROL

すべての施行オプションを適用します。

-

NO_CONTROL

施行オプションを適用しません。ただし、ラベル付けファンクションやSQL述語は適用できます。

Oracle Label Securityが表に適用される場合でも、一部のDML操作は適用されるポリシーの対象ではない場合があることに注意してください。管理者が設定するポリシー強制オプションにより、SQL処理動作と、保護された表に対する問合せに対して認可済ユーザーが実際に参照できる内容の両方が決まります。特に注記がないかぎり、この章ではALL_CONTROLがアクティブであり、すべての強制オプションが有効であることを想定します。ユーザーが認可されていない操作を実行しようとすると、エラー・メッセージが表示され、SQL文が失敗します。

Oracle Label Securityのポリシーの設計と実装で有効に使用するには、これらのポリシー施行オプションの相互関係と各オプションで制御されるSQL文を理解しておくことが重要です。

関連項目:

INVERSE_GROUP強制を指定したインバース・グループの実装

ポリシー強制オプションの関係

Oracle Label Securityには、一連のポリシー強制オプションがあります。

表8-3で、ポリシー強制オプション間の関係を説明します。

表8-3 ポリシー施行オプションの制御対象

ポリシーで指定するオプション

制御されるSQL操作

使用する条件とその効果

READ_CONTROL

SELECT、UPDATEおよびDELETE

認可された行(*)にのみアクセスできます。

WRITE_CONTROL

INSERT、UPDATEおよびDELETE

(a) 認可された行(**)にのみアクセスできます。

(b) LABEL_UPDATEがアクティブでないかぎり、データ・ラベルは書込み可能です。

WRITE_CONTROL (INSERT_CONTROL、UPDATE_CONTROLおよびDELETE_CONTROLに必要)

-

-

INSERT_CONTROL

INSERT

-

UPDATE_CONTROL

UPDATE

-

DELETE_CONTROL

DELETE

-

CHECK_CONTROL

-

新規の行ラベルが読取りアクセス可能になるように、INSERTおよびUPDATE文にREAD_CONTROLポリシーの強制を適用します。

アクセス制御強制オプションの動作

-

すべての問合せにポリシーの施行を適用します。操作のためにアクセスできるのは、認可された行のみになります。

INSERT_CONTROL

INSERT_CONTROL

「Oracle Label Security監査の有効化または無効化方法」の図に示した書込みアクセスのアルゴリズムに従って、INSERT操作にポリシーの強制を適用します。

DELETE_CONTROL

DELETE_CONTROL

「Oracle Label Security監査の有効化または無効化方法」の図に示した書込みアクセスのアルゴリズムに従って、DELETE操作にポリシーの強制を適用します。

UPDATE_CONTROL

UPDATE_CONTROL

「Oracle Label Security監査の有効化または無効化方法」の図に示した書込みアクセスのアルゴリズムに従って、行内のデータ列に対するUPDATE操作にポリシーの強制を適用します。

オーバーライド強制オプションの動作

ALL_CONTROL

すべての施行オプションを適用します。

NO_CONTROL

NO_CONTROL

施行オプションを適用しません。ただし、ラベル付けファンクションやSQL述語は適用できます。

(*) 次の3つの条件がすべて満たされている場合は、行に対するREADアクセスが認可されます(ユーザーの最小レベル) < = (データ行のレベル) < = (セッション・レベル)であること。(いずれかのデータ・グループ)が(いずれかのユーザー・グループまたは子グループ)の子であること。(すべてのデータ区分)が(ユーザーのデータ区分)にも含まれていること。「Oracle Label Securityの読取りアクセス・アルゴリズムの動作」の図を参照してください

(**) 次の3つの条件がすべて満たされている場合は、行に対するREADアクセスが認可されます(ユーザーの最小レベル) < = (データ行のレベル) < = (セッション・レベル)であること。(いずれかのデータ・グループ)が(いずれかのユーザー・グループまたは子グループ)の子であること。(すべてのデータ区分)が(ユーザーのデータ区分)にも含まれていること。「Oracle Label Securityの読取りアクセス・アルゴリズムの動作」の図を参照してください。

HIDEポリシー列オプションの動作

Oracle Label Securityポリシー列を表に追加する際に、HIDEポリシー構成オプションを指定できます。

このようにすると、ポリシーのラベルを含む列は表示されません。

ポリシーを適用した後は、DROP_COLUMNパラメータをTRUEに設定してそのポリシーを削除しないかぎり、列の非表示(または表示)ステータスは変更できません。その後は、ポリシーを新規の非表示ステータスで再適用できます。

INSERT文の場合、非表示のラベル列の値は、全列挿入には不要です。

SELECT文では、非表示のラベル列の値が自動的に戻されることはありません。この種の値は明示的に取得する必要があります。

表に対するDESCRIBEでは、ラベル列を表示できる場合と表示できない場合があります。管理者がHIDEオプションを設定すると、ラベル列は表示されなくなります。ポリシーにHIDEが指定されていない場合は、SELECTへの応答時にラベル列が表示されます。

関連項目:

- SA_POLICY_ADMIN.APPLY_TABLE_POLICY

- ポリシーのラベル列が非表示に設定されている場合の表からのすべての列の取出し

ラベル管理強制オプションの動作

行の挿入または更新時に書き込まれるデータ・ラベルは、3つのラベル施行オプションにより制御されます。

表またはスキーマに適用されるポリシーでこれらのオプションが指定されていると、各オプションはこの項で説明される場合に適用されます。

行を挿入するユーザーは、各自のラベル認可の範囲内で任意のデータ・ラベルを指定できます。ユーザーが書き込む行のラベルを指定しない場合、LABEL_DEFAULTにより指定されます。更新はLABEL_UPDATEにより制限できます。ラベル付けファンクションを使用する挿入または更新では、データ・ラベルがユーザーの認証の範囲外に割り当てられるのを防止するため、CHECK_CONTROLが必要です。この種のラベルがあると、書き込んだ行にアクセスするのを防ぎ、データを不適切に使用可能にしてしまう可能性があります。

これらのオプションは、表に対して有効になっているラベル付けファンクションによりオーバーライドされます。ファンクション名は、表にポリシーを適用するコールで指定できます。管理者がポリシーの適用時にラベル付けファンクションに名前を指定しても、そのポリシーを無効化または削除すると、ファンクションは適用されなくなります。

関連項目:

SA_SYSDBA.DISABLE_POLICY

LABEL_DEFAULT: セッションのデフォルト行ラベルの使用

更新後の行には元のラベルが使用されるため、ラベル値を指定せずに行を更新できます。

ただし、ラベル付けファンクションが有効であるか、表にLABEL_DEFAULTが適用されていないかぎり、新規の行を挿入するには有効なラベルを指定する必要があります。LABEL_DEFAULTが設定されている場合は、ユーザーのセッションのデフォルト行ラベルが新規行ラベルとして使用されます。

LABEL_DEFAULTもラベル付けファンクションも有効でない場合に行のINSERTを試みると、エラーが発生します。

ラベル付けファンクションが表に対して有効になっている場合は、LABEL_DEFAULTオプションがオーバーライドされることに注意してください。

LABEL_UPDATE: データ・ラベルの変更

行を更新するユーザーは、通常、そのラベルを各自が認可されているラベル範囲内で変更できます。

ただし、LABEL_UPDATEが適用される場合、ラベルを変更するには、ユーザーに権限WRITEUP、WRITEDOWNおよびWRITEACROSSの1つ以上が必要です。

LABEL_UPDATEオプションでは、ラベルに影響する更新操作でのみ呼び出されるOracle AFTER行トリガーを使用します。ラベル付けファンクションが表に対して有効になっている場合は、LABEL_UPDATEオプションがオーバーライドされることに注意してください。

関連項目:

特殊な行ラベル権限

CHECK_CONTROL: データ・ラベルのチェック

挿入または更新される行がラベル付けファンクションからラベルを取得する場合、そのラベルはユーザーの認証の範囲外になります。

これにより、このユーザーは、行の読取りや更新ができなくなります。この問題を回避するには、CHECK_CONTROL設定を使用して、READ_CONTROLを新規ラベルに適用できるようにします。これにより、このユーザーが操作後も挿入または更新された行の読取りを認可されることが保証されます。設定されていない場合は、INSERTまたはUPDATE操作が取り消され、無効になります。

つまり、行に強制されているポリシーにオプションとしてCHECK_CONTROLが含まれている場合、その行を変更するユーザーは操作後も引き続き行にアクセスできる必要があります。CHECK_CONTROLがあると、ユーザーまたはラベル付けファンクションは、ユーザーがアクセスを禁止されているレベル、グループまたは区分を含めるために行ラベルを変更できなくなります。

CHECK_CONTROLにより、表に対して有効になっているラベル付けファンクションがオーバーライドされることに注意してください。

アクセス制御強制オプションの動作

アクセス制御オプションは、SELECT、UPDATE、INSERTまたはDELETE操作のためにアクセスできる行を、ラベルが設定済のポリシーを満たしている行のみに制限します。

内容は次のとおりです。

- READ_CONTROL: データの読取り

- WRITE_CONTROL: データの書込み

- INSERT_CONTROL、UPDATE_CONTROLおよびDELETE_CONTROL

READ_CONTROL: データの読取り

READ_CONTROLにより、SELECT、UPDATEおよびDELETE操作のためにセッションでアクセスできるレコードのセットが制限されます。

READ_CONTROLがアクティブでない場合は、ポリシーで保護されている表の行にもすべてのユーザーがアクセスできます。

READ_CONTROLでは、図3-6のように、Oracleの仮想プライベート・データベース(VPD)テクノロジを使用して、読取りアクセス調整アルゴリズムが強制されます。

WRITE_CONTROL: データの書込み

WRITE_CONTROLオプションを指定してOracle Label Securityのポリシーを表に適用すると、トリガーが生成されてアルゴリズムが強制されます。

WRITE_CONTROLでは、図3-7のように、OracleのAFTER行トリガーを使用して、書込みアクセス調整アルゴリズムが強制されます。

注意:

WRITE_CONTROLの保護の実装は、どの書込み操作の場合も同じですが、すべての書込みオプションを全体に適用する必要はありません。WRITE_CONTROLのかわりに対応するポリシー強制オプション(INSERT_CONTROL、UPDATE_CONTROLおよびDELETE_CONTROL)を使用すると、WRITE_CONTROLをINSERT、UPDATEおよびDELETE操作に選択的に適用できます。

WRITE_CONTROLをオンにしても、LABEL_UPDATEを指定しなければ、ユーザーはデータとラベルの両方を変更できます。行ラベルの更新を制御する必要がある場合は、ポリシーの作成時にWRITE_CONTROLのみでなくLABEL_UPDATEオプションも指定してください。

INSERT_CONTROL、UPDATE_CONTROLおよびDELETE_CONTROL

INSERT_CONTROL、UPDATE_CONTROLおよびDELETE_CONTROLオプションは、行内のデータ列での対応する操作中にポリシー強制を制御します。

これらのオプションは、図3-7に示した書込みアクセスのアルゴリズムに従って適用されます。

WRITE_CONTROLを指定すると、すべてのINSERT、UPDATEおよびDELETE操作が制限されます。ただし、次の例外があります。

- INSERT_CONTROLを指定すると、INSERTは制限されますが、UPDATEやDELETEは制限されません。

- UPDATE_CONTROLを指定すると、UPDATEは制限されますが、INSERTやDELETEは制限されません。

- DELETE_CONTROLを指定すると、DELETEは制限されますが、INSERTやUPDATEは制限されません。

関連項目:

- 挿入については、「ポリシー・オプションとラベル付けファンクションを使用したラベル付きデータの挿入」を参照してください

- 更新については、「ポリシー・オプションとラベル付けファンクションを使用したラベル付きデータの更新」を参照してください

- 削除については、「ポリシー・オプションとラベル付けファンクションを使用したラベル付きデータの削除」を参照してください

オーバーライド強制オプションの動作

ALL_CONTROLではすべてのラベル管理およびアクセス制御強制オプションが適用されますが、NO_CONTROLではどちらも適用されません。

どちらの場合も、ラベル付けファンクションとSQL述語は適用できます。ALL_CONTROLオプションはコマンドラインでのみ使用できることに注意してください。NO_CONTROLを指定してポリシーを適用すると、表にポリシーのラベル列が追加されますが、ラベル値はNULLになります。アクセス制御は表には機能しないため、必要に応じてラベルの入力に進むことができます。その後、必要なポリシー強制オプションを設定できます。NO_CONTROLオプションは、データに適切にラベル付けするラベル付けファンクションが有効になっているが、ユーザー全員がすべてのデータにアクセスできるようにする必要がある場合に役立ちます。

ポリシー施行オプションの使用時のガイドライン

Oracle Enterprise Managerによって、スキーマまたは表のポリシー強制をカスタマイズできます。

この機能は、「Oracle Label Securityポリシーの作成」で説明されています。また、「SA_POLICY_ADMINポリシー管理PL/SQLパッケージ」で説明されているSA_POLICY_ADMINパッケージを使用することもできます。

この項では、サポートされるキーワードについて説明します。

ポリシーの作成時にデフォルト・オプションの文字列を指定すると、スキーマまたは表オプションが指定されていないポリシーの適用時に使用できることに注意してください。

表にポリシーを適用してから、その表を含むスキーマに適用しても、表に対するオプションはスキーマ・ポリシーの影響を受けません。表に最初に適用されたポリシーのオプションが引き続き有効となります。

一般に、管理者はLABEL_DEFAULTポリシー・オプションを使用します。これにより、ユーザーによって書き込まれたデータは、そのユーザーの行ラベルでラベル付けされます。または、ラベル付けファンクションを使用してデータにラベル付けできます。この2つの選択肢のいずれも使用されていない場合、ラベルをすべてのINSERT文で指定する必要があります。(更新では行の元のラベルが保持されます。)

次の表に、Oracle Label Securityのポリシーを実装する場合に役立つポリシー施行オプションの組合せを示します。この表のように、通常はREAD_CONTROLおよびWRITE_CONTROLを強制し、複数の可能な組合せの中から選択して書込み時のデータ・ラベルを設定します。

表8-4 ポリシー施行オプションの組合せ案

オプション

アクセス施行

READ_CONTROL、WRITE_CONTROL、LABEL_DEFAULT

セッション・ラベルに基づく読取りアクセスと書込みアクセス。デフォルト・ラベルを指定すると、ユーザーはデータとラベルの両方を挿入/更新できます。

READ_CONTROL、WRITE_CONTROL、ラベル付けファンクション

セッション・ラベルに基づく読取りアクセスと書込みアクセス。ユーザーは、行データのみ設定/変更できます。すべての行ラベルは、ラベル付けファンクションによって明示的に設定されます。

新規ラベル(挿入または更新時)を参照可能なラベルの範囲に限定するには、CHECK_CONTROLを追加します。

READ_CONTROL、WRITE_CONTROL、LABEL_UPDATE

セッション・ラベルに基づく読取りアクセスと書込みアクセス。ユーザーは権限が付与されていないラベルは変更できません。

新規ラベル(挿入または更新時)を参照可能な範囲に限定するには、CHECK_CONTROLを追加します。

関連項目:

- 認可レベル

- Oracle Enterprise Manager Cloud Control

Oracle Label Securityのポリシー施行からの除外

Oracle Label Securityには、OLSポリシー強制の例外がいくつかあります。

これらの除外は次のとおりです。

- Oracle Label Securityは、DIRECTパス・エクスポート中には強制されません。

- 設計上、Oracle Label SecurityのポリシーはスキーマSYS内のオブジェクトには適用できません。したがって、SYSユーザーとDBA権限でデータベースに接続するユーザー(CONNECT AS SYSDBAなど)によるアクションには、Oracle Label Securityのポリシーは適用されません。DBAは、データベースを管理できる必要があります。Oracle Label Securityのポリシーが適用されているため、表の一部のエクスポートなどを行っても意味がありません。そのため、データベース・ユーザーSYSは、エクスポート・モード、つまりデータベースからのデータ抽出にアプリケーションを使用するかユーティリティを使用するかに関係なく、Oracle Label Securityの強制から常に除外されます。

- 同様に、直接またはデータベース・ロールを通じてEXEMPT ACCESS POLICY権限を付与されたデータベース・ユーザーは、データベースへのアクセスやそのデータの更新に使用されるエクスポート・モード、アプリケーションまたはユーティリティにかかわらず、READ_CONTROLやCHECK_CONTROLなどの一部のOracle Label Securityポリシーの強制制御から除外されます。「ポリシー強制オプションのカテゴリ」を参照してください。次のポリシー強制オプションは、EXEMPT ACCESS POLICYが付与されている場合も有効です。

- INSERT_CONTROL、UPDATE_CONTROL、DELETE_CONTROL、WRITE_CONTROL、LABEL_UPDATEおよびLABEL_DEFAULT。

- Oracle Label SecurityのポリシーにALL_CONTROLオプションを指定した場合は、READ_CONTROLおよびCHECK_CONTROL以外のすべてが規定の対象として適用されます。

EXEMPT ACCESS POLICYはきわめて強力な権限であり、慎重に管理する必要があります。

この権限は、SELECT、INSERT、UPDATE、DELETEなどの標準のOracle Databaseオブジェクト権限の強制に影響しません。これらの権限は、ユーザーにEXEMPT ACCESS POLICY権限が付与されている場合も強制されます。

関連項目:

- Oracle Label SecurityでのOracle Data Pumpエクスポートの使用

- その他のDBA関連のファンクションについては、「Oracle Label SecurityでのDBAファンクションの実行」を参照してください

表およびスキーマに対するポリシー・オプションを表示するデータ・ディクショナリ・ビュー

Oracle Label Securityでは、表およびスキーマに現在適用されているポリシー強制オプションを説明するデータ・ディクショナリ・ビューが提供されます。

- DBA_SA_TABLE_POLICIES

- DBA_SA_SCHEMA_POLICIES

ラベル付けファンクション

ラベル付けファンクションでは、コンテキスト変数(日付やユーザー名)およびデータ値などのリソースを使用し、ラベルを計算して戻すことができます。

内容は次のとおりです。

- Oracle Label Securityでのデータ行のラベル付け

- Oracle Label Securityのポリシーでのラベル付けファンクションの動作

- ポリシー用のラベル付けファンクションの作成

- ポリシーでのラベル付けファンクションの指定

Oracle Label Securityでのデータ行のラベル付け

挿入または更新対象のデータにラベルを付けるには、次の3つの方法があります。

- 表へのINSERTまたはUPDATEごとにラベルを明示的に指定できます。

- LABEL_DEFAULTオプションを設定できます。これにより、INSERT文またはUPDATE文に明示的な行ラベルが含まれていない場合は、セッションの行ラベルが使用されます。

- ラベル付けファンクションを作成できます。これは、INSERT文またはUPDATE文ごとに、ユーザーの認証から独立して自動的にコールされます。

データのラベル付けルールを実装できるように、ラベル付けファンクションを作成するアプローチをお薦めします。ラベル付けファンクションを指定すると、Oracle Label Securityでは、ラベルが計算されるように、そのファンクションのコールがINSERTおよびUPDATEトリガーに埋め込まれます。

たとえば、ラベル付けファンクションmy_labelを作成し、新規行のうちCOL1およびCOL2の内容を使用し、行に適切なラベルを計算して戻します。これにより、INSERTまたはUPDATE文に次の参照を挿入できます。

my_label(:new.col1,:new.col2)

ラベル付けファンクションを指定しない場合は、LABEL_DEFAULTオプションを指定します。そうでない場合は、各INSERT文またはUPDATE文でラベルを明示的に指定する必要があります。

Oracle Label Securityのポリシーでのラベル付けファンクションの動作

ラベル付けファンクションを使用すると、アプリケーション・コンテキストから得られる情報をラベル割当てルールで考慮できます。

たとえば、ユーザーが連結されているIPアドレスをラベル付けの考慮点として使用できます。この方法では、様々な場合にSYS_CONTEXTを使用できます。

注意:

SQL文が無効な場合は、表またはポリシーにラベル付けファンクションを適用するとエラーが発生します。表に使用する前に、ラベル付けファンクションを詳細にテストする必要があります。

ラベル付けファンクションにより、LABEL_DEFAULTおよびLABEL_UPDATEオプションがオーバーライドされます。

ラベル付けファンクションは、BEFORE行トリガーのコンテキスト内でコールされます。これにより、データ・レコードの新旧の値と新旧のラベルを渡すことができます。

ラベル付けファンクションは、ユーザーが明示的なラベルを渡すことができるように構成できます。

すべてのラベル付けファンクションは、戻り値の型をLBACSYS.LBAC_LABELデータ型にする必要があります。TO_LBAC_DATA_LABELファンクションを使用すると、ラベルを文字列書式からLBACSYS.LBAC_LABELデータ型に変換できます。LBACSYSには、ラベル付けファンクションに対するEXECUTE権限が必要であることに注意してください。ラベル付けファンクションの所有者は、GRANTオプションでTO_LBAC_DATA_LABELファンクションに対するEXECUTE権限を付与されている必要があります。

注意:

LBACSYSは、Oracle Label Securityに不透明型を提供する一意のスキーマです。詳細は、「Oracle Label SecurityでのDBAファンクションの実行」を参照してください。

ポリシー用のラベル付けファンクションの作成

CREATE OR REPLACE FUNCTION SQL文を使用して、ラベル付けファンクションを作成できます。

- CREATE OR REPLACE FUNCTION文を使用してポリシーのラベル付けファンクションを作成するには、戻り値をLBACSYS.LBAC_LABELに設定します。

次に例を示します。

CREATE OR REPLACE FUNCTION sa_demo.gen_emp_label
(Job varchar2,
Deptno number,
Total_sal number)
Return LBACSYS.LBAC_LABEL
as
i_label varchar2(80);
Begin
/************* Determine Class Level *************/
if total_sal > 2000 then
i_label := 'L3:';
elsif total_sal > 1000 then
i_label := 'L2:';
else
i_label := 'L1:';
end if;

/************* Determine Compartment *************/
IF Job in ('MANAGER','PRESIDENT') then
i_label := i_label||'M:';
else
i_label := i_label||'E:';
end if;
/************* Determine Groups *************/
i_label := i_label||'D'||to_char(deptno);
return TO_LBAC_DATA_LABEL('human_resources',i_label);
End;
/

注意:

Oracle Label SecurityがOracle Internet Directoryで直接動作するように構成されている場合、ラベルはOracle Internet Directoryでolsadmintoolコマンドを使用して集中管理されるため、動的ラベル生成は無効になります。「Oracle Internet Directoryを使用したLabel Security用コマンドライン・ツール」を参照してください。このため、ラベル・ファンクションがOracle Internet Directoryでまだ設定されていない文字列値を使用してデータ・ラベルを生成する場合は、エラー・メッセージが表示されます。

ポリシーでのラベル付けファンクションの指定

SA_POLICY_ADMINパッケージを使用して、ラベル付けファンクションを指定できます。

- SA_POLICY_ADMIN.REMOVE_TABLE_POLICYおよびSA_POLICY_ADMIN.APPLY_TABLE_POLICYを使用して、ラベル付けファンクションを指定します。

次に例を示します。

SA_POLICY_ADMIN.REMOVE_TABLE_POLICY('human_resources','sa_demo','emp');

SA_POLICY_ADMIN.APPLY_TABLE_POLICY(
POLICY_NAME     => 'human_resources',
SCHEMA_NAME     => 'sa_demo',
TABLE_NAME      => 'emp',
TABLE_OPTIONS   => 'READ_CONTROL,WRITE_CONTROL,CHECK_CONTROL',
LABEL_FUNCTION  => 'sa_demo.gen_emp_label(:new.job,:new.deptno,:new.sal)',
PREDICATE       => NULL);

ポリシー・オプションとラベル付けファンクションを使用したラベル付きデータの挿入

強制オプションとラベル付けファンクションがラベル付きデータの挿入に与える影響について理解するのは重要なことです。

内容は次のとおりです。

- 認可に基づいたデータの挿入または更新操作の結果

- ラベル付けファンクションが指定されている場合のラベルの挿入

- 宣言参照整合性を指定した表の子行の挿入

認可に基づいたデータの挿入または更新操作の結果

認可に基づいてデータの挿入または更新を試みた場合、その結果はアクティブになっているポリシー施行制御に応じて異なります。

- INSERT_CONTROLがアクティブな場合、挿入できるのは書込み認可の範囲内でラベルが付いている行のみです。読み取れるが書込み認可が与えられていないデータの更新を試みると、エラーが発生します。たとえば、区分AおよびBを読み取ることができても、書き込めるのが区分Aのみであれば、区分Bを指定してデータの挿入を試みると文は失敗します。

- INSERT_CONTROLがアクティブでない場合は、挿入する行で任意の有効なラベルを使用できます。

- CHECK_CONTROLオプションがアクティブな場合は、ラベルがラベル付けファンクションにより生成される場合も、挿入できるのは読取りが認可されているラベル付きの行のみです。

ラベル付けファンクションが指定されている場合のラベルの挿入

ラベル付けファンクションは、ユーザーが入力するラベルより優先されます。

管理者が自動ラベル付けファンクションを設定している場合、ユーザーが入力したデータ・ラベルは無効です(ラベル付けファンクション自体でユーザーが提案したラベルを使用する以外)。新規の行ラベルは、常にアクティブなラベル付けファンクション(存在する場合)により決定されます。

ラベル付けファンクションでは、挿入する行のラベルを、その行を書き込むユーザーが表示できる範囲外の値に設定できることに注意してください。このようなファンクションが使用されている場合、ユーザーは行を挿入できますが、その行の表示は認可されません。この状況は、ポリシーにCHECK_CONTROLオプションを指定することで防止できます。このオプションがアクティブな場合、新規のデータ・ラベルはユーザーの読取り認可と比較チェックされ、読取り認可がなければユーザーは挿入を実行できません。

宣言参照整合性を指定した表の子行の挿入

宣言参照整合性が親表を保護する場合、子行が挿入される前に、親行を表示可能にする必要があります。

ユーザーは、挿入操作を成功させるには親行を参照できる必要があります。つまり、ユーザーには親行に対する読取りアクセス権が必要です。

親表に対するREAD_CONTROLがアクティブになっている場合、ユーザーには親行に対するSELECT操作を認可できるだけの読取り認可が必要です。たとえば、部門20を読み取ることができないユーザーは、部門20の子行を挿入できません。ユーザーが表またはスキーマに対するFULLまたはREAD権限を持っている場合は、すべてのレコードが参照可能になることに注意してください。

ポリシー・オプションとラベル付けファンクションを使用したラベル付きデータの更新

ユーザーは、Oracle Label Securityで保護されている行を変更する認可を受けている必要があります。

内容は次のとおりです。

- CHAR_TO_LABELを使用したラベルの更新

- 強制制御オプションとUPDATEの評価

- ラベル付けファンクションが指定されている場合のラベルへの更新

- 宣言参照整合性が有効になっている表の子行への更新

CHAR_TO_LABELを使用したラベルの更新

行ラベルをSENSITIVEからCONFIDENTIALに変更するには、CHAR_TO_LABELファンクションを使用してラベルを変更します。

- 行ラベルを変更するには、UPDATE SQL文を使用します。

次に例を示します。

UPDATE emp
SET hr_label = char_to_label ('HR', 'CONFIDENTIAL')
WHERE ename = 'ESTANTON';

強制制御オプションとUPDATEの評価

認可に基づいてデータの更新を試みた場合、その結果はアクティブになっている強制制御に応じて異なります。

- UPDATE_CONTROLがアクティブな場合、更新できるのは書込み認可の範囲内のラベルが付いている行のみです。読取りはできても書込みの認可が与えられていないデータを更新しようとすると、エラーが発生します。たとえば、区分AおよびBを読み取ることができても、書き込めるのは区分Aのみであるとします。この場合、区分Bを指定してデータの更新を試みると、文は失敗します。

- UPDATE_CONTROLがアクティブでない場合は、読取りアクセス権を持っているすべての行を更新できます。

- LABEL_UPDATEがアクティブな場合、機密性レベルの上げ下げ、あるいはグループまたは区分の変更によってラベルを変更するには、適切な権限(WRITEUP、WRITEDOWNまたはWRITEACROSS)が必要です。

- LABEL_UPDATEがアクティブでなく、UPDATE_CONTROLがアクティブである場合は、書込み認可の範囲内の新しいラベル値にラベルを更新できます。

- CHECK_CONTROLがアクティブな場合、書き込めるのは、読取り認可を受けているラベルのみです。

次の図に、LABEL_UPDATEのラベル評価プロセスを示します。

図8-1 LABEL_UPDATEのラベル評価プロセス

ラベル付けファンクションが指定されている場合のラベルへの更新

ラベル付けファンクションは、ユーザーが入力するラベルより優先されます。

管理者が自動ラベル付けファンクションを設定している場合、ユーザーが入力したラベルは無効です(ラベル付けファンクション自体でユーザーが提案したラベルを使用する以外)。新規の行ラベルは、常にアクティブなラベル付けファンクション(存在する場合)により決定されます。

セキュリティ管理者は、更新する行のラベルをユーザーが表示できる範囲外の値に設定するように、ラベル付けファンクションを設定できることに注意してください。この場合、ユーザーは行を更新できますが、その行の表示を認可されません。CHECK_CONTROLオプションがオンに設定されている場合、このような更新は実行できません。CHECK_CONTROLオプションでは、新規ラベルに対する読取り認可が検証されます。

宣言参照整合性が有効になっている表の子行への更新

参照整合性制約が有効になっている表に子行がある場合、更新を成功させるには、親行を表示可能にする必要があります。

つまり、このユーザーは親行を参照できる必要があります。

親表のREAD_CONTROLがオンになっている場合、ユーザーは、親行に対するSELECTが認可されるだけの読取り認可を持っている必要があります。

たとえば、親表の部門20を読み取ることができないユーザーは、従業員の部門を子表で部門20に更新することはできません。(ユーザーがFULLまたはREAD権限を持っている場合は、すべてのレコードが参照可能です。)

関連項目:

Oracle Database開発ガイド

ポリシー・オプションとラベル付けファンクションを使用したラベル付きデータの削除

ラベル付きデータは削除できます。

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

- DELETE_CONTROLがアクティブな場合、削除できるのは書込み認可の範囲内の行のみです。

- DELETE_CONTROLがアクティブでない場合、削除できるのは読取り可能な行のみです。

- DELETE_CONTROLがアクティブで、宣言参照整合性がカスケード削除で定義されている場合は、削除するすべての行に対する書込み認可が必要で、認可がない場合は文が失敗します。

子行が連結されている親行は、書込み認可に関係なく削除できません。この種の親行を削除するには、先に子行をそれぞれ削除する必要があります。DELETE_CONTROLがアクティブになっている子行が1つでもある場合、子行を削除するには書込み認可が必要です。

たとえば、ユーザーがUNCLASSIFIEDで、次の3行がある場合を考えます。

行

表

機密性

親行:

DEPT

UNCLASSIFIED

子行:

EMP

UNCLASSIFIED

子行:

EMP

UNCLASSIFIED

この場合、UNCLASSIFIEDユーザーは親行を削除できません。

DELETERESTRICTがアクティブな場合、DELETE_CONTROLは無効です。DELETERESTRICTは常に強制されます。ユーザーの認証とデータのラベルによっては、行に子行がないように見えるのに、実際には子行があり、ユーザーはそれを参照できない場合があります。子行を参照できなくても、そのユーザーは親行を削除できません。

Oracle Label SecurityのポリシーとSQL述語

SQL述語を使用すると拡張性が得られ、データ・アクセス・ルールを選択的に施行できます。

内容は次のとおりです。

- SQL述語を使用したOracle Label Securityポリシーへの変更

- 複数のSQL述語のOracle Label Securityポリシーへの影響

SQL述語を使用したOracle Label Securityポリシーへの変更

SQL述語は、オプションのANDまたはORで始まる条件です。

SQL述語は、READ_CONTROLアクセス調整用に追加できます。たとえば、次の述語は、COL1に基づくアプリケーション固有のテストを追加して、セッションにその行へのアクセス権があるかどうかを判断します。

AND my_function(col1)=1

ポリシーとユーザー指定の述語を組み合せた結果により、ユーザーが読み取れるラベルが制限されます。したがって、この組合せはCHECK_CONTROLによりユーザーが変更を許可されるラベルとデータに影響することになります。たとえば、OR句を使用すると、ユーザーが読み取れる行数が増えます。

SQL述語が役立つのは、ラベルベースのフィルタリングの実行を回避する必要がある場合です。ある種の状況では、SQL述語を使用すると表に行レベルのセキュリティを簡単に実装できます。SQL述語をREAD_CONTROLのかわりに使用すると、SELECT、UPDATEおよびDELETE操作の対象データにフィルタが適用されます。

同様に、通常、Web対応の人事管理アプリケーションでは、従業員表の行にアクセスするユーザーはマネージャであることが必要です。このような場合、ユーザー・ラベルは従業員の行のラベルを支配する必要があります。次のようなSQL述語を追加すると、従業員は従業員表内で各自のレコードを表示する必要がある場合に、ラベルベースのフィルタリングをバイパスできます。(ORは、ラベル・ポリシーが適用されるか、またはこの文が適用されるようにするために使用されます。)

OR SYS_CONTEXT ('USERENV', 'SESSION_USER') = employee_name

この述語により、各従業員が自分のレコードにアクセスできるように、アクセス制御を追加できます。

この種の述語をREAD_CONTROLと併用するか、READ_CONTROLが実装されていない場合にもスタンドアロン述語として使用できます。

注意:

アプリケーションに実装する前に、述語によりセキュリティの目標が達成されるかどうかを確認してください。

Oracle Label Securityの述語で構文エラーが発生した場合、ポリシーを表に適用しようとしたときにエラーは発生しません。かわりに、その表の参照を初めて試みるときに、述語エラー・メッセージが表示されます。

複数のSQL述語のOracle Label Securityポリシーへの影響

述語は他の述語に追加できます。

Oracle Label Securityポリシーを使用して表に適用された述語は、他のOracle Label Securityポリシー、あるいはOracle Databaseファイングレイン・アクセス・コントロールまたはOracle Virtual Private Databaseポリシーにより適用される他の述語に追加されます。各述語は、まとめてANDされます。

SCOTTスキーマにあるEMP表に次の述語が適用されているとします。

- deptno=10など、Oracle VPDポリシーにより生成された述語

- label=100など、次のようなユーザー指定述語とともにOracle Label Securityのポリシーにより生成されたラベルベースの述語

OR SYS_CONTEXT ('USERENV', 'SESSION_USER') = ename

正: これらの述語は、次のようにまとめてANDされます。

WHERE deptno=10 AND (label=100 OR SYS_CONTEXT ('USERENV', 'SESSION_USER') = ename)

誤: 述語は次の方法では結合されません。

WHERE deptno=10 AND label=100 OR SYS_CONTEXT ('USERENV', 'SESSION_USER') = ename

9 トラステッド・ストアド・プログラム・ユニットの管理および使用

トラステッド・ストアド・プログラム・ユニットを使用して、システム・セキュリティを強化できます。

内容は次のとおりです。

- トラステッド・ストアド・プログラム・ユニットについて

- トラステッド・ストアド・プログラム・ユニットの動作

- トラステッド・ストアド・プログラム・ユニットの例

- トラステッド・ストアド・プログラム・ユニットの作成およびコンパイル

- ラベル情報を設定して戻す動作

トラステッド・ストアド・プログラム・ユニットについて

Oracle Databaseストアド・プロシージャ、ファンクションおよびパッケージは、コンパイルされた形式でデータベースに格納されているPL/SQL文のセットです。

ファンクションとプロシージャの唯一の違いは、ファンクションは値を戻すのに対して、プロシージャは値を戻さないことです。トラステッド・ストアド・プログラム・ユニットは、Oracle Databaseの他のストアド・プログラム・ユニットと同様で、基礎となるロジックは同じです。

パッケージは、使用するカーソルおよび変数とともにユニットとして格納されるプロシージャとファンクションのセットです。パッケージは、パッケージ仕様部とパッケージ本体という2つの部分で構成されています。パッケージ仕様部では、パッケージに含まれるパブリック・プロシージャ、ファンクションおよび変数の外部定義を宣言します。パッケージ本体には、プロシージャとファンクションの実際のテキストと、プライベートなプロシージャおよび変数が含まれています。

トラステッド・ストアド・プログラム・ユニットは、1つ以上のOracle Label Security権限を付与されたストアド・プロシージャ、ファンクションまたはパッケージです。通常、トラステッド・ストアド・プログラム・ユニットは、ユーザーが権限を付与されている操作を制御された方法で実行したり、複数のラベルのデータを更新できるようにするために使用されます。これは、ユーザーに対して認可の範囲を超えるデータへのアクセスを許可する場合に最適なアプローチです。

トラステッド・ストアド・プログラム・ユニットは、権限の使用に対するファイングレイン・コントロールを提供します。多数のユーザーに潜在的に権限を付与できますが、アプリケーションについて設定したセキュリティ・ポリシーに違反する可能性があるため、権限の付与には細心の注意を払う必要があります。ユーザーに権限を割り当てるのではなく、権限を必要とするアプリケーション操作を識別し、それをトラステッド・プログラム・ユニットとして実装できます。このようなストアド・プログラム・ユニットに権限を付与すると、実際にはユーザーが必要とするOracle Label Security権限を制限することになります。このアプローチは、最小限の権限の原理を採用しています。

たとえば、ラベルCONFIDENTIALを持つユーザーがSENSITIVE行へのデータの挿入を必要とする場合は、ユーザーがアクセスするトラステッド・ストアド・プログラムにWRITEUP権限を付与できます。これにより、ユーザーはトラステッド・ストアド・プログラムを使用して、CONFIDENTIALレベルでタスクを実行できます。

すべてのアクションは、ユーザーにかわってトラステッド・プログラム・ユニットにより実行されます。そのため、セキュリティ・ポリシーをモジュールに効率的にカプセル化し、それが有効かどうかを検証できます。

トラステッド・ストアド・プログラム・ユニットの動作

トラステッド・ストアド・プログラム・ユニットは、独自の権限とコール元のラベルを使用して実行されます。

このようにして、トラステッド・ストアド・プログラム・ユニットは、ユーザーのラベルで制約されている行セットに対して、権限が付与されている操作を実行できます。

Oracle Databaseシステムおよびオブジェクト権限は、ロールにバンドルすることを意図しています。ユーザーには、必要に応じてロール権限が付与されます。これに対して、Oracle Label Security権限の割当て対象となるのは、ユーザーまたはストアド・プログラム・ユニットのみです。この種のトラステッド・ストアド・プログラム・ユニットは、Oracle Label Security権限の使用を制御するという点で、ロールよりも管理しやすいメカニズムを提供します。

トラステッド・ストアド・プログラム・ユニットの例

READ権限を持つトラステッド・ストアド・プログラム・ユニットは、保護されていないすべてのデータと、このポリシーにより保護されているすべてのデータを読み取ることができます。

たとえば、購買予測レポートの作成を担当するユーザーを考えます。このユーザーは、すべての発注金額の集計操作を実行する必要があります。これは、そのユーザーのラベルで個々の発注書へのアクセスが認可されているかどうかには関係ありません。この例で集計プロシージャを作成する構文は、次のとおりです。

CREATE FUNCTION sum_purchases RETURN NUMBER IS
psum NUMBER;
BEGIN
SELECT SUM(amount) INTO psum
FROM purchase_orders;
RETURN psum;
END sum_purchases;

これにより、プログラム・ユニットは、エンド・ユーザーが収集できない情報を収集し、集計により使用可能にできます。

SUM_PURCHASESを実行するには、ユーザーにこのプロシージャに対する標準Oracle Database EXECUTEオブジェクト権限が付与されている必要があります。

関連項目:

アクセス制御および権限

トラステッド・ストアド・プログラム・ユニットの作成およびコンパイル

Oracle Label Securityで使用するために、トラステッド・ストアド・プログラム・ユニットを作成およびコンパイルできます。

内容は次のとおりです。

- トラステッド・ストアド・プログラム・ユニットの作成

- トラステッド・ストアド・プログラム・ユニットの権限

- トラステッド・ストアド・プログラム・ユニットの再コンパイル

- トラステッド・ストアド・プログラム・ユニットの再作成

- トラステッド・ストアド・プログラム・ユニットの実行

トラステッド・ストアド・プログラム・ユニットの作成

トラステッド・ストアド・プログラム・ユニットは、標準的なプロシージャ、ファンクションまたはパッケージを作成する場合と同じ方法で作成できます。

そのために、CREATE PROCEDURE、CREATE FUNCTIONまたはCREATE PACKAGEおよびCREATE PACKAGE BODYの各文を使用できます。

プログラム・ユニットは、Oracle Label Security権限を付与するとトラステッド・プログラム・ユニットになります。

関連項目:

Oracle Database SQL言語リファレンス

トラステッド・ストアド・プログラム・ユニットの権限

Oracle Label Security管理者は、ストアド・プログラム・ユニット・コードが正しいかどうかを検証してから、権限を付与できます。

通常、ストアド・プログラム・ユニットは、別のユーザー(開発者など)によって作成されます。トラステッド・ストアド・プログラム・ユニットが再作成または置換されると、その権限はOracle Label Securityにより削除されます。Oracle Label Security管理者はコードを再検証し、権限を再び付与する必要があります。

Oracle Label Security管理者は、プログラム・ユニット・コードを慎重に検討し、付与される権限を評価する必要があります。たとえば、トラステッド・パッケージ内のプロシージャが、権限を付与されているデータベース操作を実行してパッケージのパブリック変数に結果またはステータス情報を書き込まないようにしてください。これにより、サイトのOracle Label Securityポリシーに違反が発生しないことが確実になります。

関連項目:

SA_USER_ADMIN.SET_PROG_PRIVS

トラステッド・ストアド・プログラム・ユニットの再コンパイル

トラステッド・ストアド・プログラム・ユニットの再コンパイルを自動的に行うか手動で(ALTER PROCEDUREを使用して)行うかは、Oracle Label Security権限には影響しません。

ただし、再コンパイル後はプログラム・ユニットに対するEXECUTE権限を再び付与する必要があります。

トラステッド・ストアド・プログラム・ユニットの再作成

Oracle Label Security権限は、トラステッド・ストアド・プログラム・ユニットに対してCREATEまたはREPLACE操作を実行すると取り消されます。

これにより、プロシージャでOracle Label Security権限が誤用される可能性が限定されます。

Oracle Label Security権限が取り消されても、プロシージャ、ファンクションまたはパッケージは引き続き実行できることに注意してください。

プロシージャ、ファンクションまたはパッケージを再作成する場合は、そのテキストを慎重に検討する必要があります。再作成後のプログラム・ユニットがサイトのOracle Label Securityポリシーに違反しないことが確実であれば、必要な権限を再び付与できます。

トラステッド・ストアド・プログラム・ユニットを頻繁に置換する必要のある開発環境(本番システムの最初の数か月など)では、必要に応じて適切なOracle Label Security権限を付与できるようにスクリプトを作成することをお薦めします。

トラステッド・ストアド・プログラム・ユニットの実行

Oracle Label Securityでは、(表およびスキーマへのアクセスに関する)プロシージャ・コールのすべての標準Oracle Databaseコントロールはまだ有効です。

Oracle Label Securityは、行へのアクセスを制御することで、これらのセキュリティ・メカニズムを補完します。

トラステッド・ストアド・プログラム・ユニットの実行時に有効なポリシー権限は、コール側ユーザーの権限とプログラム・ユニットの権限との共用部分です。トラステッド・ストアド・プログラム・ユニットが別のトラステッド・プログラム・ユニットまたは非トラステッド・プログラム・ユニットをコールすると、コールされたプログラム・ユニットはコール側のプログラム・ユニットと同じ権限で実行されます。

非トラステッド・ストアド・プログラム・ユニットとトラステッド・ストアド・プログラム・ユニットが連なって実行される場合、最初のトラステッド・プログラム・ユニットによって、それ以降の順序でコールされるプログラム・ユニット全体の権限が決まります。次の順序を考えてみます。

- プロシージャA (非トラステッド)

- WRITEUP権限を持つプロシージャB

- WRITEDOWN権限を持つプロシージャC

- プロシージャD (非トラステッド)

プロシージャBは順序内の最初のトラステッド・プロシージャのため、プロシージャB、CおよびDはすべてWRITEUP権限で実行されます。順序が終了すると、プロシージャBに関する権限は後続のプロシージャには無効になります。

注意:

トラステッド・プログラム・ユニットに発生した未処理例外は、Oracle Label Securityにより捕捉されます。これは、ユーザーにエラー・メッセージが表示されない場合があることを意味します。このため、権限を付与する前に、常にすべてのプログラム・ユニットを細部に至るまでテストし、デバッグする必要があります。

ラベル情報を設定して戻す動作

SA_UTLパッケージには、数値ラベル値を使用してセッション・セキュリティ属性の現在の値に関する情報を戻すためのファンクションがあります。

これらのファンクションは、非トラステッド・プログラム・ユニットにも使用できますが、主としてトラステッド・ストアド・プログラム・ユニット用です。

これらはパブリック・ファンクションであり、policy_DBAロールがなくても使用できることに注意してください。また、各ファンクションには、同じラベルを文字列書式で戻すパラレルのSA_SESSIONファンクションがあります。

関連項目:

- SA_UTL PL/SQLユーティリティのファンクションおよびプロシージャ

- policy_DBAロールの詳細は、「Oracle Label Security管理者の責任」を参照してください

10 Oracle Label Securityでの監査

統合監査を使用するようにデータベースを構成していない場合、Oracle Label Security監査を使用できます。

内容は次のとおりです。

- Oracle Label Securityの監査について

- システム単位の監査: AUDIT_TRAIL初期化パラメータ

- Oracle Label Security監査の有効化または無効化方法

- Oracle Label Securityと統合監査

- Oracle Label Securityの監査のヒント

Oracle Label Securityの監査について

Oracle Label Securityの監査は標準Oracle Database監査を補完するために、独自の管理操作とポリシー権限の使用を追跡します。

SA_AUDIT_ADMINパッケージまたはOracle Enterprise Managerを使用して、Oracle Label Securityポリシーの監査オプションを設定および変更できます。

新規ポリシーを作成すると、そのポリシーのラベル列がデータベースの監査証跡に追加されます。ラベル列は、監査機能が有効か無効か、およびデータベースの監査とオペレーティング・システムの監査のどちらを使用するかに関係なく作成されます。監査表にレコードが書き込まれるたびに、各ポリシーはそのレコードについてセッション・ラベルを示すラベルを提供します。管理者は監査ビューを作成し、これらのラベルを表示できます。監査表では、ラベルは行へのアクセスを制御するのではなく、行の機密性を記録するのみであることに注意してください。

指定した監査オプションは、現行セッションではなく後続のセッションにのみ適用されます。監査オプションは、監査が無効化されている場合にも指定できます。このように指定するのみではオーバーヘッドは発生しません。Oracle Label Security監査を有効にすると、オプションが有効になり、標準Oracle Database監査によって作成されたオーバーヘッド以外のオーバーヘッドが生成されます。

Oracle Label Securityでは、オペレーティング・システムの監査証跡に書き込まれる監査データ用のラベルは提供されないことに注意してください。Oracle Label Securityのすべての監査レコードは、オペレーティング・システムの監査が有効化されている場合にも、データベースの監査証跡に直接書き込まれます。監査が無効化されている場合、Oracle Label Securityの監査レコードは生成されません。

システム単位の監査: AUDIT_TRAIL初期化パラメータ

統合監査がまだ有効ではない場合、Oracle Label Securityで監査レコードを生成するには、最初にシステム全体の監査を有効にする必要があります。

システム全体の監査を有効にするために、データベースのパラメータ・ファイルにOracle Database AUDIT_TRAIL初期化パラメータを設定できます。

AUDIT_TRAILパラメータを次のいずれかの値に設定できます。

表10-1 AUDIT_TRAILパラメータの設定

設定

説明

DB

データベース監査を有効化し、すべての監査レコードをデータベースの監査証跡に送ります。このアプローチを選択するようにお薦めします。

AUDIT_TRAILをDBに設定しても、一部のレコードは常にオペレーティング・システムの監査証跡に送られることに注意してください。これには、STARTUPおよびSHUTDOWN文に加えて、CONNECT AS SYSOPERまたはSYSDBAが含まれます。

DB, EXTENDED

AUDIT_TRAIL=DBに設定した場合のアクションをすべて実行し、AUD$表のSqlBindおよびSqlText CLOB型の列を移入します。

OS

オペレーティング・システムの監査を有効化します。これにより、ほとんどのOracle Database監査レコードがデータベースではなくオペレーティング・システムに送られます。レコードには、Oracle Label Securityラベルは含まれません。これに対して、Oracle Label Securityの監査はすべてラベルとともにデータベースに送られます。

AUDIT_TRAILをOSに設定した場合、Oracle Label Security固有の監査レコードはデータベース監査証跡に書き込まれ、他のOracle Database監査レコードはオペレーティング・システム監査証跡(オペレーティング・システム・データにポリシー列はありません)に書き込まれます。

NONE

監査を無効化します。これはデフォルトです。

パラメータ・ファイルの編集後に、データベース・インスタンスを再起動して、指定したデータベースの監査を有効化または無効化します。

監査オプションを設定する前に、AUDIT_TRAILパラメータを設定してください。このパラメータを設定しなくても、監査オプションは設定できます。ただし、このパラメータを設定してデータベース・インスタンスを再起動するまで、監査レコードはデータベースに書き込まれません。

関連項目:

- システム単位の監査の有効化と無効化、監査オプションの設定および監査証跡の管理の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください

- 初期化パラメータの編集方法は、『Oracle Databaseリファレンス』を参照してください

- システム単位のAUDITおよびNOAUDITの機能の詳細は、『Oracle Database SQL言語リファレンス』を参照してください

Oracle Label Security監査の有効化または無効化方法

システム単位の監査を有効化した後に、Oracle Label Securityの監査を有効化または無効化できます。

Oracle Label Securityの監査を使用するには、policy_DBAロールが必要で、SA_AUDIT_ADMIN PL/SQLパッケージ・プロシージャを使用する必要があります。

関連項目:

SA_AUDIT_ADMIN Oracle Label Security監査PL/SQLパッケージ

Oracle Label Securityと統合監査

Oracle Databaseでは、統合された監査証跡を使用して、Oracle Label Securityなど、様々な監査ソースから情報を取得します。

監査ポリシーを使用して、OLS監査を構成できます。Oracle Database 12cリリース1 (12.1)のOracle Label Security監査により、OLSポリシーの有効化や無効化などの追加のイベントを監査できます。

データベースをOracle Database 12cリリース1 (12.1)にアップグレードしても、統合監査を使用するように構成していない場合は、この章で説明する12cより前のOLS監査を使用する必要があります。

Oracle Database監査機能では、実行する操作に責任を持つデータベース・ユーザーを保持できます。特定のデータベース・オブジェクト、操作、ユーザーおよび権限を追跡できます。Oracle Label Securityはこの機能を補完するために、独自の管理操作とポリシー権限の使用を追跡します。また、ポリシー監査オプションを設定および変更するためのSA_AUDIT_ADMINパッケージも用意されています。

関連項目:

統合監査を使用するようにアップグレード後のデータベースを構成する手順は、『Oracle Databaseセキュリティ・ガイド』を参照してください。移行後に、『Oracle Databaseセキュリティ・ガイド』でOLS統合監査の情報を参照できます

Oracle Label Securityの監査のヒント

Oracleには、Oracle Label Securityを監査するための一連のヒントがあります。

内容は次のとおりです。

- SA_AUDIT_ADMINオプションの設定方針

- 権限付き操作の監査

SA_AUDIT_ADMINオプションの設定方針

監査オプションを設定する前に、必要以上のイベントを記録せずに問題のイベントを監視するように、監査方針を検討する必要があります。

アプリケーション、ユーザー・ベース、構成および他の外部要因が変化することがあるため、この方針は定期的に見直してください。

Oracle Label Securityオプション、およびOracle Database監査機能によって提供されたオプションは、特定の監査要件またはアプリケーションに依存する監査要件のすべてに直接には対処しないことがあります。ただし、データベース・トリガーを使用すると、より汎用的な監査機能では監査したり記録できない特定のイベントを監査し、特定の情報を記録できます。

関連項目:

監査にトリガーを使用する方法の詳細は、『Oracle Database概要』を参照してください

権限付き操作の監査

Oracle Label Securityの権限を必要とする操作を監査する場合を考えます。

これらの権限では機密性の高い操作が実行され、適正に使用されなければセキュリティを侵害する可能性があるため、表示と使用を厳密に監視する必要があります。

11 分散データベースでのOracle Label Securityの使用

Oracle Label Securityを分散構成で使用する場合の考慮事項を理解する必要があります。

内容は次のとおりです。

- Oracle Label Securityの分散構成について

- Oracle Label Securityでのリモート・データベースへの接続の動作

- リモート・セッションでのセッション・ラベルと行ラベル

- 分散環境でのラベル

- 分散環境でのOracle Label Securityポリシー

- Oracle Label Securityでのレプリケーション

Oracle Label Securityの分散構成について

分散データベースをサポートするネットワーク構成では、複数のOracle Database (または他の)サーバーが、同じオペレーティング・システムまたは異なるオペレーティング・システムで実行できます。

分散システム内の各コオペラティブ・サーバーは、他のクライアントやサーバーとネットワーク経由で通信します。

図11-1に、クライアントとサーバーを含む分散データベースでOracle Label Securityを使用する場合と使用しない場合を示します。この章で説明するように、WESTERN_REGIONデータベースからEASTERN_REGIONデータベースへのデータベース・リンクを確立すると、EASTERN_REGIONでのユーザーIDが表示を認可されていれば、このアクセス権をローカル(WESTERN_REGION)では持っていない場合にも、データにアクセスできます。

図11-1 分散データベースでのOracle Label Securityの使用

Oracle Label Securityでのリモート・データベースへの接続の動作

分散データベースは、Oracle Label Securityでは標準的な方法で動作します。ローカル・ユーザーは最終的に特定のリモート・ユーザーとして接続されます。

Oracle Label Securityは、ローカルとリモートのどちらで接続するかにかかわらず、ラベル付きデータを保護します。リモート・ユーザーに適切なラベルがある場合は、データにアクセスできます。そうでない場合は、データにアクセスできません。

データベース・リンクにより、リモート・データベースへの接続が設定され、リモート・セッションに対応付けられるユーザーが識別されます。リモート・データベース上でのOracle Label Securityの認可は、データベース・リンクで識別されたリモート・ユーザーの認証に基づきます。

たとえば、次のように、ローカル・ユーザーJANEが、接続文字列salesで参照されるデータベースにリモート・ユーザーAUSTENとして接続するとします。

CREATE DATABASE LINK sales
CONNECT TO austen IDENTIFIED BY pride
USING 'sales'

データベース・リンクで識別されるユーザーはAUSTENであるため、接続時のJANEの認可はリモート・ユーザーAUSTENのラベルと権限に基づいています。JANEがリモート・データベースを最初に参照するときに、リモート・セッションが実際に確立されます。たとえば、JANEが次のように入力すると、リモート・セッションが作成されます。

SELECT * FROM emp@sales

ローカル・データベース内のOracle Label Securityポリシーのユーザーである必要はありません。リモート・データベース上でポリシー・ユーザーとして接続すると、保護されているデータにアクセスできます。

リモート・セッションでのセッション・ラベルと行ラベル

リモートで接続すると、接続の確立時に有効なセッション・ラベルと行ラベルを直接制御できます。

接続時には、これらの値が(すべてのポリシーについて)Oracle Label Securityからリモート・データベースに渡されます。次の点に注意してください。

- ローカルのセッション・ラベルと行ラベルは、リモート・ユーザーに有効であれば、リモート・セッションのデフォルトとして使用されます。

- リモート・セッションには、リモート・ユーザーの最小認可と最大認可による制約が適用されます。

- ローカル・ユーザーのセッション・ラベルはリモート・データベースに渡されますが、その権限は渡されません。リモート・セッションの場合の権限は、リモート・ユーザーに対応付けられています。

最大レベルがHS、セッション・レベルがSのローカル・ユーザーDianaを考えます。リモート・データベース上では、データベース・リンクで識別されたリモート・ユーザーは最大レベルSを持つことになります。

- Dianaのセッション・ラベルがデータベース・リンクの確立時にSであれば、Sラベルが渡されます。これは有効なラベルです。Dianaは接続してSENSITIVEデータを読み取ることができます。

- Dianaのセッション・ラベルがデータベース・リンクの確立時にHSであれば、HSレベルが渡されますが、これはリモート・ユーザーには無効です。Dianaは、リモート・ユーザーのデフォルト・ラベル(S)を使用することになります。

リモート・データベースに初めて接続するときに実行中のラベルに注意してください。データベース・リンクを初めて参照すると、接続時にローカルのセッション・ラベルがリモート・システムに送られます。その後はラベルを変更できますが、そのためにはリモート・データベース上でSA_SESSION.SET_LABELプロシージャを実行する必要があります。

DianaはレベルHSで接続し、ラベルをSに設定してからリモート・アクセスを実行できます。接続は、データベース・リンクの確立時に暗黙的に行われます。このユーザーのデフォルト・ラベルは、リモート・データベース上ではSです。

ローカル・データベース上では、Dianaはセッション・ラベルを最大レベルであるHSに設定できますが、リモート・ユーザーのラベルがSに設定されている場合は、リモート・データベースから取り出せるのはSデータのみです。分散問合せを実行すると、ローカル・データベースからはHSデータ、リモート・データベースからはSデータを取得します。

分散環境でのラベル

ポリシーで保護するすべてのデータベースで、同じラベル・コンポーネント定義とラベル・タグを使用する必要があります。

内容は次のとおりです。

- 分散環境でのラベル・タグ

- 分散環境での数値書式によるラベル・コンポーネント

分散環境でのラベル・タグ

分散環境では、複数のデータベース間で同じラベル・タグを使用するように選択できます。

ただし、複数のデータベースで同じタグを使用しないことを選択した場合は、リモート操作の実行時にラベルの文字書式を取得する必要があります。これにより、ラベルの一貫性が保たれます。

次の例では、ラベル文字列の文字列表現は同じです。ただし、ラベル・タグが異なります。取り出されたラベル・タグの値がWESTERN_REGIONデータベース上では11であっても、EASTERN_REGIONデータベース上では2001であれば、タグは意味を持ちません。重大な結果が生じる可能性があります。

図11-2 分散データベースでのラベル・タグ

リモート・システムからラベルを取り出す場合は、両方のデータベースで同じ数値ラベルを使用している場合を除き、文字列表現を(数値ラベル・タグではなく)戻す必要があります。

Oracle Label Securityで、異なるデータベース上で自動的にラベルを生成できるようにする場合、ラベル・タグは同一になりません。両方のインスタンスで同じラベル・タグを持つラベルを事前に定義しないかぎり、文字列には意味がありますが、数値に意味はありません。

ラベル・タグが複雑にならないように、取出し時には(LABEL_TO_CHARを使用して)ラベルを文字列に変換し、ラベルの格納時にはCHAR_TO_LABELを使用できます。コンポーネント名が同じであれば、操作は成功します。

分散環境での数値書式によるラベル・コンポーネント

分散環境では、レベル・コンポーネントの数値書式による同じ相対ランキングにより、ラベルが適切にソートされることが保証されます。

次の例で、2つのデータベース内のレベルは実際には同じです。数値書式は異なりますが、各レベルの数値書式の相対ランキングは同じです。コンポーネントの相対順序が同じであれば、ラベルは同一とみなされます。

図11-3 分散データベースでのラベル・コンポーネント

分散環境でのOracle Label Securityポリシー

Oracle Label Securityでは、すべての標準Oracle Database分散構成がサポートされます。

保護されているデータにアクセスできるかどうかは、各分散データベースにインストールされているポリシーによって決定されます。

分散環境におけるデータベース間の関係を考慮してください。

- 同じアプリケーションを2つのデータベースで実行する場合に、両者に同じ保護を適用する場合は、ローカル・データベースとリモート・データベースの両方に同じOracle Label Securityポリシーを適用する必要があります。

- ローカル・データベースとリモート・データベースに共通するポリシーがある場合は、ローカルのセッション・ラベルと行ラベルによりリモート・ユーザーのデフォルト・ラベルがオーバーライドされます。

- リモート・データベースにローカル・データベースとは異なるポリシーがある場合は、リモート・ポリシーにより、ローカル・ポリシーから独立してデータへのアクセスを制限できます。これに対して、リモート・ポリシーについて認可を持つリモート・ユーザーで接続すると、ローカル認可に関係なく、リモート・ユーザーがアクセス権を持っているすべてのデータにアクセスできます。

リモート・データベースにポリシーが適用されていない場合は、標準的な分散データベースの場合と同様にデータにアクセスできます。

次のように、3つのデータベースでそれぞれ異なるOracle Label Securityポリシーが有効になっている場合を考えます。

- データベース1にはポリシーAおよびポリシーBが適用されています。

- データベース2にはポリシーAが適用されています。

- データベース3にはポリシーCが適用されています。

ポリシーAの認可を持つユーザーは、データベース1およびデータベース2から保護されているデータを取得できます。リモート・ユーザーは、ポリシーCの認可を持っていれば、データベース3からもデータを取得できます。

Oracle Label Securityでのレプリケーション

Oracle Label Securityポリシーにより保護されている表でレプリケーション・オプションを使用する方法を理解する必要があります。

内容は次のとおりです。

- Oracle Label Securityでのレプリケーションについて

- マテリアライズド・ビューの内容

- Oracle Label Securityでのマテリアライズド・ビューの作成要件

- マテリアライズド・ビューのリフレッシュ方法

関連項目:

- Oracle Database 12cでのレプリケーションとレプリケーション環境の設定方法の詳細な説明は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください

- マテリアライズド・ビューの使用に関する全般情報は、『Oracle Database概要』および『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください

Oracle Label Securityでのレプリケーションについて

Oracle Label Securityでデータをレプリケートできます。

Oracle Label Securityでサポートされているレプリケーション機能

Oracle Label Securityでは、読取り専用マテリアライズド・ビュー(スナップショット)を使用したレプリケーションがサポートされます。

Oracle Databaseでは、データのレプリケートにマテリアライズド・ビューを使用します。マテリアライズド・ビューは、マスター表の最新の状態を反映したローカルまたはリモート・マスター表のローカル・コピーです。

図11-4に示すように、マスター表は、マスター・ノードとして指定したノード上でレプリケートする表です。dblinkアカウントを使用して、異なるデータベース内の表のマテリアライズド・ビューを作成できます。(この操作は、同じシステム上の同じデータベースでも実行できます。)リモート・マスター表から行を選択し、それらをローカル・マテリアライズド・ビューにコピーできます。ここで、mvEMPは表EMPのマテリアライズド・ビューを表し、mlog$_EMPはマテリアライズド・ビュー・ログを表します。

図11-4 レプリケーションでのマテリアライズド・ビューの使用

分散環境では、マテリアライズド・ビューにより問合せに伴うネットワークの通信量が大幅に減少し、ノードが使用できないときのデータの可用性が向上します。

Oracle Label Securityでのレプリケーションに対する行レベルのセキュリティ制限

ポリシー・オプションの1つとしてREAD_CONTROLが指定されている場合は、Oracle Label Securityポリシーにより表に行レベル・セキュリティ(RLS)が適用されます。

次の条件の両方が満たされる場合は、問題が発生します。

- Oracle Label Securityポリシーがレプリケーションに関連する表(マスター表、マテリアライズド・ビュー、マテリアライズド・ビュー・ログなど)に適用されている場合

- ポリシーがSELECT文のWHERE句の述語を戻す場合。

追加の述語(およびこの問題)を回避するには、レプリケーション環境に関係するユーザーに必要なOracle Label Security権限を付与する必要があります。データベース・リンクで指定された特定のユーザー(REPADMINやマテリアライズド・ビューの所有者など)に、READまたはFULL権限が必要です。その結果、レプリケーションの実行に使用される問合せはRLSにより変更されなくなります。

関連項目:

『Oracle Database 2日でセキュリティ・ガイド』

マテリアライズド・ビューの内容

Oracle Label Securityでは、マテリアライズド・ビューを作成できます。

内容は次のとおりです。

- マテリアライズド・ビューの内容の決定方法

- 完全マテリアライズド・ビュー

- 部分マテリアライズド・ビュー

マテリアライズド・ビューの内容の決定方法

Oracle Label Securityでは、マテリアライズド・ビューの作成時に一連の手順が実行されます。

次の手順により、ビューの内容が決定されます。

1. リモート・データベース内のマスター表の定義が読み取られます。

2. マスター表内で、マテリアライズド・ビュー定義に定義されている条件を満たす行が読み取られます。

3. 各行がローカル・データベースのマテリアライズド・ビューに書き込まれます。

Oracle Label Securityでは、ローカル・データベース内で書込みアクセス権を持っている行のみが書き込まれるため、マテリアライズド・ビューの内容は次のものに応じて異なります。

- 有効なポリシー・オプション

- ローカル・データベース内で定義した権限

- セッション・ラベル

完全マテリアライズド・ビュー

Oracle Label Securityでは、完全マテリアライズド・ビューがサポートされます。

マスター表のすべての行を読み取り、ローカル・データベース内でマテリアライズド・ビューの各ラベルへの書込みアクセス権を持っていれば、結果はマスター表の完全マテリアライズド・ビューとなります。マテリアライズド・ビューが完全であることを保証するには、マスター表のすべてのデータへの読取りアクセス権と、ローカル・データベース内でマスター表にデータが格納されるすべてのラベルへの書込みアクセス権を持っている必要があります。

注意:

マテリアライズド・ビューの作成時に付与した権限は取り消さないでください。取り消すと、レプリケーションのリフレッシュを実行できなくなる場合があります。

部分マテリアライズド・ビュー

部分マテリアライズド・ビューが作成されるのは、マテリアライズド・ビュー定義にWHERE句を指定した場合です。

部分マテリアライズド・ビューは、リモート・データベースにデータのサブセットを渡す場合に便利な方法です。

部分マテリアライズド・ビューを作成するには、レプリケートするすべての行への書込みアクセス権がユーザーに必要です。ユーザーに現在付与されている権限を確認するには、DBA_SA_USER_PRIVSデータ・ディクショナリ・ビューに問い合せます。

Oracle Label Securityでのマテリアライズド・ビューの作成要件

マテリアライズド・ビューの作成要件は、作成するマテリアライズド・ビューのタイプに応じて異なります。

内容は次のとおりです。

- レプリケーション管理者の要件

- マテリアライズド・ビューの所有者の要件

- マルチレベルの部分マテリアライズド・ビューの作成要件

- マルチレベルの完全マテリアライズド・ビューの作成要件

レプリケーション管理者の要件

通常はREPADMINアカウントを使用するレプリケーション管理者の要件は、構成に応じて異なります。

ただし、通常は次の要件を満たす必要があります。

- FULL Oracle Label Security権限(すべての構成に必須)が必要です。

- マスター表に対するSELECT権限が必要です。

- リモート・ノードからマスター表を含むデータベースへのデータベース・リンクを確立するアカウントであることが必要です。

関連項目:

レプリケーション管理者とREPADMINアカウントの詳細は、Oracle Databaseアドバンスト・レプリケーションを参照してください。

マテリアライズド・ビューの所有者の要件

マテリアライズド・ビューのリフレッシュ中には、そのマテリアライズド・ビューの所有者に属する権限が使用されます。

これらの権限が十分でない場合は、次の2つのオプションがあります。

- マテリアライズド・ビューをREPADMINアカウントで作成できます。または

- マテリアライズド・ビューの所有者に追加の権限を付与する必要があります。

たとえば、ユーザーSCOTTにより作成された次のマテリアライズド・ビューを考えます。

CREATE MATERIALIZED VIEW mvemp as
SELECT *
FROM EMP@link_to_master
WHERE label_to_char(sa_label) = 'HS';

SCOTTは、ローカル・データベースにHSレベルでレコードを挿入するための許可を持つ必要があります。このマテリアライズド・ビューにOracle Label Securityポリシーが適用されている場合、SCOTTはRLSの制限を回避するためにFULL権限を持つ必要があります。

Oracle Label Securityポリシーがマテリアライズド・ビューに適用されるかどうかや、マテリアライズド・ビューの所有者にどのような権限が付与されているかなどに応じて、様々な構成をセットアップできます。Oracle Label Securityポリシーがマテリアライズド・ビューに適用されていても、SCOTTにFULL権限を付与しない場合、マテリアライズド・ビューを作成するにはREPADMINアカウントを使用する必要があります。SCOTTには、その表に対するSELECT権限を付与できます。

マテリアライズド・ビューにポリシーが適用されない場合は、権限を追加せずにSCOTTのスキーマにビューを作成できます。この場合、マテリアライズド・ビューは、WHERE条件でレコードをSCOTTが読み取れるレコードに限定するように作成する必要があります。

最後に、SCOTTにFULL権限を付与できる場合は、SCOTTのスキーマにマテリアライズド・ビューを作成し、Oracle Label Securityポリシーも適用できます。

マスター表に対するOracle Label Securityポリシーには、任意のポリシー・オプション・セットを含めることができることに注意してください。SCOTTがFULLまたはREAD権限を持っている場合は、ポリシー・オプションに関係なくすべての行を選択できます。

マルチレベルの部分マテリアライズド・ビューの作成要件

部分マテリアライズド・ビューは、Oracle Label Securityで保護されているリモート・マスター表のうち、一部の行のみを含めることができます。

Oracle Label Securityが保護する表で部分マテリアライズド・ビューが使用されている場合、問合せにより取り出した各ラベルで、ローカル・データベースへのWRITEのための十分な権限があることを確認する必要があります。現在付与されている権限を確認するには、ALL_SA_USER_PRIVSデータ・ディクショナリ・ビューに問い合せます。

マルチレベルの完全マテリアライズド・ビューの作成要件

完全マテリアライズド・ビューは、Oracle Label Securityで保護されているリモート・マスター表の各行を含めることができます。

Oracle Label Securityが保護する表で完全マテリアライズド・ビューが使用されている場合、定義済のマテリアライズド・ビュー問合せにより取り出したすべての行のラベルで、ローカル・データベースへのWRITEアクセスができる必要があります。現在付与されている権限を確認するには、ALL_SA_USER_PRIVSデータ・ディクショナリ・ビューに問い合せます。

マテリアライズド・ビューのリフレッシュ方法

マスター表の内容または定義が変更された場合は、マテリアライズド・ビューをリフレッシュする必要があります。

これにより、マテリアライズド・ビューがマスター表の内容を正確に反映していることが確認されます。

リモートのマルチレベル表のマテリアライズド・ビューをリフレッシュするには、マテリアライズド・ビュー問合せにより取り出されたすべての行のラベルで、ローカル・データベースに書き込むための権限も必要になります。

警告:

部分マテリアライズド・ビューまたは完全マテリアライズド・ビューをリフレッシュしても、マスター表のすべての行へのREADアクセス権を持っていない場合は、マテリアライズド・ビューに古い行が含まれる可能性があります。その結果、元のマテリアライズド・ビューはマスター表からの更新済の行で上書きされません。

正確なマテリアライズド・ビューのリフレッシュを行うために、ジョブ・キューを使用してビューを自動的にリフレッシュする必要があります。これらのプロセスには、ビューが完全にリフレッシュされることを保証するために、マスター表のすべての行を読み取るための権限と、読み取った行をマテリアライズド・ビューに書き込むための権限が必要です。これらのプロセスでは、マテリアライズド・ビュー所有者の権限が使用されることに注意してください。

関連項目:

ジョブ・キューの詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください

12 Oracle Label SecurityでのDBAファンクションの実行

Oracle Label Securityでは標準Oracle Databaseユーティリティをサポートしますが、一定の制限が適用され、期待される結果を得るには追加の手順が必要になる場合があります。

内容は次のとおりです。

- Oracle Label SecurityでのOracle Data Pumpエクスポートの使用

- Oracle Label SecurityでのData Pumpインポートの使用

- Oracle Label SecurityでのSQL*Loaderの使用

- Oracle Label Securityのパフォーマンス上のヒント

- インストール後のデータベースの追加作成

- Oracle Label Securityのアップグレードおよびダウングレード

Oracle Label SecurityでのOracle Data Pumpエクスポートの使用

Oracle Data Pumpにより、データベース間でデータとメタデータを高速で移動できます。

内容は次のとおりです。

- データベースの全体エクスポート

- スキーマおよび表レベルのエクスポート

データベースの全体エクスポート

Oracle Database 12c以降、完全なデータベース・エクスポートおよびインポート操作を実行するときに、LBACSYSスキーマにあるOracle Label Securityのメタデータを含めることができます。

ソース・データベースは、Oracle Database 11gリリース2 (11.2.0.3)以上に対応しますが、ターゲット・データベースはOracle Database 12c以上である必要があります。

ターゲット・データベースに対してData Pumpインポートを開始する前に、Oracle Label Securityを有効にする必要があります。

スキーマおよび表レベルのエクスポート

Data Pumpエクスポート・ユーティリティは、Oracle Label Securityで標準的な方法で動作します。

ただし、Oracle Label Securityポリシーの施行結果にいくつか違いがあります。

注意:

表のすべての行をエクスポートするにはEXEMPT ACCESS POLICY権限が必要で、そうでない場合は行がエクスポートされません。

- Oracle Label Securityポリシーで保護されている表の場合は、読取りアクセスが認可されているラベル付きの行のみがエクスポートされます。認可されていない行は、エクスポート・ファイルに含まれません。したがって、保護された表のすべてのデータをエクスポートするには、完全なアクセス権を付与する権限(FULLやREADなど)が必要です。

- ポリシーを再適用するSQL文は、エクスポート対象の表およびスキーマとともにエクスポートされます。この種の文はインポート中に実行され、元のデータベース内と同じ施行オプションを使用してポリシーが再適用されます。

- HIDEプロパティはエクスポートされません。保護されている表をエクスポートすると、その表のラベル列も(数値として)エクスポートされます。ただし、ラベル列が非表示に設定されていると、通常の表示列としてエクスポートされます。

- 表のすべての行をエクスポートするには、ユーザーにEXEMPT ACCESS POLICYが必要で、そうでない場合は行がエクスポートされません。

Oracle Label SecurityでのData Pumpインポートの使用

Oracle Data Pumpにより、データベース間でデータとメタデータを高速で移動できます。

内容は次のとおりです。

- LBACSYSスキーマ・メタデータの完全データベース・インポート

- スキーマおよび表レベル・インポート

LBACSYSスキーマ・メタデータの完全データベース・インポート

完全なデータベース・エクスポートおよびインポート操作を実行するときに、LBACSYSスキーマにあるOracle Label Securityのメタデータを含めることができます。

ソース・データベースは、Oracle Database 11gリリース2 (11.2.0.3)以上に対応しますが、ターゲット・データベースはOracle Database 12cリリース1 (12.1)以上である必要があります。

Oracle Data Pumpインポート・ユーティリティ、impdpは、ポリシー、ラベル、ユーザー認証、スキーマおよび表ポリシーの強制を含むLabel Securityメタデータを自動的にインポートします。インポート操作を開始する前に、ターゲット・データベースに対してOracle Label Securityを登録し、有効にする必要があります。

関連項目:

Oracle Label Securityが登録されて有効になっているかどうかの確認

スキーマおよび表レベル・インポート

Oracle Label SecurityでOracle Data Pumpインポート・ユーティリティ・ファンクションを使用できます。

内容は次のとおりです。

- Oracle Label Securityでのインポート要件

- インポート用データ・ラベルの定義

- Oracle Label Securityをインストールしない場合のラベル付きデータのインポート

- ラベルなしデータのインポート

- 非表示列を含む表のインポート

関連項目:

『Oracle Databaseユーティリティ』

Oracle Label Securityでのインポート要件

Oracle Label Securityでimpdpを使用できます。

Oracle Label Securityでimpdpを使用するには、インポート・データベースを準備し、インポート・ユーザーが適切な認可を持っているかどうかを確認する必要があります。

インポート・データベースの準備

Oracle Label Securityでインポート・ユーティリティを使用する前に、インポート・データベースを準備する必要があります。

1. Oracle Label Securityが有効になっていることを確認します。「Oracle Label Securityが登録されて有効になっているかどうかの確認」を参照してください。

2. インポート対象のデータを保護するOracle Label Securityポリシーを作成します。

このポリシーでは、必ずエクスポート・データベースと同じ列名を使用します。

3. インポート・データベース内で、インポート対象の表に使用されているラベル・コンポーネントと個々のラベルをすべて定義します。

各データベース内でポリシー・ラベルに同じタグ値が割り当てられていることを確認します。(エクスポート元のデータベースにインポートする場合、通常はコンポーネントがすでに定義されていることに注意してください。)

インポート・ユーザーの認証の検証

エクスポート・ファイル内のデータとラベルの挿入に必要なラベルに対してインポート操作を実行するための認可を受ける必要があります。

次の要件を満たさない場合、インポート時にエラーが発生します。

- 表またはスキーマをそれに対するLabel Securityポリシーとともにインポートするには、SA_POLICY_ADMINパッケージに対する実行権限が必要です。
すべての行を確実にインポートできるように、インポート対象となるデータを持つすべてのポリシーについてpolicy_DBAロールを持つ必要があります。各スキーマまたは表のインポート後は、インポートされたオブジェクトにエクスポート・データベースからのポリシーが再適用されます。

- 次のように、エクスポートされたすべての行を書き込めるようにする必要もあります。
要件2:

- FULL権限、またはインポート・ファイルに含まれるすべてのラベルを書き込める十分な認可をユーザーに付与できます。

- 表にユーザー定義のラベル付けファンクションを適用できます。

関連項目:

policy_DBAロールの詳細は、「Oracle Label Security管理者の責任」を参照してください

インポート用データ・ラベルの定義

インポート時のラベル定義には、エクスポート・ファイルで使用されているポリシー・ラベルをすべて含める必要があります。

DBA_SA_LABELSデータ・ディクショナリ・ビューには、データ・ラベルがリストされます。エクスポート・データベース内でビューDBA_SA_LEVELS、DBA_SA_COMPARTMENTS、DBA_SA_GROUPSを使用すると、インポート・データベース内でポリシーごとにラベル・コンポーネントとラベルを再作成するSQLスクリプトを設計できます。次の例に、HRポリシーについて個々のラベルを再作成するPL/SQLブロックの作成方法を示します。

set serveroutput on
BEGIN
dbms_output.put_line('BEGIN');
FOR l IN (SELECT label_tag, label
FROM dba_sa_labels
WHERE policy_name='HR'
ORDER BY label_tag) LOOP
dbms_output.put_line
('  SA_LABEL_ADMIN.CREATE_LABEL(''HR'', ' ||
l.label_tag || ', ''' || l.label || ''');');
END LOOP;
dbms_output.put_line ('END;');
dbms_output.put_line ('/');
END;
/

インポート・データベース内に、エクスポート・データベース内と同じ数値および文字列表現を持つ個々のラベルが存在しない場合、インポートされた表内のラベル値は無意味になります。表内の数値ラベル値が異なる文字列表現を参照したり、インポート・データベース内で定義されていないラベル値である場合があります。

ユーザーが無効な数値ラベルを含む行へのアクセスを試みると、操作は失敗します。

Oracle Label Securityをインストールしない場合のラベル付きデータのインポート

ポリシーのラベル列のデータ型がNUMBERである場合は、Oracle Label Securityがインストールされていないデータベースにインポートできます。

この場合、ポリシーのラベル列の値は番号としてインポートされます。対応するOracle Label Securityのラベル定義がなければ、この番号で特定のラベルは参照されません。

Oracle Label Securityがインストールされていない場合は、インポートされた表とスキーマにポリシーを再適用するSQL文が失敗するため、インポート中にエラーが発生することに注意してください。

ラベルなしデータのインポート

Oracle Label Securityポリシーで保護されている既存の表に、ラベルなしのデータをインポートできます。

表への挿入時に行のラベルを自動的に初期化できるように、インポート対象となる表ごとにLABEL_DEFAULTオプションまたはラベル付けファンクションを指定する必要があります。

非表示列を含む表のインポート

非表示列は通常の列としてエクスポートされ、非表示ではなくなります。

ラベル列の非表示プロパティを保つ場合は、最初に表をインポート・データベース内に作成する必要があります。

1. インポートを実行する前に、表を作成し、HIDEオプションを指定してポリシーを適用します。これにより、ポリシーのラベル列は表に非表示列として追加されます。

2. エクスポート・ファイル内で指定した強制オプションをインポート操作中に表に再適用できるように、表からポリシーを削除します。

3. IGNORE=Yを指定してインポートを実行します。IGNOREパラメータをYに設定すると、インポート時のエラーが無視されます。

4. HIDEオプションを指定して、表にポリシーを手動で適用します。

Oracle Label SecurityでのSQL*Loaderの使用

SQL*Loaderは、外部ファイルからOracle Database内の表にデータを移動します。

内容は次のとおりです。

- Oracle Label SecurityでのSQL*Loaderの使用要件

- Oracle Label SecurityからSQL*Loaderへの入力

関連項目:

ログ・ファイル、廃棄ファイル、エラー・ファイルなど、SQL*Loaderの詳細は、『Oracle Databaseユーティリティ』を参照してください。

Oracle Label SecurityでのSQL*Loaderの使用要件

従来型パスを指定してSQL*Loaderを使用すると、Oracle Label Securityで保護されているデータベースにデータをロードできます。

SQL*LoaderではINSERT操作が実行されるため、Oracle Label Securityポリシーで保護されている表にSQL*Loaderを使用する場合は、標準的な要件がすべて適用されます。

Oracle Label SecurityからSQL*Loaderへの入力

表のポリシー列が非表示になっている場合は、HIDDENキーワードを使用して、この情報をSQL*Loaderに指示する必要があります。

入力ファイル内で行ラベルを指定するには、制御ファイル内のINTO TABLE句にポリシーのラベル列を含める必要があります。

各行のデータとともにポリシー・ラベルをロードするには、SQL*Loaderの制御ファイル内でCHAR_TO_LABELファンクションまたはTO_DATA_LABELファンクションを指定できます。

注意:

Oracle Label SecurityがOracle Internet Directoryで動作するようにインストールされている場合、ラベルはOracle Internet Directoryでolsadmintoolコマンドを使用して集中管理されるため、動的ラベル生成は許可されません。「Oracle Internet Directoryを使用したLabel Security用コマンドライン・ツール」を参照してください。

Oracle Label Securityがディレクトリ対応の場合、TO_DATA_LABELファンクションは使用できず、使用するとエラー・メッセージが生成されます。

表12-1に、SQL*LoaderでOracle Label Securityのデータをロードする際に使用できるバリエーションを示します。

表12-1 SQL*LoaderへのOracle Label Security入力の選択肢

データの書式

結果の説明

col1 hidden integer external

非表示列がデータのタグ値とともにデータ・ファイルから直接ロードされます。

col2 hidden char(5) "func(:col2)"

文字ラベルとそのタグ値間の変換に使用されるデータfile.func()からデータの文字値とともにロードされる非表示列。注意: func()はchar_to_label()の場合があります。

col3 hidden "func(:col3)"

col2と同じですが、フィールド型はデフォルトでcharに設定されます。

col4 hidden expression "func(:col4)"

入力data.func()にマップされていない非表示列は、ラベル値を提供するために呼び出されます。これはユーザー・ファンクションにすることができます。

たとえば、次のようにデータをDEPT表にロードするINTO TABLE句は、制御ファイル内で有効です。

INTO TABLE dept
(hr_label HIDDEN POSITION (1:22) CHAR "CHAR_TO_LABEL('HR',:hr_label)",
deptno    POSITION (23:26) INTEGER EXTERNAL,
dname     POSITION (27:40) CHAR,
loc       POSITION(41,54)  CHAR)

この制御ファイルで指定したデータファイル内のエントリは次のようになります。

HS:FN                  231 ACCOUNTING  REDWOOD SHORES

Oracle Label Securityのパフォーマンス上のヒント

Oracle Label Securityで最適なパフォーマンスを達成できます。

内容は次のとおりです。

- ANALYZEを使用したOracle Label Securityのパフォーマンス改善

- ポリシーのラベル列での索引の作成

- パフォーマンス強化のためのラベル・タグ方針の計画

- 数値ラベル・タグに基づいてパーティション化されたデータ

ANALYZEを使用したOracle Label Securityのパフォーマンス改善

LBACSYSスキーマ内でOracle Label Securityのデータ・ディクショナリ表に対してANALYZE文を実行できます。

これにより、コストベース・オプティマイザで問合せ時の実行計画を改善でき、Oracle Label Securityのパフォーマンスが改善されます。

ANALYZE構文については、『Oracle Database SQL言語リファレンス』を参照してください。

アプリケーション表に対してANALYZEを実行すると、アプリケーションのSQLパフォーマンスが改善されます。

ポリシーのラベル列での索引の作成

ポリシーのラベル列で適切なタイプの索引を作成すると、保護されている表に対してユーザーが発行する問合せのパフォーマンスが改善されます。

特定のスキーマ内でデータベース表にOracle Label Securityポリシーを適用している場合は、様々なラベルの数をデータ量と比較する必要があります。この情報に基づいて、ポリシーのラベル列で作成する索引のタイプを決定できます。

- ポリシー・ラベル列のデータのカーディナリティ(つまり、行数に対するラベル数の割合)が低い場合は、ビットマップ索引の作成を考慮してください。

- ポリシー・ラベル列のデータのカーディナリティが高い場合は、Bツリー索引の作成を考慮してください。

Oracle Label SecurityポリシーでEMP表が保護され、READ_CONTROL強制オプションが設定されており、HR_LABELがポリシー・ラベル列の名前である場合を考えます。ユーザーが次の問合せを発行するとします。

SELECT COUNT (*) FROM SCOTT.EMP;

この場合、Oracle Label Securityではラベル列に基づいて述語が追加されます。次に例を示します。

SELECT COUNT (*) FROM SCOTT.EMP
WHERE hr_label=100;

これにより、Oracle Label Securityではセキュリティ・ラベルが使用され、ユーザーの認証に基づいて処理対象の行が制限されます。この問合せのパフォーマンスを改善するには、HR_LABEL列で索引を作成できます。

より複雑な問合せを考えます(この場合も、EMP表にREAD_CONTROLが適用されているとします)。

SELECT COUNT (*) FROM SCOTT.EMP
WHERE deptno=10

この場合も、Oracle Label Securityではラベル列に基づいて述語が追加されます。

SELECT COUNT (*) FROM SCOTT.EMP
WHERE deptno=10
AND hr_label=100;

この場合は、DEPTNOおよびHR_LABEL列に基づいてコンポジット索引を作成し、アプリケーションのパフォーマンスを改善できます。

パフォーマンス強化のためのラベル・タグ方針の計画

最適なパフォーマンスを得るために、ラベル・タグに値を割り当てる方針を作成できます。

通常、最も適切な方法は、機密性レベルの高いラベルほど大きい数値を割り当てることです。

これは、一般に、比較的低レベルでデータを表示できるユーザーが多い一方、多数のレベルのデータを高レベルで表示できるユーザーは少ないためです。

また、READ_CONTROLを設定すると、Oracle Label Securityでは、BETWEEN句を使用して問合せの処理対象となる行を制限する述語が生成されます。次の例のように、機密性の高いラベルのラベル・タグの方が機密性の低いラベルよりも上位でない場合、問合せでは大量の行セットが検査される可能性があります。これはパフォーマンスに影響します。

表12-2に、次のように割り当てられるラベル・タグのセットを示します。

表12-2 ラベル・タグのパフォーマンスの例: 適切な値

ラベル

ラベル・タグ

TS:A,B

100

S:A

50

S

20

U:A

10

最大の認可がS:Aであるユーザーは、ラベルS:A、SおよびU:Aでデータに潜在的にアクセスできます。このユーザーが次の問合せを発行するとします。

SELECT COUNT (*) FROM SCOTT.EMP

Oracle Label Securityにより、このユーザーが表示できる行セットを制限するBETWEEN句を(最大認可と最小認可に基づいて)組み込む述語が追加されます。

SELECT COUNT (*) FROM SCOTT.EMP
WHERE hr_label BETWEEN 10 AND 50;

問合せではユーザーの認証に基づいてデータのサブセットのみが検査されるため、パフォーマンスが改善されます。ユーザーがアクセスを認可されていない行を処理するのは無意味です。

表12-3に、タグ値が次のように割り当てられた場合に不要な作業がどのように実行されるかを示します。

表12-3 ラベル・タグのパフォーマンスの例: 不適切な値

ラベル

ラベル・タグ

TS:A,B

50

S:A

100

S

20

U:A

10

この場合、S:A認可を持つユーザーは、100から10までのラベルの一部のみ参照できます。ただし、ユーザーはTS:A,Bラベル(ラベル・タグが50の行)を参照できません。ユーザーが最終的にこれらの行にアクセスできなくても、問合せではこれらの行が取得されて処理されます。

数値ラベル・タグに基づいてパーティション化されたデータ

ラベルに適用した数値ラベル・タグで数値による順序付け方法を使用すると、Oracle Databaseデータ・パーティション化の基礎にすることができます。

アプリケーションによっては、ラベル値に基づいてデータをパーティション化できる場合とできない場合があります。たとえば、多数の会社がサブスクライブするビジネス・ホスティングCRMアプリケーションを考えます。同じEMP表にサブスクライバ1およびサブスクライバ2の行(およびラベル)がある場合があります。つまり、ラベルが異なっていれば、両方の会社の情報を同じ表に格納できます。この場合、サブスクライバ1の従業員がサブスクライバ2のデータにアクセスする必要はないため、ラベルに基づいてパーティション化しても無意味です。あるパーティションにサブスクライバ1に関する行を入れて、別のパーティションにはサブスクライバ2に関する行を入れることができます。問合せが発行されると、ラベルに応じて一方または他方のパーティションにのみアクセスします。無関係なパーティションが問合せにより検査されることはないため、パフォーマンスが改善されます。

次の例にこの方法を示します。あるパーティションに2000番台のラベル、2番目のパーティションに3000番台のラベル、3番目のパーティションに4000番台のラベルを置きます。

CREATE TABLE EMPLOYEE(
EMPNO NUMBER(10) CONSTRAINT PK_EMPLOYEE PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(4),
HR_LABEL NUMBER(10))
TABLESPACE PERF_DATA
STORAGE (initial 2M
NEXT 1M
MINEXTENTS 1
MAXEXTENTS unlimited)
PARTITION BY RANGE (hr_label)
(partition sx1 VALUES LESS THAN (2000) NOLOGGING,
partition sx2 VALUES LESS THAN (3000),
partition sx3 VALUES LESS THAN (4000)
);

インストール後のデータベースの追加作成

Oracle Label Securityのインストール後に、追加のデータベースを作成および構成できます。

内容は次のとおりです。

- インストール後のデータベースの追加作成について

- ラベル・セキュリティ・スキーマがシード内にある場合の追加データベースの作成

- カスタム・インストールでの追加データベースの作成オプション

インストール後のデータベースの追加作成について

Oracle Database Enterprise EditionおよびOracle Label Securityのインストール時に、初期Oracleデータベースが作成されます。

データベースの追加作成が必要な場合は、Database Configuration Assistantを使用する必要があります。また、『Oracle Database管理者ガイド』に記載されている手順に従ってデータベースを追加作成する方法もあります。

新規データベースを作成するたびに、そこにOracle Label Securityのデータ・ディクショナリ表、ビューおよびパッケージをインストールし、LBACSYSアカウントを作成する必要があります。

最初のデータベースの場合は、カスタム・インストールを選択するかどうかにかかわらず、Oracle Label Securityのインストール時にこのタスクが自動的に実行されます。カスタム・インストールを選択しない場合は、シード内のラベル・セキュリティ・スキーマでデータベースをインストールすることになります。

追加のデータベースを作成するには、最初のデータベースをカスタム・インストールとシード内のラベル・セキュリティ・スキーマのどちらでインストールしたかに応じて、ラベル・セキュリティの構成に様々なプロセスがあります。

最初にカスタム・インストールを選択し、ラベル・セキュリティをインストールしなかった場合は、この項で説明するいずれかのプロセスを使用してラベル・セキュリティをインストールおよび構成できます。

ラベル・セキュリティ・スキーマがシード内にある場合の追加データベースの作成

データベースがシード・データベース内のラベル・セキュリティ・スキーマでインストールされた場合、Oracle Label Securityを構成できます。

1. DBCAでOracle Label Securityオプションを選択します。

2. Oracle Label Securityを構成するチェック・ボックスを選択します。

カスタム・インストールでの追加データベースの作成オプション

カスタム・データベースのインストール後にOracle Label Securityを構成できます。

1. AS SYSDBA構文を使用して、Oracle DatabaseインスタンスにユーザーSYSとして接続します。

2. スクリプト$ORACLE_HOME/rdbms/admin/catols.sqlを実行します。

このスクリプトにより、ラベルベースのフレームワーク、データ・ディクショナリ、データ型およびパッケージがインストールされます。スクリプトの実行後は、パスワードLBACSYSを持つLBACSYSアカウントが存在することになります。すべてのOracle Label Securityパッケージは、このアカウントの下にあります。

3. LBACSYSユーザーのデフォルト・パスワードを変更します。

Oracle Label Securityのアップグレードおよびダウングレード

Oracle Label Securityのアップグレードおよびダウングレードの管理方法に注意する必要があります。

内容は次のとおりです。

- Oracle Label Securityのアップグレードおよびダウングレードについて

- Oracle Label Securityのアップグレード

- Oracle Label Securityのダウングレード

Oracle Label Securityのアップグレードおよびダウングレードについて

Oracleには、アップグレードおよびダウングレード操作を実行する事前処理スクリプトが用意されています。

安全確保のため、アップグレードまたはダウングレード事前処理スクリプトを実行する前に、監査レコードをバックアップすることをお薦めします。これを行うには、『Oracle Databaseセキュリティ・ガイド』の説明に従って、監査証跡をアーカイブします。

実行する前に、事前処理スクリプトは、すべての監査レコードをコピーするのに十分な領域が監査表領域にあることをチェックし、領域が十分でない場合は処理せずに終了します。

OLS事前処理スクリプトの実行中も、データベース上でアプリケーションを継続して実行できます。

関連項目:

Oracle Label SecurityおよびOracle Database Vaultを使用しているデータベースのアップグレードの要件は、『Oracle Databaseアップグレード・ガイド』を参照してください

Oracle Label Securityのアップグレード

Oracleには、アップグレードの実行前に実行する必要がある事前処理スクリプトが用意されています。

内容は次のとおりです。

- Oracle Label Securityのアップグレードについて

- アップグレード前のOracle Label Security事前処理スクリプトの実行

Oracle Label Securityのアップグレードについて

Oracle Database 12cリリース1 (12.1)より前のデータベース用のOracle Label Securityをアップグレードする必要があります。

注意:

Oracle Label SecurityまたはDatabase Vaultを使用するOracle Database 12cリリース(12.1)より前のデータベースをアップグレードする前に、olspreupgrade.sqlスクリプトを実行する必要があります。

Oracle Databaseリリース12c以降にアップグレードした後は、データベースのパッチ適用またはアップグレード時にOracle Label Security事前処理スクリプトを実行する必要はありません。

OLSアップグレード・プロセスを実行する前に、Oracle Label Security事前処理アップグレード・スクリプトolspreupgrade.sqlを実行してAUD$表の内容を処理する必要があります。OLSアップグレードでは、AUD$表が、SYSTEMスキーマからSYSスキーマに移動されます。olspreupgrade.sqlスクリプトは、この移動に必要な事前処理スクリプトです。このスクリプトでは、SYSスキーマに一時表PREUPG_AUD$が作成され、SYSTEM.AUD$レコードがSYS.PREUPG_AUD$に移動されます。移動されたレコードは、DBA_AUDIT_TRAILビューで参照できなくなりますが、アップグレードが完了するまではSYS.PREUPG_AUD$表に直接アクセスすることで表示できます。アップグレードの完了後に、SYS.PREUPG_AUD$表が完全に削除され、すべての監査レコードはDBA_AUDIT_TRAILビューを通じて表示できます。

アップグレード前のOracle Label Security事前処理スクリプトの実行

アップグレード前にOracle Label Security事前処理スクリプトを実行できます。

1. 新しくインストールしたOracleホームからアップグレードするデータベースのOracleホームにORACLE_HOME/rdbms/admin/olspreupgrade.sqlスクリプトをコピーします。

2. アップグレードするデータベースに接続します。システム・プロンプトで、次のように入力します。

CONNECT SYS AS SYSDBA
Enter password password

3. Oracle Label Security事前処理スクリプトを実行します。

@$ORACLE_HOME/rdbms/admin/olspreupgrade.sql

注意:

Oracle Label Security事前処理スクリプトでエラーがレポートされた場合、Oracle Label Securityコンポーネントのアップグレード・ステータスはINVALIDとマークされます。この状況が発生した場合は、エラーを修正してからアップグレード・プロセスを再実行する必要があります。Oracle Databaseのアップグレード・プロセスの再実行の詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。

Oracle Label Securityのダウングレード

Oracleには、ダウングレード前に実行する必要がある事前処理スクリプトが用意されています。

内容は次のとおりです。

- Oracle Label Securityのダウングレードについて

- ダウングレード前のOracle Label Security事前処理スクリプトの実行

Oracle Label Securityのダウングレードについて

Oracle Label SecurityまたはOracle Database Vaultを使用するOracle Database 12cリリース1 (12.1)以降のデータベースからダウングレードできます。

そのためには、OLS事前処理スクリプトolspredowngrade.sqlを実行して、AUD$表の内容を処理する必要があります。OLSダウングレード・スクリプトは、AUD$表をSYSスキーマからSYSTEMスキーマに移動します。olspredowngrade.sqlスクリプトは、この移動の前処理に必要な処理スクリプトです。このスクリプトでは、SYSTEMスキーマに一時表PREDWG_AUD$が作成され、SYS.AUD$レコードがSYSTEM.PREDWG_AUD$に移動されます。移動されたレコードは、DBA_AUDIT_TRAILビューで参照できなくなりますが、ダウングレードが完了するまではSYSTEM.PREDWG_AUD$表に直接アクセスすることで表示できます。ダウングレードが完了すると、SYSTEM.PREDWG_AUD$表は完全に削除されます。この時点で、すべての監査レコードは、DBA_AUDIT_TRAILデータ・ディクショナリ・ビューで表示できます。

ダウングレード前のOracle Label Security事前処理スクリプトの実行

ダウングレード用のOracle Label Security事前処理スクリプトを実行する前に、SYSDBA管理権限を持つSYSとして接続する必要があります。

1. ダウングレードするデータベースに接続します。システム・プロンプトで、次のように入力します。

CONNECT SYS AS SYSDBA
Enter password password

2. OLS事前処理ダウングレード・スクリプトを実行します。

@$ORACLE_HOME/rdbms/admin/olspredowngrade.sql

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

Oracle Label Securityは、インバース・グループを使用して解放性を実装できます。

内容は次のとおりです。

- インバース・グループおよび解放性について

- スタンダード・グループとインバース・グループの比較

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

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

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

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

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

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

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

インバース・グループおよび解放性について

インバース・グループは、情報の解放性を示します。

データの送信にマークを付けるために使用されます。インバース・グループをデータ・ラベルに追加すると、データの機密性は低下します。

たとえば、インバース・グループUKおよびUSを持つユーザーは、インバース・グループUKのみを持つデータにはアクセスできません。そのデータにUSを追加すると、インバース・グループUKおよびUSを持つすべてのユーザーがデータにアクセスできるようになります。

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

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

スタンダード・グループとインバース・グループの比較

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グループのみを持つか、グループをまったく持たないレコードを表示できません。

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

表13-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を追加すると、そのユーザーはもとのデータにはアクセスできなくなります。

関連項目:

グループ・コンポーネント

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

インバース・グループは、特別な方法で実装され、Oracle Label Securityのニーズに合うように編成されます。

内容は次のとおりです。

- INVERSE_GROUP強制を指定したインバース・グループの実装

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

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

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

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

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

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

インバース・グループ・オプションを使用して作成されたOracle Label Securityポリシーは、スタンダード・グループと同じポリシー・ラベル・コンポーネントを使用します。

これらのコンポーネントには、レベル、区分およびグループが含まれています。

ただし、インバース・グループでは、ユーザーの読取りグループおよび書込みグループのデータ・アクセスでの意味およびロールは異なります。

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

表13-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データを読み取ることができません。

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

インバース・グループは、計算されるラベルの値に影響を与えます。

内容は次のとおりです。

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

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

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

管理者がユーザーにラベル認可を割り当てた後、Oracle Label Securityは自動的にいくつかのラベルを計算します。

インバース・グループでのこれらのラベルは次のとおりです。

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

計算されるラベル

定義

最大読取りラベル

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

最大書込みラベル

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

最小書込みラベル

ユーザーの最小レベル。

デフォルト読取りラベル

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

デフォルト書込みラベル

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

デフォルト行ラベル

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

関連項目:

計算されるセッション・ラベル

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

Oracle Label Securityでは、読取りおよび書込み操作を処理する様々なインバース・グループが提供されます。

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

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

グループのセット

意味

最大読取りグループ

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

最大書込みグループ

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

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

表13-5に示すとおり、スタンダード・グループではREAD ONLYおよびREAD/WRITE認可、インバース・グループではWRITE ONLYおよびREAD/WRITE認可を持つことができます。

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

グループのタイプ

読取り専用

読取り/書込み

書込み専用

スタンダード・グループ

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

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

サポートされません。

インバース・グループ

サポートされません。

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

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

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

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

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

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

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

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

Oracle Label Securityのスタンダード・グループは階層構造になっており、グループを親グループに対応付けることができます。

たとえば、EASTERN領域は2つの下位グループEAS_SALESおよびEAS_HRの親になることができます。

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

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

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

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

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

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

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

- PROFILE_ACCESS

- WRITEUP

- WRITEDOWN

- WRITEACROSS

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

インバース・グループでの読取りアクセスのアルゴリズムの動作について理解する必要があります。

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

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

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

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

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

注意:

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

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

関連項目:

Oracle Label Securityの読取りアクセス・アルゴリズムの動作

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

インバース・グループでの書込みアクセスのアルゴリズムについて理解する必要があります。

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

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

2. 次のいずれかの条件を満たしている必要があります。
データ・ラベルのグループは、ユーザー・ラベルのグループのスーパーセットである必要があります。

または

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

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

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

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

注意:

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

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

関連項目:

Oracle Label Securityの書込みアクセス・アルゴリズムの動作

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

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

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

- 区分が存在し、かつ、その区分へのアクセスが認可されていれば、グループの認可はバイパスされます。

- 行に区分がない場合、アクセスはインバース・グループの認可により決定されます。

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

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

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

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

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

インバース・グループは、セッション・ラベルおよび行ラベルに影響を与えます。

内容は次のとおりです。

- スタンダード・グループまたはインバース・グループでの初期のセッションおよび行ラベル

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

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

スタンダード・グループまたはインバース・グループでの初期のセッションおよび行ラベル

Oracleには、スタンダード・グループおよびインバース・グループでの初期のセッションおよび行ラベルが用意されています。

内容は次のとおりです。

- スタンダード・グループまたはインバース・グループでの初期のセッションおよび行ラベルについて

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

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

スタンダード・グループまたはインバース・グループでの初期のセッションおよび行ラベルについて

インバース・グループを使用すると、セッション・ラベルを決定するOracle Label Securityプロシージャの動作に影響します。

SA_USER_ADMIN.SET_DEFAULT_LABELおよびSA_USER_ADMIN.SET_ROW_LABELプロシージャは、ユーザーの初期セッション・ラベルおよび行ラベルを、それぞれ指定された値に設定します。

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

ユーザーのデフォルト・セッション・ラベルは、SA_USER_ADMIN.SET_DEFAULT_LABELを使用して変更できます。

スタンダード・グループでは、現在のデフォルトの行ラベルが新しい書込みラベルによって支配されている間は、デフォルトのセッション・ラベルが認可リストの任意のグループを含むように設定できます。つまり、行ラベルには新しい書込みレベルと同じかそれより少ないスタンダード・グループがあります。

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

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

新しい書込みラベルが現在のデフォルトの行ラベルを支配する場合、デフォルトのセッション・ラベルは認可リストのグループを含めることができます。

つまり、行ラベルには新しい書込みレベルと同じかそれより多いインバース・グループがあります。同じ規則が、SA_USER_ADMIN.SET_ROW_LABELにも適用されます。

関連項目:

- SA_USER_ADMIN.SET_DEFAULT_LABEL

- SA_USER_ADMIN.SET_ROW_LABEL

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

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

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

内容は次のとおりです。

- スタンダード・グループまたはインバース・グループでの現行のセッションまたは行ラベルの設定について

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

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

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

インバース・グループを使用すると、SA_SESSION.SET_LABELおよびSA_SESSION.SET_ROW_LABELプロシージャの動作に影響します。

これらのプロシージャは、それぞれ、ユーザーの現行のセッション・ラベルおよび行ラベルの設定に使用できます。

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

スタンダード・グループでは、SA_SESSION.SET_LABELプロシージャは、ユーザーの認可グループ・リストにグループを含めるようにセッション・ラベルを設定できます。

認可グループのサブグループは、認可リストに暗黙的に含まれます。

セッション・ラベルを変更すると、そのセッションの行ラベルの値に影響する場合があることに注意してください。

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

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

インバース・グループでは、セッション・ラベルにグループを追加すると、ユーザーが少数のグループで機密データにアクセスする能力が低下します。

グループを削除すると、ユーザーはより多くの機密情報にアクセスできます。そのため、最大読取りグループがセッション・ラベルのグループのサブセットであり、最大書込みグループがセッション・ラベルのグループのスーパーセットである間は、ユーザーはセッション・ラベルにグループを追加できる必要があります。ユーザーがセッション・ラベルからグループを削除する場合にも、同じ制限が適用されます。

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

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

関連項目:

- SA_SESSION.SET_LABEL

- SA_SESSION.SET_ROW_LABEL

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

Oracleには、インバース・グループの使用例が用意されています。

内容は次のとおりです。

- 例: 単純なインバース・グループ

- 例: 複雑なインバース・グループ

例: 単純なインバース・グループ

特殊なラベル・セットを持つインバース・グループを実装する単純なポリシーを作成できます。

表13-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

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

- ユーザー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はデフォルト・ラベルに含まれるグループ以外のグループを設定することはできません。)

例: 複雑なインバース・グループ

特殊なラベル・セットを持つインバース・グループを実装するより複雑なポリシーを作成できます。

表13-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の任意の組合せを持つユーザーからアクセスできるようになります。

関連項目:

計算されるセッション・ラベル

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

INVERSE_GROUPオプションは、ラベル付きデータに対するユーザーの読取りおよび書込みアクセスを決定するアルゴリズムに影響します。

内容は次のとおりです。

- インバース・グループでのSA_SYSDBA.CREATE_POLICY

- インバース・グループでのSA_SYSDBA.ALTER_POLICY

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

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

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

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

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

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

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

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

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

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

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

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

インバース・グループでの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);

関連項目:

- SA_SYSDBA.CREATE_POLICY

- ポリシー強制オプションについて

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

SA_SYSDBA.ALTER_POLICYプロシージャは、INVERSE_GROUPオプションを除くポリシーのデフォルトの強制オプションを変更します。

ポリシーがインバース・グループ用に構成されると、変更することはできません。OLSポリシーに関連付けられている列名も変更できます。

関連項目:

SA_SYSDBA.ALTER_POLICY

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

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

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

表13-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フィールドの場合も同様です。

関連項目:

- SA_USER_ADMIN.ADD_GROUPSの構文

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

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

SA_USER_ADMIN.ALTER_GROUPSプロシージャは、各グループについて、書込みアクセス、デフォルトのラベル・インジケータおよび行ラベル・インジケータを変更します。

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

関連項目:

SA_USER_ADMIN.ALTER_GROUPSの構文

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

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

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

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

グループ・セット名

意味

read_groups

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

write_groups

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

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

def_groups

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

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

row_groups

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

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

関連項目:

SA_USER_ADMIN.SET_GROUPSの構文

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

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

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

表13-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と同じ値に設定されます。行ラベルのインバース・グループは、少なくともデフォルト・ラベルのインバース・グループである必要があり、最大書込みグループのサブセットである必要があります。

関連項目:

SA_USER_ADMIN.SET_USER_LABELSの構文

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

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

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

関連項目:

SA_USER_ADMIN.SET_DEFAULT_LABELの構文

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

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

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

関連項目:

- SA_USER_ADMIN.SET_ROW_LABELの構文

- スタンダード・グループまたはインバース・グループでの初期のセッションおよび行ラベル

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

SA_COMPONETS.CREATE_GROUPプロシージャは、グループを作成し、その短縮名と詳細名、およびオプションで親グループを含めます。

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

関連項目:

SA_COMPONENTS.CREATE_GROUPの構文

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

SA_COMPONENTS.ALTER_GROUP_PARENTファンクションは、インバース・グループ・オプションを指定したポリシーには無効です。

このファンクションをコールすると、エラー・メッセージが表示されます。

関連項目:

SA_COMPONENTS.ALTER_GROUPの構文

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

SA_SESION.SET_LABELプロシージャは、現行データベース・セッションのラベルを設定します。

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

関連項目:

- SA_SESSION.SET_LABELの構文。

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

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

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

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

関連項目:

- SA_SESSION.SET_ROW_LABELの構文

- スタンダード・グループまたはインバース・グループでの初期のセッションおよび行ラベル

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

LEAST_UBOUND (LUBD)ファンクションは、label1およびlabel2の最小の上限である文字列ラベルを戻します。

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

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

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

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

GREATEST_LBOUND (GLBD)ファンクションは、2つの異なるラベルが指定された場合、操作に含めることができる最下位のデータのラベルを決定します。

このファンクションは、label1およびlabel2の最大の下限である文字列ラベルを戻します。

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

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

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

関連項目

ラベルの上限と下限の決定

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

Oracleのラベルおよびインバース・グループに対して支配規則がどのように機能するかを理解する必要があります。

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

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

- ユーザー・レベルがデータ・レベル以上である。

- ユーザー区分がデータ区分のスーパーセットである。

- ユーザー・グループとデータ・グループに共通部分がある(ユーザー・グループに、データ・グループの1つ以上のグループがある)。

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

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

- ユーザー・レベルがデータ・レベル以上である。

- ユーザー区分がデータ区分のスーパーセットである。

- データ・グループがユーザー・グループのスーパーセットである。

関連項目:

支配するラベルと支配されるラベルについて

第IV部 付録

第IV部には、Oracle Label Securityを使用するための参照資料が含まれています。

- Oracle Label Securityの無効化および有効化

- Oracle Label Securityの高度なトピック

- Oracle Internet Directoryを使用したLabel Security用コマンドライン・ツール

- Oracle RAC 環境でのOracle Label Security

- Oracle Label SecurityのPL/SQLパッケージ

- Oracle Label Securityリファレンス

- Oracle Label Securityに関するよくある質問

A Oracle Label Securityの無効化および有効化

必要に応じて、Oracle Label Securityを無効化および有効化できます。

内容は次のとおりです。

- Oracle Label Securityを無効にする必要がある場合

- Oracle Label Securityの無効化

- Oracle Label Securityの有効化

注意:

Oracleでは、Oracle Label Securityの削除はサポートされていません。

Oracle Label Securityを無効にする必要がある場合

アップグレード・タスクを実行する際、または誤った構成を修正する際には、Oracle Label Securityを無効にする必要があります。

別の理由でOracle Label Securityを無効にするのは、Oracle Label Securityを強制せずにアプリケーションをテストする場合です。タスクが終了したら、Oracle Label Securityを再度有効にできます。

関連トピック

- Oracle Label Securityが登録されて有効になっているかどうかの確認

Oracle Label Securityの無効化

Oracle Database Vaultが有効な場合、Oracle Label Securityを無効にしないでください。

Database Vaultが有効かどうかを確認するには、『Oracle Database Vault管理者ガイド』を参照してください。

Oracle Label Securityを無効化するには、次の手順を実行します。

1. ユーザーSYSとして、またはLBAC_DBAロールを付与されているユーザーとして、データベース・インスタンスにログインします。

次に例を示します。

sqlplus psmith_ols -- Or, psmith_ols@hrpdb for the hrpdb pluggable database (PDB)
Enterp password: password

2. 次のプロシージャを実行します。

EXEC LBACSYS.OLS_ENFORCEMENT.DISABLE_OLS;

3. データベースを再起動します。

次に例を示します。

CONNECT SYS AS SYSOPER
Enter password: password

SHUTDOWN IMMEDIATE
STARTUP

4. Oracle Real Application Cluster (Oracle RAC)環境またはマルチテナント環境の場合、Oracle Label Securityを有効にした各Oracle RACノードまたはPDBに対して、これらの手順を繰り返します。

Oracle Label Securityの有効化

SQL*PlusでOracle Label Securityを有効化できます。

1. ユーザーSYSとして、またはLBAC_DBAロールを付与されているユーザーとして、データベース・インスタンスにログインします。

次に例を示します。

sqlplus psmith_ols -- Or, psmith_ols@hrpdb for the hrpdb PDB
Enterp password: password

2. 次のプロシージャを実行します。

EXEC LBACSYS.OLS_ENFORCEMENT.ENABLE_OLS;

3. データベースを再起動します。

次に例を示します。

CONNECT SYS AS SYSOPER
Enter password: password

SHUTDOWN IMMEDIATE
STARTUP

4. Oracle Real Application Cluster (Oracle RAC)環境またはマルチテナント環境の場合、Oracle Label Securityを無効にした各Oracle RACノードまたはPDBに対して、これらの手順を繰り返します。

B Oracle Label Securityの高度なトピック

Oracleには、ラベル間の関係を分析する機能など、Oracle Label Securityの高度な機能が用意されています。

内容は次のとおりです。

- ラベル間の関係の分析

- 監査対象のOracle Label Securityセッション・ラベルの問合せ

- セッション・ラベル設定用のOracle Call Interface

ラベル間の関係の分析

ラベル間の関係を分析できます。

内容は次のとおりです。

- 支配するラベルと支配されるラベルについて

- 比較できないラベル

- 支配ファンクションの使用

支配するラベルと支配されるラベルについて

2つのラベル間の関係は、支配という用語で説明できます。

ユーザーがオブジェクトにアクセスできるかどうかは、そのユーザーのラベルがオブジェクトのラベルを支配しているかどうかによって決定されます。ユーザーのラベルがオブジェクトのラベルを支配していない場合、ユーザーはそのオブジェクトへのアクセスを許可されません。

ラベルの支配関係は、そのすべてのコンポーネント、つまり、レベル、区分およびグループについて分析されます。

表B-1 ラベルの比較における支配関係

要因

支配関係の基準

レベル

label1がlabel2を支配するには、label1のレベルがlabel2のレベル以上である必要があります。

区分

label1がlabel2を支配するには、label1の区分がlabel2のすべての区分を含んでいる必要があります。

グループ

label1がlabel2を支配するには、label1がlabel2のグループの少なくとも1つを含んでいる必要があります。

あるラベルが別のラベルを支配するのは、そのすべてのコンポーネントが別のラベルのコンポーネントを支配している場合です。たとえば、ラベルHIGHLY_SENSITIVE:FINANCE,OPERATIONSは、ラベルHIGHLY_SENSITIVE:FINANCEを支配します。同様に、ラベルHIGHLY_SENSITIVE::WR_APは、ラベルHIGHLY_SENSITIVE::WR_AP, WR_ARを支配します。

関連項目:

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

比較できないラベル

支配に関してラベルの比較方法を理解するのは重要なことです。

2つのラベル間の関係は、常に支配という用語で定義できるとはかぎりません。どちらのラベルも他方を支配していない場合、2つのラベルは比較できません。

2つのラベル間で区分が異なる場合(HS:AやHS:Bなど)、両者は比較できません。同様に、ラベルHS:AおよびS:Bは比較できません。

DBA_SA_LABELSデータ・ディクショナリ・ビューを問い合せて、既存のラベルを確認できます。

支配ファンクションの使用

Oracle Label Securityでは、支配を制御する機能が提供されます。

内容は次のとおりです。

- 支配ファンクションについて

- OLS_DOMINATESスタンドアロン・ファンクション

- OLS_LABEL_DOMINATESスタンドアロン・ファンクション

- OLS_STRICTLY_DOMINATESスタンドアロン・ファンクション

- OLS_DOMINATED_BYスタンドアロン・ファンクション

- OLS_STRICTLY_DOMINATED_BYスタンドアロン・ファンクション

- SA_UTL.DOMINATES

- SA_UTL.STRICTLY_DOMINATES

- SA_UTL.DOMINATED_BY

- SA_UTL.STRICTLY_DOMINATED_BY

関連項目:

ラベル付きデータ行の順序付け

支配ファンクションについて

支配ファンクションを使用すると、問合せで範囲を指定できます。

次のファンクションを使用すると、指定したラベル間の支配関係を指定できます。

表B-2 支配関係を決定するファンクション

ファンクション

説明

OLS_DOMINATES

label1の値によりlabel2の値が支配されるか、等しくなります。

OLS_LABEL_DOMINATES

対応するpolicy_nameのセッション・ラベルの値により、labelの値が支配されるか、等しくなります。

OLS_STRICTLY_DOMINATES

label1の値によりlabel2の値が支配され、両者は等しくありません。

OLS_DOMINATED_BY

label1の値はlabel2の値に支配されます。

OLS_STRICTLY_DOMINATED_BY

label1の値はlabel2の値に支配され、両者は等しくありません。

支配ファンクションには2つのタイプがあることに注意してください。SA_UTLの支配ファンクションはBOOLEAN値を戻しますが、スタンドアロンの支配ファンクションは整数を戻します。

OLS_DOMINATESスタンドアロン・ファンクション

OLS_DOMINATES (OLS_DOM) ファンクションは、label1がlabel2を支配している場合は1 (TRUE)、それ以外の場合は0 (FALSE)を戻します。

構文

OLS_DOMINATES (
label1          IN NUMBER,
label2          IN NUMBER)
RETURN INTEGER;

パラメータ

表B-3 OLS_DOMINATESのパラメータ

パラメータ

説明

label1

確認する最初のラベル。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

label2

確認する2番目のラベル。

例

次の例では、既存のラベル・タグ1111と1112を比較しています。

SELECT OLS_DOMINATES ('1111', '1112') FROM DUAL;

OLS_DOMINATES('1111','1112')
----------------------------
0

注意:

古いOLSファンクションであるDOMINATESおよびDOMは、Oracle Database 12cリリース1 (12.1)では非推奨です。

このリリースでは古いファンクションを引き続き使用できますが、かわりにOLS_LABEL_DOMINATESおよびOLS_DOMファンクションを使用することをお薦めします。新しいファンクション名を使用すると、他のデータベース・コンポーネントと名前が競合する可能性が回避されます。

OLS_LABEL_DOMINATESスタンドアロン・ファンクション

スタンドアロンOLS_LABEL_DOMINATESファンクションは、セッション・ラベルの支配を確認します。

指定したpolicy_nameの値のセッション・ラベルにより、labelパラメータで指定されるラベルが支配されるか、等しくなる場合は、1 (TRUE)を戻します。それ以外の場合は、0 (FALSE)を戻します。このファンクションは公開されています。

注意:

この機能は、Oracle Database 12cリリース1 (12.1.0.2)以降で使用可能です。

このファンクションは、Oracle Label Securityポリシーに加えて、Oracle Data RedactionポリシーおよびOracle Database Vaultポリシーと併用できます。

構文

OLS_LABEL_DOMINATES (
policy_name    IN VARCHAR2,
label          IN VARCHAR2)
RETURN INTEGER;

パラメータ

表B-4 OLS_LABEL_DOMINATESのパラメータ

パラメータ

説明

policy_name

セッション・ラベルの支配を確認する必要があるOracle Label Securityポリシーの名前。ポリシーの既存のラベル値を検索するには、ALL_SA_LABELSビューのPOLICY_NAMEおよびLABEL列を問い合せます。

label

支配を確認する必要があるベース・ラベル。

例

次の例では、hr_ols_polポリシーのセッション・ラベルにより、hsラベルが支配されるか、等しくなるかどうかを確認します。

SELECT OLS_LABEL_DOMINATES ('hr_ols_pol', 'hs') FROM DUAL;

OLS_LABEL_DOMINATES('HR_OLS_POL','HS')
--------------------------------------
0

この例では、Oracle Data RedactionポリシーでOLS_LABEL_DOMINATESファンクションを使用する方法を示しています。

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema   => 'oe',
object_name     => 'customers',
column_name     => 'customer_id',
policy_name     => 'redact_cust_user_ids',
function_type   => DBMS_REDACT.FULL,
expression      => 'OLS_LABEL_DOMINATES(''hr_ols_pol'', ''hs'') = 0');
END;
/

次の例では、Oracle Database Vaultルール定義でOLS_LABEL_DOMINATESファンクションを使用する方法を示しています。

EXEC DBMS_MACADM.CREATE_RULE('Check OLS Factor', 'OLS_LABEL_DOMINATES(''hr_ols_pol'', ''hs'') = 1');

関連項目:

- Data Redactionの詳細は、『Oracle Database Advanced Securityガイド』を参照してください

- Database Vaultのレルムの詳細は、『Oracle Database Vault管理者ガイド』を参照してください

OLS_STRICTLY_DOMINATESスタンドアロン・ファンクション

OLS_STRICTLY_DOMINATES (OLS_S_DOM) ファンクションは、label1がlabel2を支配していて、両者が等しくない場合は1 (TRUE)を戻します。

構文

OLS_STRICTLY_DOMINATES (
label1          IN NUMBER,
label2          IN NUMBER)
RETURN INTEGER;

パラメータ

表B-5 OLS_STRICTLY_DOMINATESのパラメータ

パラメータ

説明

label1

確認する最初のラベル。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

label2

確認する2番目のラベル。

例

次の例では、既存のラベル・タグ1111と1112を比較しています。

SELECT OLS_STRICTLY_DOMINATES ('1111', '1112') FROM DUAL;

OLS_STRICTLY_DOMINATES('1111','1112')
-------------------------------------
0

注意:

古いOLSファンクションであるSTRICTLY_DOMINATESおよびS_DOMは、Oracle Database 12cリリース1 (12.1)では非推奨です。

このリリースでは古いファンクションを引き続き使用できますが、かわりにOLS_STRICTLY_DOMINATESおよびOLS_S_DOMファンクションを使用することをお薦めします。新しいファンクション名を使用すると、他のデータベース・コンポーネントと名前が競合する可能性が回避されます。

OLS_DOMINATED_BYスタンドアロン・ファンクション

OLS_DOMINATED_BY (OLS_DOM_BY)ファンクションは、label1がlabel2に支配されている場合は1 (TRUE)を戻します。

構文

OLS_DOMINATED_BY (
label1          IN NUMBER,
label2          IN NUMBER)
RETURN INTEGER;

パラメータ

表B-6 OLS_STRICTLY_DOMINATESのパラメータ

パラメータ

説明

label1

確認する最初のラベル。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

label2

確認する2番目のラベル。

例

次の例では、既存のラベル・タグ1111と1112を比較しています。

SELECT OLS_DOMINATED_BY ('1111', '1112') FROM DUAL;

OLS_DOMINATED_BY('1111','1112')
-------------------------------
1

注意:

古いOLSファンクションであるDOMINATED_BYおよびDOM_BYは、Oracle Database 12cリリース1 (12.1)では非推奨です。

このリリースでは古いファンクションを引き続き使用できますが、かわりにOLS_DOMINATED_BYおよびOLS_DOM_BYファンクションを使用することをお薦めします。新しいファンクション名を使用すると、他のデータベース・コンポーネントと名前が競合する可能性が回避されます。

OLS_STRICTLY_DOMINATED_BYスタンドアロン・ファンクション

OLS_STRICTLY_DOMINATED_BY (OLS_S_DOM_BY)ファンクションは、label1がlabel2に支配されていて、両者が等しくない場合は1 (TRUE)を戻します。

構文

OLS_STRICTLY_DOMINATED_BY (
label1          IN NUMBER,
label2          IN NUMBER)
RETURN INTEGER;

パラメータ

表B-7 OLS_DOMINATESのパラメータ

パラメータ

説明

label1

確認する最初のラベル。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

label2

確認する2番目のラベル。

例

次の例では、既存のラベル・タグ1111と1112を比較しています。

SELECT OLS_STRICTLY_DOMINATES ('1111', '1112') FROM DUAL;

OLS_STRICTLY_DOMINATES('1111','1112')
-------------------------------------
0

注意:

古いOLSファンクションであるSTRICTLY_DOMINATED_BYおよびS_DOM_BYは、Oracle Database 12cリリース1 (12.1)では非推奨です。

このリリースでは古いファンクションを引き続き使用できますが、かわりにOLS_STRICTLY_DOMINATED_BYおよびOLS_S_DOM_BYファンクションを使用することをお薦めします。新しいファンクション名を使用すると、他のデータベース・コンポーネントと名前が競合する可能性が回避されます。

SA_UTL.DOMINATES

SA_UTL.DOMINATESファンクションは、label1がlabel2を支配する場合、または指定のOLSポリシーのセッション・ラベルがlabelを支配する場合はTRUEを戻します。

構文

SA_UTL.DOMINATES (
label1          IN NUMBER,
label2          IN NUMBER)
RETURN BOOLEAN;

構文

SA_UTL.DOMINATES (
ols_policy_name  IN VARCHAR2,
label            IN VARCHAR2)
RETURN BOOLEAN;

パラメータ

表B-8 SA_UTL.DOMINATESのパラメータ

パラメータ

説明

label1

確認する最初のラベル。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

label2

確認する2番目のラベル。

例

次の例では、既存のラベル・タグ1111と1112を比較しています。

SET SERVEROUTPUT ON
BEGIN
IF SA_UTL.DOMINATES(1111, 1112)
THEN DBMS_OUTPUT.PUT_LINE('Label 1111 dominates label 1112.');
ELSE
DBMS_OUTPUT.PUT_LINE('Label 1112 dominates label 1111.');
END IF;
END;
/

Label 1112 dominates label 1111.

注意:

Oracle Label Securityポリシー名およびラベルを入力として受け取る2番目のSA_UTL.DOMINATESファンクションは、Oracle Database 12cリリース1 (12.1)では非推奨です。

このファンクションは引き続き使用できますが、Oracle Data RedactionおよびOracle Database Vaultの条件とともに使用することはできません。かわりにOLS_LABEL_DOMINATESファンクションを使用することをお薦めします。

NUMBERデータ型を使用する最初のSA_UTL.DOMINATESファンクションは、非推奨ではありません。

SA_UTL.STRICTLY_DOMINATES

SA_UTL.STRICTLY_DOMINATESファンクションは、label1がlabel2を支配していて、両者が等しくない場合はTRUEを戻します。

構文

SA_UTL.STRICTLY_DOMINATES (
label1          IN NUMBER,
label2          IN NUMBER)
RETURN BOOLEAN;

パラメータ

表B-9 SA_UTL.STRICTLY_DOMINATESのパラメータ

パラメータ

説明

label1

確認する最初のラベル。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

label2

確認する2番目のラベル。

例

次の例では、既存のラベル・タグ1111と1112を比較しています。

SET SERVEROUTPUT ON
BEGIN
IF SA_UTL.STRICTLY_DOMINATES(1111, 1112)
THEN DBMS_OUTPUT.PUT_LINE('Label 1111 strictly dominates label 1112.');
ELSE
DBMS_OUTPUT.PUT_LINE('Label 1112 strictly dominates label 1111.');
END IF;
END;
/

Label 1112 strictly dominates label 1111.

SA_UTL.DOMINATED_BY

SA_UTL.DOMINATED_BYファンクションは、label1がlabel2に支配されている場合はTRUEを戻します。

構文

SA_UTL.DOMINATED_BY (
label1          IN NUMBER,
label2          IN NUMBER)
RETURN BOOLEAN;

パラメータ

表B-10 SA_UTL.DOMINATED_BYのパラメータ

パラメータ

説明

label1

確認する最初のラベル。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

label2

確認する2番目のラベル。

例

次の例では、既存のラベル・タグ1111と1112を比較しています。

SET SERVEROUTPUT ON
BEGIN
IF SA_UTL.DOMINATED_BY(1111, 1112)
THEN DBMS_OUTPUT.PUT_LINE('Label 1111 is dominated by label 1112.');
ELSE
DBMS_OUTPUT.PUT_LINE('Label 1112 is dominated by label 1111.');
END IF;
END;
/

Label 1111 is dominated by label 1112.

SA_UTL.STRICTLY_DOMINATED_BY

SA_UTL.STRICTLY_DOMINATED_BYファンクションは、label1がlabel2に支配されていて、両者が等しくない場合はTRUEを戻します。

構文

SA_UTL.STRICTLY_DOMINATED_BY (
label1          IN NUMBER,
label2          IN NUMBER)
RETURN BOOLEAN;

パラメータ

表B-11 SA_UTL.STRICTLY_DOMINATED_BYのパラメータ

パラメータ

説明

label1

確認する最初のラベル。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

label2

確認する2番目のラベル。

例

次の例では、既存のラベル・タグ1111と1112を比較しています。

SET SERVEROUTPUT ON
BEGIN
IF SA_UTL.STRICTLY_DOMINATED_BY(1111, 1112)
THEN DBMS_OUTPUT.PUT_LINE('Label 1111 is strictly dominated by label 1112.');
ELSE
DBMS_OUTPUT.PUT_LINE('Label 1112 is strictly dominated by label 1111.');
END IF;
END;
/

Label 1111 is strictly dominated by label 1112.

関連項目:

ラベルの上限と下限の決定。

監査対象のOracle Label Securityセッション・ラベルの問合せ

統合された監査証跡を使用して、Oracle Label Securityなど、様々な監査ソースから情報を取得できます。

内容は次のとおりです。

- 監査対象のOracle Label Securityセッション・ラベルの問合せについて

- ORA_GET_AUDITED_LABELファンクション

監査対象のOracle Label Securityセッション・ラベルの問合せについて

統合監査ポリシーを作成して、OLS監査を構成する必要があります。

OLS監査により、OLSポリシーの有効化や無効化などの追加のイベントを監査できます。

監査証跡で取得されるセッション・ラベルは、UNIFIED_AUDIT_TRAILビューのAPPLICATION_CONTEXTS列に格納されます。LBACSYS.ORA_GET_AUDITED_LABELファンクションを使用して、APPLICATION_CONTEXTS列に格納されているセッション・ラベルを取得できます。このファンクションは、UNIFIED_AUDIT_TRAIL.APPLICATION_CONTEXTS列値、およびOracle Label Securityポリシー名を引数として受け入れ、指定したポリシーの列に格納されているセッション・ラベルを返します。

統合監査証跡でのOLS監査の構成および使用の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

ORA_GET_AUDITED_LABELファンクション

ORA_GET_AUDITED_LABELファンクションは、指定されたOLSポリシーおよびAPPLICATION_CONTEXTS列値の監査済セッション・ラベルを戻します。

AUDIT_VIEWERロールには、ORA_GET_AUDITED_LABELファンクションでのEXECUTE権限があります。

構文

ORA_GET_AUDITED_LABEL (
appctx_col_value   IN VARCHAR2,
ols_policy_name    IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表B-12 ORA_GET_AUDITED_LABELのパラメータ

パラメータ

説明

appctx_col_value

UNIFIED_AUDIT_TRAIL.APPLICATION_CONTEXTS列の値。

policy_name

ラベル・セキュリティ・ポリシー名。

例

次の例では、hr_ols_polポリシーの監査済セッション・ラベルを戻します。

SELECT ORA_GET_AUDITED_LABEL ('cust_ctx', 'hr_ols_pol') FROM DUAL;

ORA_GET_AUDITED_LABEL('X','HR_OLS_POL')
---------------------------------------
HS

セッション・ラベル設定用のOracle Call Interface

Oracle Call Interface (OCI)を使用して、セッション・ラベルを設定できます。

内容は次のとおりです。

- Oracle Call Interfaceを使用したセッション・ラベルの設定について

- Oracle Call Interfaceを使用したセッション・ラベルの設定

- 例: SYS_CONTEXTファンクションによるOracle Call Interfaceの使用

Oracle Call Interfaceを使用したセッション・ラベルの設定について

Oracle Call Interface (OCI)を使用して接続する場合は、SYS_CONTEXT変数を使用してセッション・ラベルと行ラベルを初期化できます。

OCIAttrSetファンクションを使用して変数を設定し、外部で初期化されたSYS_CONTEXT変数を初期化できます。これらが使用できるのは、Oracle Label Securityが有効な場合です。

各ポリシーには、SA$policy_name_Xという名前のSYS_CONTEXTがあります。これらの2つの変数INITIAL_LABELおよびINITIAL_ROW_LABELを設定できます。

新規の値をユーザーの認証の範囲内で有効なラベルに設定すると、ユーザー用に格納されているデフォルト値のかわりにその値が使用されます。これは、リモート接続に使用されるのと同じメカニズムです。

関連項目:

分散データベースでのOracle Label Securityの使用

Oracle Call Interfaceを使用したセッション・ラベルの設定

Oracle Call Interfaceを使用して、セッション・ラベルを設定できます。

1. OCI_ATTR_APPCTX_SIZEを指定してOCIAttrSetをコールし、コンテキストの配列サイズを任意の数のコンテキスト属性で初期化します。

OCIAttrSet(session, OCI_HTYPE_SESSION,
(dvoid *)&size, (ub4)0, OCI_ATTR_APPCTX_SIZE, error_handle);

これにより、OCIAttrSetの追加属性が定義されます。

サイズはub4型であることに注意してください。

2. OCI_ATTR_APPCTX_LISTを指定してOCIAttrGetをコールし、セッションに対するアプリケーション・コンテキスト・リスト記述子のハンドルを取得します。

OCIAttrGet(session, OCI_HTYPE_SESSION,
(dvoid *)&ctxl_desc, (ub4)0, OCI_ATTR_APPCTX_LIST, error_handle);

ctxl_descは(OCIParam *)型であることに注意してください。

3. アプリケーション・コンテキスト・リスト記述子を指定してOCIParamGetをコールし、i-番目のアプリケーション・コンテキストの個々の記述子を取得します。

OCIParamGet(ctxl_desc, OCI_DTYPE_PARAM, error_handle,(dvoid **)&ctx_desc, i);

ctx_descは(OCIParam *)型であることに注意してください。

4. 3つの新規属性OCI_ATTR_APPCTX_NAME、OCI_ATTR_APPCTX_ATTRおよびOCI_ATTR_APPCTX_VALUEをそれぞれ指定してOCIAttrSetをコールし、アプリケーション・コンテキスト内で適切な値を設定します。

OCIAttrSet(ctx_desc, OCI_DTYPE_PARAM,
(dvoid *)ctx_name, sizeof(ctx_name), OCI_ATTR_APPCTX_NAME,
error_handle);

OCIAttrSet(ctx_desc, OCI_DTYPE_PARAM,
(dvoid *)attr_name, sizeof(attr_name), OCI_ATTR_APPCTX_ATTR,
error_handle);

OCIAttrSet(ctx_desc, OCI_DTYPE_PARAM,
(dvoid *)value, sizeof(value), OCI_ATTR_APPCTX_VALUE,
error_handle);

アプリケーション・コンテキストの操作はVARCHAR2型に基づいているため、サポートされるのは文字型のみであることに注意してください。

例: SYS_CONTEXTファンクションによるOracle Call Interfaceの使用

外部化されたSYS_CONTEXTファンクションをOracle Label Securityで使用するOCIコールを作成できます。

例B-1に、その方法を示します。

例B-1 OLSでSYS_CONTEXTを外部化するためのOCIの使用

#ifdef RCSID
static char *RCSid =
"$Header: ext_mls.c 09-may-00.10:07:08 jdoe Exp $ ";
#endif /* RCSID */

/* Copyright (c) Oracle Corporation 1999, 2000. All Rights Reserved. */

/*

NAME
ext_mls.c - externalized SYS_CONTEXT with Label Security

DESCRIPTION
Run olsdemo.sql script before executing this example.
Usage: <executable obtained with .c file> <user_name> <password> <session-initial-label
Example: avg_sal sa_demo sa_demo L3:M,E:D10

PUBLIC FUNCTION(S)
<list of external functions declared/defined - with one-line descriptions>

PRIVATE FUNCTION(S)
<list of static functions defined in .c file - with one-line descriptions>

RETURNS
The average salary in the EMP table of the SA_DEMO schema querying as the specified user with the specified session label.

NOTES
<other useful comments, qualifications, and so on>

MODIFIED   (MM/DD/YY)
jlev      09/18/03 - cleanup
jdoe      05/09/00 - cleanup
jdoe      10/13/99 - standalone OCI program to test MLS SYS_CONTEXT
jdoe      10/13/99 - Creation

*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <oci.h>

static OCIEnv *envhp;
static OCIError *errhp;

int main(/*_ int argc, char *argv[] _*/);

/* get and print error */
static void checkerr(/*_OCIError *errhp, sword status _*/);
/* print error */
static void printerr(char *call);
static sword status;

/* return the average of employees' salary */
static CONST text *const selectstmt = (text *)
"select avg(sal) from sa_demo.emp";

int main(argc, argv)
int argc;
char *argv[];
{
OCISession *authp = (OCISession *) 0;
OCIServer *srvhp;
OCISvcCtx *svchp;
OCIDefine *defnp = (OCIDefine *) 0;
dvoid *parmdp;
ub4 ctxsize;
OCIParam *ctxldesc;
OCIParam *ctxedesc;
OCIStmt *stmtp = (OCIStmt *) 0;
ub4 avg_sal = 0;
sword status;

if (OCIInitialize((ub4) OCI_DEFAULT, (dvoid *) 0,
(dvoid * (*)(dvoid *, size_t)) 0,
(dvoid * (*)(dvoid *, dvoid *, size_t)) 0,
(void (*)(dvoid *, dvoid *)) 0))
printerr("OCIInitialize");

if (OCIEnvInit((OCIEnv **) &envhp, OCI_DEFAULT, (size_t) 0, (dvoid **) 0))
printerr("OCIEnvInit");

if (OCIHandleAlloc((dvoid *) envhp, (dvoid **) &errhp, OCI_HTYPE_ERROR,
(size_t) 0, (dvoid **) 0))
printerr("OCIHandleAlloc:OCI_HTYPE_ERROR");

if (OCIHandleAlloc((dvoid *) envhp, (dvoid **) &srvhp, OCI_HTYPE_SERVER,
(size_t) 0, (dvoid **) 0))
printerr("OCIHandleAlloc:OCI_HTYPE_SERVER");

if (OCIHandleAlloc((dvoid *) envhp, (dvoid **) &svchp, OCI_HTYPE_SVCCTX,
(size_t) 0, (dvoid **) 0))
printerr("OCIHandleAlloc:OCI_HTYPE_SVCCTX");

if (OCIServerAttach(srvhp, errhp, (text *) "", strlen(""), 0))
printerr("OCIServerAttach");

/* set attribute server context in the service context */
if (OCIAttrSet((dvoid *) svchp, OCI_HTYPE_SVCCTX, (dvoid *) srvhp,
(ub4) 0, OCI_ATTR_SERVER, (OCIError *) errhp))
printerr("OCIAttrSet:OCI_HTYPE_SVCCTX");

if (OCIHandleAlloc((dvoid *) envhp, (dvoid **) &authp,
(ub4) OCI_HTYPE_SESSION, (size_t) 0, (dvoid **) 0))
printerr("OCIHandleAlloc:OCI_HTYPE_SESSION");

/* set application context to 1 */
ctxsize = 1;

/* set up app ctx buffer */
if (OCIAttrSet((dvoid *) authp, (ub4) OCI_HTYPE_SESSION, (dvoid *) &ctxsize,
(ub4) 0, (ub4) OCI_ATTR_APPCTX_SIZE, errhp))
printerr("OCIAttrSet:OCI_ATTR_APPCTX_SIZE");

/* retrieve the list descriptor */
if (OCIAttrGet((dvoid *) authp, (ub4) OCI_HTYPE_SESSION,
(dvoid *) &ctxldesc, 0, OCI_ATTR_APPCTX_LIST, errhp))
printerr("OCIAttrGet:OCI_ATTR_APPCTX_LIST");

if (status = OCIParamGet(ctxldesc, OCI_DTYPE_PARAM, errhp,
(dvoid **) &ctxedesc, 1))
{
if (status == OCI_NO_DATA)
{
printf("No Data found!\n");
exit(1);
}
}

/* set context namespace to SA$<pol_name>_X */
if (OCIAttrSet((dvoid *) ctxedesc, (ub4) OCI_DTYPE_PARAM,
(dvoid *) "SA$HUMAN_RESOURCES_X",
(ub4) strlen((char *) "SA$HUMAN_RESOURCES_X"),
(ub4) OCI_ATTR_APPCTX_NAME, errhp))
printerr("OCIAttrSet:OCI_ATTR_APPCTX_NAME:SA$HUMAN_RESOURCES_X");

/* set context attribute to INITIAL_LABEL */
if (OCIAttrSet((dvoid *) ctxedesc, (ub4) OCI_DTYPE_PARAM,
(dvoid *) "INITIAL_LABEL",
(ub4) strlen((char *) "INITIAL_LABEL"),
(ub4) OCI_ATTR_APPCTX_ATTR, errhp))
printerr("OCIAttrSet:OCI_DTYPE_PARAM:INITIAL_LABEL");

/* set context value to argv[3] - initial label */
if (OCIAttrSet((dvoid *) ctxedesc, (ub4) OCI_DTYPE_PARAM,
(dvoid *) argv[3],
(ub4) strlen((char *) argv[3]),
(ub4) OCI_ATTR_APPCTX_VALUE, errhp))
printerr("OCIAttrSet:argv[3]");

/* username first command line argument */
if (OCIAttrSet((dvoid *) authp, (ub4) OCI_HTYPE_SESSION, (dvoid *) argv[1],
(ub4) strlen((char *) argv[1]), (ub4) OCI_ATTR_USERNAME,
errhp))
printerr("OCIAttrSet:username");

/* password second command line argument */
if (OCIAttrSet((dvoid *) authp, (ub4) OCI_HTYPE_SESSION, (dvoid *) argv[2],
(ub4) strlen((char *) argv[2]), (ub4) OCI_ATTR_PASSWORD,
errhp))
printerr("OCIAttrSet:password");

if (OCISessionBegin(svchp, errhp, authp, OCI_CRED_RDBMS, (ub4) OCI_DEFAULT))
printerr("OCISessionBegin");

if (OCIAttrSet((dvoid *) svchp, (ub4) OCI_HTYPE_SVCCTX, (dvoid *) authp,
(ub4) 0, (ub4) OCI_ATTR_SESSION, errhp))
printerr("OCIAttrSet:OCI_ATTR_SESSION");

if (OCIHandleAlloc((dvoid *) envhp, (dvoid **) &stmtp, OCI_HTYPE_STMT,
0, 0))
printerr("OCIHandleAlloc:OCI_HTYPE_STMT");

if (OCIStmtPrepare(stmtp, errhp, (CONST OraText *) selectstmt,
(ub4) strlen((const char *) selectstmt),
(ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT))
printerr("OCIStmtPrepare");

if (OCIDefineByPos(stmtp, &defnp, errhp, (ub4) 1, (dvoid *) &avg_sal,
(sb4) sizeof(avg_sal), SQLT_INT, 0, 0, 0, OCI_DEFAULT))
printerr("OCIDefineByPos");

if (status = OCIStmtExecute(svchp, stmtp, errhp, 1, 0, NULL, NULL,
OCI_DEFAULT))
{
if (status == OCI_NO_DATA)
{
printf("No Data found!\n");
exit(1);
}
}

if (OCISessionEnd(svchp, errhp, authp, OCI_DEFAULT))
printerr("OCISessionEnd");

printf("average salary is: %d\n", avg_sal);
}

void checkerr(errhp, status)
OCIError *errhp;
sword status;
{
text errbuf[512];
sb4 errcode = 0;

switch (status)
{
case OCI_ERROR:
(void) OCIErrorGet((dvoid *) errhp, 1, NULL, &errcode, errbuf,
(ub4) sizeof(errbuf), OCI_HTYPE_ERROR);
printf("Error - %.*s\n", 512, errbuf);
break;
default:
break;
}
}

void printerr(call)
char *call;
{
printf("Error: %s\n", call);
}
/* end of file ext_mls.c */

C Oracle Internet Directoryを使用したLabel Security用コマンドライン・ツール

Oracle Label Securityでは、Oracle Internet Directoryを使用するためのコマンドライン・ツールが提供されます。

内容は次のとおりです。

- Oracle Label Securityのコマンドライン・ツールについて

- Oracle Label Securityカテゴリ別のコマンド

- olsadmintool Command Reference

- olsadmintoolコマンドの関連パラメータ

- olsadmintoolユーティリティの使用例

Oracle Label Securityのコマンドライン・ツールについて

Oracle Label SecurityをOracle Internet Directoryと併用する場合、ディレクトリに格納されるラベル・セキュリティ属性を作成および変更できます。

このコマンドによって、ディレクトリ内のエントリの更新、挿入および削除が実行され、コマンドは、$ORACLE_HOME/bin/olsadmintoolからコールするolsadmintoolという名前のスクリプトを介して実装されます。

注意:

Oracle Label Securityの管理に、Oracle Enterprise Managerで提供されるグラフィカル・ユーザー・インタフェースも使用できます。詳細は、Oracle Enterprise Managerのヘルプを参照してください。

Oracle Label Securityカテゴリ別のコマンド

Oracle Label Securityのコマンドは、ポリシー、レベル、グループなどに従って分類できます。

表C-1に、すべてのコマンドと参照先をカテゴリ別に示します。

Oracle Internet Directoryを使用せずにOracle Label Securityを単独で使用する場合は、一部のコマンドにより、指定の目的で使用されるPL/SQLプロシージャが置き換えられます。すでにOracle Internet Directoryを追加するOracle Label Securityを使用しているサイトでは、これらのPL/SQLプロシージャの使用を新規コマンドの使用に切り替える必要があります。

表C-1 Oracle Label Securityカテゴリ別のコマンド

コマンドのカテゴリ

コマンド

置き換えられるPL/SQL文

ポリシー

olsadmintool createpolicy

SA_SYSDBA.CREATE_POLICY

ポリシー

olsadmintool alterpolicy

SA_SYSDBA.ALTER_POLICY

ポリシー

olsadmintool droppolicy

SA_SYSDBA.DROP_POLICY

ポリシー

olsadmintool addpolcreator

なし、新規

ポリシー

olsadmintool droppolcreator

なし、新規

ポリシー内のレベル

olsadmintool createlevel

SA_COMPONENTS.CREATE_LEVEL

ポリシー内のレベル

olsadmintool alterlevel

SA_COMPONENTS.ALTER_LEVEL

ポリシー内のレベル

olsadmintool droplevel

SA_COMPONENTS.DROP_LEVEL

ポリシー内のグループ

olsadmintool creategroup

SA_COMPONENTS.CREATE_GROUP

ポリシー内のグループ

olsadmintool altergroup

SA_COMPONENTS.ALTER_GROUP

ポリシー内のグループ

olsadmintool altercompartent

SA_COMPONENTS.ALTER_GROUP_PARENT

ポリシー内のグループ

olsadmintool dropgroup

SA_COMPONENTS.DROP_GROUP

ポリシー内の区分

olsadmintool createcompartment

SA_COMPONENTS.CREATE_COMPARTMENT

ポリシー内の区分

olsadmintool altercompartent

SA_COMPONENTS.ALTER_COMPARTMENT

ポリシー内の区分

olsadmintool dropcompartment

SA_COMPONENTS.DROP_COMPARTMENT

データ・ラベル

olsadmintool createlabel

SA_LABEL_ADMIN.CREATE_LABEL

データ・ラベル

olsadmintool alterlabel

SA_LABEL_ADMIN.ALTER_LABEL

データ・ラベル

olsadmintool droplabel

SA_LABEL_ADMIN.DROP_LABEL

ユーザー

olsadmintool adduser

なし、新規

ユーザー

olsadmintool dropuser

SA_USER_ADMIN.DROP_USER_ACCESS

プロファイル

olsadmintool createprofile

複数のメソッドの使用を置換え。脚注1

プロファイル

olsadmintool listprofile

なし、新規

プロファイル

olsamindtool describeprofile

なし、新規

プロファイル

olsadmintool dropprofile

なし、新規

ポリシー管理者

olsadmintool addadmin

なし、新規

ポリシー管理者

olsadmintool dropadmin

なし、新規

監査

olsadmintool audit

SA_AUDIT_ADMIN.AUDIT

監査

olsadmintool noaudit

SA_AUDIT_ADMIN.NOAUDIT

ヘルプ

olsadmintool --help

なし、新規

脚注1

SA_USER_ADMIN内の複数のメソッドを置換え: SET_LEVELS、SET_USER_PRIVILEGESおよびSET_DEFAULT_LABEL

olsadmintoolコマンド・リファレンス

olsadmintoolコマンドは、Oracle Label Securityポリシーの管理グループへのエンタープライズ・ユーザーの追加などのタスクを実行します。

olsadmintoolをコマンドラインから実行する必要があります。

olsadmintoolコマンドについて

olsadmintoolコマンドをコマンド・プロンプトから実行します。特殊文字を使用して特定の操作を実行できます。

olsadmintoolコマンドでは、一部のパラメータはオプションです。オプションのパラメータは、大カッコなどで囲んで示されています。最も一般的な2つの例が[ -b admin context ]および[-p port]で、コマンドの管理コンテキストまたはOracle Internet Directoryへの接続に使用するポートを指定することはオプションであることを示します。(デフォルト・ポートは389です。)

単一のダッシュで始まるb、h、p、Dおよびwを除き、すべてのパラメータには2つのダッシュ(スペースなしの--)を使用する必要があります。2つのダッシュは、使用する名前またはパラメータの完全または長いバージョンを指定する必要があることを示します。このような名前またはパラメータにスペースが含まれている場合は、"これは極端に長い名前またはパラメータです。"のように二重引用符で囲む必要があります。

olsadmintool addadmin

olsadmintool addadminコマンドを使用すると、ポリシーの管理グループにエンタープライズ・ユーザーを追加できます。

これにより、そのユーザーは指定されたポリシーのメタデータを作成、変更または削除できます。ポリシー名および新規管理者のDNを指定する必要があります。このグループには、エンタープライズ・ユーザーのみを含める必要があります。

構文

olsadmintool addadmin --polname policy_name --admindn admin_DN
[ -b admin_context] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool addadmin --polname defense --admindn "cn=scott,c=us"
-h sales_west -D cn=lbacsys -w bind_password

olsadmintool addpolcreator

olsadmintool addpolcreatorコマンドを使用すると、指定したユーザーにポリシーの作成を許可できます。

ユーザーのDNを指定する必要があります。

構文

olsadmintool addpolcreator --userdn user_DN
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool addpolcreator --userdn "cn=scott" -h sales_west -D cn=lbacsys -w bind_password

olsadmintool adduser

olsadmintool adduserコマンドを使用すると、ポリシー内のプロファイルにエンタープライズ・ユーザーを追加できます。

プロファイル名、ポリシー名およびユーザーDNを指定する必要があります。脚注2 エンタープライズ・ユーザーは、データベースに接続するための追加の機能を持つ標準的なOracle Internet Directoryユーザーです。プロファイルに追加するユーザーは、エンタープライズ・ユーザーである必要があります。

構文

olsadmintool adduser --polname policy_name --profname profile_name --userdn
enterprise_user_DN[ -b admin_context ] -h OID_host [-p port] -D bind_DN
-w bind_password

例

olsadmintool adduser --polname tradesecret --profname topsales --userdn "cn=perot"
-b "cn=EDS" -h ford -p 1890 -D cn=lbacsys -w bind_password

olsadmintool altercompartent

olsadmintool altercompartmentコマンドを使用すると、区分の詳細名を変更できます。

ポリシー名、区分の短縮名および新規の詳細名を指定する必要があります。

構文

olsadmintool altercompartment --polname policy_name --shortname
short_compartment_name --longname new_long_compartment_name
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool altercompartment --polname defense --shortname A --longname "Allied
Forces" -h sales_west -D cn=defense_admin -w bind_password

olsadmintool altergroup

olsadmintool altergroupコマンドを使用すると、グループ・コンポーネントまたは親グループの詳細名を変更できます。

ポリシー名とグループの短縮名および詳細名を指定する必要があります。

構文

olsadmintool altergroup --polname policy_name --shortname short_group_name
--longname "new_long_group_name"
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool altergroup --polname defense --shortname US --longname "United States
of America"  -h sales_west -D cn=defense_admin -w bind_password

olsadmintool altergroupparent

olsadmintool altergroupparentコマンドを使用すると、グループの親グループを変更または削除できます。

ポリシー名およびグループの短縮名と、親グループの短縮名またはclearparentフラグのどちらか一方を指定する必要があります。

構文

olsadmintool altergroupparent --polname policy_name --shortname
short_group_name [--parentname new_parent_group_name ] [--clearparent]
--longname "new_long_group_name" [--parentname new_short_group_name ]
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool altergroupparent --polname defense --shortname US --parentname
"Earth" -h sales_west -p 5678 -D cn=defense_admin -w bind_password

olsadmintool altergroupparent --polname defense --shortname US --clearparent
-h sales_west -p 5678 -D cn=defense_admin -w bind_password

olsadmintool alterlabel

olsadmintool alterlabelコマンドを使用すると、ラベル・タグに関連付けられているラベル定義文字列を変更できます。

ポリシー名、ラベルの数値タグおよびラベルを表す新規文字列を指定する必要があります。

構文

olsadmintool alterlabel --polname policy_name --tag tag_number
--value new_label_value [ -b admin_context ] -h OID_host [-p port]
-D bind_DN -w bind_password

例

olsadmintool alterlabel --polname defense --tag 100 --value "TS:A:US" -h sales_west -D cn=defense_admin -w bind_password

olsadmintool alterlevel

olsadmintool alterlevelコマンドを使用すると、レベルの詳細名を変更できます。

ポリシー名、レベルの短縮名および新規の詳細名を指定する必要があります。

構文

olsadmintool alterlevel --polname policy_name --shortname short_level_name
--longname "new_long_level_name"
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool alterlevel --polname defense --shortname TS
--longname "VERY TOP SECRET" -h sales_west -D cn=defense_admin -w bind_password

olsadmintool alterpolicy

olsadmintool alterpolicyコマンドを使用すると、ポリシーのオプションを変更できます。

ポリシー名と新規オプションを指定する必要があります。

構文

olsadmintool alterpolicy --name policy_name --options new_options
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

次のように指定します。

- new_optionsは、INVERSE_GROUP、HIDE、LABEL_DEFAULT、LABEL_UPDATE、CHECK_CONTROL、READ_CONTROL、WRITE_CONTROL、INSERT_CONTROL、DELETE_CONTROL、UPDATE_CONTROL、ALL_CONTROL、NO_CONTROLのエントリの任意の組合せになります。

例

olsadmintool alterpolicy --name defense --options "READ_CONTROL,INSERT_CONTROL"
-h sales_west -D cn=defense_admin -w bind_password

olsadmintool audit

olsadmintool olsadmintool auditコマンドを使用すると、ポリシーの監査オプションを設定できます。

ポリシー名、監査するオプション、監査のタイプおよび監査対象となる成功のタイプを指定する必要があります。

構文

olsadmintool audit --polname policy_name --options audit_option_name
--type audit_option_type --success audit_success_type
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

次のように指定します。

- audit_optionは、APPLY、REMOVE、SET、PRIVILEGEのエントリの任意の組合せになります。

- typeは、sessionまたはaccessになります

- successは、successful、not successfulまたはbothになります。

例

olsadmintool audit --polname defense --options "APPLY,PRIVILEGE" --type session
--success success -h sales_west -D cn=defense_admin -w bind_password

olsadmintool createcompartment

olsadmintool createcompartmentコマンドを使用すると、新規の区分コンポーネントを作成できます。

ポリシー名と、区分のタグの数値、短縮名および詳細名を指定する必要があります。

構文

olsadmintool createcompartment --polname policy_name --tag tag_number
--shortname short_compartment_name --longname <"long_compartment_name">
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool createcompartment --polname defense --tag 100 --shortname A
--longname Alpha -h sales_west -D cn=defense_admin -w bind_password

olsadmintool creategroup

olsadmintool creategroupコマンドを使用すると、新規のグループ・コンポーネントを作成できます。

ポリシー名と、グループのタグの数値、短縮名、詳細名および親グループ名(オプション)を指定する必要があります。

構文

olsadmintool creategroup --polname policy_name --tag tag_number
--shortname short_group_name --longname <"long_group_name">
[--parentname parent_group_name]
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool creategroup --polname defense --tag 55 --shortname US
--longname "United States" -h sales_west -D cn=defense_admin -w bind_password

olsadmintool createlabel

olsadmintool createlabelコマンドを使用すると、有効なデータ・ラベルを作成できます。

ポリシー名、作成するラベルの数値タグおよびラベルを表す文字列を指定する必要があります。

構文

olsadmintool createlabel --polname policy_name --tag tag_number
--value label_value
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool createlabel --polname defense --tag 100 --value "TS:A,B:US,CA"
-h sales_west -D cn=defense_admin -w bind_password

olsadmintool createlevel

olsadmintool createlevelコマンドを使用すると、新規のレベル・コンポーネントを作成できます。

ポリシー名、タグの数値、レベルの短縮名および詳細名を指定する必要があります。

構文

olsadmintool createlevel --polname policy_name --tag tag_number
--shortname short_level_name --longname <"long_level_name">
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool createlevel --polname defense --tag 100 --shortname TS
--longname "TOP SECRET" -h sales_west -D cn=defense_admin -w bind_password

olsadmintool createprofile

olsadmintool createprofileコマンドを使用すると、新規プロファイルを作成できます。

ポリシー名、プロファイル名、および権限またはラベルのどちらか(あるいはその両方)を指定する必要があります。(ユーザー・プロファイルにはNULLのラベル情報またはNULLの権限情報を指定できますが、同時に両方にNULLは指定できません。)ラベルの場合は、このプロファイル内のユーザーがデータの読取りに使用できる最大ラベル、このプロファイル内のユーザーがデータの書込みに使用できる最大ラベル、このプロファイル内のユーザーがデータの書込みに使用できる最小ラベル、読取り用のデフォルト・ラベルおよび書込み用のデフォルト行ラベルを指定します。権限の場合は、このプロファイルのメンバーの権限をカンマで区切ったリストを引用符で囲みます。

構文

olsadmintool createprofile --polname policy_name --profname profile_name
--maxreadlabel max_read_label --maxwritelabel max_write_label
--minwritelabel min_read_label --defreadlabel default_read_label
--defrowlabel default_row_label --privileges privileges_separated_by_comma
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool createprofile --polname topsecret --profname topsales
--maxreadlabel "TS:A,B:US,CA" --maxwritelabel "TS:A,B:US,CA"
--minwritelabel "C" --defreadlabel "TS:A,B:US,CA"
--defrowlabel "C:A,B:US,CA"
--privileges "READ,COMPACCESS,WRITEACROSS"
-b EDS -h ford -p 1890 -D cn=lbacsys -w lbacsyspwrd

olsadmintool createpolicy

olsadmintool createpolicyコマンドを使用すると、ポリシーを作成できます。

ポリシー名、ラベル列名およびオプションを指定する必要があります。

構文

olsadmintool createpolicy --name policy_name --colname column_name
--options options_separated_by_commas
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

次のように指定します。

- new_optionsは、INVERSE_GROUP、HIDE、LABEL_DEFAULT、LABEL_UPDATE、CHECK_CONTROL、READ_CONTROL、WRITE_CONTROL、INSERT_CONTROL、DELETE_CONTROL、UPDATE_CONTROL、ALL_CONTROL、NO_CONTROLのエントリの任意の組合せになります。

例

olsadmintool createpolicy --name defense --colname defense_col
--options "READ_CONTROL,UPDATE_CONTROL" -h sales_west -p 389 -D cn=defense_admin
-w bind_password

olsamindtool describeprofile

olsadmintool describeprofileコマンドを使用すると、ポリシー・プロファイルの内容を表示できます。

ポリシー名とプロファイル名を指定する必要があります。

構文

olsadmintool describeprofile --polname policy_name --profname profile_name
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool describeprofile --polname defense --profname contractors
-h sales_west -D cn=defense_admin -w bind_password

olsadmintool dropadmin

olsadmintool dropadminコマンドを使用すると、ポリシーの管理グループからエンタープライズ・ユーザーを削除できます。

つまり、そのユーザーは指定されたポリシーのメタデータを作成、変更または削除できなくなります。ポリシー名、および管理グループから削除する管理者のDNを指定する必要があります。

構文

olsadmintool dropadmin --polname policy_name --admindn admin_DN
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool dropadmin --polname defense --admindn "cn=scott,c=us"
-h sales_west -D cn=lbacsys -w bind_password

olsadmintool dropcompartment

olsadmintool dropcompartmentコマンドを使用すると、区分コンポーネントを削除できます。

ポリシー名と区分の短縮名を指定する必要があります。

構文

olsadmintool dropcompartment --polname policy_name
--shortname short_compartment_name
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool dropcompartment --polname defense --shortname A
-h sales_west -D cn=defense_admin -w bind_password

olsadmintool dropgroup

olsadmintool dropgroupコマンドを使用すると、グループ・コンポーネントを削除できます。

ポリシー名とグループの短縮名を指定する必要があります。

構文

olsadmintool dropgroup --polname policy_name --shortname short_group_name
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool dropgroup --polname defense --shortname US
-h sales_west -D cn=defense_admin -w bind_password

olsadmintool droplabel

olsadmintool droplabelコマンドを使用すると、ポリシーからラベルを削除できます。

ポリシー名とラベルを表す文字列を指定する必要があります。

構文

olsadmintool droplabel --polname policy_name --value label_value
-h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool droplabel --polname defense --value "TS:A:US"
h sales_west -D cn=defense_admin -w bind_password

olsadmintool droplevel

olsadmintool droplevelコマンドを使用すると、指定したポリシーからレベル・コンポーネントを削除できます。

ポリシー名とレベルの短縮名を指定する必要があります。

構文

olsadmintool droplevel --polname policy_name --shortname short_level_name
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool droplevel --polname defense --shortname TS
-h sales_west -D cn=defense_admin -w bind_password

olsadmintool droppolicy

olsadmintool droppolicyコマンドを使用すると、ポリシーを削除できます。

削除するポリシーの名前を指定する必要があります。Oracle Label SecurityのOracle Internet Directory対応のインストールについては、「Oracle Internet Directory対応Label Securityでのポリシーのサブスクリプション」を参照してください。

構文

olsadmintool droppolicy --name policy_name
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool droppolicy --name defense -h sales_west -D cn=defense_admin -w bind_password

olsadmintool dropprofile

olsadmintool dropprofileコマンドを使用すると、指定したプロファイルを削除できます。

ポリシー名と削除するプロファイルの名前を指定する必要があります。

注意:

プロファイルを削除すると、削除したプロファイル内のユーザー全員について、そのポリシーから認可が削除されます。これらのユーザーは、そのポリシーで保護されているデータを表示できなくなります。

構文

olsadmintool dropprofile --polname policy_name --profname profile_name
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool dropprofile --name defense --profname employees
-h sales_west -D cn=defense_admin -w bind_password

olsadmintool droppolcreator

olsadmintool droppolcreatorコマンドを使用すると、指定したユーザーからポリシー作成許可を取り消すことができます。

ユーザーのDNを指定する必要があります。

構文

olsadmintool droppolcreator --userdn user_DN
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool droppolcreator --userdn "cn-scott,c=us"
-b UA -h sales_west -p 1890 -D bind_DN -w bind_password

olsadmintool dropuser

olsadmintool dropuserコマンドを使用すると、指定したポリシーの指定したプロファイルからユーザーを削除できます。

ポリシー名、プロファイル名およびユーザーのDNを指定する必要があります。

構文

olsadmintool dropuser --polname policy_name --profname profile_name
--userdn enterprise_user_DN
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool dropuser --polname defense --profname contractors
--userdn "cn=hanssen,c=us" -h sales_west -D cn=defense_admin -w bind_password

olsadmintool --help

olsadmintool command_name -- helpコマンドを使用すると、指定したコマンドに関するヘルプ情報を表示できます。

構文

olsadmintool command_name --help

olsadmintool noaudit

olsadmintool noauditコマンドを使用すると、ポリシーの監査オプションを取り消すことができます。

ポリシー名と監査外にするオプションを指定する必要があります。

構文

olsadmintool noaudit --polname policy_name --options audit_option_name
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

次のように指定します。

- audit_option_nameは、APPLY、REMOVE、SET、PRIVILEGEのエントリの任意の組合せになります。

例

olsadmintool noaudit --polname defense --options "APPLY,PRIVILEGES" -h sales_west
-D cn=defense_admin -w bind_password

olsadmintool listprofile

olsadmintool listprofileコマンドを使用すると、指定したポリシー内の全プロファイルのリストを表示できます。

ポリシー名を指定する必要があります。

構文

olsadmintool listprofile --polname policy_name
[ -b admin_context ] -h OID_host [-p port] -D bind_DN -w bind_password

例

olsadmintool listprofile --polname defense -b CIA
-h sales_west -D cn=defense_admin -w bind_password

olsadmintoolコマンドの関連パラメータ

olsadmintoolパラメータの使用に関する一連のガイドラインに従う必要があります。

内容は次のとおりです。

- olsadmintoolコマンドの関連パラメータについて

- olsadmintoolパラメータのサマリー

olsadmintoolコマンドの関連パラメータについて

すべてのolsadmintoolコマンドでは、接続パラメータを指定する必要があります。

これらのパラメータには、OIDホスト、バインドDN、バインド・パスワードおよびOracle Internet Directoryへの接続に使用するポート(オプション)を含めます。デフォルトのポートは389です。

すべてのolsadmintoolコマンドでは、必要に応じて -bフラグを使用してサブスクライバ/管理コンテキストを指定できます。

ポートや管理コンテキストなどのパラメータ指定がオプションであることは、パラメータが大カッコで囲まれていることで示されています。最も一般的な2つの例が、[ -b admin context]および[-p port]です。

各コマンドでは、ホスト、バインドDNおよびパスワードの指定は必須で、必要に応じて管理コンテキストも指定できるため、表C-2では、これらの接続パラメータすべてをグループとして表すために省略形CONを使用しています。

[ -b admin_context ] h OID_host [-p port] -D bind_DN -w bind_password

olsadmintoolパラメータのサマリー

olsadmintoolは、ポリシー、管理、監査など、様々なニーズのカテゴリに対応するためのパラメータを備えています。

表C-2に、様々なカテゴリにおけるコマンドのサマリーを示します。

- ポリシー: ポリシーまたはそのコンポーネント(レベル、グループおよび区分)の作成、変更または削除

- データ・ラベル: データ・ラベルの作成、変更または削除

- 管理者およびポリシー作成者: 管理者およびポリシー作成者の追加または削除

- ユーザー: プロファイルに対するユーザーの追加または削除

- 監査オプション: ポリシーの監査内容を示すオプションの設定

- プロファイル: プロファイルの作成、リスト、記述または削除

- デフォルトの読取りまたは行ラベル: デフォルトの読取りまたは行ラベルの設定

表C-2および表C-3では、列見出しはパラメータのみを示し、必須の先行キーワードは示されていません。たとえば、表C-2では、policynameとcolumn-nameはcreatepolicyコマンドのパラメータで、必須の先行キーワード(--nameおよび--colname)は示されていません。

表C-2に、表C-2および表C-3のサマリーの列ヘッダーとして使用される個々のパラメータについて説明します。

この3つの表の凡例は次のとおりです。

- OptionsPはポリシー施行オプションを意味します。つまり、次のエントリをカンマで区切った組合せを示します。

- INVERSE_GROUP

- HIDE

- LABEL_DEFAULT

- LABEL_UPDATE

- CHECK_CONTROL

- READ_CONTROL

- WRITE_CONTROL

- INSERT_CONTROL

- DELETE_CONTROL

- UPDATE_CONTROL

- ALL_CONTROL

- NO_CONTROL

- OptionsAは監査オプションを意味します。つまり、エントリ SET、 APPLY、 REMOVEまたはPRIVILEGEをカンマで区切った組合せを示します。

表C-2 サマリー: olsadmintoolコマンドのパラメータ

コマンドのカテゴリ

コマンドとパラメータ

-

-

-

-

-

-

ポリシー

コマンド

policy name

column- name

optionsP

CON

-

-

ポリシー

olsadmintool createpolicy

必須

必須

必須

必須

-

-

ポリシー

olsadmintool alterpolicy

必須

省略

必須

必須

-

-

ポリシー

olsadmintool droppolicy

必須

省略

省略

必須

-

-

ポリシー内での作成:

コマンド

policy name

tag

short name

long name

CON

parent name

レベル

olsadmintool createlevel

必須

必須

必須

必須

必須

省略

グループ

olsadmintool creategroup

必須

必須

必須

必須

必須

[必須]

区分

olsadmintool createcompartment

必須

必須

必須

必須

必須

省略

ポリシー内での変更:

コマンド

-

-

-

-

-

-

レベル

olsadmintool alterlevel

必須

省略

未使用

未使用

未使用

省略

グループまたは親グループ

olsadmintool altergroup

必須

省略

必須

必須

必須

省略

グループまたは親グループ

olsadmintool altergroupparent

必須

省略

必須

省略

必須

[必須]

グループまたは親グループ

コマンド

policy name

tag

short name

long name

CON

parent name

区分

olsadmintool altercompartment

必須

省略

必須

必須

必須

省略

ポリシー内での削除:

コマンド

-

-

-

-

-

レベル

olsadmintool droplevel

必須

省略

必須

省略

必須

省略

グループ

olsadmintool dropgroup

必須

省略

必須

省略

必須

省略

区分

olsadmintool dropcompartment

必須

省略

必須

省略

必須

省略

データ・ラベル

コマンド

policy name

tag

value

CON

-

-

ラベルの作成

olsadmintool createlabel

必須

必須

必須

必須

-

-

データ・ラベルの変更

olsadmintool alterlabel

必須

必須

必須

必須

-

-

データ・ラベルの削除

olsadmintool droplabel

必須

省略

必須

必須

-

-

ポリシー管理者

コマンド

policy name

userDN

CON

-

-

-

管理者の追加

olsadmintool addadmin

必須

必須

必須

-

-

-

管理者の削除

olsadmintool dropadmin

必須

必須

必須

-

-

-

ポリシーの作成

olsadmintool addpolcreator

省略

必須

必須

-

-

-

ポリシーの作成

olsadmintool droppolcreator

省略

必須

必須

-

-

-

ユーザー

コマンド

policy name

profile name

userDN

CON

-

-

ユーザーの追加

olsadmintool adduser

必須

必須

必須

必須

-

-

ユーザーの削除

olsadmintool dropuser

必須

必須

必須

必須

-

-

監査

olsadmintool audit

必須

optionsA

type

success

CON

-

監査

olsadmintool noaudit

必須

必須

必須

必須

必須

-

olsadmintoolのヘルプ

olsadmintool command_name -- help

省略

省略

省略

省略

省略

-

表C-3 プロファイルとデフォルトのコマンド・パラメータのサマリー

プロファイルのアクション

プロファイル・コマンド

ポリシー名

プロファイル名

最大読取りラベル

最大書込みラベル

最小書込みラベル

Def Read Label

Def Row Label

privileges

CON

プロファイルの作成脚注3

olsadmintool createprofile

必須

必須

必須

必須

必須

必須

必須

必須

必須

プロファイル・リストの表示

olsadmintool

list profile

必須

省略

省略

省略

省略

省略

省略

省略

必須

プロファイルの記述

olsadmintool describe profile

必須

必須

省略

省略

省略

省略

省略

省略

必須

プロファイルの削除

olsadmintool drop profile

必須

必須

省略

省略

省略

省略

省略

省略

必須

脚注3

createprofileでは、権限とラベルの両方の指定は必須ではありません。profileでは、ラベルまたは権限、あるいはその両方を指定できます。

olsadmintoolユーティリティの使用例

olsadmintoolコマンドを使用して、Oracle Internet Directory環境でOracle Label Securityを設定します。

このリストには、各コマンドが読みやすいように複数行で示されていますが、実際のコマンドラインでは長い1行として発行されます。これらのコマンドすべての実行結果をまとめたものについては、最後の例の後の「前述の例の結果」を参照してください。

内容は次のとおりです。

- 例: 他のユーザーをポリシー作成者として設定

- 例: 有効なオプションを指定してポリシーを作成

- 例: ポリシー管理者の作成

- 例: 区分の作成

- 例: グループの作成

- 例: ラベルの作成

- 例: プロファイルの作成

- 例: プロファイルへのユーザーの追加

- 例: プロファイルへの別のユーザーの追加

- 例: 監査オプションの設定

- 前述の例の結果

例: 他のユーザーをポリシー作成者として設定

olsadmintool addpolcreatorコマンドを使用すると、他のユーザーがポリシー作成者となることを許可できます。

ORACLE_HOME/bin/olsadmintool addpolcreator --userdn "cn=psmith,c=us"
-b "ou=Americas,o=Oracle,c=US" -h sales_west -p 389 -D "cn=lbacsys,c=us" -w bind_password

例: 有効なオプションを指定してポリシーを作成

olsadmintool createpolicyコマンドを使用すると、ポリシーを作成できます。

ORACLE_HOME/bin/olsadmintool createpolicy --name Policy1 --colname pol1
--options READ_CONTROL,WRITE_CONTROL -b "ou=Americas,o=Oracle,c=US"
-h sales_west -p 389 -D "cn=psmith,c=us" -w bind_password

ORACLE_HOME/bin/olsadmintool createpolicy --name Policy2 --colname pol2
--options READ_CONTROL -b "ou=Americas,o=Oracle,c=US"
-h sales_west -p 389 -D "cn=lbacsys,c=us" -w bind_password

例: ポリシー管理者の作成

olsadmintool addadminコマンドを使用すると、ポリシー管理者を作成できます。

ORACLE_HOME/bin/olsadmintool addadmin --polname Policy1
--admindn "cn=shwong,c=us" -b "ou=Americas,o=Oracle,c=US" -h sales_west -p 389
-D "cn=psmith,c=us" -w bind_password

ORACLE_HOME/bin/olsadmintool addadmin --polname Policy2
--admindn "cn=shwong,c=us" -b "ou=Americas,o=Oracle,c=US" -h sales_west -p 389
-D "cn=lbacsys,c=us" -w bind_password

例: レベルの作成

olsadmintool createlevelコマンドを使用すると、個々のレベルを作成できます。

ORACLE_HOME/bin/olsadmintool createlevel --polname Policy1 --tag 100
--shortname TS --longname "TOP SECRET" -b "ou=Americas,o=Oracle, c=US"
-h sales_west -p 389 -D "cn=shwong,c=us" -w bind_password

ORACLE_HOME/bin/olsadmintool createlevel --polname Policy1 --tag 99
--shortname S --longname SECRET -b "ou=Americas,o=Oracle,c=US"
-h sales_west -p 389 -D "cn=shwong,c=us" -w bind_password

ORACLE_HOME/bin/olsadmintool createlevel --polname Policy1 --tag 98
--shortname U --longname UNCLASSIFIED -b "ou=Americas,o=Oracle,c=US"
-h sales_west -p 389 -D "cn=shwong,c=us" -w bind_password

例: 区分の作成

olsadmintool createcompartmentコマンドを使用すると、区分を作成できます。

ORACLE_HOME/bin/olsadmintool createcompartment --polname Policy1 --tag 100
--shortname A --longname ALPHA -b "ou=Americas,o=Oracle,c=US"
-h sales_west -p 389 D "cn=shwong,c=us" -w bind_password

ORACLE_HOME/bin/olsadmintool createcompartment --polname Policy1 --tag 99
--shortname B --longname BETA -b "ou=Americas,o=Oracle,c=US"
-h sales_west -p 389 -D "cn=shwong,c=us" -w bind_password

例: グループの作成

olsadmintool creategroupコマンドを使用すると、グループを作成できます。

ORACLE_HOME/bin/olsadmintool creategroup --polname Policy1 --tag 100
--shortname G1 --longname GROUP1
-b "ou=Americas,o=Oracle,c=US"  -h sales_west -p 389 -D "cn=shwong,c=us" -w bind_password

ORACLE_HOME/bin/olsadmintool creategroup --polname Policy1 --tag 99
--shortname G2 --longname GROUP2
-b "ou=Americas,o=Oracle,c=US" -h sales_west -p 389 -D "cn=shwong,c=us" -w bind_password

ORACLE_HOME/bin/olsadmintool creategroup --polname Policy1 --tag 98
--shortname G3 --longname GROUP3
-b "ou=Americas,o=Oracle,c=US"  -h sales_west -p 389 -D "cn=shwong,c=us" -w bind_password

例: ラベルの作成

olsadmintool createlabelコマンドを使用すると、ラベルを作成できます。

ORACLE_HOME/bin/olsadmintool createlabel --polname Policy1
--tag 100 --value TS:A:G1
-b "ou=Americas,o=Oracle,c=US" -h sales_west -p 389 -D "cn=shwong,c=us" -w bind_password

ORACLE_HOME/bin/olsadmintool createlabel --polname Policy1 --tag 101
--value TS:A,B:G2
-b "ou=Americas,o=Oracle,c=US" -h sales_west -p 389 -D "cn=shwong,c=us" -w bind_password

例: プロファイルの作成

olsadmintool createprofileコマンドを使用すると、プロファイルを作成できます。

ORACLE_HOME/bin/olsadmintool createprofile --polname Policy1 --profname Profile1
--maxreadlabel TS:A:G1 --maxwritelabel TS:A:G1 --minwritelabel U::
--defreadlabel U:A:G1 --defrowlabel U:A:G1 --privileges WRITEUP,READ
-b "ou=Americas,o=Oracle,c=US" -h sales_west -p 389 -D "cn=shwong,c=us" -w bind_password

例: プロファイルへのユーザーの追加

olsadmintool adduserコマンドを使用すると、ユーザーをプロファイルに追加できます。

ORACLE_HOME/bin/olsadmintool adduser --polname Policy1 --profname Profile1
--userdn cn=nina,ou=Asia,o=microsoft,l=seattle,st=WA,c=US
-b "ou=Americas,o=Oracle,c=US" -h sales_west -p 389 -D "cn=shwong,c=us" -w bind_password

例: プロファイルへの別のユーザーの追加

olsadmintool adduserコマンドを使用して、別のユーザーをプロファイルに追加できます。

ORACLE_HOME/bin/olsadmintool adduser --polname Policy1 --profname Profile1
--userdn cn=daniel,ou=France,o=oracle,l=madison,st=WI,c=US
-b "ou=Americas,o=Oracle,c=US" -h sales_west -p 389 -D "cn=shwong,c=us" -w bind_password

例: 監査オプションの設定

olsadmintool auditコマンドを使用すると、非統合監査環境で監査オプションを設定できます。

ORACLE_HOME/bin/olsadmintool audit --polname Policy1 --option "SET,APPLY"
--type SESSION --success BOTH
-b "ou=Americas,o=Oracle,c=US" -h sales_west -p 389 -D "cn=shwong,c=us" -w bind_password

前述の例の結果

一連のolsadmintoolコマンドを実行した結果、サンプルOracle Label Securityサイトには特定の構造があります。

- ポリシー作成者: ユーザーpsmith

- ポリシー: Policy1およびPolicy2

- ポリシー管理者: ユーザーshwong

- レベル、区分およびグループ: 表C-4を参照してください。

表C-4 olsadmintoolコマンドの使用によるラベル・コンポーネント定義

ラベル・コンポーネント

タグ

短縮名

詳細名

レベル

100

TS

TOP SECRET

レベル

99

S

SECRET

レベル

98

U

UNCLASSIFIED

区分

100

A

ALPHA

区分

99

B

BETA

グループ

100

G1

GROUP1

グループ

99

G2

GROUP2

グループ

98

G3

GROUP3

- データ・ラベル: TS:A:G1の場合はタグ100、TS:A,B:G2の場合はタグ101。

- ユーザー: US Oracle組織のAmericas組織の下位でWashington州Seattleに本拠を置くMicrosoft社Asiaグループに所属するNinaと、同じ組織の下位でWisconsin州Madisonに位置するオラクル社のFranceグループに所属するDaniel。

- プロファイル: 表C-5を参照してください。

表C-5 olsadmintoolコマンドの使用によるProfile1の内容

プロファイル要素

内容

詳細名の拡張または意味

MaxReadLabel

TS:A:G1

TOP SECRET:ALPHA:GROUP1

MaxWriteLabel

TS:A:G1

TOP SECRET:ALPHA:GROUP1

MinWriteLabel

U::

UNCLASSIFIED(区分やグループへの限定なし)

DefReadLabel

U:A:G1

UNCLASSIFIED:ALPHA:GROUP1

DefRowLabel

U:A:G1

UNCLASSIFIED:ALPHA:GROUP1

権限

WRITE_UP、READ

ユーザーは任意の行を読み取って、書き込む行のレベルを上げることができます。

- 監査オプション: SET、APPLY、SESSIONおよびBOTH

脚注の凡例

脚注2:
コマンドに関する脚注 各コマンドでは、ディレクトリのホスト名、バインドDNおよびバインド・パスワードを指定する必要があります。どのコマンドでも、必要に応じてサブスクライバの管理コンテキスト(オプション)またはディレクトリのポート番号(オプション)、あるいはその両方を指定できます。これらのパラメータの詳細は、表C-2も参照してください。

D Oracle RAC 環境でのOracle Label Security

Oracle Real Application Clusters (Oracle RAC)環境で、Oracle Label Securityを使用できます。

内容は次のとおりです。

- Oracle RAC環境におけるOracle Label Securityのポリシー機能

- Oracle Label Securityでの透過的アプリケーション・フェイルオーバー

Oracle RAC環境におけるOracle Label Securityのポリシー機能

Oracle Real Application Clusters (Oracle RAC)環境では、あるインスタンス上で行われたポリシー変更が、他のインスタンスで即時に使用可能になります。

変更内容を使用するために他方のインスタンスを再起動する必要はありません。

あるデータベース・インスタンス上で行われた重要な変更は、自動的に他のインスタンスに伝播します。その一例が、新規ポリシーの作成です。また、ポリシー・オプションの変更も同様です。

このような変更の伝播により、次の2つの貴重な保護が保証されます。

- 表の全ユーザーには、同じポリシーが適用されます。

- いずれかのインスタンスが失敗すると、他のインスタンスによる処理の継続には、失敗直前に有効だったのと同じポリシーおよびパラメータが使用されます。そのため、ポリシーが有効化または無効化されていた場合、それがすべてのインスタンスでそのまま表示されます。

管理者が、あるインスタンスで表D-1に示すポリシー・ファンクションを使用してポリシー情報を変更すると、Oracle Label Securityでは、そのファンクション・コールで変更された内容の関連情報が格納されます。新規の情報はOracle RACの他のアクティブなインスタンスで即時に使用可能になり、影響を受けるポリシーのユーザー間で均一に使用可能になります。

表D-1 Oracle RAC環境でステータスを保持するポリシー・ファンクション

ポリシー・ファンクション

説明

SA_SYSDBA.CREATE_POLICY

新規ポリシーの作成

SA_SYSDBA.DROP_POLICY

既存のポリシーの削除

SA_SYSDBA.ENABLE_POLICY

既存のポリシーの有効化

SA_SYSDBA.DISABLE_POLICY

既存のポリシーの無効化

SA_SYSDBA.ALTER_POLICY

既存のポリシーの変更

Oracle Label Securityでの透過的アプリケーション・フェイルオーバー

セッション情報は、透過的アプリケーション・フェイルオーバー時に保持されます。

表D-2に示すセッション・ファンクションを使用してセッションの情報を変更すると、その内容は透過的アプリケーション・フェイルオーバー時に保持されます。

たとえば、ユーザーScottがデフォルトのラベルTop Secretを使用してログオンするとします。このユーザーがsa_session.set_label()をコールしてセッション・ラベルをSecretに変更した場合、他のインスタンスへのフェイルオーバーが発生すると、変更は表示されませんが、セッション・ラベルはSecretのままになっています。

現行のユーザー・セッション情報を保持することにより、そのユーザーが表示または操作できるデータに対するアクセス権限および制限は変更されずに残ります。フェイルオーバーが発生しても、ユーザーが表示および操作できるのは、フェイルオーバー前にアクセス可能だった表および行のみです。保持されていない場合は、他のインスタンスにフェイルオーバーすると、ユーザーに異なるデータ・セットが表示されたり、この種のデータを表示できるようになる可能性があります。

表D-2に示すセッション・ファンクションの1つを使用すると、Oracle Label Securityではそのファンクション・コールによる変更内容の関連情報が格納されます。

表D-2 Oracle RAC環境でステータスを保持するセッション・ファンクション

セッション・ファンクション

説明

SA_SESSION.SET_LABEL

ユーザーは、読取りアクセス権を持つ新規レベル、新規区分およびグループを設定できます。

SA_SESSION.SET_ROW_LABEL

ユーザーは新規の行に適用するデフォルトの行ラベルを設定できます。

SA_SESSION.SAVE_DEFAULT_LABELS

ユーザーは、現行のセッション・ラベルと行ラベルを将来のセッションのデフォルトとして格納できます。

SA_SESSION.RESTORE_DEFAULT_LABELS

ユーザーは、現行のセッション・ラベルと行ラベルを、格納されているデフォルト設定にリセットできます。

SA_SESSION.SET_ACCESS_PROFILE

データベース・セッションのOracle Label Securityでの認可と権限を、指定したユーザーの認証と権限に設定します。

E Oracle Label SecurityのPL/SQLパッケージ

Oracle Label Securityでは、一連のPL/SQLパッケージを提供します。

内容は次のとおりです。

- SA_AUDIT_ADMIN Oracle Label Security監査PL/SQLパッケージ

- SA_COMPONENTSラベル・コンポーネントPL/SQLパッケージ

- SA_LABEL_ADMINラベル管理PL/SQLパッケージ

- SA_POLICY_ADMINポリシー管理PL/SQLパッケージ

- SA_SESSIONセッション管理PL/SQLパッケージ

- SA_SYSDBAポリシー管理PL/SQLパッケージ

- SA_USER_ADMIN PL/SQLパッケージ

- SA_UTL PL/SQLユーティリティのファンクションおよびプロシージャ

関連項目:

追加のスタンドアロンOracle Label Securityファンクションは、「支配ファンクションの使用」を参照してください

SA_AUDIT_ADMIN Oracle Label Security監査PL/SQLパッケージ

非統合監査環境の場合、SA_AUDIT_ADMIN PL/SQLパッケージは、Oracle Label Securityに固有の監査を構成します。

統合監査を使用する場合、Oracle Label Securityの統合監査ポリシーの作成については、『Oracle Databaseセキュリティ・ガイド』を参照してください。統合監査環境では、この項で説明するプロシージャを設定した結果、新しい監査レコードは生成されません。

システム単位の監査を有効化した後に、SA_AUDIT_ADMIN PL/SQLパッケージ・プロシージャを使用して、Oracle Label Securityの監査を有効化または無効化できます。このパッケージを使用するには、SA_AUDIT_ADMINパッケージに対するpolicy_DBAロール(たとえば、hr_ols_polポリシーに対するロールとしてHR_OLS_POL_DBA)、およびEXECUTE権限が付与されている必要があります。

表E-1に、SA_AUDIT_ADMIN PL/SQLパッケージ・プロシージャを示します。

表E-1 SA_AUDIT_ADMIN PL/SQLパッケージの内容

プロシージャ

説明

SA_AUDIT_ADMIN.AUDIT

ポリシー固有の監査を有効化します。各ポリシーの監査は、他から独立しています。

SA_AUDIT_ADMIN.AUDIT_LABEL

ラベルがポリシーの監査レコードに記録されているかどうかを示します。

SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLED

ラベルがポリシーの監査レコードに記録されているかどうかを示します。

SA_AUDIT_ADMIN.CREATE_VIEW

DBA_policyname_AUDIT_TRAILという名前の監査証跡ビューを作成します。これには、指定したポリシーのラベル列、およびこのポリシーのかわりに書き込まれた監査証跡内のすべてのエントリが含まれます

SA_AUDIT_ADMIN.DROP_VIEW

指定したポリシーの(SA_AUDIT_ADMIN.CREATE_VIEWプロシージャによって作成された)監査証跡ビューを削除します。

SA_AUDIT_ADMIN.NOAUDIT

Oracle Label Securityのポリシー固有の監査を無効化します。

SA_AUDIT_ADMIN.NOAUDIT_LABEL

ポリシー・ラベルの監査を無効化します。

関連項目:

policy_DBAロールの詳細は、「Oracle Label Security管理者の責任」を参照してください

SA_AUDIT_ADMIN.AUDIT

SA_AUDIT_ADMIN.AUDITプロシージャは、ポリシー固有の監査を有効化します。

各ポリシーの監査は、他から独立しています。監査レコードは、Oracle Label Securityの管理アクションを取得し、ログオン、DML実行および信頼できるストアド・プロシージャ呼出しの際に使用されたOracle Label Securityの権限の使用を取得します。

構文

SA_AUDIT_ADMIN.AUDIT (
policy_name     IN VARCHAR2,
users           IN VARCHAR2 DEFAULT NULL,
audit_option    IN VARCHAR2 DEFAULT NULL,
audit_type      IN VARCHAR2 DEFAULT NULL,
success         IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-2 SA_AUDIT_ADMIN.AUDITのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

users

オプション。監査するユーザー名のカンマ区切りのリストは、次のとおりです。

- OLS管理アクションを監査している場合、入力したユーザーにOracle Label Securityのパッケージに対するpolicy_DBAロールおよびEXECUTE権限があることを確認してください。

- OLS権限の使用を監査している場合、これらのユーザーはOLS管理者である必要がありません。

- どのユーザーも指定していない場合、すべてのユーザーが監査されます。

Oracle Label Securityのポリシーを変更する権限を持つユーザーを検索するには、DBA_SA_USERSビューのUSER_NAME列を問い合せます。

audit_option

オプション。監査するオプションのカンマ区切りのリストです。オプションは次のとおりです。

- APPLY: 表およびスキーマに対する指定したOracle Label Securityのポリシーの適用を監査します。

- REMOVE: 表およびスキーマからの指定したOracle Label Securityのポリシーの削除を監査します。

- SET: ユーザー認証およびユーザーとプログラムの権限の設定を監査します。

- PRIVILEGES: ポリシー固有のすべての権限の使用を監査します。

指定しない場合、すべてのデフォルト・オプション(つまり権限を含まないオプション)が監査されます。すべての権限の監査オプションを設定するPRIVILEGESオプションを指定して、権限付き操作の監査オプションを明示的に設定する必要があります。

audit_type

オプション。BY ACCESSまたはBY SESSION。指定しない場合、監査レコードはセッション別に書き込まれます。

success

オプション。アクションが成功した場合はSUCCESSFUL、それ以外の場合はNOT SUCCESSFULです。指定しない場合は、両方の監査が書き込まれます。

例

次の例では、ユーザーpsmithおよびrlaytonによる失敗したAPPLYおよびREMOVEの試行を監査します。

BEGIN
SA_AUDIT_ADMIN.AUDIT(
policy_name      => 'hr_ols_pol',
users            => 'jjones, rlayton',
audit_option     => 'apply, remove',
audit_type       => 'by access',
success          => 'not successful');
END;
/

監査オプションを指定しない場合は、権限関連のオプションを除き、すべてのオプションが監査されます。権限の監査を明示的に指定する必要があります。たとえば、次の文を入力した場合、hr_ols_polポリシーにデフォルト・オプションが設定されます。

EXEC SA_AUDIT_ADMIN.AUDIT ('hr_ols_pol');

監査を有効化すると、アクションの成否に関係なく、すべてのユーザーについてセッション別に実行されます。

監査パラメータおよびオプションを設定すると、新しい値は現行セッションではなく後続のセッションにのみ適用されます。

あるSA_AUDIT_ADMIN.AUDITコール(ユーザー指定なし)で全ユーザーについてAPPLY操作の監査を有効化し、2番目のコールで特定のユーザーについてREMOVE操作の監査を有効化する場合を考えます。次に例を示します。

EXEC SA_AUDIT_ADMIN.AUDIT ('hr_ols_pol', null, 'apply');
EXEC SA_AUDIT_ADMIN.AUDIT ('hr_ols_pol', 'scott', 'remove');

この場合、SCOTTはAPPLY操作とREMOVE操作の両方について監査対象となります。

SA_AUDIT_ADMIN.AUDIT_LABEL

SA_AUDIT_ADMIN.AUDIT_LABELプロシージャは、監査中にポリシー・ラベルを記録します。

このプロシージャにより、ユーザーのセッション・ラベルが監査表に格納されます。

構文

SA_AUDIT_ADMIN.AUDIT_LABEL (
policy_name     IN VARCHAR2);

パラメータ

表E-3 SA_AUDIT_ADMIN.AUDIT_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、Oracle Label Securityのラベルがhr_ols_polポリシーに対して監査されているかどうかを示す出力を書き込みます。

BEGIN
SA_AUDIT_ADMIN.AUDIT_LABEL(
policy_name      => 'hr_ols_pol');
END;
/

SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLED

SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLEDファンクションは、ラベルがポリシーの監査レコードに記録されているかどうかを示します。

構文

SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLED (
policy_name IN VARCHAR2)
RETURN BOOLEAN;

パラメータ

表E-4 SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLEDのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、Oracle Label Securityのラベルがhr_ols_polポリシーに対して監査されているかどうかを示す出力を書き込みます。

SET SERVEROUTPUT ON
BEGIN
IF SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLED('hr_ols_pol')
THEN DBMS_OUTPUT.PUT_LINE('OLS hr_ols_pol labels are being audited.');
ELSE
DBMS_OUTPUT.PUT_LINE('OLS hr_ols_pol labels not being audited.');
END IF;
END;
/

SA_AUDIT_ADMIN.CREATE_VIEW

SA_AUDIT_ADMIN.CREATE_VIEWプロシージャは、DBA_policyname_AUDIT_TRAILという名前の監査証跡ビューを作成します。

このビューには、指定したポリシーのラベル列、およびこのポリシーのかわりに書き込まれた監査証跡内のすべてのエントリが含まれます。ビュー名がデータベースの制限である30文字を超えた場合、ユーザーはオプションで短いビュー名を指定できます。

関連項目:

DBA_policyname_AUDIT_TRAILビューに含まれている列を検索するには、「Oracle Label Securityのユーザー作成の監査ビュー」を参照してください

構文

SA_AUDIT_ADMIN.CREATE_VIEW (
policy_name     IN VARCHAR2,
view_name       IN VARCHAR2    DEFAULT NULL);

パラメータ

表E-5 SA_AUDIT_ADMIN.CREATE_VIEWのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

view_name

オプション。ビューの名前を指定します。この設定を省略した場合、名前はDBA_policyname_AUDIT_TRAILにデフォルト設定されます。

例

次の例では、hr_ols_polポリシーのhr_ols_pol_viewと呼ばれるビューを作成します。

BEGIN
SA_AUDIT_ADMIN.CREATE_VIEW(
policy_name      => 'hr_ols_pol',
view_name        => 'hr_ols_pol_view');
END;
/

SA_AUDIT_ADMIN.DROP_VIEW

SA_AUDIT_ADMIN.DROP_VIEWプロシージャは、指定したポリシーの監査証跡ビューを削除します。

構文

SA_AUDIT_ADMIN.DROP_VIEW (
policy_name     IN VARCHAR2,
view_name       IN VARCHAR2    DEFAULT NULL);

パラメータ

表E-6 SA_AUDIT_ADMIN.DROP_VIEWのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

view_name

既存のビューの名前を指定します。このビューを検索するには、まず、ALL_SA_POLICIESデータ・ディクショナリ・ビューを問い合せて、ビューの基になったポリシーの名前を検索し、次にALL_VIEWSデータ・ディクショナリ・ビューを問い合せて、そのポリシーの名前を持つビューを検索します。

例

次の例では、hr_ols_polポリシーからhr_ols_pol_viewと呼ばれるビューを削除します。

BEGIN
SA_AUDIT_ADMIN.DROP_VIEW(
policy_name      => 'hr_ols_pol',
view_name        => 'hr_ols_pol_view');
END;
/

SA_AUDIT_ADMIN.NOAUDIT

SA_AUDIT_ADMIN.NOAUDITプロシージャは、Oracle Label Securityのポリシー固有の監査を無効化します。

構文

SA_AUDIT_ADMIN.NOAUDIT (
policy_name     IN VARCHAR2,
users           IN VARCHAR2 DEFAULT NULL,
audit_option    IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-7 SA_AUDIT_ADMIN.NO_AUDITのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

users

オプション。監査されたユーザーのカンマ区切りのリストです。指定しない場合は、すべてのユーザーの監査が無効化されます。

Oracle Label Securityのポリシーを変更する権限を持つユーザーを検索するには、ALL_SA_AUDIT_OPTIONSビューのUSER_NAME列を問い合せます。

audit_option

オプション。無効化するオプションのカンマ区切りのリストです。オプションは次のとおりです。

- APPLY: 表およびスキーマに対する指定したOracle Label Securityのポリシーの適用を監査します。

- REMOVE: 表およびスキーマからの指定したOracle Label Securityのポリシーの削除を監査します。

- SET: ユーザー認証およびユーザーとプログラムの権限の設定を監査します。

- PRIVILEGES: ポリシー固有のすべての権限の使用を監査します。

指定しない場合、すべてのデフォルト・オプションが無効化されます。権限は明示的に無効化する必要があります。

例

次の例では、ユーザーpsmithおよびrlaytonによる失敗したAPPLYおよびREMOVEの試行の監査を無効化します。

BEGIN
SA_AUDIT_ADMIN.NOAUDIT(
policy_name      => 'hr_ols_pol',
users            => 'jjones',
audit_option     => 'apply, remove');
END;
/

有効化されているすべてのオプション、またはそのサブセットのみについて監査を無効化できます。指定したオプションに対するすべての監査が、指定した全ユーザー(または、usersパラメータがNULLの場合は全ユーザー)について無効化されます。たとえば、次の文では、ユーザーJohn、MaryおよびScottについて、APPLYおよびREMOVE操作の監査が無効化されます。

EXEC SA_AUDIT_ADMIN.NOAUDIT ('HR', 'JOHN, MARY, SCOTT', 'APPLY, REMOVE');

あるAUDITコールで特定のユーザーの監査を有効化し、2番目のコール(ユーザー指定なし)で全ユーザーの監査を有効化する場合を考えます。次に例を示します。

EXEC SA_AUDIT_ADMIN.AUDIT ('HR', 'SCOTT');
EXEC SA_AUDIT_ADMIN.AUDIT ('HR');

この場合、(次の文のように)ユーザーを指定せずに後続のNOAUDITへのコールを行うと、最初のコールで明示的にSCOTTに対して設定された監査は無効になりません。したがって、SCOTTの監査は引き続き実行されます。

EXEC SA_AUDIT_ADMIN.NOAUDIT ('HR');

このため、すべてのユーザーに対してSA_AUDIT_ADMIN.NOAUDITを設定しても、Oracle Label Securityでは監査が明示的に設定されているユーザーは引き続き監査されます。

権限付き操作の監査は明示的に指定する必要があります。オプションを指定せずにSA_AUDIT_ADMIN.NOAUDITを実行しても、Oracle Label Securityでは権限付き操作が引き続き監査されます。たとえば、監査を有効にして次のように入力すると、

EXEC SA_AUDIT_ADMIN.NOAUDIT ('HR');

権限付き操作(WRITEDOWNなど)については引き続き監査が実行されます。

設定したSA_AUDIT_ADMIN.NOAUDITパラメータおよびオプションは、現行セッションではなく後続のセッションにのみ適用されます。

設定済の監査オプションの有効化を試みたり、設定されていない監査オプションの無効化を試みると、Oracle Label Securityでは文は処理され、エラーは表示されません。 無効なオプションの指定を試みると、エラー・メッセージが表示されます。ALL_SA_AUDIT_OPTIONSデータ・ディクショナリ・ビューを問い合せることで、監査オプションのステータスを検索できます。

SA_AUDIT_ADMIN.NOAUDIT_LABEL

SA_AUDIT_ADMIN.NOAUDIT_LABELプロシージャは、ポリシー・ラベルの監査を無効化します。

構文

SA_AUDIT_ADMIN.NOAUDIT_LABEL (
policy_name     IN VARCHAR2);

パラメータ

表E-8 SA_AUDIT_ADMIN.NO_AUDIT_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーの監査を無効化します。

BEGIN
SA_AUDIT_ADMIN.NOAUDIT_LABEL(
policy_name      => 'hr_ols_pol');
END;
/

SA_COMPONENTSラベル・コンポーネントPL/SQLパッケージ

SA_COMPONENTS PL/SQLパッケージでは、Oracle Label Securityのラベルのコンポーネント定義を管理します。

SA_COMPONENTS.ALTER_COMPARTMENT

SA_COMPONENTS.ALTER_COMPARTMENTプロシージャは、区分に関連付けられている短縮名および詳細名を変更します。

comp_numパラメータは、一度設定すると変更できません。既存のラベルでcomp_numパラメータが使用されている場合、その短縮名は変更できませんが、その詳細名は変更できます。

構文

SA_COMPONENTS.ALTER_COMPARTMENT (
policy_name       IN VARCHAR2,
comp_num          IN NUMBER(38),
new_short_name    IN VARCHAR2,
new_long_name     IN VARCHAR2);

SA_COMPONENTS.ALTER_COMPARTMENT (
policy_name       IN VARCHAR2,
short_name        IN VARCHAR2 DEFAULT NULL,
new_long_name     IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-9 SA_COMPONENTS.ALTER_COMPARTMENTのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

comp_num

変更する区分の番号を指定します。既存の区分番号のリストを検索するには、ALL_SA_COMPARTMENTSビューのCOMP_NUM列を問い合せます。

short_name

変更する区分の短縮名(30文字以内)を指定します。現行の区分を検索するには、ALL_SA_COMPARTMENTSビューのSHORT_NAME列を問い合せます。

new_short_name

区分の新規の短縮名(30文字以内)を指定します。

new_long_name

区分の新規の詳細名(80文字以内)を指定します。

例

次の例では、hr_ols_polポリシーを変更します。

BEGIN
SA_COMPONENTS.ALTER_COMPARTMENT (
policy_name         => 'hr_ols_pol',
comp_num            => '48',
new_short_name      => 'FIN',
new_long_name       => 'FINANCE');
END;
/

SA_COMPONENTS.ALTER_GROUP

SA_COMPONENTS.ALTER_GROUPプロシージャは、グループに関連付けられている短縮名および詳細名を変更します。

group_numパラメータは、一度設定すると変更できません。既存のラベルでグループが使用されている場合、その短縮名は変更できませんが、その詳細名は変更できます。

構文

SA_COMPONENTS.ALTER_GROUP (
policy_name    IN VARCHAR2,
group_num      IN NUMBER(38),
new_short_name IN VARCHAR2 DEFAULT NULL,
new_long_name  IN VARCHAR2 DEFAULT NULL);

SA_COMPONENTS.ALTER_GROUP (
policy_name    IN VARCHAR2,
short_name     IN VARCHAR2,
new_long_name  IN VARCHAR2);

パラメータ

表E-10 SA_COMPONENTS.ALTER_GROUPのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

group_num

変更する既存のグループ番号を指定します。既存のグループ番号を検索するには、ALL_SA_GROUPSビューのGROUP_NUM列を問い合せます。

short_name

変更する既存のグループの短縮名を指定します。既存の短縮名を検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

new_short_name

グループを表す新規の短縮名(30文字以内)を指定します。

new_long_name

グループを表す新規の詳細名(80文字以内)を指定します。

例

次の例では、hr_ols_polポリシーのlong_name設定を変更します。

BEGIN
SA_COMPONENTS.ALTER_GROUP (
policy_name     => 'hr_ols_pol',
short_name      => 'ER_FIN',
new_long_name   => 'ER_FINANCES');
END;
/

SA_COMPONENTS.ALTER_GROUP_PARENT

SA_COMPONENTS.ALTER_GROUP_PARENTプロシージャは、特定のグループに関連付けられている親グループを変更します。

構文

SA_COMPONENTS.ALTER_GROUP_PARENT (
policy_name     IN VARCHAR2,
group_num       IN NUMBER(38),
new_parent_num  IN NUMBER(38));

SA_COMPONENTS.ALTER_GROUP_PARENT (
policy_name     IN VARCHAR2,
group_num       IN NUMBER(38),
new_parent_name IN VARCHAR2);

SA_COMPONENTS.ALTER_GROUP_PARENT (
policy_name     IN VARCHAR2,
short_name      IN VARCHAR2,
new_parent_name IN VARCHAR2);

パラメータ

表E-11 SA_COMPONENTS.ALTER_GROUP_PARENTのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

group_num

変更する既存のグループ番号を指定します。既存のグループ番号を検索するには、ALL_SA_GROUPSビューのGROUP_NUM列を問い合せます。

short_name

変更する既存のグループの短縮名を指定します。既存の短縮名を検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

new_parent_num

既存グループの番号を親グループとして指定します。既存の親グループを検索するには、ALL_SA_GROUPSビューのPARENT_NUM列を問い合せます。

new_parent_name

既存グループの短縮名を親グループとして指定します。既存のグループを検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーの親の名前を変更します。

BEGIN
SA_COMPONENTS.ALTER_GROUP_PARENT (
policy_name         => 'hr_ols_pol',
group_num           => 2100,
new_parent_name     => 'ER');
END;
/

SA_COMPONENTS.ALTER_LEVEL

SA_COMPONENTS.ALTER_LEVELプロシージャは、レベルに関連付けられている短縮名および詳細名を変更します。

レベル番号は、一度定義すると変更できません。既存のラベルでレベルが使用されている場合、その短縮名は変更できませんが、その詳細名は変更できます。

構文

SA_COMPONENTS.ALTER_LEVEL (
policy_name     IN VARCHAR2,
level_num       IN NUMBER(38),
new_short_name  IN VARCHAR2 DEFAULT NULL,
new_long_name   IN VARCHAR2 DEFAULT NULL);

SA_COMPONENTS.ALTER_LEVEL (
policy_name     IN VARCHAR2,
short_name      IN VARCHAR2,
new_long_name   IN VARCHAR2);

パラメータ

表E-12 SA_COMPONENTS.ALTER_LEVELのパラメータ

パラメータ

説明

policy_name

存在するポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

level_num

変更するレベルの番号を指定します。既存のレベルを検索するには、ALL_SA_LEVELSビューのLEVEL_NUM列を問い合せます。

short_name

既存のレベルの短縮名を指定します。既存のレベルの短縮名を検索するには、ALL_SA_LEVELSビューのSHORT_NAME列を問い合せます。

new_short_name

レベルを表す新規の短縮名(30文字以内)を指定します。

new_long_name

レベルを表す新規の詳細名(80文字以内)を指定します。

例

次の例では、hr_ols_polポリシー・レベルの短縮名および詳細名を変更します。

BEGIN
SA_COMPONENTS.ALTER_LEVEL (
policy_name     => 'hr_ols_pol',
level_num       => 40,
new_short_name  => 'TS',
new_long_name   => 'TOP_SECRET');
END;
/

SA_COMPONENTS.CREATE_COMPARTMENT

SA_COMPONENTS.CREATE_COMPARTMENTプロシージャは、区分を作成し、その短縮名と詳細名を指定します。

comp_numパラメータにより、区分がラベルの文字列表現にリスト表示される順序が決定されます。

構文

SA_COMPONENTS.CREATE_COMPARTMENT (
policy_name IN VARCHAR2,
comp_num    IN NUMBER(38),
short_name  IN VARCHAR2,
long_name   IN VARCHAR2);

パラメータ

表E-13 SA_COMPONENTS.CREATE_COMPARTMENTのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

comp_num

区分番号(0から9999)を指定します。

short_name

区分を表す短縮名(30文字以内)を指定します。

long_name

区分を表す詳細名(80文字以内)を指定します。

例

次の例では、hr_ols_polポリシーの区分を作成します。

BEGIN
SA_COMPONENTS.CREATE_COMPARTMENT (
policy_name     => 'hr_ols_pol',
comp_num        => '48',
short_name      => 'FIN',
long_name       => 'FINANCE');
END;
/

SA_COMPONENTS.CREATE_GROUP

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

構文

SA_COMPONENTS.CREATE_GROUP (
policy_name IN VARCHAR2,
group_num   IN NUMBER(38),
short_name  IN VARCHAR2,
long_name   IN VARCHAR2,
parent_name IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-14 SA_COMPONENTS.CREATE_GROUPのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

group_num

グループ番号(0から9999)を指定します。

short_name

グループを表す短縮名(30文字以内)を指定します。

long_name

グループを表す詳細名(80文字以内)を指定します。

parent_name

既存グループの短縮名を親グループとして指定します。NULLの場合、そのグループはトップレベル・グループになります。

グループ番号は、ラベルの選択時にグループが表示される順序に影響することに注意してください。

例

次の例では、最初に親グループERを作成し、次にその親グループに含まれる2番目のグループを作成します。

BEGIN
SA_COMPONENTS.CREATE_GROUP (
policy_name     => 'hr_ols_pol',
group_num       => 2000,
short_name      => 'ER',
long_name       => 'EAST_REGION');
END;
/

BEGIN
SA_COMPONENTS.CREATE_GROUP (
policy_name     => 'hr_ols_pol',
group_num       => 2100,
short_name      => 'ER_FIN',
long_name       => 'ER_FINANCES',
parent_name     => 'ER');
END;
/

関連項目:

グループ・コンポーネント

SA_COMPONENTS.CREATE_LEVEL

SA_COMPONENTS.CREATE_LEVELプロシージャは、レベルを作成し、その短縮名と詳細名を指定します。

level_numパラメータに割り当てる数値により、機密性のランキングが決定されます(つまり、番号が小さいほど機密性の低いデータを示します)。

構文

SA_COMPONENTS.CREATE_LEVEL (
policy_name       IN VARCHAR2,
level_num         IN NUMBER(38),
short_name        IN VARCHAR2,
long_name         IN VARCHAR2);

パラメータ

表E-15 SA_COMPONENTS.CREATE_LEVELのパラメータ

パラメータ

説明

policy_name

存在するポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

level_num

レベル番号(0から9999)を指定します。

short_name

レベルを表す短縮名(30文字以内)を指定します。

long_name

レベルを表す詳細名(80文字以内)を指定します。

例

次の例では、hr_ols_polポリシーのレベルを作成します。

BEGIN
SA_COMPONENTS.CREATE_LEVEL (
policy_name   => 'hr_ols_pol',
level_num     => 40,
short_name    => 'HS',
long_name     => 'HIGHLY_SENSITIVE');
END;
/

SA_COMPONENTS.DROP_COMPARTMENT

SA_COMPONENTS.DROP_COMPARTMENTプロシージャは、区分を削除します。

既存のラベルで区分が使用されている場合、それは削除できません。ALL_SA_DATA_LABELSデータ・ディクショナリ・ビューのLABEL列を問い合せることで、既存のすべてのラベルを検索できます。

構文

SA_COMPONENTS.DROP_COMPARTMENT (
policy_name IN VARCHAR2,
comp_num    IN INTEGER);

SA_COMPONENTS.DROP_COMPARTMENT (
policy_name IN VARCHAR2,
short_name  IN VARCHAR2);

パラメータ

表E-16 SA_COMPONENTS.DROP_COMPARTMENTのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

comp_num

ポリシーの既存の区分の番号を指定します。既存の区分番号を検索するには、DBA_SA_COMPARTMENTSビューのCOMP_NUM列を問い合せます。

short_name

ポリシーの既存の区分の短縮名を指定します。既存の区分の短縮名を検索するには、DBA_SA_COMPARTMENTSビューのSHORT_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーからFIN区分を削除します。

BEGIN
SA_COMPONENTS.DROP_COMPARTMENT (
policy_name     => 'hr_ols_pol',
short_name      => 'FIN');
END;
/

SA_COMPONENTS.DROP_GROUP

SA_COMPONENTS.DROP_GROUPプロシージャは、グループを削除します。

既存のラベルでグループが使用されている場合、それは削除できません。

構文

SA_COMPONENTS.DROP_GROUP (
policy_name IN VARCHAR2,
group_num   IN NUMBER(38));

SA_COMPONENTS.DROP_GROUP (
policy_name IN VARCHAR2,
short_name  IN VARCHAR2);

パラメータ

表E-17 SA_COMPONENTS.DROP_GROUPのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

group_num

ポリシーの既存のグループの番号を指定します。既存のグループ番号を検索するには、ALL_SA_GROUPSビューのGROUP_NUM列を問い合せます。

short_name

既存のグループの短縮名を指定します。既存のグループの短縮名を検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーのグループ番号に基づいて、グループを削除します。

BEGIN
SA_COMPONENTS.DROP_GROUP (
policy_name     => 'hr_ols_pol',
group_num       => 2000);
END;
/

SA_COMPONENTS.DROP_LEVEL

SA_COMPONENTS.DROP_LEVELプロシージャは、レベルを削除します。

既存のラベルに使用されているレベルは削除できません。

構文

SA_COMPONENTS.DROP_LEVEL (
policy_name IN VARCHAR2,
level_num   IN NUMBER(38));

SA_COMPONENTS.DROP_LEVEL (
policy_name IN VARCHAR2,
short_name  IN VARCHAR2);

パラメータ

表E-18 SA_COMPONENTS.DROP_LEVELのパラメータ

パラメータ

説明

policy_name

存在するポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

level_num

ポリシーの既存のレベルの番号を指定します。既存のレベル番号を検索するには、ALL_SA_LEVELSビューのLEVEL_NUM列を問い合せます。

short_name

レベルを表す短縮名(30文字以内)を指定します。既存のレベルの短縮名を検索するには、ALL_SA_LEVELSビューのSHORT_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーからレベル40を削除します。

BEGIN
SA_COMPONENTS.DROP_LEVEL (
policy_name     => 'hr_ols_pol',
level_num       => 40);
END;
/

SA_LABEL_ADMINラベル管理PL/SQLパッケージ

SA_LABEL_ADMIN PL/SQLパッケージは、ポリシーで使用されるラベルを管理する管理インタフェースを提供します。

このパッケージを使用するには、SA_LABEL_ADMINパッケージでのpolicy_DBAロール(たとえば、hr_ols_polポリシーに対するロールとしてHR_OLS_POL_DBA)、およびEXECUTE権限が付与されている必要があります。

表E-19に、SA_LABEL_ADMINパッケージ・プロシージャを示します。

表E-19 SA_LABEL_ADMIN PL/SQLパッケージの内容

プロシージャ

説明

SA_LABEL_ADMIN.ALTER_LABEL

既存のラベルを変更します。

SA_LABEL_ADMIN.CREATE_LABEL

データ・ラベルを作成します。

SA_LABEL_ADMIN.DROP_LABEL

ラベルを削除します。

関連項目:

Cloud Controlを使用したポリシーのデータ・ラベルの作成

SA_LABEL_ADMIN.ALTER_LABEL

SA_LABEL_ADMIN.ALTER_LABELプロシージャは、ラベル・タグに関連付けられている文字列ラベルの定義を変更します。

ラベル・タグ自体は変更できません。

ラベル・タグに関連付けられている文字列を変更すると、行のデータの機密性もそれに応じて変更されます。たとえば、ラベル・タグ値4001に関連付けられているラベル文字列TS:AをラベルTS:Bに変更すると、そのデータへのアクセス権もそれに応じて変更されます。これは、ラベル・タグ値(4001)に変更がない場合も同じです。この方法で、すべての行を更新せずにデータの機密性を変更できます。

変更するラベルを指定するときには、ラベル・タグまたは文字列値で参照できることを確認してください。

構文

SA_LABEL_ADMIN.ALTER_LABEL (
policy_name       IN VARCHAR2,
label_tag         IN BINARY_INTEGER,
new_label_value   IN VARCHAR2 DEFAULT NULL,
new_data_label    IN BOOLEAN  DEFAULT NULL);

SA_LABEL_ADMIN.ALTER_LABEL (
policy_name       IN VARCHAR2,
label_value       IN VARCHAR2,
new_label_value   IN VARCHAR2 DEFAULT NULL,
new_data_label    IN BOOLEAN  DEFAULT NULL);

パラメータ

表E-20 SA_LABEL_ADMIN.ALTER_LABELのパラメータ

パラメータ

説明

policy_name

既存のポリシーの名前を指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label_tag

変更するラベルに割り当てられている整数タグを識別します。既存のラベル・タグを検索するには、ALL_SA_LABELSビューのLABEL_TAG列を問い合せます。

label_value

変更するラベルの既存の文字列表現を識別します。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABEL列を問い合せます。

new_label_value

ラベル値の新規の文字列表現を指定します。NULLの場合、既存の値は変更されません。

new_data_label

ラベルを行データのラベル付けに使用できる場合はTRUEです。NULLの場合、既存の値は変更されません。

例

次の例では、hr_ols_polポリシーのlabel_tagおよびlabel_value設定を変更します。

BEGIN
SA_LABEL_ADMIN.ALTER_LABEL (
policy_name       => 'hr_ols_pol',
label_tag         => 1111,
new_label_value   => 'HS',
new_data_label    => TRUE);
END;
/

SA_LABEL_ADMIN.CREATE_LABEL

SA_LABEL_ADMIN.CREATE_LABEL プロシージャは、データ・ラベルを作成します。

構文

SA_LABEL_ADMIN.CREATE_LABEL (
policy_name IN VARCHAR2,
label_tag   IN BINARY_INTEGER,
label_value IN VARCHAR2,
data_label  IN BOOLEAN DEFAULT TRUE);

パラメータ

表E-21 SA_LABEL_ADMIN.CREATE_LABELのパラメータ

パラメータ

説明

policy_name

既存のポリシーの名前を指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label_tag

ラベルのソート順を他のポリシー・ラベルとの相対で表す一意の整数値(0から99999999)を指定します。この値の長さは1桁から8桁である必要があります。

label_value

作成するラベルの文字列表現を指定します。レベル、区分およびグループの短縮名を使用します。ALL_SA_LEVELS、ALL_SA_COMPARTMENTSおよびALL_SA_GROUPSビューのSHORT_NAME列を問い合せることで、これらの値を検索できます。

data_label

ラベルを行データのラベル付けに使用できる場合はTRUEです。この値を使用し、ラベルをデータに有効として定義します。

有効なラベルを識別するときには、表中のデータのラベル付けに使用できるレベル、区分およびグループに可能なすべての組合せを指定します。

例

次の例では、hr_ols_polポリシーのラベルを作成します。

BEGIN
SA_LABEL_ADMIN.CREATE_LABEL (
policy_name     => 'hr_ols_pol',
label_tag       => 1111,
label_value     => 'HS:FIN',
data_label      => TRUE);
END;
/

注意:

TO_DATA_LABELプロシージャを使用して新規ラベルを作成すると、10桁のシステム生成ラベル・タグが自動的に生成されます。

ただし、Oracle Label SecurityがOracle Internet Directoryで動作するようにインストールされている場合、ラベルはOracle Internet Directoryでolsadmintoolコマンドを使用して集中管理されるため、動的ラベル生成は許可されません。「Oracle Internet Directoryを使用したLabel Security用コマンドライン・ツール」を参照してください。

したがって、Oracle Label SecurityがOracle Internet Directory対応の場合、TO_DATA_LABELファンクションは使用できず、使用するとエラー・メッセージが生成されます。

関連項目:

- 名前付きデータ・ラベルへのポリシー・コンポーネントの関連付けについて

- ポリシーのラベル列とラベル・タグの動作

SA_LABEL_ADMIN.DROP_LABEL

SA_LABEL_ADMIN.DROP_LABELプロシージャは、指定したポリシー・ラベルを削除します。

それ以後のラベルへの参照(データ行内、ユーザー・ラベル内またはプログラム・ユニット・ラベル内)では、無効なラベルによるエラーが発生します。

このプロシージャを使用するのは、データを移入する前のラベルの設定中のみです。使用するラベルを意図せずに削除した場合は、ポリシーを無効化し、問題を解決し、ポリシーを再び有効化すればリカバリできます。

構文

SA_LABEL_ADMIN.DROP_LABEL (
policy_name       IN VARCHAR2,
label_tag         IN BINARY_INTEGER);

SA_LABEL_ADMIN.DROP_LABEL (
policy_name       IN VARCHAR2,
label_value       IN VARCHAR2);

パラメータ

表E-22 SA_LABEL_ADMIN.DROP_LABELのパラメータ

パラメータ

説明

policy_name

既存のポリシーの名前を指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label_tag

削除するラベルに割り当てられている整数タグを指定します。既存のラベル・タグを検索するには、ALL_SA_LABELSビューのLABEL_TAG列を問い合せます。

label_value

削除するラベルの文字列値を指定します。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABEL列を問い合せます。

警告:

データベース内で使用中のラベルは削除しないでください。

例

次の例では、label_tag設定に基づいて、hr_ols_polポリシー・ラベルを削除します。

BEGIN
SA_LABEL_ADMIN.DROP_LABEL (
policy_name     => 'hr_ols_pol',
label_tag       => 1111);
END;
/

SA_POLICY_ADMINポリシー管理PL/SQLパッケージ

SA_POLICY_ADMIN PL/SQLパッケージは、Oracle Label Securityポリシー全体を管理します。

表E-23で、SA_POLICY_ADMIN PL/SQLパッケージ・プロシージャについて説明します

このパッケージを使用するには、SA_POLICY_ADMINパッケージに対するpolicy_DBAロール(たとえば、hr_ols_polポリシーに対するロールとしてHR_OLS_POL_DBA)、およびEXECUTE権限が付与されている必要があります。

表E-23 SA_POLICY_ADMIN PL/SQLパッケージの内容

プロシージャ

説明

SA_POLICY_ADMIN.ALTER_SCHEMA_POLICY

ポリシーのデフォルトの強制オプションを変更します。

SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY

指定したポリシーをスキーマ内の既存の(まだポリシーが適用されていない)すべての表に適用し、各表に対するポリシーを有効化します。

SA_POLICY_ADMIN.APPLY_TABLE_POLICY

指定したポリシーを表に追加します。

SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICY

強制オプション、ラベル付けファンクションまたは述語の値を変更せずに、指定したスキーマ内のすべての表に対するポリシーの強制を無効化します。

SA_POLICY_ADMIN.DISABLE_TABLE_POLICY

強制オプション、ラベル付けファンクションまたは述語の値を変更せずに、指定した表のポリシーの強制を無効化します。

SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICY

RLS述語とDMLトリガーを再適用して、指定したスキーマ内の表に対する現行の強制オプション、ラベル付けファンクションおよび述語を再有効化します。

SA_POLICY_ADMIN.ENABLE_TABLE_POLICY

RLS述語とDMLトリガーを再適用して、指定した表に対する現行の強制オプション、ラベル付けファンクションおよび述語を再有効化します。

SA_POLICY_ADMIN.POLICY_SUBSCRIBE

Oracle Internet Directory構成の場合、APPLY_TABLE_POLICYおよびAPPLY_SCHEMA_POLICYで使用できるようにポリシーにサブスクライブします。

SA_POLICY_ADMIN.POLICY_UNSUBSCRIBE

Oracle Internet Directoryの場合、APPLY_TABLE_POLICYおよびAPPLY_SCHEMA_POLICYで使用できるようにポリシーからサブスクライブ解除します。

SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICY

指定したポリシーをスキーマから削除します。

SA_POLICY_ADMIN.REMOVE_TABLE_POLICY

指定したポリシーを表から削除します。

SA_POLICY_ADMIN.ALTER_SCHEMA_POLICY

SA_POLICY_ADMIN.ALTER_SCHEMA_POLICYプロシージャは、ポリシーのデフォルト強制オプションを変更します。

スキーマ内で新規に作成した表には、新規の施行オプションが自動的に適用されます。スキーマ内の既存の表は影響を受けません。

スキーマではなく表に対する施行オプションを変更するには、最初に表からポリシーを削除し、必要な変更を行ってから、ポリシーを再適用する必要があります。

スキーマに対する施行オプションを変更すると、変更結果は次回にそのスキーマに表を作成するときに有効になります。したがって、スキーマ内の表ごとに異なるポリシー施行オプションが有効になる場合があります。

構文

SA_POLICY_ADMIN.ALTER_SCHEMA_POLICY (
policy_name         IN VARCHAR2,
schema_name         IN VARCHAR2,
default_options     IN VARCHAR2);

パラメータ

表E-24 SA_POLICY_ADMIN.ALTER_SCHEMAのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

表を含むスキーマです。このポリシーに関連付けられている既存のスキーマを検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAMEおよびSCHEMA_NAME列を問い合せます。

default_options

スキーマ内の新規の表に使用するデフォルト・オプションです。各オプションはカンマで区切ります。

デフォルトの強制オプションのリストは、表8-2を参照してください。

例

次の例では、UPDATE_CONTROLデフォルト・オプションをHRスキーマに追加します。

BEGIN
SA_POLICY_ADMIN.ALTER_SCHEMA_POLICY(
policy_name      => 'hr_ols_pol',
schema_name      => 'HR',
default_options  => 'read_control, write_control, update_control');
END;
/

SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY

SA_POLICY_ADMIN.APPLY_SCHEMA_POLICYプロシージャは、スキーマ内のすべての表にポリシーを適用し、その表のポリシーを有効にします。

つまり、まだポリシーが適用されていない表に適用します。その後は、スキーマに新規の表が作成されるたびに、スキーマのデフォルト・オプションを使用して、その表に自動的にポリシーが適用されます。スキーマ内の既存の表で、すでにポリシーが適用されているものは変更されません。

構文

SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY (
policy_name        IN VARCHAR2,
schema_name        IN VARCHAR2,
default_options    IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-25 SA_POLICY_ADMIN.APPLY_SCHEMA_POLICYのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

保護する表を含むスキーマです。

default_options

スキーマ内の表に使用するデフォルト・オプションです。各オプションはカンマで区切ります。default_optionsパラメータがNULLの場合、ポリシーのデフォルト・オプションを使用してポリシーがスキーマ内の表に適用されます。

デフォルトの強制オプションのリストは、表8-2を参照してください。

例

次の例では、HRスキーマにREAD_CONTROLおよびWRITE_CONTROLオプションを適用します。

BEGIN
SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY(
policy_name      => 'hr_ols_pol',
schema_name      => 'HR',
default_options  => 'read_control, write_control');
END;
/

SA_POLICY_ADMIN.APPLY_TABLE_POLICY

SA_POLICY_ADMIN.APPLY_TABLE_POLICYプロシージャは、指定したポリシーを表に追加します。

ポリシーのラベル列が存在しない場合は表に追加され、NULLに設定されます。ポリシーは、適用すると自動的に有効化されます。表のオプション、ラベル付けファンクションまたは述語を変更するには、最初にポリシーを削除してから再適用する必要があります。

構文

SA_POLICY_ADMIN.APPLY_TABLE_POLICY (
policy_name       IN VARCHAR2,
schema_name       IN VARCHAR2,
table_name        IN VARCHAR2,
table_options     IN VARCHAR2 DEFAULT NULL,
label_function    IN VARCHAR2 DEFAULT NULL,
predicate         IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-26 SA_POLICY_ADMIN.APPLY_TABLE_POLICYのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

ポリシーが保護する表を含むスキーマです。

table_name

ポリシーで保護される表です。

table_options

表に使用するポリシー施行オプションのカンマ区切りのリストです。NULLの場合は、ポリシーのデフォルト・オプションが使用されます。

デフォルトの強制オプションのリストは、表8-2を参照してください。

label_function

デフォルトとして使用するラベル値を戻すファンクションをコールする文字列です。たとえば、my_label(:new.dept,:new.status)を指定すると、行のDEPT列とSTATUS列の新規の値に基づいてラベルが計算されます。

predicate

READ_CONTROLのラベルベースの述語と(ANDまたはORを使用して)結合する追加の述語です。

例

次の文では、HRスキーマのEMPLOYEES表にhr_ols_polポリシーを適用します。

BEGIN
SA_POLICY_ADMIN.APPLY_TABLE_POLICY(
policy_name    => 'hr_ols_pol',
schema_name    => 'HR',
table_name     => 'EMPLOYEES',
table_options  => NULL,
label_function => 'hs(:new.dept,:new.status)',
predicate      => 'no_control');
END;
/

SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICY

SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICYプロシージャは、スキーマのすべての表でポリシーの強制を無効化します。

ただし、強制オプション、ラベル付けファンクションまたは述語の値は変更されません。

このプロシージャは、行レベルのセキュリティ述語とDMLトリガーを、スキーマ内のすべての表から削除します。

構文

SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICY (
policy_name    IN VARCHAR2,
schema_name    IN VARCHAR2);

パラメータ

表E-27 SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICYのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

このポリシーの表を含むスキーマです。このスキーマを検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAMEおよびSCHEMA_NAME列を問い合せます。

例

次の例では、HRスキーマのhr_ols_polポリシーを無効化します。

BEGIN
SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICY(
policy_name      => 'hr_ols_pol',
schema_name      => 'HR');
END;
/

SA_POLICY_ADMIN.DISABLE_TABLE_POLICY

SA_POLICY_ADMIN.DISABLE_TABLE_POLICYプロシージャは、強制オプション、ラベル付けファンクションまたは述語の値を変更せずに、表のポリシーの強制を無効化します。

このプロシージャは、行レベルのセキュリティ述語とDMLトリガーを、表から削除します。

構文

SA_POLICY_ADMIN.DISABLE_TABLE_POLICY (
policy_name      IN VARCHAR2,
schema_name      IN VARCHAR2,
table_name       IN VARCHAR2);

パラメータ

表E-28 SA_POLICY_ADMIN.DISABLE_TABLE_POLICYのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

表を含むスキーマです。このスキーマを検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAMEおよびSCHEMA_NAME列を問い合せます。

table_name

schema_nameで指定されたスキーマ内の表です。この表を検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAME、SCHEMA_NAMEおよびTABLE_NAME列を問い合せます。

例

次の文では、HRスキーマのEMPLOYEES表でのhr_ols_posポリシーを無効化します。

BEGIN
SA_POLICY_ADMIN.DISABLE_TABLE_POLICY(
policy_name   => 'hr_ols_pol',
schema_name   => 'HR',
table_name    => 'EMPLOYEES');
END;
/

SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICY

SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICYプロシージャは、指定したスキーマ内の表に対する現行の強制オプション、ラベル付けファンクションおよび述語を再有効化します。

これを行うには、行レベルのセキュリティ述語とDMLトリガーを再適用します。結果は1つの表に対するポリシーを有効化しているように見えますが、スキーマ内のすべての表が対象となります。

構文

SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICY (
policy_name    IN VARCHAR2,
schema_name    IN VARCHAR2);

パラメータ

表E-29 SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICYのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーおよびそのステータスを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAMEおよびSTATUS列を問い合せます。

schema_name

表を含むスキーマです。このスキーマを検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAMEおよびSCHEMA_NAME列を問い合せます。

例

次の例では、HRスキーマのhr_ols_polポリシーを有効化します。

BEGIN
SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICY(
policy_name      => 'hr_ols_pol',
schema_name      => 'HR');
END;
/

SA_POLICY_ADMIN.ENABLE_TABLE_POLICY

SA_POLICY_ADMIN.ENABLE_TABLE_POLICYプロシージャは、指定した表に対する現行の強制オプション、ラベル付けファンクションおよび述語を再有効化します。

これを行うには、行レベルのセキュリティ述語とDMLトリガーを再適用します。

構文

SA_POLICY_ADMIN.ENABLE_TABLE_POLICY (
policy_name     IN VARCHAR2,
schema_name     IN VARCHAR2,
table_name      IN VARCHAR2);

パラメータ

表E-30 SA_POLICY_ADMIN.ENABLE_TABLE_POLICYのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAMEおよびSTATUS列です。

schema_name

表を含むスキーマです。このスキーマを検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAMEおよびSCHEMA_NAME列を問い合せます。

table_name

schema_nameで指定されたスキーマ内の表です。この表を検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAME、SCHEMA_NAMEおよびTABLE_NAME列を問い合せます。

例

次の文では、HRスキーマのEMPLOYEES表でのhr_ols_polポリシーを再有効化します。

BEGIN
SA_POLICY_ADMIN.ENABLE_TABLE_POLICY(
policy_name   => 'hr_ols_pol',
schema_name   => 'HR',
table_name    => 'EMPLOYEES');
END;
/

SA_POLICY_ADMIN.POLICY_SUBSCRIBE

Oracle Internet Directory対応Oracle Label Security構成では、SA_POLICY_ADMIN.POLICY_SUBSCRIBEプロシージャは、SA_POLICY_ADMIN.APPLY_TABLE_POLICYおよびSA_POLICY_ADMIN.APPLY_SCHEMA_POLICYで使用できるようにポリシーにサブスクライブします。

ポリシーに対してこのプロシージャをコールしてから、そのポリシーを表またはスキーマに適用する必要があります。サブスクライブは1回のみで、表またはスキーマ内でポリシーを使用するたびにサブスクライブする必要はありません。

サブスクライブされたポリシーは、適用先の表またはスキーマからそのポリシーを削除してからサブスクライブ解除しないかぎり、削除することはできません。

構文

SA_POLICY.POLICY_SUBSCRIBE(
policy_name     IN VARCHAR2);

パラメータ

表E-31 SA_POLICY_ADMIN.POLICY_SUBSCRIBEのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

注意:

このプロシージャをポリシーの使用前に使用する必要があるのは、Oracle Internet Directory対応Oracle Label Security構成の場合のみです。スタンドアロンOracle Label Securityの場合は、APPLY_TABLE_POLICYおよびAPPLY_SCHEMA_POLICYでポリシーを直接使用でき、サブスクライブは不要です。

例

次の文では、表およびスキーマに適用して使用できるように、データベースをhr_ols_polポリシーにサブスクライブします。

BEGIN
SA_POLICY_ADMIN.POLICY_SUBSCRIBE(
policy_name   => 'hr_ols_pol');
END;
/

SA_POLICY_ADMIN.POLICY_UNSUBSCRIBE

Oracle Internet Directory対応Oracle Label Security構成では、SA_POLICY_ADMIN.POLICY_UNSUBSCRIBEプロシージャはポリシーにサブスクライブ解除します。

このプロシージャを使用できるのは、ポリシーが使用されていない場合、つまり、表またはスキーマに適用されていない場合のみです。(表またはスキーマに適用されている場合は、すべての表またはスキーマから削除してから、サブスクライブ解除する必要があります。)Oracle Internet Directoryでポリシーを削除できるのは、そのOracle Internet Directoryに登録したデータベースでサブスクライブされていない場合のみです。(詳細は、「olsadmintool dropprofile」を参照してください。)

サブスクライブされたポリシーは、適用先の表またはスキーマからそのポリシーを削除してからサブスクライブ解除しないかぎり、削除することはできません。

構文

SA_POLICY_ADMIN.POLICY_UNSUBSCRIBE(
policy_name  IN VARCHAR2);

パラメータ

表E-32 SA_POLICY_ADMIN.POLICY_UNSUBSCRIBEのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の文では、hr_ols_polポリシーにデータベースをサブスクライブ解除します。

BEGIN
SA_POLICY_ADMIN.POLICY_UNSUBSCRIBE(
policy_name   => 'hr_ols_pol');
END;
/

SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICY

SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICYプロシージャは、指定したポリシーをスキーマから削除します。

ポリシーはスキーマ内のすべての表から削除され、オプションでポリシーのラベル列がすべての表から削除されます。

構文

SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICY (
policy_name     IN VARCHAR2,
schema_name     IN VARCHAR2,
drop_column     IN BOOLEAN DEFAULT FALSE);

パラメータ

表E-33 SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICYのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

このポリシーに関連付けられている表を含むスキーマです。このスキーマを検索するには、ALL_SA_SCHEMA_POLICIESビューのSCHEMA_NAMEを問い合せます。

drop_column

TRUEの場合、ポリシーの列が表から削除され、それ以外の場合、列は削除されません。

例

次の例では、HRスキーマからhuman_resourceポリシーの列を削除します。

BEGIN
SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICY(
policy_name      => 'hr_ols_pol',
schema_name      => 'HR',
drop_column      => TRUE);
END;
/

SA_POLICY_ADMIN.REMOVE_TABLE_POLICY

SA_POLICY_ADMIN.REMOVE_TABLE_POLICYプロシージャは、指定したポリシーを表から削除します。

ポリシーの述語とDMLトリガーが表から削除され、ポリシーのラベル列をオプションで削除できます。ポリシーは、それにより保護されているスキーマに属する表から削除できます。

構文

SA_POLICY_ADMIN.REMOVE_TABLE_POLICY (
policy_name        IN VARCHAR2,
schema_name        IN VARCHAR2,
table_name         IN VARCHAR2,
drop_column        IN BOOLEAN DEFAULT FALSE);

パラメータ

表E-34 SA_POLICY_ADMIN.REMOVE_TABLE_POLICYのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

このポリシーに関連付けられている表を含むスキーマです。このスキーマを検索するには、ALL_SA_SCHEMA_POLICIESビューのSCHEMA_NAMEを問い合せます。

table_name

schema_nameで指定されたスキーマ内の表です。この表を検索するには、ALL_SA_TABLE_POLICIESビューのPOLICY_NAME、SCHEMA_NAMEおよびTABLE_NAME列を問い合せます。

drop_column

列を削除するかどうかを指定します。TRUEの場合はポリシーの列が表から削除され、それ以外の場合は削除されません。

例

次の文では、HRスキーマのEMPLOYEES表からhr_ols_polポリシーを削除します。

BEGIN
SA_POLICY_ADMIN.REMOVE_TABLE_POLICY(
policy_name    => 'hr_ols_pol',
schema_name    => 'HR',
table_name     => 'EMPLOYEES',
drop_column    => TRUE);
END;
/

SA_SESSIONセッション管理PL/SQLパッケージ

SA_SESSION PL/SQLパッケージは、ユーザー認証のセッション動作を管理します。

ユーザーは、管理者により設定された認可の範囲内で、セッション中にラベルを変更できます。

このパッケージを使用するために特別な権限は必要ありません。

表E-35に、SA_SESSION PL/SQLパッケージ・プロシージャおよびファンクションを示します。

表E-35 SA_SESSSION PL/SQLパッケージの内容

ファンクション

説明

SA_SESSION.COMP_READ

ユーザーが読取りを認可されている区分のカンマ区切りのリストを戻します。

SA_SESSION.COMP_WRITE

ユーザーが書込みを認可されている区分のカンマ区切りのリストを戻します。

SA_SESSION.GROUP_READ

ユーザーが読取りを認可されているグループのカンマ区切りのリストを戻します。

SA_SESSION.GROUP_WRITE

ユーザーが書込みを認可されているグループのカンマ区切りのリストを戻します。

SA_SESSION.LABEL

指定したOracle Label Securityポリシーに関連付けられているラベルを戻します。

SA_SESSION.MAX_LEVEL

セッションについて認可されたOracle Label Securityの最大レベルを戻します。

SA_SESSION.MAX_READ_LABEL

ユーザーが認可される最大読取りラベルの初期化に使用されたラベル文字列を戻します。

SA_SESSION.MAX_WRITE_LABEL

ユーザーが認可される最小書込みラベルの初期化に使用されたラベル文字列を戻します。

SA_SESSION.MIN_LEVEL

セッションについて認可された最小レベルを戻します。

SA_SESSION.MIN_WRITE_LABEL

ラベルに対する最小書込み権限を戻します。

SA_SESSION.PRIVS

現行セッションの権限セットをカンマ区切りのリスト形式で戻します。

SA_SESSION.RESTORE_DEFAULT_LABELS

現行のセッション・ラベルと行ラベルを、格納されているデフォルト設定にリセットします。

SA_SESSION.ROW_LABEL

現行セッションのポリシーに関連付けられている行ラベルの名前を戻します。

SA_SESSION.SA_USER_NAME

現行のOracle Label Securityセッションに関連付けられているユーザー名を戻します。

SA_SESSION.SAVE_DEFAULT_LABELS

ユーザーは、現行のセッション・ラベルと行ラベルを将来のセッションのデフォルトとして格納できます。

SA_SESSION.SET_ACCESS_PROFILE

データベース・セッションのOracle Label Securityでの認可と権限を、指定したユーザーの認証と権限に設定します。

SA_SESSION.SET_LABEL

読取りアクセス権を持つ新規レベル、新規区分およびグループを設定します。

SA_SESSION.SET_ROW_LABEL

新規の行に適用するデフォルトの行ラベルを設定します

関連項目:

数値ラベル・タグおよびブール値を戻す追加のファンクションは、「SA_UTL PL/SQLユーティリティのファンクションおよびプロシージャ」を参照してください

SA_SESSION.COMP_READ

SA_SESSION.COMP_READファンクションは、ユーザーが読取りを認可されている区分のカンマ区切りのリストを戻します。

構文

SA_SESSION.COMP_READ (
policy_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表E-36 SA_SESSION.COMP_READのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、ユーザーがhr_ols_polポリシーに対して読取りが可能な区分を戻します。

SELECT SA_SESSION.COMP_READ ('hr_ols_pol') FROM DUAL;

SA_SESSION.COMP_WRITE

SA_SESSION.COMP_WRITEファンクションは、ユーザーが書込みを認可されている区分のカンマ区切りのリストを戻します。

このファンクションは、SA_SESSION.COMP_READのサブセットです。

構文

SA_SESSION.COMP_WRITE (
policy_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表E-37 SA_SESSION.COMP_WRITEのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、ユーザーがhr_ols_polポリシーに対して変更が可能な区分を戻します。

SELECT SA_SESSION.COMP_WRITE ('hr_ols_pol') FROM DUAL;

SA_SESSION.GROUP_READ

SA_SESSION.GROUP_READファンクションは、ユーザーが読取りを認可されているグループのカンマ区切りのリストを戻します。

構文

SA_SESSION.GROUP_READ (
policy_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表E-38 SA_SESSION.GROUP_READのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、ユーザーがhr_ols_polポリシーに対して読取りが可能なグループのリストを戻します。

SELECT SA_SESSION.GROUP_READ ('hr_ols_pol') FROM DUAL;

SA_SESSION.GROUP_WRITE

SA_SESSION.GROUP_WRITEファンクションは、ユーザーが書込みを認可されているグループのカンマ区切りのリストを戻します。

このファンクションは、SA_SESSION.GROUP_READのサブセットです。

構文

SA_SESSION.GROUP_WRITE (
policy_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表E-39 SA_SESSION.GROUP_WRITEのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、ユーザーがhr_ols_polポリシーに対する変更を認可されているグループを戻します。

SELECT SA_SESSION.GROUP_WRITE ('hr_ols_pol') FROM DUAL;

SA_SESSION.LABEL

SA_SESSION.LABELファンクションは、現行セッションの指定したポリシーに関連付けられているラベルを戻します。

構文

SA_SESSION.LABEL (
policy_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表E-40 SA_SESSION.LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーに関連付けられているラベルを戻します。

SELECT SA_SESSION.LABEL ('hr_ols_pol') FROM DUAL;

SA_SESSION.MAX_LEVEL

SA_SESSION.MAX_LEVELファンクションは、セッションが認可されているOracle Label Securityの最大レベルを戻します。

構文

SA_SESSION.MAX_LEVEL (
policy_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表E-41 SA_SESSION.MAX_LEVELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーが認可されているOracle Label Securityの最大レベルを戻します。

SELECT SA_SESSION.MAX_LEVEL ('hr_ols_pol') FROM DUAL;

SA_SESSION.MAX_READ_LABEL

SA_SESSION.MAX_READ_LABELファンクションは、ユーザーが認可される最大読取りラベルの初期化に使用されたラベル文字列を戻します。

戻り文字列は、ユーザーの最大レベル、読取りアクセスが認可される区分、および読取りアクセスが認可されるグループで構成されます。

構文

SA_SESSION.MAX_READ_LABEL (
policy_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表E-42 SA_SESSION.MAX_READ_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーに対する最大読取りラベル権限を戻します。

SELECT SA_SESSION.MAX_READ_LABEL ('hr_ols_pol') FROM DUAL;

SA_SESSION.MAX_WRITE_LABEL

SA_SESSION.MAX_WRITE_LABELファンクションは、ユーザーが認可される最大書込みラベルの初期化に使用されたラベル文字列を戻します。

この戻り文字列は、ユーザーの最大レベル、書込みアクセスが認可される区分、および書込みアクセスが認可されるグループで構成されます。

構文

SA_SESSION.MAX_WRITE_LABEL (
policy_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表E-43 SA_SESSION.MAX_WRITE_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーに対する最大書込みラベル権限を戻します。

SELECT SA_SESSION.MAX_WRITE_LABEL ('hr_ols_pol') FROM DUAL;

SA_SESSION.MIN_LEVEL

SA_SESSION.MIN_LEVELファンクションは、セッションが認可されているOracle Label Securityの最小レベルを戻します。

構文

SA_SESSION.MIN_LEVEL (
policy_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表E-44 SA_SESSION.MIN_LEVELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーの現行の最小レベルを戻します。

SELECT SA_SESSION.MIN_LEVEL ('hr_ols_pol') FROM DUAL;

SA_SESSION.MIN_WRITE_LABEL

SA_SESSION.MIN_WRITE_LABELファンクションは、ユーザーが認可される最小書込みラベルの初期化に使用されたラベル文字列を取得します。

戻り文字列にはレベルのみが含まれ、区分やグループは含まれません。

構文

SA_SESSION.MIN_WRITE_LABEL (
policy_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表E-45 SA_SESSION.MIN_WRITE_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーに対する最大書込みラベル権限を戻します。

SELECT SA_SESSION.MIN_WRITE_LABEL ('hr_ols_pol') FROM DUAL;

SA_SESSION.PRIVS

SA_SESSION.PRIVSファンクションは、現行セッションの権限セットをカンマ区切りのリスト形式で戻します。

構文

SA_SESSION.PRIVS (
policy_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表E-46 SA_SESSION.Privsのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーに対する現行セッションの権限を戻します。

SELECT SA_SESSION.PRIVS ('hr_ols_pol') FROM DUAL;

SA_SESSION.RESTORE_DEFAULT_LABELS

SA_SESSION.RESTORE_DEFAULT_LABELSプロシージャは、セッション・ラベルと行ラベルを、データ・ディクショナリに格納されているそれらのラベルでリストアします。

このコマンドが役立つのは、SA_SESSION.SET_LABELコマンドが処理された後に値をリセットする場合です。

構文

SA_SESSION.RESTORE_DEFAULT_LABELS (
policy_name in VARCHAR2);

パラメータ

表E-47 SA_SESSION.RESTORE_DEFAULT_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーのデフォルト・ラベルをリストアします。

BEGIN
SA_SESSION.RESTORE_DEFAULT_LABELS (
policy_name         => 'hr_ols_pol');
END;
/

SA_SESSION.ROW_LABEL

SA_SESSION.ROW_LABELファンクションは、現行セッションのポリシーに関連付けられている行ラベルの名前を戻します。

構文

SA_SESSION.ROW_LABEL (
policy_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表E-48 SA_SESSION.ROW_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーに関連付けられている行ラベルを戻します。

SELECT SA_SESSION.ROW_LABEL ('hr_ols_pol') FROM DUAL;

SA_SESSION.SET_LABEL

SA_SESSION.SET_LABELプロシージャは、現行データベース・セッションのラベルを設定します。

セッション・ラベルは次のように設定できます。

- 最大レベル以下で、かつ最小レベル以上のレベルに設定する。

- 認可された区分リストにある区分を含むように設定する。

- 認可されたグループ・リストにあるグループを含むように設定する。(認可グループのサブグループは、認可リストに暗黙的に含まれます。)

セッション・ラベルを変更すると、そのセッションの行ラベルの値に影響する場合があることに注意してください。セッションの行ラベルには、ユーザーが書込みアクセス権を持っている区分とグループのサブセットが含まれています。これは、セッション・ラベルと等価の場合と、等価でない場合があります。たとえば、SA_SESSION.SET_LABELプロシージャを使用して現行セッション・ラベルをC:A,B:USに設定した場合に、A区分に対する書込みアクセス権しか持っていなければ、行ラベルはC:Aに設定されます。

構文

SA_SESSION.SET_LABEL (
policy_name IN VARCHAR2,
label       IN VARCHAR2);

パラメータ

表E-49 SA_SESSION.SET_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label

ラベルとして設定する値

例

次の例では、hr_ols_polポリシーのラベルを設定します。

BEGIN
SA_SESSION.SET_LABEL (
policy_name         => 'hr_ols_pol',
label               => 'C:A,B:US');
END;
/

関連項目:

SA_USER_ADMIN.SET_DEFAULT_LABEL

SA_SESSION.SA_USER_NAME

SA_SESSION.SA_USER_NAMEファンクションは、SA_SESSION.SET_ACCESS_PROFILEプロシージャで設定された(またはログイン時に設定された)現行のOracle Label Securityユーザーの名前を戻します。

これにより、現行ユーザーの識別情報をOracleログイン名ではなくOracle Label Securityに関連付けて判断できます。

構文

SA_SESSION.SA_USER_NAME (
policy_name IN VARCHAR2)
RETURN VARCHAR2;

パラメータ

表E-50 SA_SESSION.SA_USER_NAMEのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーのOracle Label Securityユーザーの名前を検索します。

SELECT SA_SESSION.SA_USER_NAME ('hr_ols_pol') FROM DUAL;

SA_SESSION.SAVE_DEFAULT_LABELS

SA_SESSION.SAVE_DEFAULT_LABELSプロシージャは、現行のセッション・ラベルと行ラベルを、初期セッション・ラベルおよびデフォルトの行ラベルとして格納します。

このプロシージャは、現行のセッション・ラベルと行ラベルを反映するようにデフォルトを変更できます。保存されたラベルは、将来のセッションの初期デフォルト設定として使用されます。

データベースへのログイン時には、デフォルトのセッション・ラベルと行ラベルを使用して、セッション・ラベルと行ラベルが初期化されます。管理者は最初にユーザーのOracle Label Securityのラベルを認可するときに、ユーザーのデフォルト・レベル、デフォルト区分およびデフォルト・グループも定義しています。セッション・ラベルと行ラベルを変更し、その値をデフォルト・ラベルとして保存する場合は、SA_SESSION.SAVE_DEFAULT_LABELSプロシージャを使用できます。

このプロシージャが役立つのは、複数のセッションがあり、すべての追加セッションに同じラベルが使用されるようにする必要がある場合です。現行ラベルをデフォルトとして保存し、将来のすべてのセッションに初期ラベルとして使用できます。

Oracle Formsを通じてデータベースに接続し、レポートを実行する必要がある場合を考えます。Oracle Reportsをコールする前に現行セッション・ラベルをデフォルトとして保存すると、Oracle ReportsではOracle Formsで使用中のものと確実に同じラベルで初期化されます。

構文

SA_SESSION.SAVE_DEFAULT_LABELS (
policy_name IN VARCHAR2);

パラメータ

表E-51 SA_SESSION.SAVE_DEFAULT_LABELSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーのラベルのデフォルトを保存します。

BEGIN
SA_SESSION.SAVE_DEFAULT_LABELS (
policy_name       => 'hr_ols_pol');
END;
/

注意:

SA_SESSION.SAVE_DEFAULT_LABELSプロシージャは、管理者が確立した設定をオーバーライドします。

SA_SESSION.SET_ACCESS_PROFILE

SA_SESSION.SET_ACCESS_PROFILEプロシージャは、データベース・セッションのOracle Label Securityでの認可と権限を、指定したユーザーの認証と権限に設定します。

元のユーザーは引き続きPROFILE_ACCESS権限を持つことに注意してください。

SA_SESSION.SET_ACCESS_PROFILEプロシージャを実行するユーザーは、PROFILE_ACCESS権限を持つ必要があります。ログインしたデータベース・ユーザー(OracleユーザーID)は変わりません。そのユーザーには、指定のユーザーの認証と権限のみが想定されます。これに対して、Oracle Label Securityのユーザー名は変更されます。

この管理プロシージャは、次のように様々なタスクに役立ちます。

- SA_SESSION.SET_ACCESS_PROFILEを使用すると、特定ユーザーの認証と権限の設定結果を確認できます。

- アプリケーションがラベル付きデータにアクセスするには、プロキシ・アカウントをアプリケーション・ユーザーとして接続(その識別情報を想定)させる必要があります。プロキシ・アカウントは、SA_SESSION.SET_ACCESS_PROFILE権限を使用して、アプリケーション・ユーザーのかわりに操作できます。

構文

SA_SESSION.SET_ACCESS_PROFILE (
policy_name IN VARCHAR2
user_name   IN VARCHAR2);

パラメータ

表E-52 SA_SESSION.SET_ACCESS_PROFILEのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

認可および権限を想定する必要があるユーザーの名前(通常、このポリシーに関連付けられてたユーザー)。このユーザーを検索するには、DBA_SA_USERSビューのUSER_NAMEおよびPOLICY_NAME列を問い合せます。

例

次の例では、ユーザーpsmithは、データベース・セッションに対するOracle Label Securityの認可と権限を持つことができるようになります。

BEGIN
SA_SESSION.SET_ACCESS_PROFILE (
policy_name       => 'hr_ols_pol',
user_name         => 'jjones');
END;
/

SA_SESSION.SET_ROW_LABEL

SA_SESSION.SET_ROW_LABELプロシージャは、現行データベース・セッションのデフォルトの行ラベル値を設定します。

ラベルの区分とグループは、ユーザーが書込みアクセス権を持つセッション・ラベルの区分およびグループのサブセットであることが必要です。LABEL_DEFAULTオプションが設定されている場合は、ユーザーがラベルを明示的に指定しなければ、この行ラベル値が挿入時に使用されます。

SA_SESSION.SET_ROW_LABELプロシージャを使用してデフォルトの行ラベル値を設定しない場合、この値はセッション・ラベルから自動的に導出されます。これには、セッション・ラベルのレベルと、ユーザーが書込みアクセス認可を持つセッション・ラベルの区分とグループのサブセットが含まれています。

セッション・ラベルに変更があると、行ラベルは自動的にリセットされます。たとえば、セッション・レベルをHIGHLY_SENSITIVEからSENSITIVEに変更すると、行ラベルのレベル・コンポーネントは自動的にSENSITIVEに変更されます。

ユーザーは、独自に行ラベルを設定できますが、含めることができるのは次の要素のみです。

- セッション・ラベルのレベル以下で、かつ、ユーザーの最小レベル以上のレベル。

- ユーザーが書込みアクセス権を持つように認可されているセッション・ラベルからの、区分とグループのサブセット。

ユーザーが行ラベルに無効な値の設定を試みると、操作は許可されず、その行ラベル値は変更されません。

構文

SA_SESSION.SET_ROW_LABEL (
policy_name   IN VARCHAR2,
row_label     IN VARCHAR2);

パラメータ

表E-53 SA_SESSION.SET_ROW_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label

デフォルトの行ラベルとして設定する値

例

次の例では、hr_ols_polポリシーの行ラベルを設定します。

BEGIN
SA_SESSION.SET_ROW_LABEL (
policy_name     => 'hr_ols_pol',
label           => 'HR');
END;
/

関連項目:

SA_USER_ADMIN.SET_ROW_LABEL

SA_SYSDBAポリシー管理PL/SQLパッケージ

SA_SYSDBA PL/SQLパッケージは、Oracle Label Securityポリシー(作成、変更または無効化など)を管理します。

表E-54に、SA_SYSDBAパッケージのプロシージャを示します。

このパッケージを使用するには、SA_SYSDBAパッケージでのLBAC_DBAロールおよびEXECUTE権限が付与されている必要があります。SA_SYSDBAパッケージは実行者の権限パッケージであるため、このパッケージを使用する前に、次のINHERIT PRIVILEGES権限をユーザーSYSに付与する必要があります。

GRANT INHERIT PRIVILEGES ON USER SYS TO LBACSYS;

この権限はユーザーSYSにのみ付与する必要があります。他のユーザーに付与する必要はありません。

表E-54 SA_SYSDBA PL/SQLパッケージの内容

プロシージャ

説明

SA_SYSDBA.ALTER_POLICY

Oracle Label Securityポリシーを変更します。

SA_SYSDBA.CREATE_POLICY

Oracle Label Securityポリシーを作成します。

SA_SYSDBA.DISABLE_POLICY

Oracle Label Securityポリシーを無効化します。

SA_SYSDBA.DROP_POLICY

Oracle Label Securityポリシーを削除します。

SA_SYSDBA.ENABLE_POLICY

Oracle Label Securityポリシーを有効化します。

関連項目:

- 手順1: ラベル・セキュリティ・ポリシー・コンテナの作成

- Oracle Label Security管理者のロール

SA_SYSDBA.ALTER_POLICY

SA_SYSDBA.ALTER_POLICYプロシージャは、ポリシーに関連付けられている列名を設定および変更します。

SA_SYSDBA.ALTER_POLICYは、どのユーザー表またはスキーマにも適用されていないポリシーの列名を変更するためにのみ使用できます。それ以外の場合は、このエラーが表示されます。

12474, 00000, "cannot change column name for a policy in use"

構文

SA_SYSDBA.ALTER_POLICY (
policy_name       IN  VARCHAR2,
default_options   IN  VARCHAR2 DEFAULT NULL,
column_name       IN  VARCHAR2 DEFAULT NULL);

パラメータ

表E-55 SA_SYSDBA.ALTER_POLICYのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

default_options

ポリシーを適用し、表またはスキーマ固有のオプションを指定しない場合に使用するデフォルトの強制オプションを指定します。これには、施行オプションとラベル列を非表示にするオプションが含まれます。各オプションはカンマで区切ります。

デフォルトの強制オプションのリストは、「ポリシー強制オプションのカテゴリ」を参照してください。

column_name

ポリシーに関連付けられている列名を指定します。この列名を検索するには、ALL_SA_POLICIESビューのCOLUMN_NAME列を問い合せます。

例

次の例では、異なるデフォルト・オプションのセットを使用するようにhr_ols_polポリシーを更新します。列の名前は変更する必要がないため、column_nameパラメータは省略されます。

BEGIN
SA_SYSDBA.ALTER_POLICY (
policy_name      => 'hr_ols_pol',
default_options  => 'read_control, delete_control');
END;
/

SA_SYSDBA.CREATE_POLICY

SA_SYSDBA.CREATE_POLICYプロシージャは、Oracle Label Securityの新規ポリシーを作成し、ポリシー固有の列名を定義し、デフォルトのポリシー・オプションを指定します。

ポリシーを作成すると、そのロールが作成され、ユーザーに付与されます。ロール名の形式は、policy_DBAです(たとえば、my_ols_pol_DBA)。

構文

SA_SYSDBA.CREATE_POLICY (
policy_name       IN VARCHAR2,
column_name       IN VARCHAR2 DEFAULT NULL,
default_options   IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-56 SA_SYSDBA.CREATE_POLICYのパラメータ

パラメータ

説明

policy_name

データベース内で一意のポリシー名を指定します。policy_nameは30文字以内ですが、最初の26文字のみが有効です。2つのポリシーでpolicy_nameの最初の26文字に同じ値を指定することはできません。

既存のポリシーのリストを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

column_name

ポリシーで保護されている表に追加する列の名前を指定します。NULLの場合は、名前policy_name_COLが使用されます。2つのOracle Label Securityポリシーが同じ列名を共有することはできません。

default_options

ポリシーを適用し、表またはスキーマ固有のオプションを指定しない場合に使用するデフォルト・オプションを指定します。これには、施行オプションとラベル列を非表示にするオプションが含まれます。各オプションはカンマで区切ります。

デフォルトの強制オプションのリストは、「ポリシー強制オプションのカテゴリ」を参照してください。

例

次の例では、デフォルト・オプションがREAD_CONTROLおよびWRITE_CONTROLのポリシー・コンテナを作成します。WRITE_CONTROLオプションは、INSERT_CONTROL、UPDATE_CONTROLおよびDELETE_CONTROLオプションを囲みます。

BEGIN
SA_SYSDBA.CREATE_POLICY (
policy_name      => 'hr_ols_pol',
column_name      => 'ols_col',
default_options  => 'read_control, write_control');
END;
/

関連項目:

- 表のポリシー強制オプションについては、「SA_POLICY_ADMIN.APPLY_TABLE_POLICY」を参照してください

- HIDEについては、「Oracle Label Securityのポリシー強制オプション」および「HIDEポリシー列オプションの動作」を参照してください

- インバース・グループでのSA_SYSDBA.CREATE_POLICY

- policy_DBAロールの詳細は、「Oracle Label Security管理者の責任」を参照してください

SA_SYSDBA.DISABLE_POLICY

SA_SYSDBA.DISABLE_POLICYプロシージャは、データベースから削除せずにポリシーの強制をオフにします。

それ以降のデータベースへのすべてのアクセスには、ポリシーは施行されません。

ポリシーを無効化すると、そのポリシーで保護されている表およびスキーマにはアクセス制御が施行されなくなります。管理者は、ポリシーが無効化されている間も、引き続き管理操作を実行できます。

注意:

この機能はきわめて強力であり、慎重に使用する必要があります。ポリシーを無効化すると、データベースのすべての接続ユーザーが、通常はポリシーで保護されている全データにアクセスできるようになります。したがって、サイトではこの機能の使用に関するガイドラインを設定する必要があります。

通常は、データを管理するためにポリシーを無効化しないでください。ただし、管理者は、アプリケーションのデバッグ・タスクを実行するために、ポリシーを無効化することが必要となる場合があります。この場合は、データベースをシングル・ユーザー・モードで実行してください。たとえば、開発環境では、ポリシーをオンにせずにデータ処理操作を監視することが必要な場合があります。ポリシーを再び有効化すると、選択したすべての施行オプションも再び有効になります。

構文

SA_SYSDBA.DISABLE_POLICY (
policy_name IN VARCHAR2);

パラメータ

表E-57 SA_SYSDBA.DISABLE_POLICYのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーおよびそのステータスを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAMEおよびSTATUS列を問い合せます。

例

次の例では、hr_ols_polポリシーを無効化します。

EXEC SA_SYSDBA.DISABLE_POLICY ('hr_ols_pol');

SA_SYSDBA.DROP_POLICY

SA_SYSDBA.DROP_POLICYプロシージャは、ポリシーおよび関連付けられているユーザー・ラベルとデータ・ラベルをデータベースから削除します。

このプロシージャは、そのポリシーおよびこれらの関連付けを、システム全体からパージします。オプションで、そのポリシーにより制御されているすべての表からラベル列を削除することもできます。ポリシーは、削除する前に無効化する必要はありません。

構文

SA_SYSDBA.DROP_POLICY (
policy_name IN VARCHAR2,
drop_column  BOOLEAN DEFAULT FALSE);

パラメータ

表E-58 SA_SYSDBA.DROP_POLICYのパラメータ

パラメータ

説明

policy_name

削除するポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

drop_column

保護されている表からポリシー列を削除する必要があることを示します(TRUE)。

例

次の例では、hr_ols_polポリシーを削除します。

EXEC SA_SYSDBA.DROP_POLICY ('hr_ols_pol');

SA_SYSDBA.ENABLE_POLICY

SA_SYSDBA.ENABLE_POLICYプロシージャは、ポリシーで保護されている表およびスキーマにアクセス制御を強制します。

ポリシーは、作成時に自動的に有効化されます。作成または有効化した後は、ポリシーで保護されている表に対する以降のすべてのアクセスに対して、そのポリシーが強制されます。

構文

SA_SYSDBA.ENABLE_POLICY (policy_name IN VARCHAR2);

パラメータ

表E-59 SA_SYSDBA.ENABLE_POLICYのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーおよびそのステータスを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAMEおよびSTATUS列を問い合せます。

例

次の例では、hr_ols_polポリシーを有効化します。

EXEC SA_SYSDBA.ENABLE_POLICY('hr_ols_pol');

SA_USER_ADMIN PL/SQLパッケージ

SA_USER_ADMIN PL/SQLパッケージは、ユーザー・ラベルをラベル・コンポーネント別に管理します。

表E-60に、SA_USER_ADMIN PL/SQLパッケージ・プロシージャを示します。

このパッケージを使用するには、SA_USER_ADMINパッケージでのpolicy_DBAロール(たとえば、hr_ols_polポリシーに対するロールとしてHR_OLS_POL_DBA)、およびEXECUTE権限が付与されている必要があります。

表E-60 SA_USER_ADMIN PL/SQLパッケージの内容

プロシージャまたはファンクション

説明

SA_USER_ADMIN.ADD_COMPARTMENTS

ユーザーの認証に区分を追加し、その区分が読取りとともに書込みについても認可されるかどうかを指定します。

SA_USER_ADMIN.ADD_GROUPS

ユーザーにグループを追加し、そのグループが読取りとともに書込みについても認可されるかどうかを指定します。

SA_USER_ADMIN.ALTER_COMPARTMENTS

リストにある各区分について、書込みアクセス、デフォルトのラベル・インジケータおよび行ラベル・インジケータを変更します。

SA_USER_ADMIN.ALTER_GROUPS

リストにある各グループについて、書込みアクセス、デフォルトのラベル・インジケータおよび行ラベル・インジケータを変更します。

SA_USER_ADMIN.DROP_ALL_COMPARTMENTS

すべての区分をユーザーの認証から削除します。

SA_USER_ADMIN.DROP_ALL_GROUPS

すべてのグループをユーザーの認証から削除します。

SA_USER_ADMIN.DROP_COMPARTMENTS

指定した区分をユーザーの認証から削除します。

SA_USER_ADMIN.DROP_GROUPS

指定したグループをユーザーの認証から削除します。

SA_USER_ADMIN.DROP_USER_ACCESS

指定したユーザーからOracle Label Securityのすべての認可と権限を削除します。

SA_USER_ADMIN.SET_COMPARTMENTS

ユーザーに区分を割り当てて、そのユーザーのセッション・ラベルと行ラベルのデフォルト値を識別します。

SA_USER_ADMIN.SET_DEFAULT_LABEL

ユーザーの初期セッション・ラベルを指定のラベルに設定します。

SA_USER_ADMIN.SET_GROUPS

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

SA_USER_ADMIN.SET_LEVELS

ユーザーに最小レベルと最大レベルを割り当てて、そのユーザーのセッション・ラベルと行ラベルのデフォルト値を識別します。

SA_USER_ADMIN.SET_PROG_PRIVS

プログラム・ユニットに対するポリシー固有の権限を設定します。

SA_USER_ADMIN.SET_ROW_LABEL

ユーザーの初期の行ラベルを指定のラベルに設定します。

SA_USER_ADMIN.SET_USER_LABELS

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

SA_USER_ADMIN.SET_USER_PRIVS

ユーザーに対するポリシー固有の権限を設定します。

SA_USER_ADMIN.ADD_COMPARTMENTS

SA_USER_ADMIN.ADD_COMPARTMENTSプロシージャは、ユーザーの認証に区分を追加し(割り当てて)、その区分が書込みおよび読取り権限について認可されるかどうかを指定します。

このプロシージャが役立つのは、SA_USER_ADMIN.SET_COMPARTMENTSプロシージャをユーザーに対してすでに使用しているが、その後に、追加の区分に対してこのユーザー認証を付与するか、または現行の区分のセットを更新することを決定した場合です。これを、SA_USER_ADMIN.SET_COMPARTMENTSのかわりに使用することもできます。

構文

SA_USER_ADMIN.ADD_COMPARTMENTS (
policy_name    IN VARCHAR2,
user_name      IN VARCHAR2,
comps          IN VARCHAR2,
access_mode    IN VARCHAR2 DEFAULT NULL,
in_def         IN VARCHAR2 DEFAULT NULL,
in_row         IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-61 SA_USER_ADMIN.ADD_COMPARTMENTSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ユーザー名を指定します。このユーザーは、新規ユーザー、またはこのポリシーの区分がすでに認可されたユーザーのいずれかです。既存のユーザーを検索するには、DBA_SA_USER_COMPARTMENTSビューのUSER_NAME列を問い合せます。

comps

短縮名のみによる、追加する区分のカンマ区切りのリストです。既存の区分を検索するには、ALL_SA_COMPARTMENTSビューのSHORT_NAME列を問い合せます。

access_mode

認可するアクセスのタイプを指定できる文字列値を含む、2つのパブリック変数の一方です。変数名、値および意味は次のとおりです。

- SA_UTL.READ_ONLYは、書込みアクセス権がないことを示します。

- SA_UTL.READ_WRITEは、書込みが認可されることを示します。

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

in_def

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

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

in_row

指定した区分が行ラベル内にあることが必要かどうか(Y/N)を指定します。

in_rowがNULLの場合は、Nに設定されます。

例

次の例では、hr_ols_polポリシーに区分を追加します。

BEGIN
SA_USER_ADMIN.ADD_COMPARTMENTS (
policy_name    => 'hr_ols_pol',
user_name      => 'jjones',
comps          => 'FIN',
access_mode    => SA_UTL.READ_ONLY,
in_def         => 'y',
in_row         => 'y');
END;
/

SA_USER_ADMIN.ADD_GROUPS

SA_USER_ADMIN.ADD_GROUPSプロシージャは、ユーザーにグループを追加し(割り当てて)、そのグループが書込みおよび読取り権限について認可されるかどうかを指定します。

このプロシージャが役立つのは、SA_USER_ADMIN.SET_GROUPSプロシージャをユーザーに対してすでに使用しているが、その後に、追加のグループに対してこのユーザー認証を付与するか、または現行のグループのセットを更新することを決定した場合です。これを、SA_USER_ADMIN.SET_GROUPSのかわりに使用することもできます。

構文

SA_USER_ADMIN.ADD_GROUPS (
policy_name       IN VARCHAR2,
user_name         IN VARCHAR2,
groups            IN VARCHAR2,
access_mode       IN VARCHAR2 DEFAULT NULL,
in_def            IN VARCHAR2 DEFAULT NULL,
in_row            IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-62 SA_USER_ADMIN.ADD_GROUPSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ユーザーを指定します。このユーザーは、新規ユーザー、またはこのポリシーのグループがすでに認可されたユーザーのいずれかです。既存のユーザーを検索するには、DBA_SA_USER_GROUPSビューのUSER_NAME列を問い合せます。

groups

短縮名のみによる、追加するグループのカンマ区切りのリストです。既存のグループのリストを検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

access_mode

認可するアクセスのタイプを指定できる文字列値を含む、2つのパブリック変数の一方です。変数名、値および意味は次のとおりです。

- SA_UTL.READ_ONLYは、書込みアクセス権がないことを示します。

- SA_UTL.READ_WRITEは、書込みが認可されることを示します。

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

in_def

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

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

in_row

指定したグループが行ラベル内にあることが必要かどうか(Y/N)を指定します。

in_rowがNULLの場合は、Nに設定されます。

例

次の例では、hr_ols_polポリシーに複数のグループを追加します。

BEGIN
SA_USER_ADMIN.ADD_GROUPS (
policy_name    => 'hr_ols_pol',
user_name      => 'jjones',
groups         => 'ER_FIN, SR_FIN, NR_FIN, WR_FIN',
access_mode    => SA_UTL.READ_WRITE,
in_def         => 'y',
in_row         => 'y');
END;
/

SA_USER_ADMIN.ALTER_COMPARTMENTS

SA_USER_ADMIN.ALTER_COMPARTMENTSプロシージャは、指定された区分について、書込みアクセス、デフォルトのラベル・インジケータおよび行ラベル・インジケータを変更します。

構文

SA_USER_ADMIN.ALTER_COMPARTMENTS (
policy_name  IN VARCHAR2,
user_name    IN VARCHAR2,
comps        IN VARCHAR2,
access_mode  IN VARCHAR2 DEFAULT NULL,
in_def       IN VARCHAR2 DEFAULT NULL,
in_row       IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-63 SA_USER_ADMIN.ALTER_COMPARTMENTSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

区分について認可されているユーザーを指定します。認可されたユーザーを検索するには、DBA_SA_USER_COMPARTMENTSビューのUSER_NAME列を問い合せます。

comps

短縮名のみを使用した、変更する区分のカンマ区切りのリストです。既存の区分を検索するには、ALL_SA_COMPARTMENTSビューのSHORT_NAME列を問い合せます。

access_mode

認可するアクセスのタイプを指定できる文字列値を含む、2つのパブリック変数の一方です。変数名、値および意味は次のとおりです。

SA_UTL.READ_ONLYは、書込みアクセス権がないことを示します。

SA_UTL.READ_WRITEは、書込みが認可されることを示します。

access_modeがNULLの場合、区分のaccess_modeは変更されません。

in_def

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

in_defがNULLの場合、区分のin_defは変更されません。

in_row

指定した区分が行ラベル内にあることが必要かどうか(Y/N)を指定します。

in_rowがNULLの場合、区分のin_rowは変更されません。

in_defがNの場合、in_rowをYにすることはできません。これは、行ラベル区分はセッション・ラベル区分のサブセットにする必要があるためです。

例

次の例では、hr_ols_polポリシーの区分を変更します。

BEGIN
SA_USER_ADMIN.ALTER_COMPARTMENTS (
policy_name    => 'hr_ols_pol',
user_name      => 'jjones',
comps          => 'FIN',
access_mode    => SA_UTL.READ_ONLY,
in_def         => 'y',
in_row         => 'y');
END;
/

SA_USER_ADMIN.ALTER_GROUPS

SA_USER_ADMIN.ALTER_GROUPSプロシージャは、指定されたグループについて、書込みアクセス、デフォルトのラベル・インジケータおよび行ラベル・インジケータを変更します。

構文

SA_USER_ADMIN.ALTER_GROUPS (
policy_name      IN VARCHAR2,
user_name        IN VARCHAR2,
groups           IN VARCHAR2,
access_mode      IN VARCHAR2 DEFAULT NULL,
in_def           IN VARCHAR2 DEFAULT NULL,
in_row           IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-64 SA_USER_ADMIN.ALTER_GROUPSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

グループについて認可されているユーザーを指定します。既存のユーザーを検索するには、DBA_SA_USER_GROUPSビューのUSER_NAMEおよびGRP列を問い合せます。

groups

短縮名のみによる、変更するグループのカンマ区切りのリストです。既存のグループを検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

access_mode

認可するアクセスのタイプを指定できる文字列値を含む、2つのパブリック変数です。変数名、値および意味は次のとおりです。

SA_UTL.READ_ONLYは、書込みアクセス権がないことを示します。

SA_UTL.READ_WRITEは、書込みが認可されることを示します。

access_modeがNULLの場合、グループのaccess_modeは変更されません。

in_def

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

in_defがNULLの場合、グループのin_defは変更されません。

in_row

指定したグループが行ラベル内にあることが必要かどうか(Y/N)を指定します。

in_rowがNULLの場合、グループのin_rowは変更されません。

in_defがNの場合、in_rowをYにすることはできません。これは、行ラベル・グループはセッション・ラベル・グループのサブセットにする必要があるためです。

例

次の例では、既存のグループのアクセス・モードを読取り専用に設定します。

BEGIN
SA_USER_ADMIN.ALTER_GROUPS (
policy_name    => 'hr_ols_pol',
user_name      => 'jjones',
groups         => 'ER',
access_mode    => SA_UTL.READ_ONLY);
END;
/

SA_USER_ADMIN.DROP_ALL_COMPARTMENTS

SA_USER_ADMIN.DROP_ALL_COMPARTMENTS プロシージャは、すべての区分をユーザーの認証から削除します。

構文

SA_USER_ADMIN.DROP_ALL_COMPARTMENTS (
policy_name  IN VARCHAR2,
user_name    IN VARCHAR2);

パラメータ

表E-65 SA_USER_ADMIN.DROP_ALL_COMPARTMENTSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

区分について認可されているユーザーを指定します。既存のユーザーを検索するには、DBA_SA_USER_COMPARTMENTSビューのUSER_NAME列を問い合せます。

例

次の例では、ユーザーjjonesのhr_ols_polポリシーのすべての区分を削除します。

BEGIN
SA_USER_ADMIN.DROP_ALL_COMPARTMENTS (
policy_name    => 'hr_ols_pol',
user_name      => 'jjones');
END;
/

SA_USER_ADMIN.DROP_ALL_GROUPS

SA_USER_ADMIN.DROP_ALL_GROUPS プロシージャは、すべてのグループをユーザーの認証から削除します。

構文

SA_USER_ADMIN.DROP_ALL_GROUPS (
policy_name IN VARCHAR2,
user_name   IN VARCHAR2);

パラメータ

表E-66 SA_USER_ADMIN.DROP_ALL_GROUPSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

グループについて認可されているユーザーを指定します。既存のユーザーを検索するには、DBA_SA_USER_GROUPSビューのUSER_NAMEおよびGRP列を問い合せます。

例

次の例では、ユーザーjjonesのhr_ols_polポリシーからすべてのグループを削除します。

BEGIN
SA_USER_ADMIN.DROP_ALL_GROUPS (
policy_name    => 'hr_ols_pol',
user_name      => 'jjones');
END;
/

SA_USER_ADMIN.DROP_COMPARTMENTS

SA_USER_ADMIN.DROP_COMPARTMENTSプロシージャは、指定した区分をユーザーの認証から削除します。

構文

SA_USER_ADMIN.DROP_COMPARTMENTS (
policy_name     IN VARCHAR2,
user_name       IN VARCHAR2,
comps           IN VARCHAR2);

パラメータ

表E-67 SA_USER_ADMIN.DROP_COMPARTMENTSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

区分について認可されているユーザーを指定します。既存のユーザーを検索するには、DBA_SA_USER_COMPARTMENTSビューのUSER_NAME列を問い合せます。

comps

削除する区分のカンマ区切りのリストです。このポリシーのすべての区分を検索するには、DBA_SA_USER_COMPARTMENTSビューのPOLICY_NAMEおよびCOMP列を問い合せます。

例

次の例では、hr_ols_polポリシーからFINANCIAL区分を削除します。

BEGIN
SA_USER_ADMIN.DROP_COMPARTMENTS (
policy_name    => 'hr_ols_pol',
user_name      => 'jjones',
comps          => 'HR');
END;
/

SA_USER_ADMIN.DROP_GROUPS

SA_USER_ADMIN.DROP_GROUPS プロシージャは、指定したグループをユーザーの認証から削除します。

構文

SA_USER_ADMIN.DROP_GROUPS (
policy_name IN VARCHAR2,
user_name   IN VARCHAR2,
groups      IN VARCHAR2);

パラメータ

表E-68 SA_USER_ADMIN.DROP_GROUPSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

グループについて認可されているユーザーを指定します。既存のユーザーを検索するには、DBA_SA_USER_GROUPSビューのUSER_NAMEおよびGRP列を問い合せます。

groups

短縮名のみによる、削除するグループのカンマ区切りのリストです。グループのリストを検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーからNR_FINグループを削除します。

BEGIN
SA_USER_ADMIN.DROP_GROUPS (
policy_name    => 'hr_ols_pol',
user_name      => 'jjones',
groups         => 'ER');
END;
/

SA_USER_ADMIN.DROP_USER_ACCESS

SA_USER_ADMIN.DROP_USER_ACCESSプロシージャは、指定したユーザーからOracle Label Securityのすべての認可と権限を削除します。

構文

SA_USER_ADMIN.DROP_USER_ACCESS (
policy_name      IN VARCHAR2,
user_name        IN VARCHAR2);

パラメータ

表E-69 SA_USER_ADMIN.DROP_USER_ACCESSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ユーザー名を指定します。このポリシーに関連付けられているすべてのユーザーを検索するには、DBA_SA_USER_PRIVSビューのUSER_NAMEおよびPOLICY_NAME列を問い合せます。

例

次の例では、hr_ols_polポリシーに対するユーザーjjonesの認可を削除します。

BEGIN
SA_USER_ADMIN.DROP_USER_ACCESS (
policy_name       => 'hr_ols_pol',
user_name         => 'jjones');
END;
/

SA_USER_ADMIN.SET_COMPARTMENTS

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

区分を設定した後で、SA_USER_ADMIN.ADD_COMPARTMENTSプロシージャを使用して追加の区分を構成できます。(「SA_USER_ADMIN.ADD_COMPARTMENTS」を参照してください。)

レベルが設定されているユーザーのみが、認可された区分を確立できます。

書込み区分を指定する場合は、読取り区分のサブセットにする必要があります。(書込み区分は、ユーザーが書込みアクセス権を必要とする区分です。)

構文

SA_USER_ADMIN.SET_COMPARTMENTS (
policy_name   IN VARCHAR2,
user_name     IN VARCHAR2,
read_comps    IN VARCHAR2,
write_comps   IN VARCHAR2 DEFAULT NULL,
def_comps     IN VARCHAR2 DEFAULT NULL,
row_comps     IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-70 SA_USER_ADMIN.SET_COMPARTMENTSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

区分を割り当てるユーザー名を指定します。

read_comps

短縮名のみによる、読取りアクセスが認可されている区分のカンマ区切りのリストです。

すべての区分を検索するには、ALL_SA_COMPARTMENTSビューのSHORT_NAME列を問い合せます。

write_comps

短縮名のみによる、書込みアクセスが認可されている区分のカンマ区切りのリストです(read_compsのサブセット)。write_compsがNULLの場合は、read_compsに設定されます。

def_comps

短縮名のみで、デフォルトの区分を指定します。この区分はread_compsのサブセットであることが必要です。def_compsがNULLの場合は、read_compsに設定されます。

row_comps

短縮名のみで、行の区分を指定します。この区分は、write_compsおよびdef_compsのサブセットであることが必要です。row_compsがNULLの場合は、書込みアクセスが認可されているdef_comps内のコンポーネントに設定されます。

例

次の例では、hr_ols_polポリシーの区分を設定します。

BEGIN
SA_USER_ADMIN.SET_COMPARTMENTS (
policy_name   => 'hr_ols_pol',
user_name     => 'jjones',
read_comps    => 'FIN',
write_comps   => 'FIN',
def_comps     => 'FIN',
row_comps     => 'FIN');
END;
/

SA_USER_ADMIN.SET_DEFAULT_LABEL

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

行ラベルが新規の書込みラベルで支配されていれば、セッション・ラベルを次のように設定できます。

- 各自の最大ラベル以下で、かつ各自の最小ラベル以上のレベルに設定する。

- 認可された区分リストにある区分を含むように設定する。

- 認可されたグループ・リストにあるグループを含むように設定する。(認可グループのサブグループは、認可リストに暗黙的に含まれます。)

行ラベルは、セッション・ラベルのリセットによって得られる新規の書込みラベルで支配される必要があります。この条件に該当しない場合は、SET_DEFAULT_LABELプロシージャが失敗します。

たとえば、現行の行ラベルがS:A,Bで、両方の区分への書込みアクセス権を持っているとします。新規のデフォルト・ラベルをC:A,Bに設定する操作を試みると、SET_LABELプロシージャは失敗します。これは、新規の書込みラベルはC:A,Bとなり、現行の行ラベルを支配しないためです。

この場合にセッション・ラベルを正常にリセットするには、最初に行ラベルをリセット後のセッション・ラベルで支配されるように下位の値にする必要があります。

構文

SA_USER_ADMIN.SET_DEFAULT_LABELS (
policy_name  IN VARCHAR2,
user_name    IN VARCHAR2,
def_label    IN VARCHAR2);

パラメータ

表E-71 SA_USER_ADMIN.SET_DEFAULT_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ラベル・コンポーネントで認可されているユーザーを指定します。このユーザーを検索するには、ALL_SA_USER_LABELSビューのUSER_NAME列を問い合せます。

def_label

ユーザーのデフォルト・ラベルの初期化に使用するラベル文字列を指定します。このラベルには、読取りアクセスが認可されている区分とグループであれば、どれでも含めることができます。既存のラベルを検索するには、ALL_SA_LABELSビューのLABEL列を問い合せます。

例

次の例では、ユーザーjjonesのhr_ols_polのデフォルト・ラベルを設定します。

BEGIN
SA_USER_ADMIN.SET_DEFAULT_LABEL (
policy_name       => 'hr_ols_pol',
user_name         => 'jjones',
def_label         => 'HS');
END;
/

関連項目:

- SA_SESSIONセッション管理PL/SQLパッケージ

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

SA_USER_ADMIN.SET_GROUPS

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

レベルが設定されているユーザーのみが、認可されたグループを確立できます。DBA_SA_USER_LEVELSデータ・ディクショナリ・ビューを問い合せることで、ユーザーのレベル認可に関する情報を検索できます。

構文

SA_USER_ADMIN.SET_GROUPS (policy_name IN VARCHAR2,
user_name        IN VARCHAR2,
read_groups      IN VARCHAR2,
write_groups     IN VARCHAR2 DEFAULT NULL,
def_group        IN VARCHAR2 DEFAULT NULL,
row_groups       IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-72 SA_USER_ADMIN.SET_GROUPSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ユーザー名を指定します。このユーザーはグループ認可の初回ユーザーですが、そのユーザーはすでにレベルが認可されている必要があります。レベルについて認可されているユーザーを検索するには、DBA_SA_USER_LEVELSビューのUSER_NAME列を問い合せます。

read_groups

短縮名のみによる、読取りが認可されているグループのカンマ区切りのリストです。

既存のグループを検索するには、ALL_SA_GROUPSビューのSHORT_NAME列を問い合せます。

write_groups

短縮名のみによる、書込みが認可されているグループのカンマ区切りのリストです。これは、read_groupsのサブセットであることが必要です。NULLに設定された場合、これはread_groupsにデフォルト設定されます。

def_groups

短縮名のみで、デフォルトのグループを指定します。これは、read_groupsのサブセットであることが必要です。NULLに設定された場合、これはread_groupsにデフォルト設定されます。

row_groups

短縮名のみで、行のグループを指定します。これは、write_groupsおよびdef_groupsのサブセットであることが必要です。NULLに設定すると、この設定は、書込みアクセスが認可されているdef_groups内のグループにデフォルト設定されます。

例

次の例では、hr_ols_polポリシーのグループを定義します。

BEGIN
SA_USER_ADMIN.SET_GROUPS (
policy_name    => 'hr_ols_pol',
user_name      => 'jjones',
read_groups    => 'ER_FIN',
write_groups   => 'ER_FIN',
def_groups     => 'ER_FIN',
row_groups     => 'ER_FIN');
END;
/

SA_USER_ADMIN.SET_LEVELS

SA_USER_ADMIN.SET_LEVELSプロシージャは、ユーザーに最小レベルと最大レベルを割り当てて、そのユーザーのセッション・ラベルと行ラベルのデフォルト値を識別します。

構文

SA_USER_ADMIN.SET_LEVELS (policy_name IN VARCHAR2,
user_name        IN VARCHAR2,
max_level        IN VARCHAR2,
min_level        IN VARCHAR2 DEFAULT NULL,
def_level        IN VARCHAR2 DEFAULT NULL,
row_level        IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-73 SA_USER_ADMIN.SET_LEVELSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ユーザー名を指定します。このプロシージャを実行する場合に、このユーザーはOracle Label Securityの認可を持っている必要はありません。

max_level

短縮名のみによる、読取りアクセスと書込みアクセスの最上位レベルです。

既存のレベルを検索するには、ALL_SA_LEVELSビューのSHORT_NAME列を問い合せます。

min_level

短縮名のみによる、書込みアクセスの最下位レベルです。NULLに設定された場合、デフォルトはポリシーの最下位レベルになります。

def_level

デフォルト・レベル(最小レベル以上、かつ最大レベル以下)を指定します。短縮名のみを使用します。NULLに設定された場合、デフォルトはmax_levelになります。

row_level

行レベル(最小レベル以上、かつデフォルト・レベル以下)を指定します。短縮名のみを使用します。NULLに設定された場合、def_levelに設定されます。

例

次の例では、hr_ols_polポリシーのレベルを設定します。

BEGIN
SA_USER_ADMIN.SET_LEVELS (
policy_name     => 'hr_ols_pol',
user_name       => 'jjones',
max_level       => 'PUB',
min_level       => 'HS');
END;
/

SA_USER_ADMIN.SET_PROG_PRIVS

SA_USER_ADMIN.SET_PROG_PRIVSプロシージャは、プログラム・ユニットのポリシー固有の権限を設定します。

privilegesパラメータがNULLの場合は、ポリシーに対するプログラム・ユニットの権限が削除されます。

ストアド・プログラム・ユニットに権限を付与するには、SA_USER_ADMIN.SA_USER_ADMINパッケージでのpolicy_DBAロールおよびEXECUTE許可が必要です。SA_USER_ADMINパッケージまたはOracle Enterprise Managerのいずれかを使用して、Oracle Label Securityの権限を管理できます。

構文

SA_USER_ADMIN.SET_PROG_PRIVS (
policy_name           IN VARCHAR2,
schema_name           IN VARCHAR2,
program_unit_name     IN VARCHAR2,
privileges            IN VARCHAR2);

パラメータ

表E-74 SA_SESSION.SET_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

schema_name

プログラム・ユニットを含むスキーマの名前です。

program_unit_name

権限を付与するプログラム・ユニットを指定します。

privileges

カンマで区切ったポリシー固有の権限の文字列です。権限をNULLに設定した場合は、ポリシーに対するプログラム・ユニットの権限が削除されます。

付与できる権限のリストは、「ポリシーのユーザーおよびトラステッド・プログラム・ユニットへの権限の付与について」を参照してください。

例

次の例では、SUM_PURCHASESファンクションにREAD権限を付与します(「トラステッド・ストアド・プログラム・ユニットの例」を参照)。

BEGIN
SA_USER_ADMIN.SET_PROG_PRIVS (
policy_name         => 'hr_ols_pol',
schema_name         => 'HR',
program_unit_name   => 'check_emp_hours',
privileges          => 'READ');
END;
/

check_emp_hoursプロシージャがコールされると、現行ユーザーのOracle Label Securityの権限に加えてREAD権限で実行されます。このテクニックを使用すると、ユーザーには、個々の従業員がかかった時間を知らせずに、従業員がかかった合計時間の値を検索するように許可できます。

SA_USER_ADMIN.SET_ROW_LABEL

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

ユーザーは、独自に行ラベルを設定できますが、含めることができるのは次の要素のみです。

- セッション・ラベルのレベル以下で、かつ、ユーザーの最小レベル以上のレベル。

- ユーザーが書込みアクセス権を持つように認可されているセッション・ラベルからの、区分とグループのサブセット。

ユーザーが行ラベルに無効な値の設定を試みると、操作は許可されず、その行ラベル値は変更されません。

構文

SA_USER_ADMIN.SET_ROW_LABEL (
policy_name   IN VARCHAR2,
user_name     IN VARCHAR2,
row_label     IN VARCHAR2);

パラメータ

表E-75 SA_USER_ADMIN.SET_ROW_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ユーザー名を指定します。このユーザーは、十分な区分、グループおよびレベル認可を持っている必要があります。このユーザーを検索するには、DBA_SA_USER_COMPARTMENTS、DBA_SA_USER_GROUPSおよびDBA_SA_USER_LEVELSビューのUSER_NAME列を問い合せます。

row_label

ユーザーの行ラベルの初期化に使用するラベル文字列を指定します。ラベルには、書込みアクセスが認可されるデフォルト・ラベルからの区分とグループのみを含める必要があります。既存の区分およびグループを検索するには、ALL_SA_COMPARTMENTSおよびALL_SA_GROUPSビューを問い合せます。

例

次の例では、ユーザーjjonesのhr_ols_polポリシーの行ラベルを設定します。

BEGIN
SA_USER_ADMIN.SET_ROW_LABEL (
policy_name       => 'hr_ols_pol',
user_name         => 'jjones',
row_label         => 'HS');
END;
/

関連項目:

SA_SESSION.SET_ROW_LABEL

SA_USER_ADMIN.SET_USER_LABELS

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

構文

SA_USER_ADMIN.SET_USER_LABELS (
policy_name      IN VARCHAR2,
user_name        IN VARCHAR2,
max_read_label   IN VARCHAR2,
max_write_label  IN VARCHAR2 DEFAULT NULL,
min_write_label  IN VARCHAR2 DEFAULT NULL,
def_label        IN VARCHAR2 DEFAULT NULL,
row_label        IN VARCHAR2 DEFAULT NULL);

パラメータ

表E-76 SA_USER_ADMIN.SET_USER_LABELSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

ユーザー名を指定します。このプロシージャを実行する場合、このユーザーにはOracle Label Securityの認可は必要ありません。

max_read_label

ユーザーが認可される最大読取りラベルの初期化に使用するラベル文字列を指定します。この文字列は、ユーザーの最大レベル、読取りアクセスが認可される区分およびグループで構成されます。

これらの設定に関する情報を検索するには、DBA_SA_USERSデータ・ディクショナリ・ビューを問い合せます。

max_write_label

ユーザーが認可される最大書込みラベルの初期化に使用するラベル文字列を指定します。この文字列は、ユーザーの最大レベル、書込みアクセスが認可される区分およびグループで構成されます。max_write_labelを指定しない場合は、max_read_labelに設定されます。

min_write_label

ユーザーが認可される最小書込みラベルの初期化に使用するラベル文字列を指定します。この文字列にはレベルのみが含まれ、区分やグループは含まれません。min_write_labelを指定しない場合は、ポリシーに定義されている最下位レベルに設定され、区分やグループは含まれません。

def_label

レベル、区分、グループなど、ユーザーのセッション・ラベルの初期化に使用するラベル文字列(max_read_labelのサブセット)を指定します。default_labelを指定しない場合は、max_read_labelに設定されます。

row_label

プログラムの行ラベルの初期化に使用するラベル文字列を指定します。この文字列には、レベル、区分およびグループ、つまりmax_write_labelおよびdef_labelのサブセットが含まれます。row_labelを指定しない場合は、def_labelに設定され、書込みアクセスが認可される区分とグループのみが含まれます。

例

次の例では、ユーザーjjonesのhr_ols_polポリシーのユーザー・ラベルを設定します。

BEGIN
SA_USER_ADMIN.SET_USER_LABELS (
policy_name       => 'hr_ols_pol',
user_name         => 'jjones',
max_read_label    => 'HS:FIN',
max_write_label   => 'HS',
def_label         => 'HS',
row_label         => 'HS');
END;
/

関連項目:

SA_USER_ADMIN.SET_PROG_PRIVS

SA_USER_ADMIN.SET_USER_PRIVS

SA_USER_ADMIN.SET_USER_PRIVSプロシージャは、ユーザーに対してポリシー固有の権限を設定します。

これらの権限は、次回にユーザーがデータベースにログインするまで有効になりません。既存の権限は、すべて新しい権限セットで置き換えられます。権限パラメータの値がNULLの場合は、そのユーザーのポリシーに対する権限が削除されます。

ユーザーにポリシー権限を割り当てるには、SA_USER_ADMINパッケージに対するEXECUTE権限を持ち、policy_DBAロールが付与されている必要があります。

構文

SA_USER_ADMIN.SET_USER_PRIVS (
policy_name     IN VARCHAR2,
user_name       IN VARCHAR2,
privileges      IN VARCHAR2);

パラメータ

表E-77 SA_USER_ADMIN.SET_USER_PRIVSのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

user_name

権限を付与するユーザーの名前です。このユーザーは、ポリシー・レベル、区分およびグループについてすでに認可されている必要があります。このユーザーを検索するには、DBA_SA_USER_COMPARTMENTS、DBA_SA_USER_GROUPSおよびDBA_SA_USER_LABELSビューのUSER_NAME列を問い合せます。

privileges

カンマで区切ったポリシー固有の権限の文字列です。付与できる権限のリストは、「ポリシーのユーザーおよびトラステッド・プログラム・ユニットへの権限の付与について」を参照してください。

例

次の例では、ユーザーjgodfreyに、hr_ols_polポリシー設定に対する完全な権限を付与します。

BEGIN
SA_USER_ADMIN.SET_USER_PRIVS (
policy_name       => 'hr_ols_pol',
user_name         => 'jgodfrey',
privileges        => 'FULL');
END;
/

関連項目:

- ポリシーのユーザーおよびトラステッド・プログラム・ユニットへの権限の付与について

- SA_USER_ADMIN.SET_PROG_PRIVS

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

SA_UTL PL/SQLパッケージには、PL/SQLプログラムで使用されるユーティリティ・ファンクションおよびプロシージャが含まれています。

これらのプログラムは、セッションのセキュリティ属性の現在の値に関する情報を、数値のラベル値として戻します。これらは、主にトラステッド・ストアド・プログラム・ユニットで使用するためのものです。このパッケージを使用するために特別な権限は必要ありません。

表E-78に、SA_UTL PL/SQLパッケージのファンクションおよびプロシージャを示します。

表E-78 SA_UTL PL/SQLパッケージの内容

ファンクションまたはプロシージャ

説明

SA_UTL.CHECK_LABEL_CHANGE

ユーザーがポリシーで保護されている表の行に対するデータ・ラベルを変更できるかどうかをチェックします。

SA_UTL.CHECK_READ

ユーザーがポリシーで保護されている表の行を読み取ることができるかどうかをチェックします。

SA_UTL.CHECK_WRITE

ユーザーがポリシーで保護されている表の行データの挿入、更新または削除を実行できるかどうかをチェックします。

SA_UTL.DATA_LABEL

ラベルがデータ・ラベルである場合、TRUEを戻します。

SA_UTL.GREATEST_LBOUND

2つのラベルの引数の最大の下限であるラベルを戻します。

SA_UTL.LEAST_UBOUND

ラベルの引数の最小の上限であるラベルを戻します。

SA_UTL.NUMERIC_LABEL

現行のセッション・ラベルを戻します。

SA_UTL.NUMERIC_ROW_LABEL

現行の行ラベルを戻します。

SA_UTL.SET_LABEL

現行データベース・セッションのラベルを設定します。

SA_UTL.SET_ROW_LABEL

現行データベース・セッションの行ラベルを設定します。

関連項目:

ラベル情報を設定して戻す動作

SA_UTL.CHECK_LABEL_CHANGE

SA_UTL.CHECK_LABEL_CHANGEファンクションは、ユーザーがポリシーで保護されている表の行に対するデータ・ラベルを変更できるかどうかをチェックします。

ユーザーがデータ・ラベルを変更できる場合、このファンクションは1を戻します。ユーザーがデータ・ラベルを変更できない場合、これは0を戻します。入力値は、ポリシー名、現在のデータ・ラベルおよび新しいデータ・ラベルです。

構文

SA_UTL.CHECK_LABEL_CHANGE (
policy_name     IN VARCHAR2,
current_label   IN NUMBER,
new_label       IN NUMBER)
RETURN NUMBER;

注意:

表にデータを書き込むには、その表に対する更新権限を持っている必要があります。

パラメータ

表E-79 SA_UTL.CHECK_LABEL_CHANGEのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

current_label

ラベルの現在の値です。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABEL列を問い合せます。

new_label

ラベルの新しい値です。

例

次の例では、ユーザーがポリシーで保護されている行のデータ・ラベルを変更できるかどうかを示します。

SET SERVEROUTPUT ON
BEGIN
IF SA_UTL.CHECK_LABEL_CHANGE('hr_ols_pol',2000, 2200) = 1
THEN DBMS_OUTPUT.PUT_LINE('Users can chagne data labels in policy-protected rows.');
ELSE
DBMS_OUTPUT.PUT_LINE('Users cannot change data labels in policy-protected rows.');
END IF;
END;
/

SA_UTL.CHECK_READ

SA_UTL.CHECK_READファンクションは、ユーザーがポリシーで保護されている表の行を読み取ることができるかどうかをチェックします。

ユーザーが表の行を読み取ることができる場合、このファンクションは1を戻します。ユーザーが表の行を読み取ることができない場合、これは0を戻します。

注意:

表のデータを読み取るには、ユーザーは、その表に対するSELECT権限を持っている必要があります。

構文

SA_UTL.CHECK_READ (
policy_name     IN VARCHAR2,
label           IN NUMBER)
RETURN NUMBER;

パラメータ

表E-80 SA_UTL.CHECK_READのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label

チェックするラベルです。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABEL列を問い合せます。

例

次の例では、ユーザーがポリシーで保護されている行を読み取ることができるかどうかを示します。

SET SERVEROUTPUT ON
BEGIN
IF SA_UTL.CHECK_READ('hr_ols_pol',2000) = 1
THEN DBMS_OUTPUT.PUT_LINE('Users can read policy-protected rows.');
ELSE
DBMS_OUTPUT.PUT_LINE('Users cannot read policy-protected rows.');
END IF;
END;
/

SA_UTL.CHECK_WRITE

SA_UTL.CHECK_WRITEファンクションは、ユーザーがポリシーで保護されている表の行データの挿入、更新または削除を実行できるかどうかをチェックします。

表にデータを書き込むには、ユーザーは、その表に対するUPDATE権限を持っている必要があります。ユーザーが表の行に書き込むことができる場合、このファンクションは1を戻します。ユーザーが表の行に書き込むことができない場合、これは0を戻します。入力値はポリシー名と行のデータ・ラベルです。

構文

SA_UTL.CHECK_WRITE (
policy_name     IN VARCHAR2,
label           IN NUMBER)
RETURN NUMBER;

パラメータ

表E-81 SA_UTL.CHECK_WRITEのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label

チェックするラベルです。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

例

次の例では、ユーザーがポリシーで保護されている行に書き込むことができるかどうかを示します。

SET SERVEROUTPUT ON
BEGIN
IF SA_UTL.CHECK_WRITE('hr_ols_pol',2000) = 1
THEN DBMS_OUTPUT.PUT_LINE('Users can write to policy-protected rows.');
ELSE
DBMS_OUTPUT.PUT_LINE('Users cannot write to policy-protected rows.');
END IF;
END;
/

SA_UTL.DATA_LABEL

SA_UTL.DATA_LABELファンクションは、ラベルがデータ・ラベルの場合はTRUEを戻します。

構文

SA_UTL.DATA_LABEL(
label IN NUMBER)
RETURN BOOLEAN;

パラメータ

表E-82 SA_UTL.DATA_LABELのパラメータ

パラメータ

説明

label

チェックするラベルです。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

例

次の例では、ラベル2000がデータ・ラベルであるかどうかを示します。

SET SERVEROUTPUT ON
BEGIN
IF SA_UTL.DATA_LABEL(2000)
THEN DBMS_OUTPUT.PUT_LINE('Label 2000 is a data label.');
ELSE
DBMS_OUTPUT.PUT_LINE('Label 2000 is not a data label.');
END IF;
END;
/

SA_UTL.GREATEST_LBOUND

SA_UTL.GREATEST_LBOUNDファンクションは、2つのラベルの引数の最大の下限であるラベルを戻します。

構文

SA_UTL.GREATEST_LBOUND (
label1 IN NUMBER,
label2 IN NUMBER)
RETURN NUMBER;

パラメータ

表E-83 SA_UTL.GREATEST_LBOUNDのパラメータ

パラメータ

説明

label1

確認する最初のラベル。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

label2

確認する2番目のラベル。

例

次の例では、既存のラベル・タグ3110と3111を比較しています。

SELECT SA_UTL.GREATEST_LBOUND(3110,3111) FROM DUAL;

SA_UTL.GREATEST_LBOUND(3110,3111)
---------------------------------
3111

SA_UTL.LEAST_UBOUND

SA_UTL.LEAST_UBOUNDファンクションは、ラベルの引数の最小の上限であるラベルを戻します。

構文

SA_UTL.LEAST_UBOUND (
label1 IN NUMBER,
label2 IN NUMBER)
RETURN NUMBER;

パラメータ

表E-84 SA_UTL.LEAST_UBOUNDのパラメータ

パラメータ

説明

label1

確認する最初のラベル。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABELおよびTAG列を問い合せます。

label2

確認する2番目のラベル。

例

次の例では、既存のラベル3110と3111を比較しています。

SELECT SA_UTL.LEAST_UBOUND(3110,3111) FROM DUAL;

SA_UTL.LEAST_UOUND(3110,3111)
-----------------------------
3110

関連項目:

ラベルの上限と下限の決定。前述のファンクションは第6章で説明したファンクションと同じですが、文字列ではなく番号を戻します。

SA_UTL.NUMERIC_LABEL

SA_UTL.NUMERIC_LABELファンクションは、現行のセッション・ラベルを戻します。

このファンクションは、入力パラメータとしてポリシー名を取り、NUMBER値を戻します。

構文

SA_UTL.NUMERIC_LABEL (
policy_name)
RETURN NUMBER;

パラメータ

表E-85 SA_UTL.NUMERIC_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、現在データベース・インスタンスに接続されているユーザーのセッション数値ラベルを戻します。

SET SERVEROUTPUT ON
DECLARE
num_label number;
BEGIN
num_label := SA_UTL.NUMERIC_LABEL('hr_ols_pol');
DBMS_OUTPUT.PUT_LINE('Numeric label: '||num_label);
END;
/

SA_UTL.NUMERIC_ROW_LABEL

SA_UTL.NUMERIC_ROW_LABELファンクションは、現行の行ラベルを戻します。

このファンクションは、入力パラメータとしてポリシー名を取り、NUMBER値を戻します

構文

SA_UTL.NUMERIC_ROW_LABEL (
policy_name)
RETURN NUMBER;

パラメータ

表E-86 SA_UTL.NUMERIC_ROW_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

例

次の例では、現在データベース・インスタンスに接続されているユーザーのセッション数値行ラベルを戻します。

SET SERVEROUTPUT ON
DECLARE
num_row number;
BEGIN
num_row := SA_UTL.NUMERIC_ROW_LABEL('hr_ols_pol');
DBMS_OUTPUT.PUT_LINE('Numeric row label: '||num_row);
END;
/

SA_UTL.SET_LABEL

SA_UTL.SET_LABELプロシージャは、現行データベース・セッションのラベルを設定します。

セッションの書込みラベルと行ラベルは、書込みアクセスが認可されているラベルの区分とグループのサブセットに設定されます。

構文

SA_UTL.SET_LABEL (
policy_name IN VARCHAR2,
label       IN LBAC_LABEL);

パラメータ

表E-87 SA_UTL.SET_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label

セッション・ラベルとして設定するラベル。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABEL列を問い合せます。

ラベルの文字形式をLBAC_LABEL型に変換する、TO_LBAC_DATA_LABELファンクションの出力として、このパラメータを渡す必要があります。(次の項の例で、これを行う方法を示します。)

「Oracle Label Securityのポリシーでのラベル付けファンクションの動作」も参照してください。

例

次の例では、hr_ols_polポリシーのラベルを設定します。

BEGIN
SA_UTL.SET_LABEL (
policy_name => 'hr_ols_pol',
label       => to_lbac_data_label('hr_ols_pol','hs:pii'));
END;
/

SA_UTL.SET_ROW_LABEL

SA_UTL.SET_ROW_LABELプロシージャは、現行データベース・セッションの行ラベルを設定します。

ラベルの区分とグループは、書込みアクセスが認可されているセッション・ラベルの区分およびグループのサブセットであることが必要です。

構文

SA_UTL.SET_ROW_LABEL (
policy_name IN VARCHAR2,
label       IN BINARY_INTEGER);

パラメータ

表E-88 SA_UTL.SET_ROW_LABELのパラメータ

パラメータ

説明

policy_name

ポリシーを指定します。既存のポリシーを検索するには、ALL_SA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せます。

label

セッションのデフォルト行ラベルとして設定するラベルです。既存のラベル値を検索するには、ALL_SA_LABELSビューのLABEL列を問い合せます。

例

次の例では、hr_ols_polポリシーの行ラベルを3000に設定します。

BEGIN
SA_UTL.SET_ROW_LABEL (
policy_name         => 'hr_ols_pol',
label               => 1111);
END;
/

関連項目:

SA_SESSIONセッション管理PL/SQLパッケージ

F Oracle Label Securityリファレンス

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のユーザー作成の監査ビュー

Oracle Databaseのデータ・ディクショナリ表

Oracle Label Securityでは、Oracleのデータ・ディクショナリ表はラベル付けされません。アクセスは、標準的なOracle Databaseのシステム権限とオブジェクト権限により制御されます。

すべてのデータ・ディクショナリ表およびビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

Oracle Label Securityのデータ・ディクショナリ・ビュー

Oracle Label Securityでは、データ・ディクショナリ・ビューの独自セットがメンテナンスされます。これらのビューは、ポリシーの強制対象から除外されます。

DBAビューへのアクセス権は、デフォルトでSELECT_CATALOG_ROLEに付与されます。これは、Oracle Databaseのデータ・ディクショナリを検証できる標準的なOracle Databaseのロールです。

ALL_SA_AUDIT_OPTIONSビュー

ALL_SA_AUDIT_OPTIONSデータ・ディクショナリ・ビューは、現行ユーザーに対して、SA_AUDIT_ADMIN.AUDITプロシージャ設定に基づいて、Oracle Label Security監査オプションを示します。

「SA_AUDIT_ADMIN.AUDIT」を参照してください。

このビューは、監査を構成する際に、監査レコードを、セッションごと(BY SESSION)またはアクセスごと(BY ACCESS)のどちらで生成するか、および成功した操作または失敗した操作のどちらに対して生成するかを表示します。有効な値は次のとおりです。

- ハイフン(-)は、監査オプションが何も設定されていないことを示します。

- 文字Sは、監査オプションがBY SESSIONに設定されていることを示します。

- 文字Aは、監査オプションがBY ACCESSに設定されていることを示します。

- 各監査オプションには、可能な設定としてWHENEVER SUCCESSFULとWHENEVER NOT SUCCESSFULの2つがあり、スラッシュ(/)で区切られています。

たとえば、次の出力では、ユーザーjjonesは、ポリシー固有の権限に関連する成功したアクションに対してBY ACCESS監査タイプで監査されます。ユーザーrlaytonは、BY SESSION監査タイプで監査されます。監査レコードは、ポリシーの削除に失敗した試行、およびユーザー認証の設定時に成功した試行について書き込まれます。

SELECT * FROM DBA_SA_AUDIT_OPTIONS;

POLICY_NAME      USER_NAME     APY  REM   SET_  PRV
-----------      ------------  ---  ----  ----  ---
HR_OLS_POL       JJONES        -/-   -/-  -/-   A/-
HR_OLS_POL       RLAYTON       -/-  -/S   S/-   -/-

列

データ型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

USER_NAME

VARCHAR2(128)

NOT NULL

ポリシーに関連付けられたユーザーの名前

APY

VARCHAR2(3)

NULL

監査オプション。表およびスキーマに対する指定したOracle Label Securityポリシーの適用を指します。

REM

VARCHAR2(3)

NULL

監査オプション。表およびスキーマからの指定したOracle Label Securityポリシーの削除を指します。

SET_

VARCHAR2(3)

NULL

監査オプション。ユーザー認証およびユーザーとプログラムの権限の設定を指します。

PRV

VARCHAR2(3)

NULL

監査オプション。すべてのポリシー固有の権限の使用を指します。

ALL_SA_COMPARTMENTS

ALL_SA_COMPARTMENTSデータ・ディクショナリ・ビューは、現行ユーザーに対して、SA_COMPONENTS.CREATE_COMPARTMENTプロシージャ設定に基づいて、Oracle Label Securityポリシー区分に関する情報を示します。

「SA_COMPONENTS.CREATE_COMPARTMENT」を参照してください。

列

データ型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

COMP_NUM

NUMBER(4)

NOT NULL

0から9999の範囲の区分番号

SHORT_NAME

VARCHAR2(30)

NOT NULL

区分の短縮名

LONG_NAME

VARCHAR2(80)

NOT NULL

区分の詳細名

ALL_SA_DATA_LABELS

ALL_SA_DATA_LABELSデータ・ディクショナリ・ビューは、現行ユーザーに対して、SA_LABEL_ADMIN.CREATE_LABELプロシージャ設定に基づいて、Oracle Label Securityポリシーのラベルおよびタグを示します。

「SA_LABEL_ADMIN.CREATE_LABEL」を参照してください。

列

データ型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

LABEL

VARCHAR2(4000)

NULL

ラベル値として指定された、レベル、区分またはグループの短縮名

LABEL_TAG

NUMBER

NULL

ラベルのソート順を他のポリシー・ラベルとの相対で表す整数(0から99999999)

ALL_SA_GROUPS

ALL_SA_GROUPSデータ・ディクショナリは、SA_COMPONENTS.CREATE_GROUPおよびSA_COMPONENTS.ALTER_GROUP_PARENTプロシージャに基づいて、現行ユーザーのOracle Label Securityポリシー・グループに関する情報を示します。

「SA_COMPONENTS.CREATE_GROUP」および「SA_COMPONENTS.ALTER_GROUP_PARENT」を参照してください。

列

データ型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

GROUP_NUM

NUMBER(4)

NOT NULL

グループ番号(0から9999)

SHORT_NAME

VARCHAR2(30)

NOT NULL

グループの短縮名

LONG_NAME

VARCHAR2(80)

NOT NULL

グループの詳細名

PARENT_NUM

NUMBER(4)

NULL

関連付けられた親グループの数値ID

PARENT_NAME

VARCHAR2(30)

NULL

グループの親として割り当てられたグループの名前

ALL_SA_LABELS

ALL_SA_LABELSデータ・ディクショナリ・ビューは、現行ユーザーに対して、SA_LABEL_ADMIN.CREATE_LABELおよびSA_LABEL_ADMIN.ALTER_LABELに基づいて、ラベルのタグおよびタイプに関する情報を示します。

「SA_LABEL_ADMIN.CREATE_LABEL」および「SA_LABEL_ADMIN.ALTER_LABEL」を参照してください。ALL_SA_LABELSへのアクセスはPUBLICです。ただし、参照できるのは、セッションにより読取りアクセスが認可されているラベルのみです。

列

データ型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

LABEL

VARCHAR2(4000)

NOT NULL

このラベルに関連付けられたレベルの短縮名

LABEL_TAG

NUMBER(30)

NOT NULL

ラベルに割り当てられた整数タグ

LABEL_TYPE

VARCHAR2(15)

NULL

ラベルのタイプ

ALL_SA_LEVELS

ALL_SA_LEVELSデータ・ディクショナリ・ビューは、現行ユーザーに対して、SA_COMPONENTS.CREATE_LEVELプロシージャに基づいて、レベルに関する情報を示します。

「SA_COMPONENTS.CREATE_LEVEL」を参照してください。

列

データ型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

LEVEL_NUM

NUMBER(4)

NOT NULL

レベル番号(0から9999)

SHORT_NAME

VARCHAR2(30)

NOT NULL

レベルの短縮名

LONG_NAME

VARCHAR2(80)

NOT NULL

レベルの詳細名

ALL_SA_POLICIES

ALL_SA_POLICIESデータ・ディクショナリ・ビューは、現行ユーザーに対して、SA_SYSDBA.CREATE_POLICYプロシージャに基づいて、Oracle Label Securityポリシーに関する情報を示します。

「SA_SYSDBA.CREATE_POLICY」を参照してください。

列

データ型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

COLUMN_NAME

VARCHAR2(128)

NOT NULL

ポリシーで保護されている表に追加された列の名前

STATUS

VARCHAR2(8)

NULL

ポリシーが有効か無効か

POLICY_OPTIONS

VARCHAR2(4000)

NULL

このポリシーに設定されたオプション

使用可能な強制オプションのリストは、「ポリシー強制オプションのカテゴリ」を参照してください。

ALL_SA_PROG_PRIVS

ALL_SA_PROG_PRIVSデータ・ディクショナリ・ビューは、現行ユーザーに対して、SA_USER_ADMIN.SET_PROG_PRIVSに基づいて、プログラム・ユニットのポリシー固有の権限に関する情報を示します。

「SA_USER_ADMIN.SET_PROG_PRIVS」を参照してください。

列

データ型

Null

説明

SCHEMA_NAME

VARCHAR2(128)

NOT NULL

プログラム・ユニットを含むスキーマの名前

PROGRAM_NAME

VARCHAR(128)

NOT NULL

権限が付与されたプログラム・ユニット

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

PROGRAM_PRIVILEGES

VARCHAR2(4000)

NULL

ポリシー固有の権限。

可能な権限のリストは、「ポリシーのユーザーおよびトラステッド・プログラム・ユニットへの権限の付与について」を参照してください。

ALL_SA_SCHEMA_POLICIES

ALL_SA_SCHEMA_POLICIESデータ・ディクショナリ・ビューは、現行ユーザーに対して、SA_POLICY_ADMIN.APPLY_SCHEMA_POLICYに基づいて、スキーマ内のすべての表に適用されているポリシーに関する情報を示します。

「SA_POLICY_ADMIN.APPLY_SCHEMA_POLICY」を参照してください。また、これは、スキーマ強制オプションが有効か無効かどうかも示します。

列

データ型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

SCHEMA_NAME

VARCHAR2(128)

NOT NULL

このポリシーに関連付けられたスキーマの名前

STATUS

VARCHAR2(8)

NULL

(SA_POLICY_ADMIN.APPLY_SCHEMA_POLICYまたはSA_POLICY_ADMIN.DISABLE_SCHEMA_POLICYプロシージャによって)ポリシーがスキーマに対して有効か無効か

SCHEMA_OPTIONS

VARCHAR2(4000)

NULL

適用されているオプション。

デフォルトの強制オプションのリストは、「ポリシー強制オプションのカテゴリ」を参照してください。

ALL_SA_TABLE_POLICIES

ALL_SA_TABLE_POLICIESデータ・ディクショナリ・ビューは、現行ユーザーに対して、SA_POLICY_ADMIN.APPLY_TABLE_POLICY設定に基づいて、データベース表に追加されたポリシーに関する情報を示します。

「SA_POLICY_ADMIN.APPLY_TABLE_POLICY」を参照してください。

列

データ型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

SCHEMA_NAME

VARCHAR2(128)

NOT NULL

ポリシーが保護する表を含むスキーマ

TABLE_NAME

VARCHAR2(128)

NOT NULL

ポリシーで保護される表

STATUS

VARCHAR2(8)

NULL

(SA_POLICY_ADMIN.APPLY_TABLE_POLICYまたはSA_POLICY_ADMIN.DISABLE_TABLE_POLICYプロシージャによって)ポリシーが表に対して有効か無効か

TABLE_OPTIONS

VARCHAR2(4000)

NULL

表に使用されるポリシー強制オプション

デフォルトの強制オプションのリストは、「ポリシー強制オプションのカテゴリ」を参照してください。

FUNCTION

VARCHAR2(1024)

NULL

デフォルトとして使用するラベル値を戻すファンクションの名前

PREDICATE

VARCHAR2(256)

NULL

READ_CONTROLのラベルベースの述語と(ANDまたはORを使用して)結合する述語

ALL_SA_USERS

ALL_SA_USERSデータ・ディクショナリ・ビューは、現行ユーザーに対して、SA_USER_ADMIN.SET_USER_LABELSおよびSA_USER_ADMIN.SET_USER_PRIVSに基づいて、Oracle Label Securityユーザー権限に関する情報を示します。

「SA_USER_ADMIN.SET_USER_LABELS」および「SA_USER_ADMIN.SET_USER_PRIVS」を参照してください。

列

型

Null

説明

USER_NAME

VARCHAR2(1024)

NOT NULL

ユーザー名

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

USER_PRIVILEGES

VARCHAR2(4000)

NULL

ユーザーに付与されたポリシー固有の権限。

可能な権限のリストは、「ポリシーのユーザーおよびトラステッド・プログラム・ユニットへの権限の付与について」を参照してください。

MAX_READ_LABEL

VARCHAR2(4000)

NULL

ユーザーが認可される最大読取りラベルを初期化するラベル文字列

MAX_WRITE_LABEL

VARCHAR2(4000)

NULL

ユーザーが認可される最大書込みラベルを初期化するラベル文字列

MIN_WRITE_LABEL

VARCHAR2(4000)

NULL

ユーザーが認可される最小書込みラベルを初期化するラベル文字列

DEFAULT_READ_LABEL

VARCHAR2(4000)

NULL

読取りアクセス用の、レベル、区分、グループなど、ユーザーのセッション・ラベルを初期化するラベル文字列

DEFAULT_WRITE_LABEL

VARCHAR2(4000)

NULL

書込みアクセス用の、レベル、区分、グループなど、ユーザーのセッション・ラベルを初期化するラベル文字列

DEFAULT_ROW_LABEL

VARCHAR2(4000)

NULL

レベル、コンポーネントおよびグループを含む、プログラムの行ラベルを初期化するラベル文字列

USER_LABELS

VARCHAR2(4000)

NULL

下位互換性のためにのみ保持されており、次のリリースでは削除される予定です。

ALL_SA_USER_LABELS

ALL_SA_USER_LABELSデータ・ディクショナリ・ビューは、現行ユーザーに対して、SA_USER_ADMIN.SET_USER_LABELSプロシージャ設定に基づいて、ユーザーに関するラベル固有の情報を示します。

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

列

データ型

Null

説明

USER_NAME

VARCHAR2(1024)

NOT NULL

ユーザー名

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

LABELS

VARCHAR2(4000)

NULL

下位互換性のためにのみ保持されており、次のリリースでは削除される予定です。

MAX_READ_LABEL

VARCHAR2(4000)

NOT NULL

ユーザーが認可される最大読取りラベルを初期化するラベル文字列

MAX_WRITE_LABEL

VARCHAR2(4000)

NULL

ユーザーが認可される最大書込みラベルを初期化するラベル文字列

MIN_WRITE_LABEL

VARCHAR2(4000)

NULL

ユーザーが認可される最小書込みラベルを初期化するラベル文字列

DEFAULT_READ_LABEL

VARCHAR2(4000)

NULL

読取りアクセス用の、レベル、区分、グループなど、ユーザーのセッション・ラベルを初期化するラベル文字列

DEFAULT_WRITE_LABEL

VARCHAR2(4000)

NULL

書込みアクセス用の、レベル、区分、グループなど、ユーザーのセッション・ラベルを初期化するラベル文字列

DEFAULT_ROW_LABEL

VARCHAR2(4000)

NULL

レベル、コンポーネントおよびグループを含む、プログラムの行ラベルを初期化するラベル文字列

ALL_SA_USER_LEVELS

ALL_SA_USER_LEVELSデータ・ディクショナリ・ビューは、現行ユーザーに対して、SA_USER_ADMIN.SET_LEVELSプロシージャに基づいて、ユーザーに割り当てられた最小レベルと最大レベルを示します。

また、ユーザーのセッション・ラベルおよび行ラベルのデフォルト値をリストします。

「SA_USER_ADMIN.SET_LEVELS」を参照してください。

列

データ型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

USER_NAME

VARCHAR2(1024)

NOT NULL

ユーザー名

MAX_LEVEL

VARCHAR2(30)

NOT NULL

読取りアクセスと書込みアクセスの最上位レベルの短縮名

MIN_LEVEL

VARCHAR2(30)

NOT NULL

読取りアクセスと書込みアクセスの最下位レベルの短縮名

DEF_LEVEL

VARCHAR2(30)

NOT NULL

デフォルト・レベルの短縮名

ROW_LEVEL

VARCHAR2(30)

NOT NULL

行レベルの短縮名

ALL_SA_USER_PRIVS

ALL_SA_USER_PRIVSデータ・ディクショナリ・ビューは、現行ユーザーに対して、SA_USER_ADMIN.SET_USER_PRIVSプロシージャに基づいて、ユーザーに付与されているポリシー固有の権限を示します。

「SA_USER_ADMIN.SET_USER_PRIVS」を参照してください。

列

データ型

Null

説明

USER_NAME

VARCHAR2(1024)

NOT NULL

ユーザー名

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

USER_PRIVILEGES

VARCHAR2(4000)

NULL

ユーザーに付与されたポリシー固有の権限

使用可能な権限は、「ポリシーのユーザーおよびトラステッド・プログラム・ユニットへの権限の付与について」を参照してください

DBA_SA_AUDIT_OPTIONS

DBA_SA_AUDIT_OPTIONSデータ・ディクショナリ・ビューは、データベース全体に対して、Oracle Label Securityの監査オプションを示します。

列はALL_SA_AUDIT_OPTIONSの列と同じです。

関連項目:

ALL_SA_AUDIT_OPTIONSビュー

DBA_SA_COMPARTMENTS

ALL_SA_COMPARTMENTSデータ・ディクショナリ・ビューは、データベース全体に対して、Oracle Label Securityポリシー区分に関する情報を示します。

列はALL_SA_COMPARTMENTSの列と同じです。

関連項目:

ALL_SA_COMPARTMENTS

DBA_SA_DATA_LABELS

ALL_SA_DATA_LABELSデータ・ディクショナリ・ビューは、データベース全体に対して、指定したOracle Label Securityポリシーのラベルおよびラベル・タグを示します。

列はALL_SA_DATA_LABELSの列と同じです。

関連項目:

ALL_SA_DATA_LABELS

DBA_SA_GROUPS

ALL_SA_GROUPSデータ・ディクショナリ・ビューは、データベース全体に対して、Oracle Label Securityポリシー・グループに関する情報を示します。

列はALL_SA_GROUPSの列と同じです。

関連項目:

ALL_SA_GROUPS

DBA_SA_GROUP_HIERARCHY

DBA_SA_GROUP_HIERARCHYデータ・ディクショナリ・ビューは、ポリシー内のグループの階層(つまり、親子関係)を示します。

列

型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

HIERARCHY_LEVEL

NUMBER

NULL

グループ階層内の特定のグループのレベルを示します。親グループを持たないグループは、HIERARCHY_LEVEL 1になります。その子グループは、HIERARCHY_LEVEL 2などになります。

たとえば、次の順序の次のグループについて考えてみます。

1. G1、G4

2. G2、G5

3. G3

ここでは、G1とG4はHIERARCHY_LEVEL 1になります。G2とG5はHIERARCHY_LEVEL 2になり、G3はHIERARCHY_LEVEL 3になります。

親子関係は次のとおりです。

- G3はG2の子グループで、G2はG1の子グループです。

- G5はG4の子グループです。

GROUP_NAME

VARCHAR2(4000)

NULL

階層レベルを示すことを目的としたグループの短縮名

DBA_SA_LABELS

DBA_SA_LABELSデータ・ディクショナリ・ビューは、データベース全体に対して、ポリシーのラベルのタグおよびタイプに関する情報を示します。

列はALL_SA_LABELSの列と同じです。

関連項目:

ALL_SA_LABELS

DBA_SA_LEVELS

DBA_SA_LEVELSデータ・ディクショナリ・ビューは、データベース全体に対して、ポリシーに関連付けられたレベルに関する情報を示します。

列はALL_SA_LEVELSの列と同じです。

関連項目:

ALL_SA_LABELS

DBA_SA_POLICIES

DBA_SA_POLICIESデータ・ディクショナリ・ビューは、データベース全体に対して、SA_SYSDBA.CREATE_POLICYプロシージャに基づいて、Oracle Label Securityポリシーに関する情報を示します。

また、このビューは、ポリシーが有効か無効かどうかと、そのサブスクリプション・ステータスも示します。

列

データ型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

COLUMN_NAME

VARCHAR2(128)

NOT NULL

ポリシーで保護されている表に追加された列の名前

STATUS

VARCHAR2(8)

NULL

ポリシーが有効か無効か

POLICY_OPTIONS

VARCHAR2(4000)

NULL

このポリシーに設定されたオプション。

使用可能な強制オプションのリストは、「ポリシー強制オプションのカテゴリ」を参照してください。

POLICY_SUBSCRIBED

VARCHAR2(5)

NULL

SA_POLICY_ADMIN.POLICY_SUBSCRIBEまたはSA_POLICY_ADMIN.POLICY_UNSUBSCRIBEプロシージャに基づいて、ポリシーのサブスクリプション・ステータスを示します。

DBA_SA_PROG_PRIVS

DBA_SA_PROG_PRIVSデータ・ディクショナリ・ビューは、データベース全体に対して、プログラム・ユニットのポリシー固有の権限に関する情報を示します。

列はALL_SA_PROG_PRIVSの列と同じです。

関連項目:

ALL_SA_PROG_PRIVS

DBA_SA_SCHEMA_POLICIES

DBA_SA_SCHEMA_POLICIESデータ・ディクショナリ・ビューは、データベース全体に対して、スキーマ内のすべての表に適用されているポリシーに関する情報を示します。

列はALL_SA_SCHEMA_POLICIESの列と同じです。

関連項目:

ALL_SA_SCHEMA_POLICIES

DBA_SA_TABLE_POLICIES

DBA_SA_TABLE_POLICIESデータ・ディクショナリ・ビューは、データベース全体に対して、データベース表に追加されたポリシーに関する情報を示します。

列はALL_SA_TABLE_POLICIESの列と同じです。

関連項目:

ALL_SA_SCHEMA_POLICIES

DBA_SA_USERS

DBA_SA_USERSデータ・ディクショナリ・ビューは、データベース全体に対して、Oracle Label Securityユーザーが持っている権限に関する情報を示します。

列はALL_SA_USERSの列と同じです。

関連項目:

ALL_SA_USERS

DBA_SA_USER_COMPARTMENTS

DBA_SA_USER_COMPARTMENTSデータ・ディクショナリ・ビューは、データベース全体に対して、SA_USER_ADMIN.ADD_COMPARTMENTSプロシージャに基づいて、ユーザー認証を示します。

また、このビューは、区分が書込みおよび読取り権限について認可されるかどうかも示します

「SA_USER_ADMIN.ADD_COMPARTMENTS」を参照してください。

列

データ型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

USER_NAME

VARCHAR2(1024)

NOT NULL

ユーザー名

COMP

VARCHAR2(30)

NOT NULL

追加された区分の短縮名

RW_ACCESS

VARCHAR2(5)

NULL

アクセス・モード。可能な値は次のとおりです。

- SA_UTL.READ_ONLYは、書込みアクセス権がないことを示します。

- SA_UTL.READ_WRITEは、書込みが認可されることを示します。

DEF_COMP

VARCHAR2(1)

NOT NULL

区分がデフォルト区分内にあるかどうか

ROW_COMP

VARCHAR2(1)

NOT NULL

区分が行ラベル内にあるかどうか

DBA_SA_USER_GROUPS

DBA_SA_USER_GROUPSデータ・ディクショナリ・ビューは、データベース全体に対して、SA_USER_ADMIN.ADD_GROUPSプロシージャに基づいて、ユーザーに関連付けられているグループを示します。

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

列

データ型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

USER_NAME

VARCHAR2(1024)

NOT NULL

ユーザー名

GRP

VARCHAR2(30)

NOT NULL

追加されたグループの短縮名

RW_ACCESS

VARCHAR2(5)

NULL

アクセス・モード。可能な値は次のとおりです。

- SA_UTL.READ_ONLYは、読取り専用アクセス権があることを示します。

- SA_UTL.READ_WRITEは、読取りおよび書込みアクセス権があることを示します。

DEF_GROUP

VARCHAR2(1)

NOT NULL

グループがデフォルト・グループ内にあるかどうか

ROW_GROUP

VARCHAR2(1)

NOT NULL

グループがラベル内にあるかどうか

DBA_SA_USER_LABELS

DBA_SA_USER_LABELSデータ・ディクショナリ・ビューは、データベース全体に対して、ユーザーに関するラベル固有の情報を示します。

列はALL_SA_USER_LABELSの列と同じです。

関連項目:

ALL_SA_USER_LABELS

DBA_SA_USER_LEVELS

DBA_SA_USER_LEVELSデータ・ディクショナリ・ビューは、データベース全体に対して、ユーザーに割り当てられた最小レベルと最大レベルを示します。

また、このビューは、ユーザーのセッション・ラベルおよび行ラベルのデフォルト値も示します。

列はALL_SA_USER_LEVELSの列と同じです。

関連項目:

ALL_SA_USER_LEVELS

DBA_SA_USER_PRIVS

DBA_SA_USER_PRIVSデータ・ディクショナリ・ビューは、現行ユーザーに対して、ユーザーに付与されているポリシー固有の権限を示します。

列はALL_SA_USER_PRIVSの列と同じです。

関連項目:

ALL_SA_USER_PRIVS

DBA_OLS_STATUS

DBA_OLS_STATUSデータ・ディクショナリ・ビューは、データベース内のOracle Label Securityの構成ステータスを示します。

列

データ型

Null

説明

NAME

VARCHAR2(20)

NULL

ステータスの名前。値は次のとおりです。

- OLS_CONFIGURE_STATUS

- OLS_DIRECTORY_STATUS

- OLS_ENABLE_STATUS

STATUS

VARCHAR2(5)

NULL

対応する名前の列に記載されている機能のステータスを示します。たとえば、OLS_CONFIGURE_STATUSステータスの値がTRUEの場合、Oracle Label Securityは構成されていることを意味します。

DESCRIPTION

VARCHAR2(4000)

NULL

ステータスの説明は次のとおりです。

- OLS_CONFIGURE_STATUS: Oracle Label Securityが構成されているかどうかを判断します。

- OLS_DIRECTORY_STATUS: Oracle Internet DirectoryがOracle Label Securityで有効化されているかどうかを判断します。

- OLS_ENABLE_STATUS: Oracle Label Securityが有効化されているかどうかを判断します。

USER_SA_SESSION

USER_SA_SESSIONデータ・ディクショナリ・ビューは、現行データベース・セッションのセキュリティ属性値を示します。

このビューへのアクセスはPUBLICです。

列

データ型

Null

説明

POLICY_NAME

VARCHAR2(30)

NOT NULL

Oracle Label Securityポリシーの名前

SA_USER_NAME

VARCHAR2(4000)

NULL

現行セッション・ユーザーの名前

PRIVS

VARCHAR2(4000)

NULL

現行セッションの権限

MAX_READ_LABEL

VARCHAR2(4000)

NULL

ユーザーが認可される最大読取りラベルを初期化したラベル文字列

MAX_WRITE_LABEL

VARCHAR2(4000)

NULL

ユーザーが認可される最大書込みラベルを初期化したラベル文字列

MIN_LEVEL

VARCHAR2(4000)

NULL

セッションについて認可された最小Oracle Label Securityレベル

LABEL

VARCHAR2(4000)

NULL

現行データベース・セッションのラベル

COMP_WRITE

VARCHAR2(4000)

NULL

ユーザーが書込みを認可されている区分

GROUP_WRITE

VARCHAR2(4000)

NULL

ユーザーが書込みを認可されているグループ

ROW_LABEL

VARCHAR2(4000)

NULL

現行セッションのポリシーに関連付けられている行ラベル

Oracle Label Securityのユーザー作成の監査ビュー

SA_AUDIT_ADMIN.CREATE_VIEWプロシージャを使用すると、特定のポリシーの監査証跡ビューを作成できます。

デフォルトでは、このビューの名前はDBA_policyname_AUDIT_TRAILです。

列

データ型

Null

説明

USERNAME

VARCHAR2(128)

NULL

アクションが監査対象となったユーザーの名前

USERHOST

VARCHAR2(128)

NULL

クライアントのホスト・マシンの名前

TERMINAL

VARCHAR2(255)

NULL

ユーザーの端末の識別子

TIMESTAMP

DATE

NULL

ローカル・データベースのセッション・タイム・ゾーンでの監査証跡エントリの作成日時(AUDIT SESSIONで作成されたエントリに対するユーザー・ログインの日時)

OWNER

VARCHAR2(128)

NULL

操作の影響を受けたオブジェクトの作成者

OBJ_NAME

VARCHAR2(128)

NULL

操作の影響を受けたオブジェクトの名前

ACTION

NUMBER

NOT NULL

数値のアクション・タイプ・コード。アクション・タイプに対応する名前は、ACTION_NAME列に示されます。

ACTION_NAME

VARCHAR2(47)

NULL

ACTION列の数値コードに対応するアクション・タイプの名前

COMMENT_TEXT

VARCHAR2(4000)

NULL

監査対象となった文の詳細を示す、監査証跡エントリについてのテキスト・コメント。

ユーザーが認証された方式も示す。認証方式は、次のいずれか。

- DATABASE: 認証はパスワードによって行われた。

- NETWORK: 認証はOracle Net Servicesまたは厳密認証によって行われた。

SESSIONID

NUMBER

NOT NULL

各Oracleセッションの数値ID

ENTRYID

NUMBER

NOT NULL

セッションの各監査証跡エントリの数値ID

STATEMENTID

NUMBER

NOT NULL

文の実行ごとの数値ID

RETURNCODE

NUMBER

NOT NULL

アクションによって生成されたOracleエラー・コード。有効な値の例は次のとおりです。

- 0: アクションは成功

- 2004: セキュリティ違反

EXTENDED_TIMESTAMP

TIMESTAMP (6)WITH TIME ZONE

NULL

UTC(協定世界時)タイム・ゾーンでの監査証跡エントリで作成されたタイムスタンプ(AUDIT SESSIONで作成されたエントリに対するユーザー・ログインのタイムスタンプ)

OLS_COL

VARCHAR2(4000)

NULL

Oracle Label Securityが保護する表に追加された列の名前

関連項目:

SA_AUDIT_ADMIN.CREATE_VIEW

Oracle Label Securityでの制限事項

このリリースのOracle Label Securityには、いくつかの制限事項があります。

これらの制限事項は次のとおりです。

- CREATE TABLE AS SELECTの制限
Oracle Label Securityポリシーで保護されているスキーマ内でCREATE TABLE AS SELECTの実行を試みると、文は失敗します。

- ラベル・タグの制限
ラベル・タグは、データベース内のポリシー間で一意であることが必要です。データベース内で複数のポリシーを使用する場合、異なるポリシー内で同じ数値ラベル・タグは使用できません。

- エクスポート制限

Oracle Database 12cリリース1 (12.1)より前では、Oracle Label Securityで不透明型を使用しているため、LBACSYSスキーマをエクスポートできませんでした。Oracle Label Securityをインストールした状態でデータベース全体をエクスポートできますが(パラメータFULL=Y)、LBACSYSスキーマはエクスポートされません。

Oracle Databaseリリース12cから、この制限はなくなりました。エクスポートをサポートできるデータベース・バージョンの詳細は、「データベースの全体エクスポート」を参照してください。

- Oracle Label Securityでの削除制限

DROP USER CASCADEは、LBACSYSアカウントで実行しないでください。

AS SYSDBA構文を使用してデータベースにユーザーSYSで接続し、ファイル$ORACLE_HOME/rdbms/admin/catnools.sqlを実行して、Oracle Label Securityを削除します。

関連項目:

プラットフォーム固有のOracleインストレーション・ガイドを参照してください。

- 共有スキーマのサポートの制限
Oracle Internet Directoryに定義されているユーザー・アカウントに、個々のOracle Label Securityの認可を付与することはできません。ただし、ディレクトリ・ユーザーがマップされている共有スキーマに認可を付与することはできます。

Oracle Label SecurityのファンクションSET_ACCESS_PROFILEをプログラムで使用すると、ユーザーが認証を受けて共有スキーマにマップされた後に使用する、ラベル認可プロファイルを設定できます。Oracle Label Securityでは、Oracle Label Security内でラベル認可が付与されているユーザーと実際のデータベース・ユーザー間のマッピングは施行されません。

- 非表示列の制限
PL/SQLでは、表にある非表示列の参照は認識されません。コンパイラ・エラーが生成されます。

G Oracle Label Securityに関するよくある質問

Oracle Label Securityに関するよくある質問を次に示します。

内容は次のとおりです。

- Oracle Label Securityのユーザーは誰ですか。

- Oracle Label Securityはセキュリティ・ニーズにどのように対応できますか。

- すべての表の保護にOracle Label Securityを使用する必要がありますか。

- Oracle Virtual Private DatabaseとOracle Label Securityの違いは何ですか。

- Oracle Virtual Private DatabaseとOracle Label Securityを組み合せることはできますか。

- Oracle Label SecurityはOracle E-Business Suiteと併用できますか。

- Oracle Label SecurityはOracle Database Vaultと併用できますか。

- Oracle Label Securityに基づいたセキュアなアプリケーション・ロールは可能ですか。

- トラステッド・ストアド・プログラム・ユニットとは何ですか。

- VPDまたはOLSでは、保護された表に列が追加されますか。

- 追加したOLS行ラベル列を非表示にする理由は何ですか。

Oracle Label Securityのユーザーは誰ですか。

機密性ラベルは、ほぼすべての産業において、データを分類できます。

これらの産業には、医療、警察、エネルギー産業、小売業、国家安全保障、軍需産業などがあります。

次に、機密性ラベルの例をいくつか示します。

- 内部

- ConfidentialPhysician OnlyHighly SensitiveWidget CorporationConfidential、Chicago OperationSensitive、Finance、EuropeTop SecretUnclassified

Oracle Label Securityはセキュリティ・ニーズにどのように対応できますか。

Oracle Label Securityは、データにラベルを付け、データへのアクセスを細かいレベルで制限できます。

これは、複数の組織や会社で1つのアプリケーションを共有する場合に特に役立ちます。また、機密性ラベルを使用すると、アプリケーション・ユーザーによる組織へのアクセス、または組織内の一部のデータへのアクセスを制限できます。

コンシューマにとってデータのプライバシは重要であるため、規制措置が次々と公表されています。Oracle Label Securityを使用すると、データに対するプライバシ・ポリシーを実装して、データを参照する必要があるユーザーのみにアクセスを制限できます。

すべての表の保護にOracle Label Securityを使用する必要がありますか。

いいえ。すべての表の保護にOracle Label Securityを使用する必要はありません。

ほとんどの場合、Oracleの従来の任意アクセス制御(DAC)オブジェクト権限(SELECT、INSERT、UPDATE、DELETEなど)にデータベース・ロールとストアド・プロシージャを組み合せる方法で十分です。DBA_SYS_PRIVSデータ・ディクショナリ・ビューを問い合せて、ユーザーの権限を確認できます。

さらに、Oracle Virtual Private Database (VPD)、Oracle Database Vault、Oracle Data Redaction、Transparent Data Encryption (TDE)、Transparent Sensitive Data Protection (TSDP)などの様々な方法を使用して、データベース表へのアクセスを保護できます。

Oracle Virtual Private DatabaseとOracle Label Securityの違いは何ですか。

Oracle Virtual Private Database(VPD)はOracle Database Enterprise Editionに無償で付属しています。

Oracle Label Securityは、Oracle Database Enterprise Editionの追加セキュリティ・オプションです。

Oracle VPDは、ファイングレイン・アクセス・コントロール(FGAC)、アプリケーション・コンテキスト、グローバル・アプリケーション・コンテキストなどの強力なセキュリティ機能に対して使用する用語です。VPDポリシーはPL/SQLを使用して記述し、個別の表またはビューに割り当てることができます。VPDで保護された表またはビューにアクセスする情報要求は、その表またはビューに割り当てられているポリシーに従って変更されます。

VPDポリシーは、アクセスを業務時間内に制限するというような簡単な設定が可能です。VPDポリシーによって、各行の属性値とアプリケーション・コンテキスト値を比較してアクセスを制限できます。グローバル・アプリケーション・コンテキストでは、複数のデータベース・セッションにわたって1つのアプリケーション・コンテキストをアクセスできるため、ユーザー・セッションごとに個別のアプリケーション・コンテキストを作成する必要がありません。

Oracle Label Securityは、行レベルのセキュリティに対して設定が容易なソリューションを提供します。コーディングやソフトウェア開発が不要なため、管理者はポリシーに完全に集中できます。Oracle Label Securityには、ポリシーの作成、施行オプションの指定、データ機密性ラベルの定義、ユーザー・ラベル認可の確立、および個別の表やスキームの保護のためのインタフェースが用意されています。

データ機密性ラベルは、データへのアクセスを強力かつ柔軟に制御する手段を提供します。たとえば、異なる組織または会社に属するデータは、データ機密性ラベルを使用して区別されるため、データ機密性ラベルの変更によって会社間で選択的に共有できます。

セキュリティ・ポリシーの複雑さによっては、Oracle Virtual Private Databaseがセキュリティ・ポリシーを実装するための最適な方法である場合があります。Oracle Label Securityは、情報の機密性に基づいてアクセス制御を決定する必要がある場合に最適です。

Oracle Virtual Private DatabaseとOracle Label Securityを組み合せることはできますか。

はい。WHERE句またはVPDポリシーを使用できます。

- WHERE句をOLSポリシーに追加すると、さらに細かいレベルを追加できます。たとえば、ユーザーに対しては、各自のラベル認可に関係なく、特定のIPアドレスまたはサブネットからの接続を許可し、その接続を業務時間内のみに制限できます。

- VPDポリシーでは、列を区別するかどうかに関係なく、ユーザー・ラベルを評価して列と行へのアクセスを判断でき、このためにデータ・ラベルを適用する必要はありません。

Oracle Label SecurityはOracle E-Business Suiteと併用できますか。

Oracle Applicationsでは、新機能やセキュリティ保護を提供するために、Oracle Virtual Private Database (VPD)を使用しています。

さらに、他のOracleセキュリティ製品をOracle E-Business Suiteと併用できます(Oracle Database Vaultなど)。詳細は、Oracleサポートに連絡してください。

Oracle Label SecurityはOracle Database Vaultと併用できますか。

Oracle Database Vaultの表は、Oracle Databaseの表の場合と同様に、Oracle Label Securityを使用して保護できます。

さらに、Oracle Label SecurityはOracle Database Vaultの機能と併用できます。Oracle Label Securityのラベルは、Database Vaultファクタに割り当てることができます。これらのラベルは、「MERGE_LABELファンクションを使用したラベルのマージ」に記述されているアルゴリズムに従って、ユーザー・クリアランス・ラベルとマージされ、その後に、マージされたユーザー・ラベルが行ラベルと比較されてアクセス制御が判断されます。

Oracle Label SecurityをOracle Database Vaultの機能と併用する例については、次のOracle Technology Network Webサイトを参照してください。

http://www.oracle.com/technetwork/database/security/label-security-factors-093209.html

Oracle Label Securityでは列レベルのアクセス制御が提供されていますか。

いいえ。Oracle Label Securityは列を認識しません。

この動作は、Virtual Private Database (VPD)で可能です。VPDポリシーは、保護された表に対するSQL文に特定の列が含まれる場合のみアクティブとなるように記述できます。列の機密性スイッチがオンの場合、VPDは、機密列の値がユーザーにとってアクセス可能である行のみを戻すか、または、ユーザーが参照を許可されている値以外は機密列のすべてのセルを空白にしてすべての行を戻します。

例については、次のOracle Technology Network Webサイトを参照してください。

http://www.oracle.com/technetwork/database/security/index-088277.html

列を識別するVPDポリシーにより、OLSユーザー・ラベルを評価して特定の列へのアクセスを判断できます。この例については、次を参照してください。

http://www.oracle.com/technetwork/database/security/ols-cs1-099558.html

Oracle Label Securityに基づいたセキュアなアプリケーション・ロールは可能ですか。

はい。Oracle Label Securityに基づいたセキュアなアプリケーション・ロールは可能です。

SET ROLEコマンドが実行されるかどうかを判断するプロシージャによって、OLSユーザー・ラベルを評価できます。この場合、行ラベルはこのソリューションに含まれないため、OLSポリシーを表に適用する必要はありません。

トラステッド・ストアド・プログラム・ユニットとは何ですか。

トラステッド・ストアド・プログラム・ユニットは、定義者のシステム権限とオブジェクト権限(DAC)を使用して実行されるストアド・プロシージャ、ファンクションおよびパッケージです。

実行者がOracle Label Securityユーザー・クリアランス(ラベル)を持つユーザーの場合、プロシージャは、定義者のDAC権限と実行者のセキュリティ・クリアランスの組合せを使用して実行されます。

トラステッド・ストアド・プロシージャは、Oracle Label Security権限のFULLまたはREADのいずれかが付与されたプロシージャです。トラステッド・ストアド・プログラム・ユニットの実行時に有効なポリシー権限は、コール側ユーザーの権限とプログラム・ユニットの権限との組合せです。

VPDまたはOLSでは、保護された表に列が追加されますか。

Oracle Label Security(OLS)ポリシーを表に適用すると、ポリシーによって表に列が追加されます。

この列の名前は、ポリシーを最初に作成するときに指定する必要があります。

既存の列は、OLS行ラベルを格納するために使用できます。この列は、NUMBER(10)データ型である必要があります。

Oracle Virtual Private Database(VPD)では、保護された表に列は追加されません。

追加したOLS行ラベル列を非表示にする理由は何ですか。

ほとんどのアプリケーションの設計ではアクセス制御メカニズムが考慮されないため、Oracle Label Securityではラベル列の透過性が必要になります。

アプリケーションでSELECT FROM tablename文を使用して表を問い合せると、非表示でないラベル列も含めてすべての列が戻されます。既存のアプリケーションでは、追加の列を表示するように設計されていないために、障害が発生する場合があります。ただし、非表示のラベル列は、SQL文にその名前が含まれている場合のみ表示されます。SELECT FROM tablename文は、非表示のOLS列を除いて、アプリケーションの指示どおりにすべての列を戻します。

索引

A  B  C  D  E  F  G  H  I  L  M  N  O  P  R  S  T  U  V  W

A

- アクセス制御

- 任意 1

- 理解 1

- アクセス調整

- ビュー 1

- 強制オプション 1

- 概要 1

- ラベル評価 1

- プログラム・ユニット 1

- ADD_GROUPSプロシージャ

- インバース・グループ 1

- ALL_CONTROLオプション 1 , 2 , 3

- ALL_SA_AUDIT_OPTIONSビュー 1

- ALL_SA_COMPARTMENTSビュー 1 , 3

- ALL_SA_DATA_LABELSビュー 1 , 3

- ALL_SA_GROUPSビュー 1 , 3

- ALL_SA_LABELSビュー 1

- ALL_SA_LEVELSビュー 1

- ALL_SA_POLICIESビュー 1

- ALL_SA_PROG_PRIVSビュー 1

- ALL_SA_SCHEMA_POLICIESビュー 1

- ALL_SA_TABLE_POLICIESビュー 1

- ALL_SA_USER_LABELSビュー 1

- ALL_SA_USER_LEVELSビュー 1

- ALL_SA_USER_PRIVSビュー 1

- ALL_SA_USERSビュー 1

- ALTER_GROUP_PARENT

- インバース・グループ 1

- ALTER_GROUPSプロシージャ

- インバース・グループ 1

- ALTER_POLICYプロシージャ

- インバース・グループ 1

- ANALYZEコマンド 1

- APPLY_SCHEMA_POLICYプロシージャ

- インバース・グループ 1

- APPLY_TABLE_POLICYプロシージャ

- インバース・グループ 1

- アーキテクチャ, Oracle Label Security 1

- AS SYSDBA句 1

- AUDIT_LABEL_ENABLEDファンクション 1

- AUDIT_TRAILパラメータ 1

- 監査

- 監査証跡 1 , 2 , 3

- 監査ビューの作成 1

- 無効化 1

- 監査ビューの削除 1

- 有効

- SA_AUDIT_ADMIN.AUDITプロシージャ 1

- 監査オプションの検出 1

- ラベルが記録されているかどうかの検出 1

- Oracle Label Security 1 , 2

- ポリシー・ラベルの記録 1

- SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLEDファンクション 1

- SA_AUDIT_ADMIN.AUDIT_LABELプロシージャ 1

- SA_AUDIT_ADMIN.CREATE_VIEWプロシージャ 1

- SA_AUDIT_ADMIN.DROP_VIEWプロシージャ 1

- SA_AUDIT_ADMIN.NOAUDIT_LABELプロシージャ 1

- SA_AUDIT_ADMINパッケージ 1

- 方針 1

- システム単位 1

- タイプ 1

- ビュー 1

B

- Bツリー索引 1

C

- CDB

- Oracle Label Security 1

- CHAR_TO_LABELファンクション 1 , 2 , 3

- CHECK_CONTROLオプション

- ラベル付けファンクション 1

- ラベルの更新 1 , 2

- 定義 1

- 他のオプション 1

- CHECK_WRITEファンクション 1

- 子行

- 削除 1

- 挿入 1

- 更新 1

- Cloud Controlログイン 1

- COMPACCESS権限

- インバース・グループ 1 , 2

- 区分

- 変更 1

- 作成 1

- 定義 1 , 2

- 削除 1

- 例 1 , 2

- 検出 1

- ユーザーがセッションで読み取ることのできる区分の検出 1

- ユーザーがセッションで書き込むことのできる区分の検出 1

- ユーザー情報の検出 1

- SA_COMPONENTS.ALTER_COMPARTMENTプロシージャ 1

- SA_COMPONENTS.CREATE_COMPARTMENTプロシージャ 1

- SA_COMPONENTS.DROP_COMPARTMENTプロシージャ 1

- SA_USER_ADMIN.ADD_COMPARTMENTSプロシージャ 1

- SA_USER_ADMIN.ALTER_COMPARTMENTS 1

- SA_USER_ADMIN.DROP_COMPARTMENTSプロシージャ 1

- SA_USER_ADMIN.SET_COMPARTMENTSプロシージャ 1

- SA_USER_ADMINパッケージ 1

- 認可の設定 1 , 2

- コンポーネント

- SA_USER_ADMIN.DROP_ALL_COMPARTMENTSプロシージャ 1

- CON 1

- Oracle Label Securityの構成

- ステータスの検出 1

- 接続パラメータ 1

- CREATE_GROUPプロシージャ

- インバース・グループ 1

- CREATE_POLICYプロシージャ

- インバース・グループ 1

- CREATE FUNCTION文 1

- CREATE PACKAGE BODY文 1

- CREATE PACKAGE文 1

- CREATE PROCEDURE文 1

- CREATE TABLE AS SELECT文, 1

- データベースの作成 1

D

- データ

- ラベルベース・アクセス 1

- データベース・リンク 1

- データベース, 追加作成 1

- データ・ディクショナリ表 1 , 2 , 3 , 4

- データ・ラベル

- ラベルがデータ・ラベルかどうかの確認 1

- ラベルおよびタグ情報の検出 1

- SA_UTL.DATA_LABELファンクション 1

- Data Pumpエクスポート

- 行ラベル 1

- Data Pumpインポート 1

- DBA_OLS_STATUSビュー 1

- DBA_policyname_AUDIT_TRAILビュー 1

- DBA_SA_AUDIT_OPTIONSビュー 1

- DBA_SA_COMPARTMENTSビュー 1 , 2

- DBA_SA_DATA_LABELSビュー 1

- DBA_SA_GROUP_HIERARCHYビュー 1

- DBA_SA_GROUPSビュー 1 , 2

- DBA_SA_LABELSビュー 1 , 2

- DBA_SA_LEVELSビュー 1 , 2

- DBA_SA_POLICIESビュー 1

- DBA_SA_PROG_PRIVSビュー 1

- DBA_SA_SCHEMA_POLICIESビュー 1 , 2

- DBA_SA_TABLE_POLICIESビュー 1 , 2

- DBA_SA_USER_COMPARTMENTSビュー 1

- DBA_SA_USER_GROUPSビュー 1

- DBA_SA_USER_LABELSビュー 1

- DBA_SA_USER_LEVELSビュー 1

- DBA_SA_USER_PRIVSビュー 1

- DBA_SA_USERSビュー 1

- デフォルト・ポート 1

- デフォルトの行ラベル 1

- DELETE_CONTROLオプション 1 , 2

- DELETERESTRICTオプション 1

- ラベル付きデータの削除 1

- demobld.sqlファイル 1

- OLSの無効化 1

- Oracle Label Securityの無効化 1

- 任意アクセス制御(DAC) 1

- 分散データベース

- 接続 1

- 複数のポリシー 1

- Oracle Label Securityの構成 1

- リモート・セッション・ラベル 1

- 支配

- 定義 1

- 関数

- 概要 1

- 最大の下限 1

- インバース・グループ 1

- 最小の上限 1

- 概要 1

- DOMINATED_BYファンクション 1

- DOMINATESファンクション 1

- 指定した区分の削除 1

- DROP USER CASCADEの制限 1

- ロール

- セキュリティ管理者 1

E

- OLSの有効化 1

- 施行オプション

- UPDATE 1

- 組合せ 1

- 除外 1

- ガイドライン 1

- INVERSE_GROUP 1

- リスト 1

- 概要 1

- 表示 1

- EXEMPT ACCESS POLICY権限 1

- エクスポート・ユーティリティ

- LBACSYSの制限 1

- ポリシーの強制 1

- 行ラベル 1 , 2

- 外部表 1

F

- FULL権限 1 , 2

- ファンクション・コール 1 , 2

G

- 粒度

- データ・アクセス 1

- GREATEST_LBOUNDファンクション

- インバース・グループ 1

- グループ

- 変更 1

- 親グループの変更 1

- 親グループの作成 1

- 定義 1 , 2

- 削除 1

- 例 1 , 2

- データベース全体での検出 1

- 親子関係の階層の検出 1

- ポリシー・グループの検出 1

- 階層 1 , 3 , 5 , 7

- インバース 1

- 親 1 , 4 , 6 , 9

- 読取り/書込みアクセス 1

- SA_COMPONENTS.ALTER_GROUP_PARENTプロシージャ 1

- SA_COMPONENTS.ALTER_GROUPプロシージャ 1

- SA_COMPONENTS.CREATE_GROUPプロシージャ 1

- SA_COMPONENTS.DROP_GROUP 1

- SA_SESSION.GROUP_READファンクション 1

- SA_SESSION.GROUP_WRITEファンクション 1

- SA_USER_ADMIN.ADD_GROUPSプロシージャ 1

- SA_USER_ADMIN.ALTER_GROUPSプロシージャ 1

- SA_USER_ADMIN.DROP_ALL_GROUPSプロシージャ 1

- SA_USER_ADMIN.DROP_GROUPSプロシージャ 1

- SA_USER_ADMIN.SET_GROUPSプロシージャ 1

- SA_USER_ADMINパッケージ 1

- 認可の設定 1 , 2

H

- HIDE 1 , 2 , 3

- HIDEオプション

- デフォルト 1

- 説明 1

- 例 1

- 非表示列のインポート 1

- データの挿入 1

- エクスポートされない 1

- 表単位 1

- PL/SQLの制限 1

- ポリシー・ラベル列

- 非表示のときのデータの挿入 1

- スキーマ・レベル 1

I

- impdp

- 「Data Pumpインポート」を参照

- インポート・ユーティリティ

- ラベル付きデータのインポート 1 , 2

- ポリシーのインポート 1

- ラベルなしデータのインポート 1

- Oracle Label Security 1

- 索引 1

- INITIAL_LABEL変数 1

- INITIAL_ROW_LABEL変数 1

- 初期化パラメータ

- AUDIT_TRAIL 1

- INSERT_CONTROLオプション 1 , 2

- ラベル付きデータの挿入 1 , 2

- INTO TABLE句 1

- INVERSE_GROUP施行オプション

- プロシージャの動作 1

- 実装 1

- インバース・グループ

- ラベル・コンポーネント 1

- COMPACCESS権限 1 , 2

- 計算されるラベル 1

- 支配 1

- 実装 1

- 概要 1

- 最大読取りグループ 1

- 最大書込みグループ 1

- 親子関係の非サポート 1

- 読取りアルゴリズム 1

- セッション・ラベル 1

- SET_DEFAULT_LABEL 1

- SET_LABEL 1

- SET_ROW_LABEL 1 , 2

- ユーザー権限 1

- 書込みアルゴリズム 1

L

- LABEL_DEFAULTオプション

- ラベル付けファンクション 1 , 2

- 区分の認可 1

- グループの認可 1

- ラベルなしデータのインポート 1

- ラベル付きデータの挿入 1

- 強制オプション 1

- SA_SESSION.SET_ROW_LABEL 1

- LABEL_TO_CHARファンクション 1 , 2 , 3

- LABEL_UPDATEオプション

- ラベル付けファンクション 1 , 2

- 権限 1

- WRITE_CONTROL 1

- WRITEUP 1 , 4

- 定義 1

- 評価プロセス 1

- 強制オプション 1

- ラベルベース・セキュリティ 1

- ラベル・コンポーネント

- 分散環境 1

- 業界別の例 1

- 相互関係 1

- ラベル評価プロセス

- COMPACCESS読取り 1

- COMPACCESS書込み 1

- インバース・グループ, COMPACCESS 1

- LABEL_UPDATE 1

- 読取りアクセス 1

- 読取りアクセス, インバース・グループ 1

- 書込みアクセス 1

- 書込みアクセス, インバース・グループ 1

- ラベル付けファンクション

- ALL_CONTROLおよびNO_CONTROL 1

- CHECK_CONTROL 1

- LABEL_DEFAULT 1 , 2

- LABEL_DEFAULTlLABEL_DEFAULTオプション

- ラベル付けファンクション 1

- LABEL_UPDATE 1 , 2

- LBACSYS 1

- 作成 1

- 例 1

- 動作の概要 1

- ラベルなしデータのインポート 1

- 有効 1

- データの挿入 1

- 概要 1

- 手動による挿入のオーバーライド 1

- 指定 1

- テスト 1

- UPDATE 1

- 使用 1

- 強制オプション 1

- ラベル・ポリシー・コンテナ

- 作成 1

- ラベル

- 管理 1

- 変更 1

- パフォーマンス 1

- データ・ラベルかどうかの確認 1

- 変更されたかどうかの確認 1

- 作成 1

- データおよびユーザー 1

- 削除 1

- 最大の下限の検出 1

- 最小の上限の検出 1

- タグおよびタイプの検出 1

- マージ 1

- 比較できない 1

- 関係 1

- セッションのデフォルトの復元 1

- SA_LABEL_ADMIN.ALTER_LABELプロシージャ 1

- SA_LABEL_ADMIN.CREATE_LABELプロシージャ 1

- SA_LABEL_ADMIN.DROP_LABELプロシージャ 1

- SA_LABEL_ADMINパッケージ 1

- SA_SESSION.LABELファンクション 1

- SA_SESSION.MAX_READ_LABELファンクション 1

- SA_SESSION.MAX_WRITE_LABELファンクション 1

- SA_SESSION.MIN_WRITE_LABELファンクション 1

- SA_SESSION.RESTORE_DEFAULT_LABELS 1

- SA_SESSION.SET_LABELプロシージャ 1

- SA_SESSION.SET_ROW_LABELプロシージャ 1

- SA_USER_ADMIN.SET_USER_LABELSプロシージャ 1

- SA_USER_ADMINパッケージ 1

- SA_UTL.CHECK_LABEL_CHANGEファンクション 1

- SA_UTL.GREATEST_LBOUNDファンクション 1

- SA_UTL.LEAST_UBOUNDファンクション 1

- SA_UTL.SET_LABELプロシージャ 1

- デフォルトのセッション・ラベルの保存 1

- 行ラベルの設定 1

- 構文 1 , 2

- 有効 1 , 2 , 3

- インバース・グループ 1

- ラベル・タグ

- 文字列からの変換 1

- 文字列への変換 1

- 分散環境 1

- 例 1

- データの挿入 1

- 概要 1 , 2

- 手動で定義 1 , 2

- 方針 1

- WHERE句で使用 1

- LBAC_LABELデータ型 1

- LBACSYS

- エクスポート 1

- インポート 1

- ログイン 1

- LBACSYSデフォルト・ユーザー・アカウント

- 概要 1

- ベスト・プラクティスのガイドライン 1

- 有効化 1

- LBACSYSスキーマ

- ラベル付けファンクション 1

- データベースの追加作成 1

- データ・ディクショナリ表 1

- エクスポート制限 1

- LEAST_UBOUNDファンクション

- インバース・グループ 1

- レベル

- 概要 1

- レベルの変更 1

- 作成 1

- 定義 1 , 2

- 削除 1

- 例 1 , 2

- 検出 1

- SA_COMPONENTS.ALTER_LEVELプロシージャ 1

- SA_COMPONENTS.CREATE_LEVELプロシージャ 1

- SA_COMPONENTS.DROP_LEVELプロシージャ 1

- SA_SESSION.MAX_LEVELファンクション 1

- SA_SESSION.MIN_LEVELファンクション 1

- SA_USER_ADMIN.SET_LEVELSプロシージャ 1

- 認可の設定 1 , 2

- Oracle Label Securityへのログイン

- Cloud Control 1

- SQL*Plus 1

- ログイン

- Cloud Control 1

- LBACSYS 1

M

- マテリアライズド・ビュー 1 , 2

- 最大読取りグループ 1

- 最大書込みグループ 1

- MERGE_LABELファンクション 1

- マルチテナント・コンテナ・データベース

- 「CDB」を参照

N

- NO_CONTROLオプション 1 , 2

- NUMBERデータ型 1

O

- オブジェクト権限

- Oracle Label Securityの権限 1

- トラステッド・ストアド・プログラム・ユニット 1 , 2

- OCI_ATTR_APPCTX_LIST 1

- OCI_ATTR_APPCTX_SIZE 1

- OCIAttrSet 1 , 2

- OCIインタフェース 1

- OCIParamGet 1

- OLS_DOMINATED_BYファンクション 1

- OLS_DOMINATESファンクション 1

- OLS_GLBDファンクション 1

- OLS_GREATEST_LBOUNDファンクション 1

- OLS_LABEL_DOMINATESファンクション

- 概要 1

- Database Vaultポリシー 1

- Data Redactionポリシー 1

- OLS_LEAST_UBOUNDファンクション 1

- OLS_LUBDファンクション 1

- OLS_STRICTLY_DOMINATED_BYファンクション 1

- OLS_STRICTLY_DOMINATESファンクション 1

- OptionsA 1

- Oracle Database Vault

- OLS_LABEL_DOMINATESファンクションの使用 1

- Oracle Data Redaction

- OLS_LABEL_DOMINATESファンクションの使用 1

- Oracle Enterprise Manager

- ラベルの管理 1

- Oracle Internet Directory

- スタンバイ・データベースへのスイッチオーバー後のOLSの構成 1

- OLSとの統合 1

- Oracle Data GuardでのOID 1

- Oracle Label Security

- 概要 1

- 管理者の責任 1

- データベースのブートストラップ 1

- 構成, 概要 1

- 構成, 権限 1

- 構成, 手順 1

- 統合される機能 1

- ポリシー管理者用PL/SQLプロシージャ 1

- ポリシー属性 1

- プロファイル, 概要 1

- プロビジョニング・プロファイル, 概要 1

- プロビジョニング・プロファイル, データベース接続情報の変更 1

- プロビジョニング・プロファイル, 管理 1

- データベースからのOID対応OLSの削除 1

- 新規データ・ラベル作成の制限 1

- セキュリティ・ロールと許可されるアクション 1

- ポリシーのサブスクライブ 1

- 置き換えられるPL/SQL文 1

- データベースとOIDの同期 1

- データベースの登録解除 1

- Oracle Label Security

- 概要 1

- メリット 1

- 使用に必要な権限 1

- 登録 1

- Oracle Label Security(OLS)

- Oracle Internet Directoryとの統合 1

- Oracle Label Securityのデータ・ディクショナリ・ビュー

- 概要 1

- ALL_SA_AUDIT_OPTIONS 1

- ALL_SA_COMPARTMENTS 1 , 2

- ALL_SA_DATA_LABELS 1 , 2

- ALL_SA_GROUPS 1 , 2

- ALL_SA_LABELS 1

- ALL_SA_LEVELS 1 , 2

- ALL_SA_POLICIES 1

- ALL_SA_PROG_PRIVS 1

- ALL_SA_SCHEMA_POLICIES 1

- ALL_SA_TABLE_POLICIES 1

- ALL_SA_USER_LABELS 1

- ALL_SA_USER_LEVELS 1

- ALL_SA_USER_PRIVS 1

- ALL_SA_USERS 1

- DBA_OLS_STATUS 1

- DBA_SA_AUDIT_OPTIONS 1

- DBA_SA_GROUP_HIERARCHY 1

- DBA_SA_LABELS 1

- DBA_SA_POLICIES 1

- DBA_SA_PROG_PRIVS 1

- DBA_SA_SCHEMA_POLICIES 1

- DBA_SA_TABLE_POLICIES 1

- DBA_SA_USER_COMPARTMENTS 1

- DBA_SA_USER_GROUPS 1

- DBA_SA_USER_LABELS 1

- DBA_SA_USER_LEVELS 1

- DBA_SA_USER_PRIVS 1

- DBA_SA_USERS 1

- ポリシー

- スキーマ・ポリシーに関する情報の検出 1

- USER_SA_SESSION 1

- Oracle Label Securityプロファイル 1

- ORDER BY句 1

P

- パッケージ

- Oracle Label Security 1

- SA_AUDIT_ADMIN 1

- SA_LABEL_ADMIN 1

- SA_POLICY_ADMIN 1

- SA_SESSION 1

- SA_SYSDBA 1

- SA_USER_ADMIN 1

- SA_UTL 1

- トラステッド・ストアド・プログラム・ユニット 1

- パーティション化 1 , 2

- PDB

- Oracle Label Security 1

- パフォーマンス、Oracle Label Security

- ANALYZEコマンド 1

- 索引 1

- ラベル・タグ方針 1

- パーティション化 1

- READ権限 1

- PL/SQL

- インポート用ラベルの再作成 1

- SA_UTLパッケージ 1 , 2

- トラステッド・ストアド・プログラム・ユニット 1

- プラガブル・データベース

- 「PDB」を参照

- ポリシー

- 作成について 1

- 強制時のガイドライン 1

- 強制オプション 1 , 2 , 3 , 4 , 5

- 現行ユーザーでの検出 1

- データベース全体での検出 1

- 表ポリシーに関する情報の検出 1

- プログラム・ユニットの権限の検出 1

- 複数 1 , 2

- OIDサブスクリプション 1

- OIDサブスクリプション解除 1

- 権限 1 , 2

- SA_POLICY_ADMIN.POLICY_SUBSCRIBEプロシージャ 1

- SA_POLICY_ADMIN.POLICY_UNSUBSCRIBEプロシージャ 1

- SA_POLICY_ADMINパッケージ 1

- ポリシー, スキーマ

- 変更 1

- 適用 1

- 削除 1

- 無効化 1

- 有効化 1

- SA_POLICY_ADMIN.ALTER_SCHEMA_POLICYプロシージャ 1

- SA_POLICY_ADMIN.APPLY_SCHEMA_POLICYプロシージャ 1

- SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICYポリシー 1

- SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICYプロシージャ 1

- ポリシー, スキーマ, 無効化

- SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICYプロシージャ 1

- ポリシー, 表

- 適用 1

- 削除 1

- 無効化 1

- 有効化 1

- SA_POLICY_ADMIN.APPLY_TABLE_POLICYプロシージャ 1

- SA_POLICY_ADMIN.DISABLE_TABLE_POLICYプロシージャ 1

- SA_POLICY_ADMIN.ENABLE_TABLE_POLICYプロシージャ 1

- SA_POLICY_ADMIN.REMOVE_TABLE_POLICYプロシージャ 1

- policy_DBAロール

- 概要 1

- policy_DBAロール・ユーザーの監査 1

- 使用方法 1

- Data Pumpインポート操作に必要 1

- ラベル管理に必要 1

- Oracle Label Security監査に必要 1

- SA_USER_ADMIN.SET_PROG_PRIVSプロシージャに必要 1

- SA_USER_ADMIN.SET_USER_PRIVSプロシージャに必要 1

- ポリシー・ラベル列

- 索引付け 1

- 概要 1 , 2

- 取出し 1

- 非表示の取出し 1

- ラベル・タグの格納 1 , 2

- ポリシー管理

- ポリシーの変更 1

- ポリシーの作成 1

- ポリシーの削除 1

- ポリシーの無効化 1

- ポリシーの有効化 1

- SA_SYSDBA.ALTER_POLICYプロシージャ 1

- SA_SYSDBA.CREATE_POLICYプロシージャ 1

- SA_SYSDBA.DISABLE_POLICYプロシージャ 1

- SA_SYSDBA.DROP_POLICYポリシー 1

- SA_SYSDBA.ENABLE_POLICYプロシージャ 1

- SA_SYSDBAパッケージ 1

- 述語

- アクセス調整 1

- エラー 1

- ラベル・タグのパフォーマンス方針 1

- 複数 1

- ポリシーでの使用 1

- 権限

- COMPACCESS 1

- FULL 1 , 2

- Oracle Label Security 1 , 2

- PROFILE_ACCESS 1

- プログラム・ユニット 1

- READ 1 , 2 , 3

- 行ラベル 1

- SA_USER_ADMIN.SET_USER_PRIVSプロシージャ 1

- トラステッド・ストアド・プログラム・ユニット 1

- WRITEACROSS 1 , 2

- WRITEDOWN 1 , 2

- WRITEUP 1 , 2

- PROFILE_ACCESS権限 1

- プログラム・ユニット

- ポリシー権限の検出 1

- 伝播 1

R

- RAC 1

- READ_CONTROLオプション

- アルゴリズム 1

- CHECK_CONTROL 1

- 子行 1

- 定義 1

- 参照整合性 1

- 他のオプション 1

- 述語 1

- 読取りアクセス

- アルゴリズム 1 , 2

- 概要 1

- リード・ダウン 1

- 読取りラベル 1

- READ権限 1 , 2 , 3

- Oracle Label Securityの再有効化 1

- 参照整合性 1 , 2 , 3

- Oracle Label Securityの登録 1

- 解放性 1

- リモート・ユーザー 1

- REPADMINアカウント 1 , 2

- レプリケーション

- マテリアライズド・ビュー(スナップショット) 1 , 2 , 3

- Oracle Label Security 1 , 2

- レプリケーション管理者 1

- 制限事項, Oracle Label Security 1

- 行ラベル

- デフォルト 1 , 2 , 3 , 4 , 5 , 6

- 例 1

- 現行の検出 1

- 分散環境 1

- 挿入 1

- LABEL_DEFAULTオプション 1 , 2

- 権限 1

- リストア 1

- SA_USER_ADMIN.SET_ROW_LABELプロシージャ 1

- SA_UTL.NUMERIC_ROW_LABELファンクション 1

- SA_UTL.SET_ROW_LABELプロシージャ 1

- デフォルトの保存 1

- 設定 1 , 2

- 区分の設定 1

- 現行データベース・セッションに対する設定 1

- ユーザーの初期使用に対する設定 1

- グループの設定 1

- レベルの設定 1

- 理解 1

- 更新 1

- 表示 1

S

- SA_AUDIT_ADMIN

- プロシージャ, リスト 1

- SA_AUDIT_ADMIN.AUDIT_LABEL_ENABLEDプロシージャ 1

- SA_AUDIT_ADMIN.AUDIT_LABELプロシージャ 1

- SA_AUDIT_ADMIN.AUDITプロシージャ 1

- SA_AUDIT_ADMIN.CREATE_VIEWプロシージャ 1

- SA_AUDIT_ADMIN.DROP_VIEWプロシージャ 1

- SA_AUDIT_ADMIN.NOAUDIT_LABELプロシージャ 1

- SA_AUDIT_ADMIN.NOAUDITプロシージャ 1

- SA_AUDIT_ADMIN PL/SQLパッケージ

- 概要 1

- SA_COMPONENTS.ALTER_COMPARTMENTプロシージャ 1

- SA_COMPONENTS.ALTER_GROUP_PARENTプロシージャ 1

- SA_COMPONENTS.ALTER_GROUPプロシージャ 1

- SA_COMPONENTS.ALTER_LEVELプロシージャ 1

- SA_COMPONENTS.CREATE_COMPARTMENTプロシージャ 1

- SA_COMPONENTS.CREATE_GROUPプロシージャ 1

- SA_COMPONENTS.CREATE_LEVELプロシージャ 1

- SA_COMPONENTS.DROP_COMPARTMENTプロシージャ 1

- SA_COMPONENTS.DROP_GROUPプロシージャ 1

- SA_COMPONENTS.DROP_LEVELプロシージャ 1

- SA_LABEL_ADMIN

- プロシージャ, リスト 1

- SA_LABEL_ADMIN.ALTER_LABELプロシージャ 1

- SA_LABEL_ADMIN.CREATE_LABELプロシージャ 1

- SA_LABEL_ADMIN.DROP_LABELプロシージャ 1

- SA_LABEL_ADMIN PL/SQLパッケージ

- 概要 1

- SA_POLICY_ADMIN

- プロシージャ, リスト 1

- SA_POLICY_ADMIN.ALTER_SCHEMA_POLICYプロシージャ 1

- SA_POLICY_ADMIN.APPLY_SCHEMA_POLICYプロシージャ 1

- SA_POLICY_ADMIN.APPLY_TABLE_POLICYプロシージャ 1

- SA_POLICY_ADMIN.DISABLE_SCHEMA_POLICYプロシージャ 1

- SA_POLICY_ADMIN.DISABLE_TABLE_POLICYプロシージャ 1

- SA_POLICY_ADMIN.ENABLE_SCHEMA_POLICYプロシージャ 1

- SA_POLICY_ADMIN.ENABLE_TABLE_POLICYプロシージャ 1

- SA_POLICY_ADMIN.POLICY_SUBSCRIBEプロシージャ 1

- SA_POLICY_ADMIN.POLICY_UNSUBSCRIBEプロシージャ 1

- SA_POLICY_ADMIN.REMOVE_SCHEMA_POLICYプロシージャ 1

- SA_POLICY_ADMIN.REMOVE_TABLE_POLICYプロシージャ 1

- SA_POLICY_ADMIN PL/SQLパッケージ

- 概要 1

- SA_SESSION

- プロシージャおよびファンクション, リスト 1

- SA_SESSION.COMP_READファンクション 1

- SA_SESSION.COMP_WRITEファンクション 1

- SA_SESSION.GROUP_READファンクション 1

- SA_SESSION.GROUP_WRITEファンクション 1

- SA_SESSION.LABELファンクション 1

- SA_SESSION.MAX_LEVELファンクション 1

- SA_SESSION.MAX_READ_LABELファンクション 1

- SA_SESSION.MAX_WRITE_LABELファンクション 1

- SA_SESSION.MIN_LEVELファンクション 1

- SA_SESSION.MIN_WRITE_LABELファンクション 1

- SA_SESSION.PRIVSファンクション 1

- SA_SESSION.RESTORE_DEFAULT_LABELSプロシージャ 1

- SA_SESSION.ROW_LABELファンクション 1

- SA_SESSION.SA_USER_NAMEファンクション 1

- SA_SESSION.SAVE_DEFAULT_LABELSプロシージャ 1

- SA_SESSION.SET_ACCESS_PROFILEプロシージャ 1 , 2

- SA_SESSION.SET_LABELプロシージャ

- SA_SESSION.RESTORE_DEFAULT_LABELS 1

- SA_SESSION.SET_ROW_LABELプロシージャ 1

- SA_SESSION PL/SQLパッケージ

- 概要 1

- SA_SYSDBA

- プロシージャ, リスト 1

- SA_SYSDBA.ALTER_POLICYプロシージャ 1

- SA_SYSDBA.CREATE_POLICYプロシージャ 1

- SA_SYSDBA.DISABLE_POLICYプロシージャ 1

- SA_SYSDBA.DROP_POLICYプロシージャ 1

- SA_SYSDBA.ENABLE_POLICYプロシージャ 1

- SA_SYSDBA PL/SQLパッケージ

- 概要 1

- SA_USER_ADMIN.ADD_COMPARTMENTSプロシージャ 1

- SA_USER_ADMIN.ADD_GROUPSプロシージャ 1

- SA_USER_ADMIN.ALTER_COMPARTMENTSプロシージャ 1

- SA_USER_ADMIN.ALTER_GROUPSプロシージャ 1

- SA_USER_ADMIN.DROP_ALL_COMPARTMENTSプロシージャ 1

- SA_USER_ADMIN.DROP_ALL_GROUPSプロシージャ 1

- SA_USER_ADMIN.DROP_COMPARTMENTSプロシージャ 1

- SA_USER_ADMIN.DROP_GROUPSプロシージャ 1

- SA_USER_ADMIN.DROP_USER_ACCESSプロシージャ 1

- SA_USER_ADMIN.SET_COMPARTMENTSプロシージャ 1

- SA_USER_ADMIN.SET_DEFAULT_LABELプロシージャ 1

- SA_USER_ADMIN.SET_GROUPSプロシージャ 1

- SA_USER_ADMIN.SET_LEVELSプロシージャ 1

- SA_USER_ADMIN.SET_ROW_LABELプロシージャ 1

- SA_USER_ADMIN.SET_USER_LABELSプロシージャ 1

- SA_USER_ADMIN.SET_USER_PRIVSプロシージャ 1

- SA_USER_ADMINパッケージ

- ストアド・プログラム・ユニットの管理 1

- 概要 1

- プロシージャ, リスト 1

- SA_USER_ADMIN PL/SQLパッケージ

- 概要 1

- SA_UTL.CHECK_LABEL_CHANGEファンクション 1

- SA_UTL.CHECK_READファンクション 1

- SA_UTL.CHECK_WRITEファンクション 1

- SA_UTL.DATA_LABELファンクション 1

- SA_UTL.GREATEST_LBOUNDファンクション 1

- SA_UTL.LEAST_UBOUNDファンクション 1

- SA_UTL.NUMERIC_LABELファンクション 1

- SA_UTL.NUMERIC_ROW_LABELファンクション 1

- SA_UTL.SET_LABELプロシージャ 1

- SA_UTL.SET_ROW_LABELプロシージャ 1

- SA_UTLパッケージ

- 支配ファンクション 1

- 概要 1

- プロシージャおよびファンクション, リスト 1

- SA_UTL PL/SQLパッケージ

- 概要 1

- スキーマ

- ポリシーの適用 1 , 2

- デフォルトのポリシー・オプション 1

- 共有の制限 1

- セッション・ラベル

- 変更 1

- 計算される 1

- 分散データベース 1

- 例 1

- 検出 1

- OCIインタフェース 1

- デフォルトへのリストア 1

- SA_UTL.SET_LABEL 1

- デフォルトの保存 1

- 区分の設定 1

- グループの設定 1

- ユーザーの初期の設定 1

- 理解 1

- セッション

- ユーザーが読み取ることのできる区分 1

- ユーザーが書き込むことのできる区分 1

- 現行のOLSユーザーの検出 1

- 行ラベルの検出 1

- セキュリティ属性の検出 1

- セッション・ラベル番号の検出 1

- セッション権限の検出 1

- SA_SESSION.COMP_READファンクション 1

- SA_SESSION.COMP_WRITEファンクション 1

- SA_SESSION.GROUP_READファンクション 1

- SA_SESSION.GROUP_WRITEファンクション 1

- SA_SESSION.LABELファンクション 1

- SA_SESSION.MAX_LEVELファンクション 1

- SA_SESSION.MAX_READ_LABELファンクション 1

- SA_SESSION.MAX_WRITE_LABELファンクション 1

- SA_SESSION.MIN_LEVELファンクション 1

- SA_SESSION.MIN_WRITE_LABELファンクション 1

- SA_SESSION.PRIVS 1

- SA_SESSION.RESTORE_DEFAULT_LABELSプロシージャ 1

- SA_SESSION.ROW_LABELファンクション 1

- SA_SESSION.SA_USER_NAMEファンクション 1

- SA_SESSION.SAVE_DEFAULT_LABELSプロシージャ 1

- SA_SESSION.SET_ACCESS_PROFILEプロシージャ 1

- SA_SESSION.SET_LABELプロシージャ 1

- SA_SESSIONパッケージ 1

- SA_USER_ADMIN.SET_COMPARTMENTSプロシージャ 1

- SA_USER_ADMIN.SET_DEFAULT_LABELプロシージャ 1

- SA_USER_ADMIN.SET_LEVELSプロシージャ 1

- SA_UTL.SET_LABELプロシージャ 1

- SA_UTL.SET_ROW_LABELプロシージャ 1

- デフォルトのセッション・ラベルの保存 1

- ラベルの設定 1

- ユーザーのOLS権限の設定 1

- 行ラベルの設定 1

- SET_ACCESS_PROFILEプロシージャ 1

- SET_DEFAULT_LABELプロシージャ

- インバース・グループ 1 , 2

- SET_GROUPSプロシージャ

- インバース・グループ 1

- SET_LABELプロシージャ

- 定義 1

- インバース・グループ 1 , 2

- リモート・データベース 1

- SET_PROG_PRIVSファンクション 1

- SET_ROW_LABELプロシージャ

- インバース・グループ 1 , 2 , 3 , 4

- SET_USER_LABELSプロシージャ

- インバース・グループ 1

- データベース・セッションのラベルの設定 1

- 共有スキーマの制限 1

- SQL*Loader 1

- STRICTLY_DOMINATED_BYファンクション 1

- STRICTLY_DOMINATESファンクション 1

- SYS_CONTEXT

- ラベル付けファンクション 1

- 変数 1

- SYSアカウント

- ポリシーの強制 1

- SYSDBA権限 1

- システム権限 1 , 2 , 3

T

- 表の行

- ユーザーが読み取ることができるかどうかの確認 1

- ユーザーが書き込むことができるかどうかの確認 1

- SA_UTL.CHECK_READファンクション 1

- SA_UTL.CHECK_WRITEファンクション 1

- TO_DATA_LABELファンクション 1 , 2

- TO_LBAC_DATA_LABELファンクション 1

- TO_LBAC_DATA_LABELファンクション, 使用例 1

- トリガー 1

- トラステッド・プログラム・ユニット

- 概要 1

- トラステッド・ストアド・プログラム・ユニット

- 作成 1

- エラー処理 1

- 例 1

- 実行 1

- 概要 1

- 権限 1 , 2

- 再コンパイル 1

- 置換 1

U

- 統合監査証跡 1

- UPDATE_CONTROLオプション 1 , 2

- ラベル付きデータの更新 1

- USER_SA_SESSIONビュー 1

- ユーザー認証

- 区分に対する追加 1

- グループに対する追加 1

- 区分に対する変更 1

- グループに対する変更 1

- 区分 1 , 2

- すべての区分に対する削除 1

- すべてのグループに対する削除 1

- 指定したグループに対する削除 1

- グループ 1 , 2

- レベル 1 , 2

- ユーザーからのすべてのOLS権限の削除 1

- 行ラベル

- デフォルト 1

- SA_USER_ADMIN.SET_USER_PRIVSプロシージャ 1

- 理解 1 , 2

- ユーザー

- ラベル固有情報の検出 1

- レベル固有情報の検出 1

- ポリシー固有の権限の検出 1

- OLSユーザーの権限の検出 1

- LBACSYSデフォルト・ユーザー・アカウント 1

- ユーティリティ

- SA_UTLパッケージ 1

V

- ビュー

- アクセス調整 1

- ALL_SA_AUDIT_OPTIONS 1

- ALL_SA_COMPARTMENTS 1

- ALL_SA_GROUPS 1

- ALL_SA_LABELS 1 , 2

- ALL_SA_LEVELS 1

- ALL_SA_POLICIES 1

- ALL_SA_PROG_PRIVS 1

- ALL_SA_SCHEMA_POLICIES 1

- ALL_SA_TABLE_POLICIES 1

- ALL_SA_USER_LABELS 1

- ALL_SA_USER_LEVELS 1

- ALL_SA_USER_PRIVS 1

- ALL_SA_USERS 1

- DBA_OLS_STATUS 1

- DBA_SA_AUDIT_OPTIONS 1

- DBA_SA_COMPARTMENTS 1

- DBA_SA_DATA_LABELS 1

- DBA_SA_GROUP_HIERARCHY 1

- DBA_SA_GROUPS 1

- DBA_SA_LABELS 1

- DBA_SA_LEVELS 1

- DBA_SA_POLICIES 1

- DBA_SA_PROG_PRIVS 1

- DBA_SA_SCHEMA_POLICIES 1 , 2

- DBA_SA_TABLE_POLICIES 1 , 2

- DBA_SA_USER_COMPARTMENTS 1

- DBA_SA_USER_GROUPS 1

- DBA_SA_USER_LABELS 1

- DBA_SA_USER_LEVELS 1

- DBA_SA_USER_PRIVS 1

- DBA_SA_USERS 1

W

- WRITE_CONTROLオプション

- アルゴリズム 1

- 定義 1

- 概要 1

- LABEL_UPDATE 1

- INSERT, UPDATE, DELETE 1

- 他のオプション 1

- 書込みアクセス

- アルゴリズム 1 , 2

- 概要 1

- WRITEACROSS権限 1 , 2 , 3 , 4

- WRITEDOWN権限 1 , 2 , 3 , 4

- 書込みラベル 1

- WRITEUP権限 1 , 2

Oracleの法律上の注意点

コピーライト

Copyright © 1994-2017, Oracle and/or its affiliates. All rights reserved.

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクルまでご連絡ください。

制限付権利について

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、Oracle Corporationおよびその関連会社は一切の責任を負いかねます。

商標と登録商標について

OracleおよびJavaはオラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

Pre-General Availability (一般提供前)版のドキュメントについて

このドキュメントがPre-General Availability (一般提供前)版の場合:

このドキュメントはPre-General Availability (一般提供前)版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のPre-General Availability (一般提供前)版のドキュメントについて

このドキュメントが非公開のPre-General Availability (一般提供前)版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のPre-General Availability Trial Agreement (Pre-GAトライアル契約)のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle Partner Network Agreement、Oracle Distribution Agreementまたはその他のライセンス契約の条件に従うものとします。このドキュメントとその内容の開示、コピー、複製および配布には、オラクルによる事前の承諾を必要とします。このドキュメントはライセンス契約の一部となるものではなく、オラクルおよびその子会社や関連会社との契約を構成するものではありません。

ドキュメントのアクセシビリティ

オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info)か、聴覚に障害のあるお客様は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。