Oracle® Database

2日でセキュリティ・ガイド

12c リリース2 (12.1)

B71287-07(原本部品番号:E17609-26)

2017年6月

Oracle Database 2日でセキュリティ・ガイド, 12c リリース2 (12.1)

B71287-07

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

原本著者: Patricia Huey

協力者: Todd Bottger、Naveen Gopal、Peter Knaggs、Rahil Mir、Gopal Mulagund、Paul Needham、Deborah Owens、Sachin Sonawane、Kamal Tbeileh、Mark Townsend、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)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

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およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

表一覧

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

はじめに

- 対象読者

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

- 関連ドキュメント

- 表記規則

『Oracle Database 2日でセキュリティ・ガイド』のこのリリースでの変更点

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

- 新機能

- 透過的データ暗号化およびその他のデータベース・コンポーネントの鍵の管理

- Oracle Database Vaultの拡張

- 機密データへのアクセスを制限するOracle Data Redaction

- Oracle Label Securityの有効化/無効化方法の簡素化

- 監査の拡張

- 非推奨となった機能

- サポート対象外機能

- その他の変更

- Oracle Enterprise Manager Cloud Control (Cloud Control)のGraphical User Interface

1 Oracle Databaseセキュリティの概要

- このガイドについて

- このマニュアルを使用する前に

- このマニュアルの対象および対象外

- 一般的なデータベース・セキュリティ・タスク

- データベースを保護するためのツール

- データベースの保護: ロードマップ

2 データベースのインストール環境と構成の保護

- データベースのインストール環境と構成の保護について

- Oracle Databaseインストールへのアクセスの保護

- デフォルトのセキュリティ設定

- Oracleデータ・ディクショナリのセキュリティ

- Oracleデータ・ディクショナリについて

- データ・ディクショナリ保護の有効化

- インストール環境と構成のセキュリティに使用される初期化パラメータ

- 初期化パラメータ値の変更

- ネットワークのセキュリティ

- ネットワークの保護について

- ネットワーク暗号化を使用したネットワーク上のデータの保護

- ネットワーク暗号化について

- ネットワーク暗号化の設定

- ネットワーク・セキュリティに使用される初期化パラメータ

- ユーザー・アカウントの保護

- Oracle Databaseユーザー・アカウントの保護について

- Oracle Databaseから提供される事前定義されるユーザー・アカウント

- 事前定義された管理アカウント

- 事前定義された非管理ユーザー・アカウント

- 事前定義されたサンプル・スキーマ・ユーザー・アカウント

- データベース・アカウントの期限切れおよびロック

- パスワードの作成要件

- デフォルト・パスワードの検索および変更

- デフォルト・パスワードの検出および変更について

- デフォルト・パスワードのSQL*Plusからの検出および変更

- デフォルト・パスワードのEnterprise Managerからの検出および変更

- ユーザー・アカウントの保護に使用されるパラメータ

3 ユーザー権限の管理

- 権限管理について

- ユーザーに権限を付与する場合

- ユーザーにロールを付与する場合

- セキュア・アプリケーション・ロールによるアプリケーション・アクセスの制御

- セキュア・アプリケーション・ロールについて

- チュートリアル: セキュア・アプリケーション・ロールの作成

- 手順1: このチュートリアルで使用するユーザー・アカウントを作成する

- 手順2: セキュリティ管理者アカウントを作成する

- 手順3: 参照ビューを作成する

- 手順4: PL/SQLプロシージャを作成してセキュア・アプリケーション・ロールを設定する

- 手順5: セキュア・アプリケーション・ロールを作成する

- 手順6: EMP_ROLEロールへのOE.ORDERS表に対するSELECTの付与

- 手順7: MatthewとWinstonにこのプロシージャのEXECUTE権限を付与する

- 手順8: EMP_ROLEセキュア・アプリケーション・ロールのテスト

- emp_roleセキュア・アプリケーション・ロールをユーザーMWEISSとしてテストする

- emp_roleセキュア・アプリケーション・ロールをユーザーWTAYLORとしてテストする

- 手順9: このチュートリアルで使用したコンポーネントを削除する(オプション)

- 権限セキュリティに使用される初期化パラメータ

4 Oracle Transparent Data Encryptionを使用したデータの暗号化

- 機密データの暗号化について

- データを暗号化するタイミング

- 透過的データ暗号化の動作

- 透過的データ暗号化を使用するためのデータの構成

- 手順1: キーストアの場所の構成

- 手順2: COMPATIBLE初期化パラメータ設定の確認

- 手順3: パスワードベースのソフトウェア・キーストアの作成

- 手順4: キーストアを開く(または閉じる)

- キーストアを開く

- キーストアを閉じる

- 手順5: マスター暗号化鍵の作成

- 手順6: データの暗号化

- 表の個々の列の暗号化

- 表領域の暗号化

- 既存の暗号化データのチェック

- 作成されたキーストアのタイプの確認

- キーストアの場所の確認

- キーストアが開いているか閉じているかの確認

- 個々の表の暗号化されている列のチェック

- 現行のデータベース・インスタンスで暗号化されているすべての表列のチェック

- 現行のデータベース・インスタンスで暗号化されている表領域のチェックのためのデータ・ディクショナリ・ビュー

5 Oracle Database Vaultを使用したアクセスの制御

- Oracle Database Vaultについて

- チュートリアル: ユーザー・スキーマへの管理者アクセスの制御

- 手順1: Oracle Database Vaultを有効にする

- 手順2: OE.CUSTOMERS表に対するSELECTをユーザーSCOTTに付与する

- Oracle Database Vaultに対するユーザーSCOTTの有効化

- ユーザーSCOTTへのOE.CUSTOMERS表に対するSELECT権限の付与

- 手順3: ユーザーSYSおよびSCOTTとしてOE.CUSTOMERS表から選択を行う

- 手順4: OE.CUSTOMERS表を保護するためにレルムを作成する

- 手順5: OE Protectionsレルムをテストする

- 手順6: このチュートリアルで使用したコンポーネントを削除する(オプション)

- OE保護レルムの削除

- ユーザーSCOTTのOE.CUSTOMERSに対するSELECT権限の取消し

- Oracle Database VaultおよびOracle Label Securityの無効化

6 Oracle Virtual Private Databaseを使用したアクセスの制限

- Oracle Virtual Private Databaseについて

- チュートリアル: 問合せを行うユーザーに基づいたデータへのアクセスの制限

- 問合せを行うユーザーに基づいたデータへのアクセスの制限について

- 手順1: このチュートリアルで使用するユーザー・アカウントを作成する

- 手順2: 必要に応じてセキュリティ管理者アカウントを作成する

- 手順3: セキュリティ管理者アカウントを更新する

- 手順4: F_POLICY_ORDERSポリシーのファンクションを作成する

- 手順5: ACCESSCONTROL_ORDERS仮想プライベート・データベース・ポリシーを作成する

- 手順6: ACCESSCONTROL_ORDERS仮想プライベート・データベース・ポリシーをテストする

- 手順7: このチュートリアルで使用したコンポーネントを削除する(オプション)

- sec_adminによって作成されたデータ構造の削除

- ユーザー・アカウントの削除

- ユーザーsec_adminのDBMS_RLSに対する権限の取消し

7 Oracle Data Redactionを使用した機密データへのアクセスの制限

- Oracle Data Redactionについて

- チュートリアル: 選択したユーザーのグループに対するデータのリダクション

- 選択したユーザー・グループに対するデータ・リダクションについて

- 手順1: ユーザー・アカウントの作成および必要な権限の付与

- 手順2: SALES_OPPS販売機会表の作成とデータの移入

- 手順3: SALES_OPPS_POL Oracle Data Redactionポリシーの作成

- 手順5: SALES_OPPS_POL Oracle Data Redactionポリシーのテスト

- 手順6: このチュートリアルで使用したコンポーネントを削除する(オプション)

8 Oracle Label Securityによる行レベルのセキュリティの強制

- Oracle Label Securityについて

- 仮想プライベート・データベース、Oracle Label Security、データ・リダクション間の相違点

- Oracle Label Securityのポリシー計画のガイドライン

- チュートリアル: ユーザーに基づいた表データへのアクセスのレベルの作成

- ユーザーに基づいた表データへのアクセス・レベルの作成について

- 手順1: Oracle Label Securityの有効化

- 手順2: LBACSYSアカウントの有効化

- 手順3: Oracle Label Securityのチュートリアルで使用する1つのロールおよび3人のユーザーを作成する

- ロールの作成

- Oracle Label Securityユーザーの作成

- 手順4: Oracle Label SecurityのACCESS_LOCATIONSポリシーを作成する

- 手順5: ACCESS_LOCATIONSポリシーのレベル・コンポーネントを定義する

- 手順6: ACCESS_LOCATIONSポリシーのデータ・ラベルを作成する

- 手順7: ACCESS_LOCATIONSポリシーのユーザー認可を作成する

- 手順8: HR.LOCATIONS表にACCESS_LOCATIONSポリシーを適用する

- 手順9: HR.LOCATIONSデータにACCESS_LOCATIONSラベルを追加する

- HR.LOCATIONS表に対するHR FULLポリシー権限の付与

- HR.LOCATIONSのOLS_COLUMN表の更新

- 手順10: ACCESS_LOCATIONSポリシーをテストする

- 手順11: このチュートリアルで使用したコンポーネントを削除する(オプション)

9 データベース・アクティビティの監査

- 監査の概要

- 監査の使用目的

- チュートリアル: 統合監査ポリシーの作成

- 手順1: 統合監査の有効化(必要に応じて)

- 手順2: SEC_ADMINユーザーへのAUDIT_ADMINロールの付与

- 手順3: 統合監査ポリシーの作成と有効化

- 手順4: 統合監査ポリシーのテスト

- 手順5: このチュートリアルで使用したコンポーネントを削除する(オプション)

- 手順6: SEC_ADMINセキュリティ管理者アカウントの削除(オプション)

索引

表一覧

- 2-1 初期化パラメータとプロファイル・パラメータのデフォルトのセキュリティ設定

- 2-2 インストール環境と構成のセキュリティに使用される初期化パラメータ

- 2-3 ネットワーク・セキュリティに使用される初期化パラメータ

- 2-4 事前定義されたOracle Databaseの管理ユーザー・アカウント

- 2-5 事前定義されたOracle Databaseの非管理ユーザー・アカウント

- 2-6 デフォルトのサンプル・スキーマ・ユーザー・アカウント

- 2-7 ユーザー・アカウント・セキュリティに使用される初期化パラメータおよびプロファイル・パラメータ

- 3-1 権限セキュリティに使用される初期化パラメータ

- 4-1 暗号化されている表領域のデータ・ディクショナリ・ビュー

- 8-1 Virtual Private Database、Label SecurityおよびData Redactionの比較

はじめに

『Oracle Database 2日でセキュリティ・ガイド』へようこそ。このマニュアルは、Oracle Databaseを使用して日常的なセキュリティ・タスクを実行するユーザーを対象としています。

トピック:

- 対象読者

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

- 関連ドキュメント

- 表記規則

対象読者

『Oracle Database 2日でセキュリティ・ガイド』では、デフォルトのデータベースでのセキュリティ設定の概要を示します。

『Oracle Database 2日でセキュリティ・ガイド』では、Oracle Databaseのセキュリティを管理するために『Oracle Database 2日でデータベース管理者』で習得したセキュリティの知識についてさらに詳しく説明します。このマニュアルの内容はすべてのプラットフォームに適用されます。プラットフォーム固有の情報については、ご使用のプラットフォームのインストレーション・ガイド、構成ガイドおよびプラットフォーム・ガイドを参照してください。

このマニュアルは次のユーザーを対象としています。

- データベース・セキュリティ管理者のスキルを習得する必要があるOracle Database管理者

- セキュリティ管理に関する知識はあるが、Oracle Databaseの使用は初めてのデータベース管理者

このマニュアルでは、セキュリティに関して包括的には説明しません。セキュリティの詳細は、Oracle Databaseセキュリティに関するドキュメント・セットを参照してください。このマニュアルでは、Oracle E-Business Suiteアプリケーションのセキュリティについては説明しません。Oracle E-Business Suiteアプリケーションのセキュリティについては、Oracle E-Business Suite製品のドキュメントを参照してください。

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

Oracleのアクセシビリティへの取り組みについては、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)にアクセスしてください。

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 Technology Network (OTN)およびMy Oracle Supportで他のセキュリティ関連ドキュメントを参照してください。

Oracle Databaseのマニュアル

セキュリティ関連の情報については、Oracle Databaseのドキュメント・セットの次のマニュアルを参照してください。

- 『Oracle Database 2日でデータベース管理者』

- Oracle Database管理者ガイド

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

- 『Oracle Database概要』

- 『Oracle Databaseリファレンス』

- 『Oracle Database Vault管理者ガイド』

このマニュアルの多くの例では、Oracleをインストールするときにデフォルトでインストールされるシード・データベースのサンプル・スキーマを使用しています。これらのスキーマの作成方法および使用方法については、『Oracle Databaseサンプル・スキーマ』を参照してください。

Oracle Technology Network Japan(OTN)

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

次のURLにアクセスしてください。

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

セキュリティ固有の情報は、次の場所を参照してください。

http://www.oracle.com/technetwork/topics/security/whatsnew/index.html

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

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

My Oracle Support(以前のOracleMetaLink)

セキュリティ・パッチ、動作保証およびサポート・ナレッジ・ベースについては、次の場所にあるMy Oracle Supportを参照してください

https://support.oracle.com

表記規則

このマニュアルでは、標準のOracle Databaseドキュメントの表記規則を使用しています。

規則

意味

太字

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

イタリック

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

固定幅フォント

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

『Oracle Database 2日でセキュリティ・ガイド』のこのリリースでの変更点

『Oracle Database 2日でセキュリティ・ガイド』には、透過的データ暗号化、Oracle Database Vault、Oracle Data Redaction、Oracle Label Securityおよび監査に影響を与える更新が含まれています。

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

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

Oracle Database 12c リリース1 (12.1)の『Oracle Database 2日でセキュリティ・ガイド』の変更点は次のとおりです。

- 新機能

- 非推奨となった機能

- サポート対象外機能

- その他の変更

新機能

このマニュアルでは、いくつかの新機能について説明します。

トピック:

- 透過的データ暗号化およびその他のデータベース・コンポーネントの鍵の管理

- Oracle Database Vaultの拡張

- 機密データへのアクセスを制限するOracle Data Redaction

- Oracle Label Securityの有効化/無効化方法の簡素化

- 監査機能の拡張

透過的データ暗号化およびその他のデータベース・コンポーネントの鍵の管理

Oracle Database 12c リリース1 (12.1)では、透過的データ暗号化(TDE)およびその他のデータベース・コンポーネント用に統合鍵管理インフラストラクチャが導入されています。

これによって鍵管理タスクが簡単になり、コンプライアンスおよび追跡機能が向上するだけでなく、データベース管理者とセキュリティ管理者の職務分離性も向上します。セキュリティおよび職務分離性を向上させるには、TDEの構成を行うユーザーにSYSKMシステム権限が必要です。

「Oracle Transparent Data Encryptionを使用したデータの暗号化」 を参照してください。

Oracle Database Vaultの拡張

このリリースでは、Oracle Database Vaultに、このマニュアルに影響を与える2つの新しい拡張機能が提供されています。

- Database Vaultの有効化方法の簡素化。

- Enterprise Manager Cloud Controlの各ページでDatabase Vaultのすべての機能を利用できます。この機能は、前のリリースで使用されていたDatabase Vault Administratorユーティリティに置き換わるものです。

「Oracle Database Vaultを使用したアクセスの制御」 を参照してください。

機密データへのアクセスを制限するOracle Data Redaction

Oracle Data Redactionによって、権限の低いユーザーまたはアプリケーションからのデータが偽装(リダクト)されます。

たとえば、クレジット・カード番号5105 1051 0510 5100が5105 **** **** ****と表示されるようにリダクトできます。ユーザーがデータにアクセスし、そのデータでバックエンドの参照整合性制約が保持されれば、リダクションはリアルタイムで行われます。(このクレジット・カードの例のような)部分的なリダクションの他に、データ・セット全体を固定値やランダムな値に置き換えることもできます。また、Oracle Data Redactionポリシーを簡単にエンタープライズのデータベースに適用できます。

「Oracle Data Redactionを使用した機密データへのアクセスの制限」 を参照してください。

Oracle Label Securityの有効化/無効化方法の簡素化

「Oracle Label Securityによる行レベルのセキュリティの強制」 を参照してください。

監査機能の拡張

このリリースでは、多数の監査機能が強化され、そのうちの4つがこのマニュアルに影響を与えます。

- 統合監査証跡によって、デフォルトのデータベース・インストール、Oracle Database Vault、Oracle Label Security、Oracle Database Real Application Security、Oracle Recovery Manager、Oracle Data PumpおよびOracle SQL*Loader Direct Load Pathからの監査イベントを網羅できます。これらのイベントは、一連のデータ・ディクショナリ・ビューで統一された形式で使用可能です。

- 高速な監査パフォーマンス

- 具体的な統合監査ポリシーを作成できます。特定の条件で監査される一連のアクションを名前付きポリシーとしてグループ化することで、必要に応じて有効化したり無効化することが可能になり、監査構成が簡素化されます。これらのポリシーは、取得されるイベント・セットを定義します。

- 新規のロールAUDIT_ADMINおよびAUDIT_VIEWERによって、セキュリティおよび職務分離性が向上します。(このマニュアルでは、AUDIT_ADMINロールについてのみ説明します。)

「データベース・アクティビティの監査」を参照してください。

非推奨となった機能

Database Vault Administrator(DVA)は非推奨になりました。その機能は、Oracle Enterprise Manager Cloud Controlインタフェースの一部になっています。

サポート対象外機能

Oracle Enterprise Manager Database Controlは、Oracleではサポートされなくなりました。このリリースにおけるサポート対象外の機能の完全なリストは、『Oracle Databaseアップグレード・ガイド』を参照してください。

その他の変更

このリリースのその他の変更には、Oracle Enterprise Manager Cloud Control (Cloud Control)が含まれます。

トピック:

- Oracle Enterprise Manager Cloud Control (Cloud Control)のGraphical User Interface

Oracle Enterprise Manager Cloud Control (Cloud Control)のGraphical User Interface

前のリリースのOracle Databaseでは、Oracle Enterprise Manager Database Control (Database Control)を使用して、Graphical User Interfaceからデータベース・セキュリティを管理していました。

このリリースでは、Cloud ControlのGraphical User Interfaceを使用できます。Cloud Controlは、Database Controlに比べてより豊富な機能を備えています。

Cloud Controlは、Oracle Databaseとは別にインストールする必要があります。

関連項目:

Cloud Controlのインストールの詳細は、『Oracle Enterprise Manager Cloud Control基本インストレーション・ガイド』を参照してください。

1 Oracle Databaseセキュリティの概要

デフォルトのOracle Databaseインストールでは、様々な方法でセキュリティを管理できます。ユーザー認証の管理に加えて、暗号化、Oracle Database Vault、Oracle Virtual Private Database、Oracle Data Redaction、Oracle Label Securityおよび監査などの組込みツールを使用してセキュリティを管理できます。

トピック:

- このガイドについて

- 一般的なデータベース・セキュリティ・タスク

- データベースを保護するためのツール

- データベースの保護: ロードマップ

このガイドについて

このマニュアルでは、日常的なデータベース・セキュリティ・タスクの実行方法について説明します。

トピック:

- このマニュアルを使用する前に

- このマニュアルの対象および対象外

このマニュアルを使用する前に

このマニュアルを使用する前に、Oracleデータベースの管理の基本を理解する必要があります。

このマニュアルの目的は、Oracle Databaseのセキュリティの背後にある概念を理解することです。データベースの保護に必要な、一般的なセキュリティ・タスクの実行方法について学びます。このマニュアルで説明するタスクの完了時に得られる知識は、データの保護、および米国企業改革法(Sarbanes-Oxley Act)などの一般的なコンプライアンス要件の準拠に役立ちます。

このマニュアルで使用される主要な管理インタフェースはOracle Enterprise Managerで、Oracle Databaseで導入されたすべての自己管理機能を装備しています。

『Oracle Database 2日でデータベース管理者』を完了し、Oracle Database管理のためのしっかりとした基礎力を習得します。

「データベースを保護するためのツール」に記載された必須の製品とツールも入手する必要があります。

このマニュアルの対象および対象外

『Oracle Database 2日でセキュリティ・ガイド』は、タスク指向のマニュアルです。セキュリティ・タスクを実行する理由とタイミングについて説明することがこのマニュアルの目的です。

必要に応じて、タスクの理解および実行に必要な概要および手順について説明します。このマニュアルでは、Oracle Databaseのすべての概要を包括的には説明しません。包括的な概要については、『Oracle Database概要』を参照してください。

また、必要に応じて、セキュリティ・タスクを完了するために必要なOracle Databaseの管理手順についても説明します。Oracle Databaseの基本的な管理タスクについては説明しません。基本的な管理タスクについては、『Oracle Database 2日でデータベース管理者』を参照してください。また、管理タスクの詳細は、『Oracle Database管理者ガイド』を参照してください。

また、このマニュアルでは、Oracle Databaseのすべてのセキュリティ機能について包括的に説明しておらず、このマニュアルで使用されるツールと同等のコマンドライン機能を提供する使用可能なAPIについては説明していません。これについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。

一般的なデータベース・セキュリティ・タスク

Oracle Databaseのデータベース管理者は、一般的なセキュリティ関連タスクを担当します。

これらのタスクは次のとおりです。

- データベースのインストール環境と構成が保護されていることの確認

- セキュアなパスワード・ポリシーの開発、ロールの作成および割当て、当該ユーザーのみへのデータ・アクセスの制限などの、ユーザー・アカウントにおけるセキュリティ面の管理

- ネットワーク接続がセキュアであることの確認

- 機密データの暗号化

- データベースのセキュリティに脆弱性がなく、外部からの侵入を防止していることの確認

- 監査するデータベース・コンポーネントの決定と監査の粒度の決定

- セキュリティ・パッチのダウンロードとインストール

小中規模のデータベース環境では、これらのタスクのみでなく、Oracleソフトウェアのインストール、データベースの作成、パフォーマンスの監視など、データベース管理者の関連タスクも行う場合があります。大規模な企業環境では、タスクを複数のデータベース管理者で分担し、データベース・セキュリティやデータベースのチューニングなど、それぞれが専門のタスクを担当することがあります。

データベースを保護するためのツール

Oracleデータベースの保護という目標を達成するには、特定の製品、ツールおよびユーティリティのセットを使用する必要があります。

これらのツールは次のとおりです。

- Oracle Database 12c Enterprise Edition
Oracle Database 12c Enterprise Editionは、クラスタ構成および単一サーバー構成でのエンタープライズクラスのパフォーマンス、スケーラビリティおよび信頼性を提供します。このマニュアルで使用する多くのセキュリティ機能が搭載されています。

- Oracle Enterprise Manager
Oracle Enterprise Managerは、単一のデータベース・インスタンスまたはクラスタ・データベースに対して管理タスクを実行できるWebアプリケーションです。複数のOracle Databaseを1つの場所から管理できます。このガイドには、Enterprise Managerを使用してデータベース管理タスクを実行する方法が記載されています。

- SQL*Plus
SQL*Plusは、SQLおよびPL/SQLコードを作成し、実行できる開発環境です。これはOracle Database 12c リリース1 (12.1)のインストールの一部です。

- Database Configuration Assistant(DBCA)
Database Configuration Assistantを使用すると、データベースの作成、構成、削除など、データベースの一般的なタスクを実行できます。このマニュアルでは、DBCAを使用してデフォルト監査を有効にします。

- Oracle Net Manager
Oracle Net Managerを使用すると、Oracle Databaseでネットワーク関連のタスクを実行できます。このマニュアルでは、Oracle Net Managerを使用してネットワーク暗号化を設定します。

データベースの保護: ロードマップ

Oracleデータベースの保護の基本を学習するには、特定のタスクのロードマップに従う必要があります。

このマニュアルの使用手順:

1. Oracle Databaseのインストール環境と構成を保護します。
データベースのインストール環境と構成の保護のタスクを完了して、Oracle Databaseのインストール環境へのアクセスを保護します。

2. 権限の動作方法を理解します。
ユーザー権限の管理のタスクを完了します。次について学習します。

- 権限の動作方法

- 権限付与を慎重に行う必要がある理由

- データベース・ロールの動作方法

- セキュア・アプリケーション・ロールの作成方法

3. ネットワーク間を移動するデータを暗号化します。
「Oracle Transparent Data Encryptionを使用したデータの暗号化」のタスクを実行し、クライアント接続の保護とネットワーク暗号化の構成の方法について理解します。

4. Oracle Database Vaultを使用して機密データへのシステム管理アクセスを制御します。
「Oracle Database Vaultを使用したアクセスの制御」のタスクを完了します。

5. Oracle Virtual Private Databaseを使用してデータの表示を制限します。
「Oracle Virtual Private Databaseを使用したアクセスの制限」のタスクを完了します。

6. データ・リダクションを使用して、データの表示をリアルタイムで制御します。
「Oracle Data Redactionを使用した機密データへのアクセスの制限」のタスクを完了します。

7. Oracle Label Securityを使用して行レベルのセキュリティを強化します。
「Oracle Label Securityによる行レベルのセキュリティの強制」。

8. 監査を設定して、データベース・アクティビティを監視します。
データベース・アクティビティの監査のタスクを完了して、標準監査について習得します。

2 データベースのインストール環境と構成の保護

Oracle Databaseのインストール、使用するネットワーク、およびデータベース・ユーザー・アカウントを保護する必要があります。

トピック:

- データベースのインストール環境と構成の保護について

- Oracle Databaseインストールへのアクセスの保護

- ネットワークのセキュリティ

- ユーザー・アカウントの保護

関連項目:

- セキュリティの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

- セキュリティに関する重要なガイドラインは、『Oracle Databaseセキュリティ・ガイド』を参照してください。

データベースのインストール環境と構成の保護について

Oracle Databaseのインストール後、データベースのインストールおよび構成を保護する必要があります。

Oracleでは、データベースのインストールと構成を保護するための一般的な方法を提供し、これらのすべてはデータベース・ファイルの特定の領域への権限を制限します。

Oracle Databaseは、いくつかのオペレーティング・システムで使用できます。Oracle Databaseに関する詳細なプラットフォーム固有情報は、次のマニュアルを参照してください。

- 『Oracle Databaseプラットフォーム・ガイドfor Microsoft Windows』

- 『Oracle Database管理者リファレンス for Linux and UNIX-Based Operating Systems』

- 使用しているプラットフォームの『Oracle Databaseインストレーション・ガイド』

Oracle Databaseインストールへのアクセスの保護

Oracle Databaseでは、インストールを保護するのに役立つデフォルトのセキュリティ設定と初期化パラメータのセットが提供されています。さらに、データ・ディクショナリを保護する必要があります。

トピック:

- デフォルトのセキュリティ設定

- Oracleデータ・ディクショナリのセキュリティ

- インストール環境と構成のセキュリティに使用される初期化パラメータ

- 初期化パラメータ値の変更

デフォルトのセキュリティ設定

新しいデータベースを作成する場合、Oracle Databaseでは、デフォルトのセキュリティ設定のセットが提供されます。

これらのデフォルトのセキュリティ設定は次のとおりです。

- デフォルトの監査設定を有効にします。詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

- 新しいパスワードまたは変更したパスワードの厳しい制約を作成します。「パスワードの作成要件」に、新しいパスワードの要件が記載されています。

- PUBLICロールからCREATE EXTERNAL JOB権限を削除します。よりセキュリティを強化するために、CREATE EXTERNAL JOB権限をSYS、データベース管理者、およびこの権限が必要な信頼できるユーザーにのみ付与します。

- セキュリティ関連の初期化パラメータおよびプロファイル・パラメータを設定します。表2-1に、デフォルトのパラメータ設定を示します。

表2-1 初期化パラメータとプロファイル・パラメータのデフォルトのセキュリティ設定

設定

デフォルト

O7_DICTIONARY_ACCESSIBILITY

FALSE

PASSWORD_GRACE_TIME

7

PASSWORD_LOCK_TIME

1

FAILED_LOGIN_ATTEMPTS

10

PASSWORD_LIFE_TIME

180

PASSWORD_REUSE_MAX

UNLIMITED

PASSWORD_REUSE_TIME

UNLIMITED

REMOTE_OS_ROLES

FALSE

Oracleデータ・ディクショナリのセキュリティ

データ・ディクショナリを保護する必要があります。データ・ディクショナリは、スキーマ定義やデフォルト値など、データベースに関する情報を提供する一連のデータベース表です。

トピック:

- Oracleデータ・ディクショナリについて

- データ・ディクショナリ保護の有効化

Oracleデータ・ディクショナリについて

Oracleデータ・ディクショナリは、データベースに関する情報を提供するデータベース表のセットです。

データ・ディクショナリの内容は次のとおりです。

- Oracle Databaseユーザーの名前

- 各ユーザーに付与されている権限とロール

- データベース内のすべてのスキーマ・オブジェクトの定義(表、ビュー、索引、クラスタ、シノニム、順序、プロシージャ、ファンクション、パッケージ、トリガーなど)

- スキーマ・オブジェクトに割り当てられている容量と現在使用されている容量

- 列のデフォルト値

- 整合性制約の情報

- 様々なスキーマ・オブジェクトをアクセスまたは更新した人物などの監査情報

- その他の一般的なデータベース情報

ある特定のデータベースのデータ・ディクショナリ表およびビューは、そのデータベースのSYSTEM表領域に格納されます。ある特定のデータベースのデータ・ディクショナリ表およびビューは、すべてユーザーSYSによって所有されます。SYSDBA管理権限を使用してデータベースに接続すると、データ・ディクショナリに対する完全なアクセス権が付与されます。SYSDBA管理権限へのアクセスは、パッチ適用やその他の管理操作などの必要な操作のみに限定することをお薦めします。データ・ディクショナリは、すべてのOracle Databaseの中心です。

データ・ディクショナリの内容は、データ・ディクショナリ・ビューを問い合せることで参照できます(各ビューの説明はOracle Databaseリファレンスを参照)。ただし、データ・ディクショナリのすべてのオブジェクトがユーザーに公開されるわけではありません。データ・ディクショナリ・オブジェクトのサブセット(USER_で始まるオブジェクトなど)は、読取り専用としてすべてのデータベース・ユーザーに公開されます。

例2-1に、DICTIONARYビューを問い合せることでデータ・ディクショナリに固有のデータベース・ビューのリストを検索する方法を示します。

例2-1 データ・ディクショナリに関連するビューの検索

sqlplus system
Enter password: password

SQL> SELECT TABLE_NAME FROM DICTIONARY;

データ・ディクショナリ保護の有効化

O7_DICTIONARY_ACCESSIBILITY初期化パラメータをFALSEに設定することで、データ・ディクショナリを保護できます。

O7_DICTIONARY_ACCESSIBILITYパラメータは、ANYシステム権限を持つユーザーによる、データ・ディクショナリ(つまり、SYSスキーマのオブジェクト)に対するこれらの権限の使用を防止します。

Oracle Databaseでは非常に細かく権限を設定できます。そのような権限の1つは、一般にANY権限と呼ばれ、通常アプリケーション所有者および個々のデータベース管理者にのみ付与されます。たとえば、アプリケーション所有者にDROP ANY TABLE権限を付与する場合があります。O7_DICTIONARY_ACCESSIBILITY初期化パラメータをオンまたはオフにすることにより、ANY権限の偶然または悪意による使用からOracleデータ・ディクショナリを保護することができます。

データ・ディクショナリ保護を有効にするには、次のようにします。

1. データベースのホームページにアクセスします。
詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

2. 「管理」メニューの「初期化パラメータ」を選択します。
データベース・ログイン・ページが表示されたら、SYSDBAロールが選択されているSYSとしてログインします。

3. 初期化パラメータ・ページのリストでO7_DICTIONARY_ACCESSIBILITYを検索します。
「名前」フィールドでO7_(Oの文字)を入力し、「実行」をクリックします。パラメータ名の最初の数文字を入力できます。この場合、O7_によってO7_DICTIONARY_ACCESSIBILTYパラメータが表示されます。

4. O7_DICTIONARY_ACCESSIBILTYの値をFALSEに設定します。

5. 「適用」をクリックします。

6. Oracle Databaseインスタンスを再起動します。

sqlplus sys as sysdba
Enter password: password

SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP

注意:

- デフォルトのインストールでは、O7_DICTIONARY_ACCESSIBILITYパラメータはFALSEに設定されます。

- SELECT ANY DICTIONARY権限はGRANT ALL PRIVILEGES文では付与できませんが、ロールを介して付与できます。ロールの詳細は、「ユーザーにロールを付与する場合」および『Oracle Databaseセキュリティ・ガイド』を参照してください。

インストール環境と構成のセキュリティに使用される初期化パラメータ

Oracle Databaseでは、インストールと構成のセキュリティを設定するための初期化パラメータのセットが提供されています。

表2-2に、Oracle Databaseのインストールと構成の保護を強化するために設定できる初期化パラメータを示します。

表2-2 インストール環境と構成のセキュリティに使用される初期化パラメータ

初期化パラメータ

デフォルト設定

説明

SEC_RETURN_SERVER_RELEASE_BANNER

FALSE

リリース番号など、クライアント接続での製品バージョン情報の表示を制御します。侵入者は、データベース・リリース番号を使用して、データベース・ソフトウェアに存在するセキュリティ脆弱性に関する情報を検索できる場合があります。このパラメータを設定することで、詳細な製品バージョンの表示を有効または無効にできます。

このパラメータおよび類似パラメータの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。このパラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。

O7_DICTIONARY_ACCESSIBILITY

FALSE

SYSTEM権限に対する制限を制御します。このパラメータの詳細は、「データ・ディクショナリ保護の有効化」を参照してください。このパラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。

関連項目:

初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。

初期化パラメータ値の変更

初期化パラメータの値を変更するには、Enterprise Managerを使用できます。

使用可能な初期化パラメータの詳細は、Oracle Databaseリファレンスを参照してください。

初期化パラメータ値を変更するには、次のようにします。

1. データベースのホームページにアクセスします。
詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

2. 「管理」メニューの「初期化パラメータ」を選択します。
データベース・ログイン・ページが表示されたら、SYSDBAロールが選択されているSYSとしてログインします。

3. 初期化パラメータ・ページの「名前」フィールドに、変更するパラメータの名前を入力し、「実行」をクリックします。
たとえば、SEC_RETURN_SERVER_RELEASE_NUMBERパラメータを検索する場合は、SEC_RETURNと入力します。または、パラメータのリストを下にスクロールして、変更するパラメータを検索できます。テキストの大文字と小文字は区別されません。

4. 「値」フィールドで、新しい値を入力するか、リストが存在する場合はリストから選択します。

5. 「適用」をクリックします。

6. パラメータが静的な場合は、Oracle Databaseインスタンスを再起動します。

sqlplus sys as sysdba
Enter password: password

SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP

初期化パラメータが静的かどうかを調べるには、『Oracle Databaseリファレンス』の説明を確認してください。サマリー表の変更可能設定が「いいえ」の場合は、データベース・インスタンスを再起動する必要があります。

ネットワークのセキュリティ

データベース内のデータを保護するだけでなく、データベースからデータにアクセスしたりデータベースにデータを送信する方法も保護する必要があります。クライアント接続を保護し、クライアントとサーバー間のネットワークを通過するデータを暗号化(偽装)する方法が提供されています。

トピック:

- ネットワークの保護について

- ネットワーク暗号化を使用したネットワーク上のデータの保護

- ネットワーク・セキュリティに使用される初期化パラメータ

ネットワークの保護について

ネットワークを通過するデータを暗号化する場合は、Oracle Databaseのネットワーク接続を保護するためのガイドラインに従う必要があります。

『Oracle Database 2日でデータベース管理者』の「ネットワーク環境の構成」、および使用しているプラットフォームの『Oracle Databaseインストレーション・ガイド』の手順に従って、Oracle Databaseインストール環境へのクライアント接続を構成できます。

ネットワーク暗号化を使用したネットワーク上のデータの保護

情報は、データベース・レベルで暗号化して保護するだけでなく、ネットワークで送受信されるときにも保護する必要があります。

トピック:

- ネットワーク暗号化について

- ネットワーク暗号化の設定

ネットワーク暗号化について

ネットワーク暗号化とは、クライアントとサーバー間のネットワークを移動するデータを暗号化することです。

データベース・レベルだけでなく、ネットワーク・レベルでもデータを暗号化する必要があるのは、ネットワーク・レベルでデータが危険にさらされる可能性があるためです。たとえば、ネットワークを移動する情報がネットワーク・パケット・スニファを使用して傍受され、ファイルにスプールされて不正に使用される可能性があります。ネットワーク上のデータを暗号化することにより、このようなアクティビティを防止できます。

ネットワーク上のデータを暗号化するには、次のコンポーネントが必要です。

- 暗号化シード。暗号化シードは、最大256文字のランダムな文字列です。ネットワークを移動するデータを暗号化する暗号化鍵を生成します。

- 暗号化アルゴリズム。サポートされるアルゴリズムのタイプ(AES、RC4、DES、3DES)からいずれかを指定します。

- クライアントまたはサーバーに適用する設定。サーバーと、サーバーが接続する各クライアントを設定する必要があります。

- クライアントまたはサーバーが暗号化されたデータを処理する方法。サーバーとクライアントで、同じ設定を選択する必要があります(オプションが4つあります)。

- 暗号化を構成するためのメカニズム。 Oracle Net Managerを使用して暗号化を構成できます。または、sqlnet.ora構成ファイルを編集できます。Oracle Net Managerとsqlnet.oraはどちらもデフォルトのOracle Databaseインストール環境で使用できます。

ネットワーク暗号化の設定

Oracle Net Managerを使用するか、sqlnet.oraファイルを編集して、ネットワーク暗号化を設定できます。

ネットワーク暗号化を設定するには、次のようにします。

1. サーバー・コンピュータで、Oracle Net Managerを起動します。

- UNIX: $ORACLE_HOME/binから、次のコマンドラインを入力します。

netmgr

- Windows: 「スタート」メニューから「すべてのプログラム」をクリックします。次に、「Oracle - HOME_NAME」→「Configuration and Migration Tools」→「Net Manager」をクリックします

2. Oracle Net Configurationのナビゲーション・ツリーで、「ローカル」を拡張してから「プロファイル」を選択します。

3. リストから「ネットワーク・セキュリティ」を選択します。

4. 「ネットワーク・セキュリティ」で、「暗号化」タブを選択します。
「暗号化」設定ペインが表示されます。

5. 次の設定を入力します。

- 暗号化: リストから、SERVERを選択してサーバーのネットワーク暗号化を構成します。(クライアント・コンピュータの場合は「CLIENT」を選択します)。

- 暗号化タイプ: 次の値のいずれかを選択して、暗号化および完全性のネゴシエーションをするときのサーバー(またはクライアント)の動作を指定します。

- 適用: 一方の接続側で「必要」または「リクエスト」が指定されており、受信側のデータベースで矛盾のないアルゴリズムが使用可能になっている場合、サービスはアクティブになります。それ以外の場合、サービスはアクティブにはなりません。

- 拒否: サービスはアクティブにはなりません。一方の接続側でこのリストのいずれかのメソッドが必要な場合、接続は失敗します。

- リクエスト: 一方の接続側で「適用」、「必要」または「リクエスト」が指定されており、もう一方の接続側で矛盾のないアルゴリズムが使用可能になっている場合、サービスはアクティブになります。それ以外の場合、サービスはアクティブにはなりません。

- 必要: サービスはアクティブになります。一方の接続側で「拒否」が指定されている場合、または両立するアルゴリズムがない場合、接続は失敗します。

- 暗号化シード: 最大256文字のランダムな文字列を入力します。Oracle Databaseは暗号化シードを使用して暗号化キーを生成します。暗号化または完全性のいずれかが有効な場合は必須です。
暗号化シード・パラメータの一部にカンマ「,」、右括弧「)」などの特殊文字を使用する場合は、一重引用符で値を囲んでください。

- 使用可能なメソッド: 次のアルゴリズムから1つ以上を選択し、移動ボタン(>)を使用して「選択メソッド」リストに移動します。「選択メソッド」リストに表示される順番により、ネゴシエーションの優先順位が決まります。つまり、最初に表示されるアルゴリズムが最初に選択されます。

- AES256: Advanced Encryption Standard(AES)。AESはデータ暗号化規格(DES)にかわる暗号化規格として、米国標準技術局(National Institute of Standards and Technology: NIST)で認定されています。AES256を使用すると、256ビットのブロック・サイズを暗号化できます。

- RC4_256: Rivest Cipher 4 (RC4)。RC4は、Secure Sockets Layer (SSL)などのプロトコルを保護するために最も一般的に使用されるストリーム暗号です。RC4_256を使用すると、最大256ビットのデータを暗号化できます。

- AES192: AESを使用して192ビットのブロック・サイズを暗号化できます。

- 3DES168: 3キー・オプションによるTriple Data Encryption Standard (TDES)。3DES168を使用すると、最大168ビットのデータを暗号化できます。

- AES128: AESを使用して128ビットのブロック・サイズを暗号化できます。

- RC4_128: RC4を使用して最大128ビットのデータを暗号化できます。

- 3DES112: 2キー(112ビット)オプションによるトリプルDESを使用できます。

- DES: 56ビットのData Encryption Standard(DES)キーです。DESは、米国標準技術局(National Institute of Standards and Technology: NIST)の推奨対象ではなくなりました。

- RC4_40: RC4を使用して最大40ビットのデータを暗号化できます。(非推奨。)

- DES40: DESを使用して最大40ビットのデータを暗号化できます。(非推奨。)

6. 「ファイル」メニューから「ネットワーク構成の保存」を選択し、次に 「終了」を選択してOracle Net Managerを終了します。

7. サーバーに接続する各クライアント・コンピュータごとに、これらの手順を繰り返します。

関連項目:

- sqlnet.oraファイルのパラメータを変更してネットワーク暗号化を設定する詳細は、『Oracle Net Servicesリファレンス・ガイド』を参照してください。

ネットワーク・セキュリティに使用される初期化パラメータ

Oracle Databaseでは、ネットワーク・セキュリティを構成するための初期化パラメータのセットが提供されています。

表2-3に、ユーザー・アカウントを保護するために設定する初期化パラメータを示します。

表2-3 ネットワーク・セキュリティに使用される初期化パラメータ

初期化パラメータ

デフォルト設定

説明

OS_AUTHENT_PREFIX

OPS$

データベースへの接続を試行するユーザーを識別するためにOracle Databaseで使用される接頭辞を指定します。Oracle Databaseは、このパラメータの値をユーザーのオペレーティング・システム・アカウント名およびパスワードの先頭に連結します。ユーザーが接続リクエストを試行すると、Oracle Databaseは接頭辞の付いたユーザー名をデータベース内のユーザー名と比較します。

REMOTE_LISTENER

デフォルト設定なし

Oracle Netリモート・リスナー(つまり、このインスタンスと同じコンピュータで実行されていないリスナー)のアドレスまたはアドレス・リストを解決するネットワーク名を指定します。アドレスまたはアドレス・リストは、tnsnames.oraファイル、またはシステムで構成されているその他のアドレス・リポジトリで指定されます。

REMOTE_OS_AUTHENT

FALSE

リモート・クライアントがOS_AUTHENT_PREFIXパラメータの値で認証されるかどうかを指定します。

REMOTE_OS_ROLES

FALSE

オペレーティング・システム・ロールがリモート・クライアントに対して許可されるかどうかを指定します。デフォルト値のFALSEを指定すると、Oracle Databaseはリモート・クライアントのロールを識別および管理します。

初期化パラメータを変更するには、「初期化パラメータ値の変更」を参照してください。初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Database管理者ガイド』を参照してください。

ユーザー・アカウントの保護

ユーザー・アカウントのセキュリティは、セキュア・パスワードを作成し、デフォルト・パスワードを変更することで保護できます。また、特別なパラメータを使用することで、ユーザー・アカウントのセキュリティを強化できます。

トピック:

- Oracle Databaseユーザー・アカウントの保護について

- Oracle Databaseから提供される事前定義されるユーザー・アカウント

- パスワードの作成要件

- デフォルト・パスワードの検索および変更

- ユーザー・アカウントの保護に使用されるパラメータ

関連項目:

- ユーザー・アカウントの保護の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

- ユーザー・アカウントの保護に関する重要なガイドラインは、『Oracle Databaseセキュリティ・ガイド』を参照してください。

Oracle Databaseユーザー・アカウントの保護について

多くの方法を使用して、共通およびローカルのデータベース・ユーザー・アカウントを保護できます。

たとえば、Oracle Databaseには、パスワードに対する一連の組込み保護があります。デフォルトのデータベース・アカウントとパスワードを保護し、様々な方法でデータベース・アカウントを管理できます。

Oracle Database 2日でデータベース管理者では、ユーザー・ロールの管理方法、管理アカウントについて、パスワード・ポリシーの作成におけるプロファイルの使用方法など、ユーザー・アカウントの作成および管理の基礎について説明します。

ユーザー・アカウントを作成した後で、この項の手順を使用し、次の方法に従ってこれらのアカウントをより強力に保護できます。

- 事前定義データベース・アカウントの保護。Oracle Databaseのインストール時に、事前定義済のアカウントが作成されます。パスワードを変更することで、これらのアカウントをできるだけ早く保護する必要があります。同じ方法を使用して、通常のユーザー・アカウント、管理アカウント、事前定義のアカウントのいずれであるかにかかわらず、すべてのパスワードを変更できます。このマニュアルでは、最もセキュアなパスワードを作成する方法のガイドラインも示します。

- データベース・アカウントの管理。データベース・アカウントを期限切れにしたり、ロックできます。

- パスワードの管理。初期化パラメータを設定することで、パスワードを管理および保護できます。初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。

Oracle Databaseから提供される事前定義されるユーザー・アカウント

Oracle Databaseをインストールすると、インストール・プロセスにより、事前定義された管理アカウント、非管理ユーザー・アカウント、およびサンプル・スキーマ・ユーザー・アカウントのセットがデータベースに作成されます。

トピック:

- 事前定義された管理アカウント

- 事前定義された非管理ユーザー・アカウント

- 事前定義されたサンプル・スキーマ・ユーザー・アカウント

事前定義された管理アカウント

Oracle Databaseのデフォルトのインストールで、事前定義された管理アカウントのセットが提供されます。

これらのアカウントには、SYSスキーマが所有するパッケージのEXECUTE権限、CREATE ANY TABLE権限、またはALTER SESSIONのような、データベースの領域の管理に必要となる特別な権限を持ちます。管理アカウントのデフォルトの表領域は、SYSTEMかSYSAUXです。マルチテナント環境では、事前定義された管理アカウントはルート・データベースにあります。

これらのアカウントを無許可アクセスから保護するため、インストール・プロセスにより表2-4に示されたアカウントを除く、ほとんどのアカウントが期限切れにされ、ロックされます。データベース管理者は、「データベース・アカウントの期限切れおよびロック」で説明したように、アカウントのロックを解除してリセットする責任があります。

表2-4に、事前定義済の管理ユーザー・アカウントのリストを示します。このアカウントは、標準スクリプト(各種のcat*.sqlスクリプトなど)の実行時に、Oracle Databaseによって自動的に作成されます。Oracleによって作成および維持されるユーザー・アカウントは、ALL_USERSデータ・ディクショナリ・ビューのUSERNAME列とORACLE_MAINTAINED列を問い合せることでわかります。ORACLE_MAINTAINEDの出力がYの場合、そのユーザー・アカウントは変更しないでください。ただし、そのアカウントの作成時に使用したスクリプトを実行して変更する場合を除きます。

表2-4 事前定義されたOracle Databaseの管理ユーザー・アカウント

ユーザー・アカウント

説明

インストール後のステータス

ANONYMOUS

Oracle XML DBにHTTPアクセス可能なアカウント。EPG (Embedded PL/SQL Gateway)をデータベースにインストールするときにAPEX_PUBLIC_USERアカウントのかわりに使用されます。

EPGはOracle Databaseとともに使用されるWebサーバーです。動的アプリケーションの作成に必要なインフラストラクチャを提供します。

期限切れおよびロック

AUDSYS

統合監査機能によって統合監査証跡レコードの格納に使用される内部アカウント。

『Oracle Databaseセキュリティ・ガイド』を参照してください。

期限切れおよびロック

CTXSYS

Oracle Textを管理するためのアカウント。Oracle Textを使用すると、テキスト問合せアプリケーションおよびドキュメント分類アプリケーションを作成できます。Oracle Textは、テキスト用の索引付け、語とテーマの検索および表示機能を提供します。

『Oracle Textアプリケーション開発者ガイド』を参照してください。

期限切れおよびロック

DBSNMP

Oracle Enterprise Managerの管理エージェント・コンポーネントによりデータベースの監視および管理に使用されるアカウント。

『Oracle Enterprise Manager Grid Controlインストレーションおよび基本構成』を参照してください。

オープン

パスワードはインストール時またはデータベースの作成時に作成されます。

LBACSYS

Oracle Label Security (OLS)を管理するためのアカウント。Label Securityオプションをインストールするときのみ作成されます。

「Oracle Label Securityによる行レベルのセキュリティの強制」および『Oracle Label Security管理者ガイド』を参照してください。

期限切れおよびロック

MDSYS

Oracle SpatialおよびOracle Multimedia Locatorの管理者アカウント。

『Oracle Spatial and Graph開発者ガイド』を参照してください。

期限切れおよびロック

OLAPSYS

OLAPカタログ(CWMLite)を所有するアカウント。このアカウントは、非推奨となりましたが、下位互換性のために保持されています。

期限切れおよびロック

ORDDATA

このアカウントには、Oracle Multimedia DICOMデータ・モデルが含まれます。詳細はOracle Multimedia DICOM開発者ガイドを参照してください。

期限切れおよびロック

ORDPLUGINS

Oracle Multimediaユーザー。Oracleおよびサード・パーティにより提供されたプラグイン(フォーマット・プラグイン)はこのスキーマにインストールされています。

Oracle MultimediaによりOracle Databaseで画像、音声、動画、DICOMフォーマットの医療用画像などのオブジェクトや、その他の企業情報と統合された異機種間のメディア・データを格納、管理および取得できます。

『Oracle Multimediaユーザーズ・ガイド』および『Oracle Multimediaリファレンス』を参照してください。

期限切れおよびロック

ORDSYS

Oracle Multimedia管理者アカウント。

『Oracle Multimediaユーザーズ・ガイド』、『Oracle Multimediaリファレンス』および『Oracle Multimedia DICOM開発者ガイド』を参照してください。

期限切れおよびロック

SI_INFORMTN_SCHEMA

SQL/MM Still Image Standardの情報ビューを格納するアカウント。

『Oracle Multimediaユーザーズ・ガイド』および『Oracle Multimediaリファレンス』を参照してください。

期限切れおよびロック

SYS

データベース管理タスクの実行に使用されるアカウント。

『Oracle Database 2日でデータベース管理者』を参照してください。

オープン

パスワードはインストール時またはデータベースの作成時に作成されます。

SYSBACKUP

Oracle Recovery Managerのリカバリとバックアップの実行に使用されるアカウント。

『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

期限切れおよびロック

SYSDG

Oracle Data Guardの操作の実行に使用されるアカウント。

『Oracle Data Guard概要および管理』を参照してください。

期限切れおよびロック

SYSKM

透過的データ暗号化の管理に使用される内部アカウント。

『Oracle Database Advanced Securityガイド』を参照してください。

期限切れおよびロック

SYSTEM

Oracle Databaseのデフォルトの汎用データベース管理者アカウント。

本番システムでは、データベース管理操作用に汎用SYSTEMアカウントを使用せずに、個々のデータベース管理者アカウントを作成することをお薦めします。

『Oracle Database 2日でデータベース管理者』を参照してください。

オープン

パスワードはインストール時またはデータベースの作成時に作成されます。

WMSYS

Oracle Workspace Manager用のメタデータ情報の格納に使用されるアカウント。

『Oracle Database Workspace Manager開発者ガイド』を参照してください。

期限切れおよびロック

XDB

Oracle XML DBのデータおよびメタデータの格納に使用されるアカウント。セキュリティを高めるには、XDBユーザー・アカウントのロックを解除しないでください。

Oracle XML DBはOracle Databaseのデータに対し、パフォーマンスの高いXMLの格納および取得を提供します。

『Oracle XML DB開発者ガイド』を参照してください。

期限切れおよびロック

注意:

Oracle Automatic Storage Management (Oracle ASM)インスタンスを作成すると、ASMSNMPアカウントが作成されます。Oracle Enterprise Managerはこのアカウントを使用して、ASMインスタンスを監視し、ASM関連のデータ・ディクショナリ・ビューからデータを取得します。ASMSNMPアカウントのステータスはアカウントの作成時にOPENに設定され、SYSDBA管理権限が付与されます。詳細は、『Oracle Automatic Storage Management管理者ガイド』を参照してください。

事前定義された非管理ユーザー・アカウント

デフォルトのOracle Databaseのインストールでは、事前定義された非管理ユーザー・アカウントのセットが提供されます。

表2-5に、事前定義済の非管理ユーザー・アカウントのリストを示します。このアカウントは、標準スクリプト(各種のcat*.sqlスクリプトなど)の実行時に、Oracle Databaseによって自動的に作成されます。Oracleによって作成および維持されるユーザー・アカウントは、ALL_USERSデータ・ディクショナリ・ビューのUSERNAME列とORACLE_MAINTAINED列を問い合せることでわかります。ORACLE_MAINTAINEDの出力がYの場合、そのユーザー・アカウントは変更しないでください。ただし、そのアカウントの作成時に使用したスクリプトを実行して変更する場合を除きます。

非管理ユーザー・アカウントはジョブの実行に最低限必要な権限のみ所有します。デフォルトの表領域はUSERSです。マルチテナント環境では、事前定義された非管理アカウントはルート・データベースに存在します

これらのアカウントを無許可アクセスから保護するため、インストール・プロセスにより表2-5に示されたアカウントを除く、ほとんどのアカウントがインストール後すぐにロックされ、期限切れになります。データベース管理者は、「データベース・アカウントの期限切れおよびロック」で説明したように、アカウントのロックを解除してリセットする責任があります。

表2-5 事前定義されたOracle Databaseの非管理ユーザー・アカウント

ユーザー・アカウント

説明

インストール後のステータス

DIP

Oracle Label SecurityとともにインストールされるOracle Directory Integration and Provisioning(DIP)のアカウント。このプロファイルは、Oracle Internet Directory対応Oracle Label Securityのインストール・プロセスの一部として自動的に作成されます。

『Oracle Label Security管理者ガイド』を参照してください。

期限切れおよびロック

MDDATA

格納されるジオコーダおよびルーターのデータ用にOracle Spatialに使用されるスキーマ。

Oracle SpatialはSQLスキーマおよびファンクションを提供し、これによりOracle DatabaseのSpatial機能の格納、取得、更新、問合せができます。

『Oracle Spatial and Graph開発者ガイド』を参照してください。

期限切れおよびロック

ORACLE_OCM

Oracle Configuration Managerと使用するアカウント。この機能により現在のOracle Databaseインスタンスの構成情報をMy Oracle Supportと関連付けることができます。サービス・リクエストを記録すると、データベース・インスタンスの構成情報と関連付けられます。

使用しているプラットフォームの『Oracle Databaseインストレーション・ガイド』を参照してください。

期限切れおよびロック

SPATIAL_CSW_ADMIN_USR

Catalog Services for the Web(CSW)アカウント。このアカウントはOracle Spatial CSW Cache Managerにより、データベースからすべてのレコード・タイプのメタデータとレコード・インスタンスを、キャッシュされたレコード・タイプのメイン・メモリーにロードするために使用されます。

『Oracle Spatial and Graph開発者ガイド』を参照してください。

期限切れおよびロック

SPATIAL_WFS_ADMIN_USR

Web Feature Service(WFS)アカウント。このアカウントはOracle Spatial WFS Cache Managerにより、データベースからすべての機能タイプのメタデータと機能インスタンスを、キャッシュされた機能タイプのメイン・メモリーにロードするために使用されます。

『Oracle Spatial and Graph開発者ガイド』を参照してください。

期限切れおよびロック

XS$NULL

セッションにデータベース・ユーザーが存在せず、実際のセッション・ユーザーは、Oracle Real Application Securityでサポートされるアプリケーション・ユーザーであることを示す内部アカウント。XS$NULLには権限はなく、データベース・オブジェクトを所有しません。XS$NULLとして認証されることはなく、認証資格証明にXS$NULLが割り当てられることもありません。

期限切れおよびロック

事前定義されたサンプル・スキーマ・ユーザー・アカウント

サンプル・スキーマをインストールすると、Oracle Databaseにより、サンプル・ユーザー・アカウントのセットが作成されます。

サンプル・スキーマ・ユーザー・アカウントはすべて非管理アカウントで、表領域は USERS です。

これらのアカウントを無許可アクセスから保護するため、インストール・プロセスによりこれらのアカウントがインストール直後にロックされ、期限切れになります。データベース管理者は、「データベース・アカウントの期限切れおよびロック」で説明したように、アカウントのロックを解除してリセットする責任があります。サンプル・スキーマ・アカウントの詳細はOracle Databaseサンプル・スキーマを参照してください。

表2-6には、様々な製品を製造している架空の企業の個別の部門を表すサンプル・スキーマ・ユーザー・アカウントがリストされています。これに該当するアカウントのステータスは、DBA_USERSデータ・ディクショナリ・ビューを問い合せることでわかります。このようなアカウントに対応するORACLE_MAINTAINED列の出力はNになっているため、そのアカウントを変更するために、アカウントの作成に使用したスクリプトを再実行する必要はありません。

表2-6 デフォルトのサンプル・スキーマ・ユーザー・アカウント

ユーザー・アカウント

説明

インストール後のステータス

HR

HR(Human Resources)スキーマを管理するためのアカウント。このスキーマには企業の従業員および施設に関する情報が格納されます。

期限切れおよびロック

OE

OE(Order Entry)スキーマを管理するためのアカウント。このスキーマには製品のインベントリや、様々なチャネルによる製品の売上が格納されます。

期限切れおよびロック

PM

PM(Product Media)スキーマを管理するためのアカウント。このスキーマには企業が販売した各製品の説明と詳細情報が含まれます。

期限切れおよびロック

IX

IX(Information Exchange)スキーマを管理するためのアカウント。このスキーマによりB2B(Business-to-Business)アプリケーションを介した発送が管理されます。

期限切れおよびロック

SH

SH(Sales)スキーマを管理するためのアカウント。このスキーマにはビジネス上の決断を容易にするビジネス戦略が格納されます。

期限切れおよびロック

例にあるスキーマ・アカウントに加えて、Oracle Databaseでは他のスキーマ・アカウントであるSCOTTの例も用意しています。SCOTTスキーマには、表EMP、DEPT、SALGRADEおよびBONUSが含まれています。SCOTTアカウントはOracle Databaseのドキュメント・セット全体の例で使用されます。Oracle Databaseをインストールすると、SCOTTアカウントはロックされ、期限が切れます。

データベース・アカウントの期限切れおよびロック

ユーザーのパスワードを期限切れにすると、パスワードは存在しなくなります。パスワードを期限切れにしない場合は、そのアカウントのパスワードを変更します。

アカウントをロックすると、他のアカウント情報と同じようにユーザー・パスワードも保持されますが、そのアカウントを使用してデータベースにログインするユーザーに対してアカウントが使用不可になります。ロックを解除すると、アカウントは再度使用可能になります。

Oracle Database 2日でデータベース管理者では、Enterprise Managerを使用してデータベース・アカウントのロックを解除する方法を説明します。また、Enterprise Managerを使用して、データベース・アカウントを期限切れにしたり、ロックすることもできます。

データベース・アカウントの期限切れおよびロックを実行するには、次のようにします。

1. データベースのホームページにアクセスします。
詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

2. 「管理」メニューから、「セキュリティ」を選択し、「ユーザー」を選択します。
データベース・ログイン・ページが表示されたら、SYSTEMなどの管理ユーザーとしてログインします。

「ユーザー」ページに、現行のデータベース・インスタンスで作成されたユーザー・アカウントが表示されます。「アカウント・ステータス」列は、アカウントが期限切れか、ロックされているか、オープンかを表します。

3. 「選択」列で期限切れにするアカウントを選択し、「編集」をクリックします。

4. ユーザーの編集ページで、次のいずれかを実行します。

- パスワードを期限切れにするには、「期限切れパスワード」をクリックします。
パスワードが期限切れにならないようにするには、「パスワードの入力」および「パスワードの確認」フィールドに新しいパスワードを入力します。パスワードの要件については、「パスワードの作成要件」を参照してください。

- アカウントをロックするには、「ロック」を選択します。

5. 「適用」をクリックします。

パスワードの作成要件

セキュリティを強化するために、パスワードを作成するための要件のセットが提供されています。

ユーザー・アカウントを作成すると、Oracle Databaseによって、そのユーザーにデフォルトのパスワード・ポリシーが割り当てられます。このパスワード・ポリシーには、パスワードの作成方法(最小文字数や期限切れの時期など)についてのルールが定義されています。パスワードは、パスワード・ポリシーを使用することで強化できます。

セキュリティを考慮して、パスワードを作成する際は、次のガイドラインに従います。

- パスワードは12から30文字の英数字で指定します。

- パスワードには、大/小文字と特殊文字を混在させて使用します。(詳細は、Oracle Databaseセキュリティ・ガイドを参照)。

- パスワードの文字にはデータベース・キャラクタ・セットを使用します。このセットには、アンダースコア(_)、ドル記号($)および番号記号(#)の各文字があります。

- 意味のある単語のみで構成されるパスワードを使用しないでください。

パスワードをさらにセキュアなものにする方法については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

デフォルト・パスワードの検索および変更

以前のリリースのOracle Databaseからのデフォルト・パスワードを検索し、変更することができます。

トピック:

- デフォルト・パスワードの検出および変更について

- デフォルト・パスワードのSQL*Plusからの検出および変更

- デフォルト・パスワードのEnterprise Managerからの検出および変更

デフォルト・パスワードの検出および変更について

Oracle Databaseをインストールする際、デフォルトのデータベース・ユーザー・アカウント(管理者用アカウントなど)はデフォルト・パスワードなしで作成されます。

インストール中にパスワードを作成した管理者アカウント(ユーザーSYSなど)を除き、デフォルトのユーザー・アカウントはパスワードが期限切れになっており、ロックされています。以前のリリースのOracle Databaseからアップグレードした場合は、デフォルトのパスワードを持つデータベース・アカウントが存在する可能性があります。それらは、データベースの作成時に作成されたデフォルト・アカウント(HR、OE、SCOTTアカウントなど)です。

セキュリティは、デフォルトのデータベース・ユーザー・アカウントがインストール後もデフォルト・パスワードを使用していると、最も容易に危険にさらされます。ユーザー・アカウントSCOTTはよく知られているアカウントで侵入されやすい可能性があるため、これが特に当てはまります。デフォルト・パスワードが使用されているアカウントを検索してから、そのパスワードを変更します。

関連項目:

- パスワード保護を設定する他の方法については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

- Oracle Databaseから提供される事前定義されるユーザー・アカウント

デフォルト・パスワードのSQL*Plusからの検出および変更

SQL*Plusを使用して、デフォルト・パスワードの検出および変更を行えます。

デフォルト・パスワードを検索して変更するには、次のようにします。

1. データベース・インスタンスに管理者権限でログインします。

sqlplus system
Enter password: password

2. DBA_USERS_WITH_DEFPWDデータ・ディクショナリ・ビューから選択します。

SELECT * FROM DBA_USERS_WITH_DEFPWD;

DBA_USERS_WITH_DEFPWDには、ユーザー・デフォルト・パスワードを持つアカウントが表示されます。次に例を示します。

USERNAME
------------
SCOTT

3. DBA_USERS_WITH_DEFPWDデータ・ディクショナリ・ビューに表示されたアカウントのパスワードを変更します。
たとえば、ユーザーSCOTTのパスワードを変更するには、次のように入力します。

PASSWORD SCOTT
Changing password for SCOTT
New password: password
Retype new password: password
Password changed

「パスワードの作成要件」に示されているガイドラインに従って、passwordをセキュアなパスワードに置き換えます。セキュリティを向上させるため、以前のリリースのOracle Databaseで使用されたパスワードを再利用しないでください。

また、パスワードは、ALTER USER SQL文を使用して変更することもできます。

ALTER USER SCOTT IDENTIFIED BY password;

デフォルト・パスワードのEnterprise Managerからの検出および変更

管理権限があれば、Enterprise Managerを使用して、ユーザー・アカウント・パスワード(デフォルトのユーザー・アカウント・パスワードだけにかぎらない)を変更できます。個々のユーザーもEnterprise Managerを使用して、自分のパスワードを変更できます。

Enterprise Managerを使用してデータベース・アカウントのパスワードを変更するには、次のようにします。

1. データベースのホームページにアクセスします。
詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

2. 「管理」メニューから、「セキュリティ」を選択し、「ユーザー」を選択します。
データベース・ログイン・ページが表示されたら、SYSなどの管理ユーザーとしてログインします。ユーザーSYSは、SYSDBAロールが選択されている状態でログインする必要があります。

「ユーザー」ページに、現行のデータベース・インスタンスで作成されたユーザー・アカウントが表示されます。「アカウント・ステータス」列は、アカウントが期限切れか、ロックされているか、オープンかを表します。

3. 「選択」列で変更するアカウントを選択し、「編集」をクリックします。

4. ユーザーの編集ページで、「パスワードの入力」および「パスワードの確認」フィールドに新しいパスワードを入力します。

5. 「適用」をクリックします。

ユーザー・アカウントの保護に使用されるパラメータ

Oracle Databaseでは、ユーザー・アカウントを保護するためのパラメータのセットが提供されています。

表2-7に、ユーザー・アカウントを保護するために設定する初期化パラメータおよびプロファイル・パラメータを示します。

表2-7 ユーザー・アカウント・セキュリティに使用される初期化パラメータおよびプロファイル・パラメータ

パラメータ

デフォルト設定

説明

SEC_CASE_SENSITIVE_LOGON

TRUE

パスワードの大文字と小文字の区別を管理します。TRUEで大文字と小文字の区別が有効になります。FALSEで区別が無効になります。

SEC_MAX_FAILED_LOGIN_ATTEMPTS

10

Oracle Call Interface (OCI)アプリケーションへの接続時にユーザーが失敗できる最大の回数を設定します。

FAILED_LOGIN_ATTEMPTS

10

ユーザー・ログインが何度も失敗した場合に、アカウントがロックされるまでの最大の回数を設定します。

注意: SEC_MAX_FAILED_LOGIN_ATTEMPTS初期化パラメータを使用して、権限のないユーザー(おそらく侵入者)がOracle Call Interfaceアプリケーションへのログインを試行する最大回数の制限も設定できます。

PASSWORD_GRACE_TIME

デフォルト設定なし

パスワードが期限切れになる前に、ユーザーがパスワードを変更するための日数を設定します。

PASSWORD_LIFE_TIME

デフォルト設定なし

ユーザーが現行のパスワードを使用できる日数を設定します。

PASSWORD_LOCK_TIME

デフォルト設定なし

ログインを指定の回数だけ連続して失敗した後に、アカウントがロックされる日数を設定します。

PASSWORD_REUSE_MAX

デフォルト設定なし

現行のパスワードの再使用が許可されるまでに必要なパスワードの変更回数を指定します。

PASSWORD_REUSE_TIME

デフォルト設定なし

パスワードの再使用が許可される日数を指定します。

注意:

これらのパラメータのほとんどは、ユーザー・プロファイルを作成するために使用できます。ユーザー・プロファイル設定の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

初期化パラメータを変更するには、「初期化パラメータ値の変更」を参照してください。初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Database管理者ガイド』を参照してください。

3 ユーザー権限の管理

ユーザー権限により、他のユーザー・アカウントの作成やデータベース表の変更などの特定のアクションを実行できるようになります。

トピック:

- 権限管理について

- ユーザーに権限を付与する場合

- ユーザーにロールを付与する場合

- セキュア・アプリケーション・ロールによるアプリケーション・アクセスの制御

- 権限セキュリティに使用される初期化パラメータ

関連項目:
『Oracle Databaseセキュリティ・ガイド』

権限管理について

ユーザー権限は、様々な方法で管理できます。

- 個々の権限の付与および取消し。UPDATE SQL文を実行する権限など、個々の権限を個々のユーザーまたはユーザーのグループに付与できます。

- ロールの作成と権限の割当て。ロールは、ユーザーまたは他のロールに一括で付与する関連権限の名前付きグループです。

- セキュア・アプリケーション・ロールの作成。セキュア・アプリケーション・ロールを使用すると、データベース・ロールを有効にできるタイミングを制御する条件を定義できます。たとえば、セキュア・アプリケーション・ロールを使用すると、ユーザー・セッションでデータベース・ロールを有効にするのを許可する前に、そのセッションに関連するIPアドレスをチェックできます。

ユーザーに権限を付与する場合

権限は、表の更新や削除など、特定のアクションを実行する権利であるため、データベース・ユーザーには必要以上の権限を付与しないでください。

ユーザー権限とユーザー・ロールの概要は、『Oracle Database 2日でデータベース管理者』を参照してください。『Oracle Database 2日でデータベース管理者』には、権限を付与する方法の例も記載されています。

つまり、最小権限の原則とは、ユーザーに、ジョブを効率よく実行するために実際に必要な権限のみを与えることです。この原則を実践するために、次を可能なかぎり制限してください。

- データベース・ユーザーに付与するシステムおよびオブジェクト 権限の数

- データベースにSYS権限で接続するユーザーの数。

たとえば、一般的に、CREATE ANY TABLE権限は、データベース管理者権限を持たないユーザーには付与されません。

権限分析ポリシーを作成すると、Oracle Databaseインストールが複雑でユーザー・アカウントの数が非常に多い場合でも、システム権限およびオブジェクト権限の過度の付与を検出できます。権限分析ポリシーでは、指定された条件に基づいて権限の使用状況が検索され、検索結果がデータ・ディクショナリ・ビューに格納されます。権限分析ポリシーの作成方法の詳細は、『Oracle Database Vault管理者ガイド』を参照してください。

ユーザーにロールを付与する場合

ロールは、ユーザーまたは他のロールに一括で付与する関連権限の名前付きグループです。

ロールの管理の基礎については、Oracle Database 2日でデータベース管理者を参照してください。また、ロールの作成例は、『Oracle Database 2日でデータベース管理者』を参照してください。

ロールとは、ユーザーに権限を素早く簡単に付与するために便利なものです。Oracle Databaseで定義されているロールを使用することもできますが、 必要な権限のみを含む独自のロールを作成すると、より継続的な制御が可能になります。Oracle Database定義ロールの権限は変更または削除される場合があります。たとえばCONNECTロールの場合、現在持っている権限はCREATE SESSION権限のみです。以前は他に8個の権限がありました。

定義したロールに含まれる権限が、特定の職務に必要な権限のみであることを確認します。アプリケーション・ユーザーが既存のロールに組み込まれている権限のすべては必要としていない場合は、適切な権限のみを含む異なるロールのセットを適用してください。または、権限をさらに制限するロールを作成して割り当てます。

CREATE DATABASE LINK権限などの強力な権限を通常のユーザー(SCOTTなど)に付与することは避けてください(特にSCOTTはデフォルト・ユーザー・アカウントとしてよく知られているため、強力な権限を付与することは絶対に避けてください)。かわりに、データベース・ロールに権限を付与してから、その権限を使用する必要があるユーザーにそのロールを付与してください。また、ユーザーが必要とする最小限の権限のみを付与するように注意してください。

セキュア・アプリケーション・ロールによるアプリケーション・アクセスの制御

セキュア・アプリケーション・ロールは、認可されたPL/SQLパッケージによってのみ有効にできるロールです。PL/SQLパッケージ自体は、アプリケーションへのアクセスを制御するために必要なセキュリティ・ポリシーを反映します。

トピック:

- セキュア・アプリケーション・ロールについて

- チュートリアル: セキュア・アプリケーション・ロールの作成

セキュア・アプリケーション・ロールについて

セキュア・アプリケーション・ロールは、認可されたPL/SQLパッケージによってのみ有効にできるロールです。

このパッケージは、アプリケーションへのアクセスを制御する1つ以上のセキュリティ・ポリシーを定義します。ロールおよびパッケージは通常、作成者(通常はセキュリティ管理者)のスキーマに作成されます。セキュリティ管理者は、データベースのセキュリティを維持する責任があるデータベース管理者です。

セキュア・アプリケーション・ロールを使用する利点は、ロール自体に付与された権限に加えて、アプリケーション・アクセスにセキュリティの追加レイヤーを作成できることです。セキュア・アプリケーション・ロールがセキュリティを強化する理由として、パスワードがアプリケーション・ソース・コードに埋め込まれたり表に格納されたりしないことがあります。このため、データベースが行う決定はセキュリティ・ポリシーの実装に基づいて行われます。これらの定義はアプリケーションではなくデータベースにまとめて格納されるため、各アプリケーションのポリシーを変更するのではなく、このポリシーを一度に変更します。ポリシーはロールにバインドされているため、データベースに接続しているユーザー数に関係なく、結果は常に同じになります。

セキュア・アプリケーション・ロールには次のコンポーネントがあります。

- セキュア・アプリケーション・ロール自体。このロールを作成するには、CREATE ROLE文をIDENTIFIED USING句とともに使用してPL/SQLパッケージに関連付けます。次に、一般的にロールに付与する権限をこのロールに付与します。

- セキュア・アプリケーション・ロールに関連付けるPL/SQLパッケージ、プロシージャまたはファンクション。PL/SQLパッケージは、データベースへのログインを試行する人物にロールを付与またはロールを拒否する条件を設定します。PL/SQLパッケージ、プロシージャまたはファンクションは、定義者の権限ではなく実行者の権限を使用して作成する必要があります。実行者の権限のプロシージャは現行ユーザー(プロシージャを実行するユーザー)の権限で実行されます。このユーザーには、PL/SQLパッケージからアクセスされる、基礎となるオブジェクトに対するEXECUTE権限が付与されている必要があります。実行者の権限のプロシージャは、特定のスキーマにバインドされません。様々なユーザーがこのようなプロシージャを実行でき、集中化されたアプリケーション・ロジックを使用することで複数のユーザーが自身のデータを管理できます。実行者の権限のパッケージを作成するには、プロシージャ・コードの宣言部でAUTHID CURRENT_USER句を使用します。
ユーザーのロールを有効(または無効)にするために、PL/SQLパッケージにはSET ROLE文またはDBMS_SESSION.SET_ROLEコールも含まれている必要があります。

PL/SQLパッケージを作成してから、適切なユーザーにパッケージに対するEXECUTE権限を付与する必要があります。

- ユーザーがログオンしたときにPL/SQLパッケージを実行する方法。PL/SQLパッケージを実行するには、ユーザーがロールによって付与される権限を使用する前に、アプリケーションから直接PL/SQLパッケージをコールする必要があります。ユーザーがログオンしたときにPL/SQLパッケージを自動的に実行するログオン・トリガーは使用できません。

ユーザーがアプリケーションにログインすると、必要に応じて、パッケージ内のポリシーによるチェックが行われます。チェックを通過したユーザーにはロールが付与され、アプリケーションへのアクセスが許可されます。ユーザーがチェックを通過できない場合、アプリケーションへのアクセスは拒否されます。

チュートリアル: セキュア・アプリケーション・ロールの作成

このチュートリアルでは、2人のユーザーMatthew WeissとWinston TaylorがOE.ORDERS表から情報を取得する場合を説明します。

OE.ORDERS表へのアクセス権は、emp_roleセキュア・アプリケーション・ロールで定義されています。MatthewはWinstonのマネージャで、OE.ORDERS表内の情報にアクセスできますが、Winstonは情報にアクセスできません。

トピック:

- 手順1: このチュートリアルで使用するユーザー・アカウントを作成する

- 手順2: セキュリティ管理者アカウントを作成する

- 手順3: 参照ビューを作成する

- 手順4: PL/SQLプロシージャを作成してセキュア・アプリケーション・ロールを設定する

- 手順5: セキュア・アプリケーション・ロールを作成する

- 手順6: EMP_ROLEロールへのOE.ORDERS表に対するSELECTの付与

- 手順7: MatthewとWinstonにこのプロシージャのEXECUTE権限を付与する

- 手順8: EMP_ROLEセキュア・アプリケーション・ロールのテスト

- 手順9: このチュートリアルで使用したコンポーネントを削除する(オプション)

手順1: このチュートリアルで使用するユーザー・アカウントを作成する

最初の手順として、MatthewとWinstonのユーザー・アカウントを作成します。

MatthewとWinstonは、どちらもHR.EMPLOYEES表の従業員のサンプルです。この表には、従業員のマネージャIDや電子メール・アドレスなどの情報を含む列があります。以降でセキュア・アプリケーション・ロールをテストするため、これら2人の従業員のユーザー・アカウントを作成する必要があります。

ユーザー・アカウントを作成するには、次のようにします。

1. Enterprise Managerでデータベース・ホームページにアクセスします。
詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

2. ターゲット・データベースにアクセスし、ユーザーSYSTEMとしてログインします。

3. 「管理」メニューから、「セキュリティ」を選択し、「ユーザー」を選択します。

4. 「ユーザー」ページで、「作成」をクリックします。

5. ユーザーの作成ページで、次の情報を入力します。

- 名前: mweiss(Matthew Weissのユーザー・アカウントを作成するため)

- プロファイル: DEFAULT

- 認証: Password

- 「パスワードの入力」および「パスワードの確認」: パスワードの作成要件に示されている要件を満たすパスワードを入力します。

- デフォルト表領域: EXAMPLE

- 一時表領域: TEMP

- ステータス: Unlocked

6. 「システム権限」をクリックします。

7. 「リストを編集」をクリックします。

8. システム権限の変更ページの「使用可能なシステム権限」リストからCREATE SESSION権限を選択し、「移動」をクリックして「選択したシステム権限」リストに移動します。

9. 「OK」をクリックします。
CREATE SESSIONがユーザーmweissのシステム権限としてリストされた状態で「ユーザーの作成」ページが表示されます。

10. CREATE SESSIONの「管理者オプション」が選択されていないことを確認し、「OK」をクリックします。

11. ユーザー・ページのユーザー・リストでユーザーMWEISSの選択ボタンを選択してから、「アクション」リストで「類似作成」を選択します。次に「実行」をクリックします。

12. 「ユーザーの作成」ページで、次の情報を入力してWinstonのユーザー・アカウントを作成します。このアカウントはMatthewのユーザー・アカウントとほぼ同じになります。

- 名前: wtaylor

- 「パスワードの入力」および「パスワードの確認」: パスワードの作成要件に示されている要件を満たすパスワードを入力します。

ユーザーwtaylorに対し、デフォルト表領域および一時表領域、またはCREATE SESSIONシステム権限を指定する必要はありません。すでに指定されているからです。

13. 「OK」をクリックします。

これで、Matthew WeissとWinston Taylorの両方にユーザー・アカウントが作成され、同じ権限が与えられました。

手順2: セキュリティ管理者アカウントを作成する

セキュリティを強化するためには、システム管理者に職務を割り当てる際に、責務分離の概念を取り入れる必要があります。

このマニュアルのチュートリアルでは、sec_adminというセキュリティ管理者アカウントを作成し、使用します。

sec_adminセキュリティ管理者アカウントを作成するには、次のようにします。

1. 「管理」メニューから、「セキュリティ」を選択し、「ユーザー」を選択します。
データベース・ログイン・ページが表示されたら、SYSなどの管理ユーザーとしてログインします。ユーザーSYSは、SYSDBAロールが選択されている状態でログインする必要があります。

2. 「ユーザー」ページで、「作成」をクリックします。

3. ユーザーの作成ページで、次の情報を入力します。

- 名前: sec_admin

- プロファイル: Default

- 認証: Password

- 「パスワードの入力」および「パスワードの確認」: パスワードの作成要件に示されている要件を満たすパスワードを入力します。

- デフォルト表領域: EXAMPLE

- 一時表領域: TEMP

- ステータス: UNLOCKED

4. 「システム権限」をクリックします。

5. 「リストを編集」をクリックします。
「システム権限の変更」ページが表示されます。

6. 「使用可能なシステム権限」リストから次の権限を選択し、「移動」をクリックしてそれぞれを「選択したシステム権限」リストに移動します。(複数の権限を選択するには、[Ctrl]キーを押したままにします。)

- CREATE PROCEDURE

- CREATE ROLE

- CREATE SESSION

- INHERIT ANY PRIVILEGES

- SELECT ANY DICTIONARY

7. 「OK」をクリックします。
「ユーザーの作成」ページが表示されます。「管理者オプション」では、ボックスを選択しないでください。

8. 「OK」をクリックします。
ユーザー・ページが表示されます。ユーザーsec_adminが「ユーザー名」リストに表示されます。

手順3: 参照ビューを作成する

参照ビューには、より大きな表からの情報のビューが含まれます。参照ビューには、必要な情報のみが含まれます。

このチュートリアルで作成するgrant_emp_roleプロシージャは、従業員ID 100のSteven Kingの直属のマネージャにのみemp_roleを付与します。この情報はHR.EMPLOYEES表にあります。ただし、この表には給与情報などの機密データが含まれており、また、使用した場合すべてのユーザーがアクセスする必要があるため、このプロシージャでは使用できません。実際にはほとんどの場合に、必要な情報のみが含まれている参照ビューを作成します。(参照表を作成することはできますが、ビューに最新データが反映されます。)このチュートリアルでは、従業員の名前、従業員ID、マネージャIDのみを含む独自の参照ビューを作成します。

HR.HR_VERIFY参照ビューを作成するには、次のようにします。

1. SQL*Plusで、ユーザーHRとして接続します。

CONNECT HR
Enter password: password

HRがロックされているというエラー・メッセージが表示された場合は、そのアカウントのロックを解除し、次の文を入力してパスワードをリセットします。セキュリティを向上させるため、以前のリリースのOracle Databaseで使用されたパスワードを再利用しないでください。「パスワードの作成要件」に示されているパスワードのガイドラインに従って、任意のセキュアなパスワードを入力します。

CONNECT SYSTEM
Enter password: password

PASSWORD HR
Changing password for HR
New password: password
Retype new password: password
Password changed.

ALTER USER HR ACCOUNT UNLOCK;

CONNECT HR
Enter password: password

2. 次のCREATE VIEW SQL文を入力して参照ビューを作成します。

CREATE VIEW hr_verify AS
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL, MANAGER_ID
FROM EMPLOYEES;

3. 次のSQL文を入力して、このビューに対するEXECUTE権限をmweiss、wtaylorおよびsec_adminに付与します。

GRANT SELECT ON hr_verify TO mweiss;
GRANT SELECT ON hr_verify TO wtaylor;
GRANT SELECT ON hr_verify TO sec_admin;

手順4: PL/SQLプロシージャを作成してセキュア・アプリケーション・ロールを設定する

管理アカウントと参照ビューを作成した後、セキュア・アプリケーション・ロールのプロシージャを作成できます。

多くの場合、プロシージャを格納するパッケージを作成しますが、このチュートリアルは、1つのセキュア・アプリケーション・ロールのみをテスト(プロシージャで定義)するシンプルなチュートリアルであるため、プロシージャのみを作成します。複数のプロシージャを作成してロールをテストする場合は、パッケージ内にプロシージャを作成します。この段階でロールは存在しませんが、それでかまいません。ロールは次の手順で作成します。

PL/SQLパッケージを使用すれば、SQL文からアクセスできる特定の関連プロシージャやタイプを、単純で明確なインタフェースとして定義できます。またパッケージを使用することでコードが再利用可能になり、メンテナンスもしやすくなります。パッケージをセキュア・アプリケーション・ロールに使用した場合の利点は、複数のセキュリティ・ポリシーを1つのグループにまとめることで、アプリケーション保護のための堅牢なセキュリティ計画を実装できることです。セキュリティ・ポリシーに失敗したユーザー(潜在的な侵入者)については、監査チェックをパッケージに追加して、その失敗を記録できます。

セキュア・アプリケーション・ロールのプロシージャを作成するには、次のようにします。

1. Enterprise Managerで「ログアウト」をクリックしてデータベースからログアウトします。

2. 「確認」ダイアログ・ボックスで「(データベース・インスタンス)のログアウト」を選択し、「ログアウト後にログイン・ページを表示します。」チェック・ボックスを選択します。「ログアウト」をクリックします。

3. NORMALロールを使用するユーザーsec_adminとしてログインします。

4. 「スキーマ」メニューから、「プログラム」を選択し、「プロシージャ」を選択します。

5. プロシージャ・ページで「作成」をクリックします。

6. プロシージャの作成ページで、次の情報を入力します。

- 名前: GRANT_EMP_ROLE

- スキーマ: SEC_ADMIN

- ソース: 表示された空のプロシージャ・コードを削除してから、次のテキストを入力し、セキュア・アプリケーション・ロールのプロシージャを作成します。

AUTHID CURRENT_USER
AS
v_user varchar2(50);
v_manager_id number :=1;
BEGIN
v_user := lower((sys_context ('userenv','session_user')));
SELECT manager_id
INTO v_manager_id FROM hr.hr_verify WHERE lower(email)=v_user;
IF v_manager_id = 100
THEN
EXECUTE IMMEDIATE 'SET ROLE emp_role';
ELSE NULL;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN v_manager_id:=0;
DBMS_OUTPUT.PUT_LINE(v_manager_id);
END;

次のように指定します。

- AUTHID CURRENT USER: CREATE PROCEDURE文にAUTHID CURRENT_USER句を追加します。AUTHID CURRENT_USER句を使用すると、実行するユーザーは自信の権限を使用してプロシージャを実行できます。
プロシージャを機能させるには、実行者の権限を使用するプロシージャを作成する必要があります。実行者の権限は、プロシージャがアクセスするすべてのオブジェクトに対するEXECUTE権限をユーザーに与えます。

実行者の権限のプロシージャ内で有効になっているロールは、プロシージャが終了した後でも有効なままですが、ユーザーは、セッションを終了するとセキュア・アプリケーション・ロールに関連付けられている権限を失います。この場合は、セッションの残りでロールを有効にする専用プロシージャを持つことができます。

ユーザーは、定義者権限のプロシージャ内のセキュリティ・ドメインを変更できないため、セキュア・アプリケーション・ロールは実行者権限のプロシージャ内でのみ有効になります。

実行者の権限を使用したプロシージャの作成についての重要性は、「セキュア・アプリケーション・ロールについて」を参照してください。

- v_user varchar2(50): ユーザーのセッション情報を格納するv_user変数を宣言します。

- v_manager_id number :=1: v_userユーザーのマネージャIDを格納するv_manager_id変数を宣言します。

- v_user := lower...: ログオンするユーザーのユーザー・セッション情報を取得します(この場合はMatthewまたはWinston)。ユーザー・セッション情報を取得するには、SQLファンクションSYS_CONTEXTをネームスペース属性USERENV('userenv'、session_attribute)とともに使用して、この情報をv_user変数に書き込みます。
このファンクションから返される情報は、ユーザーが認証された方法、クライアントのIPアドレスおよびユーザーがプロキシを介して接続したかどうかを示します。SYS_CONTEXTの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

- SELECT manager_id ... INTO...: 現行ユーザーのマネージャIDを取得します。SELECT文によって、マネージャIDがv_manager_id変数にコピーされ、HR.HR_VERIFYビューで現行ユーザーのマネージャIDがチェックされます。従業員の電子メール・アドレスはユーザー名と同じであるため、この例では従業員の電子メール・アドレスを使用します。

- IF ... THEN ... END IF: IF条件を使用して、ユーザーにgrant_emp_roleロールを付与すべきかどうかをテストします。この例の場合は、MatthewのマネージャであるSteven King(従業員番号は100)に報告を行うかどうかが条件となります。Matthewのように、Kingに報告を行う場合、ユーザーにはセキュア・アプリケーション・ロールが付与されます。報告を行わない場合は、ロールは付与されません。
結果として、Matthew WeissはSteven Kingの直属の部下であるためセキュア・アプリケーション・ロールを付与されますが、WinstonはSteven Kingの直属の部下ではないためロールは付与されません。

- THEN ... ELSE NULL: IF条件内では、THEN条件によってSET ROLE文がすぐに実行され、ロールが付与されます。これが実行されない場合は、ELSE条件により、権限付与が拒否されます。

- EXCEPTION: データが検出されない場合は、EXCEPTION文を使用してv_manager_idを0に設定します。

- DBMS_OUTPUT.PUT_LINE: マネージャID (ここでは0)をバッファにコピーしてすぐに使用できるようにします。

7. 「OK」をクリックします。

ヒント:

PL/SQLコードの作成時または実行時に問題が発生した場合は、Oracle Databaseのトレース・ファイルを確認してください。USER_DUMP_DEST初期化パラメータにトレース・ファイルの現在の位置が示されます。このパラメータの値は、SQL*PlusでSHOW PARAMETER USER_DUMP_DESTを発行して確認できます。トレース・ファイルの詳細は、『Oracle Database管理者ガイド』を参照してください。

手順5: セキュア・アプリケーション・ロールを作成する

セキュア・アプリケーション・ロールを設定するPL/SQLプロシージャを作成した後、セキュア・アプリケーション・ロールemp_roleを作成できます。

セキュア・アプリケーション・ロールを作成するには、次のようにします。

1. sec_adminユーザーとしてログインしたままであることを確認します。

2. 「管理」メニューから、「セキュリティ」を選択し、「ロール」を選択します。

3. ロール・ページで、「作成」をクリックします。

4. ロールの作成ページで、次の情報を入力します。

- 名前: emp_role

- 認証: 「アプリケーション」を選択します。
ページが拡張され、セキュア・アプリケーション・ロールの作成に必要な他のプロンプトが表示されます。

5. 「プロシージャ」オプションを選択します。

6. 「プロシージャ名」フィールドにSEC_ADMIN.GRANT_EMP_ROLEと入力します。

7. 「OK」をクリックします。

手順6: EMP_ROLEロールへのOE.ORDERS表に対するSELECTの付与

OE.ORDERS表を所有するユーザーOEは、ORDERS表に対するSELECT権限をemp_roleロールに付与する必要があります。

これにより、emp_roleロールの使用を認可された任意のユーザーに、OE.ORDERS表から選択する権限が与えられます。

EMP_ROLEにOE.ORDERS表に対するSELECT権限を付与する手順:

1. ユーザーOEとして接続します。

CONNECT OE
Enter password: password

OEがロックされているというエラー・メッセージが表示された場合は、OEアカウントのロックを解除し、次の文を入力してパスワードをリセットします。セキュリティを向上させるため、以前のリリースのOracle Databaseで使用されたパスワードを再利用しないでください。「パスワードの作成要件」に示されているパスワードのガイドラインに従って、任意のセキュアなパスワードを入力します。

CONNECT SYSTEM
Enter password: sys_password

PASSWORD OE  -- First, change the OE account password.
Changing password for OE
New password: password
Retype new password: password
Password changed.

ALTER USER OE ACCOUNT UNLOCK; -- Next, unlock the OE account.

次の構文を使用して、ユーザー・アカウントのロック解除と新規パスワードの作成する方法もあります。

ALTER USER account_name ACCOUNT UNLOCK IDENTIFIED BY new_password:

これで、ユーザーOEとして接続できます。

CONNECT OE
Enter password: password

2. 次の文を入力して、OE.ORDERS表に対するSELECT権限をemp_roleロールに付与します。

GRANT SELECT ON ORDERS TO emp_role;

ロールは、直接ユーザーに付与しないでください。ユーザーがセキュリティ・ポリシーに合格したと想定して、PL/SQLパッケージが付与の処理を実行します。

手順7: MatthewとWinstonにこのプロシージャのEXECUTE権限を付与する

この段階で、MatthewとWinstonはOE.ORDERS表にアクセスを試行できますが、アクセスはできません。

次のステップは、彼らにgrant_emp_roleプロシージャに対するEXECUTE権限を付与してgrant_emp_roleプロシージャを実行できるようにし、OE.ORDERS表から選択しようとしたときにアクセスが許可または拒否されるようにすることです。

grant_emp_roleプロシージャに対するEXECUTE権限を付与するには、次のようにします。

1. SQL*Plusで、sec_adminユーザーとしてログインします。

connect sec_admin
Enter password: password

2. ユーザーmweissとwtaylorで、次のGRANT SQL文を実行します。

GRANT EXECUTE ON grant_emp_role TO mweiss;
GRANT EXECUTE ON grant_emp_role TO wtaylor;

手順8: EMP_ROLEセキュア・アプリケーション・ロールのテスト

MatthewとWinstonとしてログオンし、OE.ORDERS表にアクセスを試行して、emp_roleセキュア・アプリケーション・ロールをテストする準備ができました。

MatthewとWinstonがログオンすると、OE.ORDERS表でSELECT文を発行する前に、grant_emp_roleプロシージャが実行されてロールの検証が行われます。

トピック:

- emp_roleセキュア・アプリケーション・ロールをユーザーMWEISSとしてテストする

- emp_roleセキュア・アプリケーション・ロールをユーザーWTAYLORとしてテストする

emp_roleセキュア・アプリケーション・ロールをユーザーMWEISSとしてテストする

SQL*Plusを使用して、mweissユーザーとしてデータベースに接続できます。

ユーザーMWEISSとしてemp_roleセキュア・アプリケーション・ロールをテストするには、次の手順を実行します。

1. SQL*Plusで、mweissユーザーとして接続します。

CONNECT mweiss
Enter password: password

2. 次のSQL文を入力してgrant_emp_roleプロシージャを実行します。

EXEC sec_admin.grant_emp_role;

この文により、現行セッションに対してgrant_emp_roleプロシージャが実行されます。(実際のシナリオでは、ユーザーがアプリケーションにログインしたときに、この文は自動的に実行されます)。

3. OE.ORDERSで次のSELECT文を実行します。

SELECT COUNT(*) FROM OE.ORDERS;

MatthewにはOE.ORDERS表へのアクセス権があります。

COUNT(*)
----------
105

emp_roleセキュア・アプリケーション・ロールをユーザーWTAYLORとしてテストする

次に、Winstonがセキュア・アプリケーションへのアクセスを試みます。

ユーザーWTAYLORとしてemp_roleセキュア・アプリケーション・ロールをテストするには、次の手順を実行します。

1. SQL*Plusでユーザーwtaylorとして接続します。

CONNECT wtaylor
Enter password: password

2. 次のSQL文を入力してgrant_emp_roleプロシージャを実行します。

EXEC sec_admin.grant_emp_role;

この文により、現行セッションに対してgrant_emp_roleプロシージャが実行されます。

3. OE.ORDERSで次のSELECT文を実行します。

SELECT COUNT(*) FROM OE.ORDERS;

ERROR at line 1:
ORA-00942: table or view does not exist

WinstonはSteven Kingに直接報告を行わないため、OE.ORDERS表へのアクセス権がありません。SELECT文を実行した場合でも、ORDERS表に含まれる実際の注文数はわかりません。

手順9: このチュートリアルで使用したコンポーネントを削除する(オプション)

コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。

コンポーネントを削除するするには、次のようにします。

1. SQL*PlusでユーザーSYSTEMとして接続します。

CONNECT SYSTEM
Enter password: password

2. 次のDROP文を入力します。

DROP USER mweiss;
DROP USER wtaylor;

ユーザーsec_adminは削除しないでください。このマニュアルの以降のチュートリアルで、このユーザー・アカウントが必要になります。

3. SQL*Plusでユーザーsec_adminとして接続します。

CONNECT sec_admin
Enter password: password

4. 次のDROP SQL文を入力します。

DROP ROLE emp_role;
DROP PROCEDURE grant_emp_role;

5. ユーザーHRとして接続してから、HR_VERIFYビューを削除します。

CONNECT HR
Enter password: password
DROP VIEW hr_verify;

6. SQL*Plusを終了します。

EXIT

権限セキュリティに使用される初期化パラメータ

Oracle Databaseでは、権限のセキュリティを構成するための初期化パラメータのセットが提供されています。

表3-1に、ユーザー権限を保護するために使用する初期化パラメータを示します。

表3-1 権限セキュリティに使用される初期化パラメータ

初期化パラメータ

デフォルト設定

説明

O7_DICTIONARY_ACCESSIBILITY

FALSE

SYSTEM権限に対する制限を制御します。このパラメータの詳細は、「データ・ディクショナリ保護の有効化」を参照してください。

OS_ROLES

FALSE

オペレーティング・システムが各ユーザーのロールを識別および管理するかどうかを決定します。

MAX_ENABLED_ROLES

30

他のロールに含まれるロールを含め、ユーザーが有効にできるデータベース・ロールの最大数を指定します。

REMOTE_OS_ROLES

FALSE

オペレーティング・システム・ロールがリモート・クライアントに対して許可されるかどうかを指定します。デフォルト値のFALSEを指定すると、Oracleでリモート・クライアントのロールが識別および管理されます。

SQL92_SECURITY

FALSE

UPDATE文やDELETE文などを実行するためにユーザーにSELECTオブジェクト権限が付与されている必要があるかどうかを指定します。

初期化パラメータを変更するには、「初期化パラメータ値の変更」を参照してください。初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Database管理者ガイド』を参照してください。

4 Oracle Transparent Data Encryptionを使用したデータの暗号化

透過的データ暗号化により、表の列および表領域全体のデータを偽装できます。

トピック:

- 機密データの暗号化について

- データを暗号化するタイミング

- 透過的データ暗号化の動作

- 透過的データ暗号化を使用するためのデータの構成

- 既存の暗号化データのチェック

関連項目:

表領域暗号化の使用方法の詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

機密データの暗号化について

暗号化されたデータは、認可された受取人のみが読めるように擬装されたデータです。

暗号化を使用すると、保護されていない可能性のある環境内のデータ(バックアップ・メディアに配置されており、オフサイトのストレージ場所に送信されるデータなど)を保護できます。

データの暗号化には、次のコンポーネントが含まれます:

- データを暗号化するアルゴリズム。Oracle Databaseは、データを暗号化および復号化する暗号化アルゴリズムを使用します。Oracle Databaseは、業界標準の暗号化アルゴリズムおよびハッシュ・アルゴリズムをいくつかサポートしています。これには、米国標準技術局(National Institute of Standards and Technology: NIST)により承認されているAdvanced Encryption Standard (AES)暗号化アルゴリズムも含まれます。

- データの暗号化および復号化を行うためのキー。データを暗号化する際、Oracle Databaseは、鍵とプレーン・テキスト・データを暗号化アルゴリズムへの入力として使用します。逆に、データを複合化するときには、アルゴリズムへの入力として複合化キーを使用して、プロセスを逆に実行し、クリア・テキスト・データを取得します。Oracle Databaseは対称キーを使用してこのタスクを実行します(データの暗号化と複合化の両方で同じキーが使用されます)。暗号化キーはデータ・ディクショナリに格納されますが、別のマスター・キーで暗号化されます。

個別の表の列または表領域全体を暗号化できます。これら2つを混同しないように注意してください。たとえば、表列を暗号化してからその表列を含む表領域を暗号化するとします。この二重の暗号化を行うと、パフォーマンスの問題が発生します。また、列の暗号化ではデータ型のサポートに制限があり、一致検索用のBツリー索引のみがサポートされます。現在の暗号化設定を確認するには、表領域に対してはV$ENCRYPTED_TABLESPACESデータ・ディクショナリ・ビュー、暗号化された列に対してはDBA_ENCRYPTED_COLUMNSビューを問い合せることができます。

データを暗号化するタイミング

多くの場合、コンプライアンス規則を順守するためにサイトの機密データを暗号化する必要があります。

たとえば、クレジット・カード番号、社会保障番号、病歴に関する情報などの機密データは、暗号化する必要があります。

データベース管理者からデータへのアクセスを制限するため、これまでユーザーはデータの暗号化を求めていました。しかし問題は暗号化よりも、むしろ アクセス制御にあります。Oracle Database Vaultを使用してデータベース管理者からアプリケーション・データへのアクセスを制御することで、この問題に対処できます。

多くの場合、クレジット・カード番号や社会保障番号などの機密データは、バックアップ・テープやディスク・ドライブの紛失または盗難時にアクセスされないように暗号化します。近年では、ペイメント・カード産業(PCI)データ・セキュリティ標準や医療保険の相互運用性と説明責任に関する法律(HIPAA)などの業界規制によって、それぞれクレジット・カード情報や医療情報の保護に対して暗号化の使用が促されてきています。

透過的データ暗号化の動作

透過的データ暗号化を使用すると、個々の表列もしくは表領域全体を暗号化できます。

ユーザーが暗号化された列にデータを挿入すると、このデータは透過的データ暗号化により自動的に暗号化されます。認可されたユーザーが列を選択すると、データは自動的に復号化されます。

透過的データ暗号化を使用してデータを暗号化するには、次のコンポーネントを作成します。

- マスター暗号化鍵を格納するキーストア。キーストアは、データベースの外部にあるオペレーティング・システム・ファイルです。データベースはキーストアを使用してマスター暗号化鍵を格納します。キーストアを作成するには、ADMINISTER KEY MANAGEMENT SQL文を使用できます。キーストアはパスワードを暗号化鍵として使用することにより暗号化されます。パスワードはキーストアの作成時に作成します。キーストアのコンテンツ(またはマスター鍵)へのアクセスは、パスワードを知っている人のみに制限されます。キーストアを作成したら、データベースがマスター暗号化鍵にアクセスできるように、パスワードを使用してキーストアを開く必要があります。
ソフトウェア・キーストアもハードウェア・キーストアも使用できます。ソフトウェア・キーストアは、ディレクトリの場所に作成したファイルに定義されます。ソフトウェア・キーストアは次のいずれかのタイプになります。

- パスワードベースのキーストア: パスワードベースのキーストアは、作成したパスワードを使用することで保護されます。鍵が取得または使用される前にキーストアを開く必要があります。

- 自動ログイン・キーストア: 自動ログイン・キーストアはシステム生成のパスワードによって保護されます。セキュリティ管理者によって明示的に開かれる必要はありません。自動ログイン・キーストアは、アクセスすると自動的に開きます。自動ログイン・キーストアは異なるシステム間で使用できます。使用する際、明示的に開く必要のあるキーストアで提供される特別なセキュリティが不要な環境の場合、自動ログイン・キーストアを使用できます。

- 自動ログイン・ローカル・キーストア: 自動ログイン・ローカル・キーストアは、これを作成するシステムに対してローカルである自動ログイン・キーストアです。自動ログイン・ローカル・キーストアは、作成されたコンピュータ以外では開けません。

ハードウェア・キーストアは、暗号化鍵をセキュアに格納するよう設計された物理デバイスであるハードウェア・セキュリティ・モジュールと組み合せて使用します。このガイドでは、ソフトウェア・キーストアの構成方法についてのみ説明します。ハードウェア・キーストアの詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

- キーストアの場所。 キーストアの場所はsqlnet.oraファイルに指定する必要があります。

ユーザーがデータを入力すると、Oracle Databaseにより次の手順が実行されます。

1. キーストアからマスター鍵を取得します。

2. マスター・キーを使用して暗号化キーを復号化します。

3. 暗号化キーを使用して、ユーザーが入力したデータを暗号化します。

4. 暗号化した形式でデータをデータベースに格納します。

ユーザーがデータを選択した場合も、同じようなプロセスが実行されます。Oracle Databaseによりデータが復号化され、プレーン・テキスト形式で表示されます。

透過的データ暗号化には、次の利点があります。

- セキュリティ管理者の場合、ストレージ・メディアまたはデータ・ファイルが盗み出された場合または失われた場合にも機密データを保護できます。

- 透過的データ暗号化を実装すると、セキュリティ関連のコンプライアンス要件を順守できます。

- 表から取得されたデータは、データベース・ユーザーに対して透過的に復号化されます。データを復号化するために、トリガーまたはビューを作成する必要がありません。

- データベース・ユーザーは、アクセスするデータが暗号化された形式で格納されていることを認識する必要がありません。データはデータベース・ユーザーに対して透過的に復号化され、ユーザーがアクションを行う必要はありません。

- 暗号化されたデータを処理するためにアプリケーションを変更する必要がありません。データの暗号化/復号化は、データベースにより管理されます。

透過的データ暗号化がパフォーマンスに与える影響は最小限のものです。透過的データ暗号化の列暗号化において、パフォーマンスに影響が及ぶのは、暗号化された列からデータを取得するときと、暗号化された列にデータを挿入するときだけです。暗号化されていない列に対する操作では、たとえ同じ表に暗号化された列が含まれていても、パフォーマンスに影響が及ぶことはありません。ただし、暗号化されたデータには、プレーン・テキスト・データよりも多くの記憶域が必要なことに注意してください。平均的に、1つの列を暗号化すると、1行につき必要となる記憶域が32バイトから48バイトまで増えます。それでも、透過的表領域暗号化では暗号化と復号化がI/Oブロック層で実行されるため、より優れたパフォーマンスが得られます。復号化されたブロックはOracle Databaseのメモリーにキャッシュされ、それによりパフォーマンスが最適化されます。

関連項目:

透過的データ暗号化の使用方法の詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

透過的データ暗号化を使用するためのデータの構成

透過的データ暗号化の使用を開始するには、キーストアを作成し、マスター鍵を設定する必要があります。

キーストアは、透過的データ暗号化専用の別個のキーストアである必要があります。このキーストアは、透過的データ暗号化によって暗号化されるすべてのデータに使用されます

トピック:

- 手順1: キーストアの場所の構成

- 手順2: COMPATIBLE初期化パラメータ設定の確認

- 手順3: パスワードベースのソフトウェア・キーストアの作成

- 手順4: キーストアを開く(または閉じる)

- 手順5: マスター暗号化鍵の作成

- 手順6: データの暗号化

関連項目:

表領域暗号化の使用方法の詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

手順1: キーストアの場所の構成

パスワードベースのソフトウェア・キーストアを作成する場合は、sqlnet.oraファイルにキーストアのディレクトリの場所を指定する必要があります。この手順は1回のみ実行します。

キーストアの場所を構成するには、次のようにします。

1. $ORACLE_HOMEディレクトリに、キーストアを格納するディレクトリを作成します。
たとえば、Microsoft WindowsのC:\oracle\product\12.1.0\db_1ディレクトリにORA_KEYSTORESという名前のディレクトリを作成します。

2. sqlnet.oraファイルのバックアップ・コピーを作成します。このファイルのデフォルトの場所は、$ORACLE_HOME/network/adminディレクトリです。

3. sqlnet.oraファイルの最後に、次のようなコードを追加します。ORA_KEYSTORESは、キーストアを格納するディレクトリの名前です。

ENCRYPTION_WALLET_LOCATION=
(SOURCE=
(METHOD=file)
(METHOD_DATA=
(DIRECTORY=C:\oracle\product\12.1.0\db_1\ORA_KEYSTORES)))

4. sqlnet.oraファイルを保存して閉じます。

手順2: COMPATIBLE初期化パラメータ設定の確認

表領域の暗号化機能をすべて構成する場合、データベースのCOMPATIBLE初期化パラメータを11.2.0.0以上に設定する必要があります。

そうではない場合、11.0.0.0以上であることを確認します。このパラメータを設定すると、変更できないことに注意してください。

COMPATIBLE初期化パラメータを設定するには、次のようにします。

1. データベース・インスタンスにログインします。
次に例を示します。

sqlplus sec_admin
Enter password: password
Connected.

2. COMPATIBLEパラメータの現在の設定を確認します。
次に例を示します。

SHOW PARAMETER COMPATIBLE

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------
compatible                           string      11.0.0.0

3. COMPATIBLEパラメータを変更する必要がある場合、この手順の残りのステップを実行します。
値は、11.2.0.0以上である必要があります。

4. データベース・インスタンスの初期化パラメータ・ファイルを特定します。

- UNIXシステム: このファイルは、ORACLE_HOME/dbsディレクトリにあり、initORACLE_SID.ora (initmydb.oraなど)という名前です。

- Windowsシステム: このファイルは、ORACLE_HOME\databaseディレクトリにあり、initORACLE_SID.ora (initmydb.oraなど)という名前です。

5. 正しいCOMPATIBLE設定を使用して初期化パラメータ・ファイルを編集します。
次に例を示します。

COMPATIBLE = 12.0.0.0

6. SQL*Plusで、SYSDBA管理権限を付与されたユーザーとしてログインします。

sqlplus sys as sysdba
Enter password: password

7. Oracle Databaseインスタンスを再起動します。
次に例を示します。

SHUTDOWN IMMEDIATE
STARTUP

8. SQL*Plusからログアウトします。

手順3: パスワードベースのソフトウェア・キーストアの作成

キーストアを作成するには、ADMINISTER KEY MANAGEMENT SQL文を使用します。

デフォルトでは、Oracleキーストアにはそれまで使用されたマスター鍵の履歴が格納されます。これにより、マスター鍵を変更したり、以前のマスター鍵で暗号化されたデータを復号化することができます。キーストア・パスワード(大/小文字の区別あり)はデータベース管理者には知らされないため、職務分掌を実現できます。つまり、データベース管理者がデータベースを再起動してもキーストアは閉じられたままで、セキュリティ管理者が手動でキーストア開くまでは、データベースのデータを暗号化することも復号化することもできません。

キーストアを作成するには、次のようにします。

1. SQL*Plusで、SYSKM管理権限を付与されたユーザーとして接続します。
次に例を示します。

CONNECT psmith / AS SYSKM
Enter password: password

2. 次のADMINISTER KEY MANAGEMENT SQL文を実行します。

ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 'keystore_location' IDENTIFIED BY software_keystore_password;

次のように指定します。

- keystore_locationは、sqlnet.oraファイルに定義したキーストアの場所のパス(oracle\product\12.1.0\db_1\ORA_KEYSTORESなど)です。keystore_location設定は一重引用符で囲みます。この場所を確認するには、V$ENCRYPTION_WALLETビューのWRL_PARAMETER列を問い合せます。

- software_keystore_passwordは、セキュリティ管理者が作成する新規パスワードです。

たとえば、c:\oracle\product\12.1.0\db_1\ORA_KEYSTORESにキーストアを作成する場合、次のようになります。

ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 'c:\oracle\product\12.1.0\db_1\ORA_KEYSTORES' IDENTIFIED BY password;

keystore altered.

この文を実行すると、キーストアを含むewallet.p12ファイルがキーストアの場所に生成されます。

手順4: キーストアを開く(または閉じる)

キーストアは、手動で開閉できます。自動ログイン・キーストアは、それらにアクセスすると自動的に開きます。

トピック:

- キーストアを開く

- キーストアを閉じる

キーストアを開く

透過的データ暗号化を使用するには、パスワードベースのソフトウェア・キーストアを作成したらただちに手動で開く必要があります。

自動ログイン・キーストアまたはハードウェア・キーストアは自動的に開くので、これらを開く必要はありません。キーストアが開いているか、閉じているかのステータスは、V$ENCRYPTION_WALLETビューのSTATUS列を問い合せて、確認できます。

キーストアを開く手順:

1. SYSKMシステム権限を付与されたユーザーとしてSQL*Plusにログインしていることを確認します。

2. 次のADMINISTER KEY MANAGEMENT SQL文を入力します。

ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY software_keystore_password;

keystore altered.

software_keystore_passwordを、「手順3: パスワードベースのソフトウェア・キーストアの作成」で作成したパスワードに置き換えます。

キーストアを閉じる

マスター鍵へのアクセスを無効にし、暗号化された列へのアクセスを防止する場合は、キーストアを閉じることができます。

ほとんどの場合、キーストアは、閉じる理由がないかぎり開いたままにします。透過的データ暗号化が機能するには、キーストアが開かれている必要があります。キーストアを再度開くには、ADMINISTER KEY MANAGEMENT文を使用します。

キーストアを閉じる手順:

1. SYSKMシステム権限を付与されたユーザーとしてSQL*Plusにログインしていることを確認します。

2. 次のSQL文を入力します。

ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY software_keystore_password;

手順5: マスター暗号化鍵の作成

マスター暗号化鍵はキーストアに格納されます。表の鍵と表領域の暗号化鍵を保護します。

デフォルトでは、透過的データ暗号化(TDE)によって生成されるランダム鍵がマスター暗号化鍵として使用されます。

マスター暗号化鍵を作成するには、次のようにします。

1. SYSKMシステム権限を付与されたユーザーとしてSQL*Plusにログインしていることを確認します。

2. 次のADMINISTER KEY MANAGEMENT SQL文を実行します。

ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY software_keystore_password [WITH BACKUP [USING 'backup_identifier']];

keystore altered.

次のように指定します。

- software_keystore_passwordは、「手順3: パスワードベースのソフトウェア・キーストアの作成」で作成したパスワードです。

- WITH BACKUPを使用すると、キーストアのバックアップが作成されます。パスワードベースのキーストアの場合、このオプションを使用する必要があります。自動ログイン・キーストアや自動ログイン・ローカル・キーストアの場合、使用する必要はありません。オプションでUSING句を使用し、バックアップの簡単な説明を追加できます。この説明は二重引用符で囲みます。この識別子は名前付きキーストア・ファイルに付加されます(ewallet_timestamp_emp_key_backup.p12など)。

次に例を示します。

ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY IDENTIFIED BY software_keystore_password WITH BACKUP USING 'password key backup';

手順6: データの暗号化

sqlnet.oraファイルでキーストアのディレクトリの場所を作成し、キーストアとマスター暗号化鍵を作成したら、個々の表列もしくは表領域全体のいずれかを暗号化できます。

トピック:

- 表の個々の列の暗号化

- 表領域の暗号化

表の個々の列の暗号化

暗号化する列は、提供された一連のガイドラインに従って選択してください。

暗号化する列かどうかを識別するときに行う決定は、カリフォルニア州上院法案1386などの政府のセキュリティ規則、またはクレジット・カード業界(PCI)のデータ・セキュリティ基準などの業界の基準によって規定されます。クレジット・カード番号、社会保障番号、その他の個人情報(PII)はこのカテゴリに分類されます。独自の内部のセキュリティ・ポリシー(企業秘密、研究結果、従業員の給与、ボーナスなど)で、暗号化の要件を決定します。データを暗号化する場合と暗号化しない場合のガイドラインは、「データを暗号化するタイミング」を参照してください。

暗号化する列を選択するには、次のガイドラインに従います。

- 暗号化する列のデータ型をチェックします。透過的データ暗号化では、次のデータ型がサポートされす。

- BINARY_FLOAT

- BINARY_DOUBLE

- CHAR

- DATE

- BLOB、CLOBなどのラージ・オブジェクト型(LOB)脚注 1

- NCHAR

- NUMBER

- NVARCHAR2

- RAW

- TIMESTAMP

- VARCHAR2

- 選択した列が外部キーの一部でないことを確認します。透過的データ暗号化を使用すると、各表に固有の暗号化鍵が作成されます。この暗号化鍵はデータベースのデータ・ディクショナリに格納され、外部のマスター鍵によって暗号化されます。暗号化された列は外部キーとして使用できません。

表の列を暗号化するには次のようにします。

1. キーストアを作成して開き、マスター暗号化鍵を作成していることを確認します。
必要に応じて、次の項を参照してください。

- キーストアの鍵の作成方法の詳細は、「手順3: パスワードベースのソフトウェア・キーストアの作成」を参照

- キーストアを開く方法の詳細は、「手順4: キーストアを開く(または閉じる)」を参照

- マスター暗号化鍵の作成は、「手順5: マスター暗号化鍵の作成」を参照

2. Enterprise Managerでデータベース・ホームページにアクセスします。
詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

3. 「スキーマ」メニューから、「データベース・オブジェクト」、「表」の順に選択します。
データベース・ログイン・ページが表示されたら、SYSDBA管理権限を持つSYSとしてログインします。

4. 表ページで、次のいずれかを実行します。

- 新しい表を作成するには、「作成」をクリックしてから表示されたページの質問に回答し、表の作成を開始します。

- 既存の表を変更するには、スキーマ名を「スキーマ」フィールドに、表名を「オブジェクト名」フィールドに入力して表名を検索します。(パーセント記号(%)ワイルドカード文字を使用して表のグループを検索できます。たとえば、Oで始まるすべての表を検索するには、O%を使用します。)表が「表」ページに示されている場合は、その表を選択して「編集」をクリックします。

表の作成または表の編集ページで、暗号化オプションを設定できます。

たとえば、OE.ORDERS表の列を暗号化する場合、「表の編集」ページは次のように表示されます。

5. 「表の作成」(または「表の編集」)ページで、次の手順を実行します。

a. 暗号化する列を選択します。
外部キー制約の一部である列(主キー列または一意キー列)は選択しないでください。これらの列は暗号化できません。これらの列には、名前の左側に鍵またはチェック・マーク・アイコンがあります。

b. 「暗号化オプション」をクリックして、「表」ページの暗号化オプションを表示します。

c. 「暗号化アルゴリズム」リストから次のオプションを選択します。

- AES192: キーの長さを192ビットに設定します。AESは「Advanced Encryption Standard」の略です。

- 3DES168: キーの長さを168ビットに設定します。3DESは「Triple Data Encryption Standard」の略です。

- AES128: キーの長さを128ビットに設定します。このオプションはデフォルトです。

- AES256: キーの長さを256ビットに設定します。

d. 「キーの生成」で、「ランダムにキーを生成」または「キーの指定」のどちらかを選択します。「キーの指定」を選択した場合は、「キーの入力」および「キーの確認」フィールドにシード値の文字を入力します。
「ランダムにキーを生成」設定を選択すると、ソルトが有効になります。ソルトとは、暗号化されたデータのセキュリティを強化する方法の1つで、暗号化される前のデータに追加されるランダムな文字列です。これにより、同じテキストであっても、暗号化されたときには異なって表示されます。結果として、暗号化されたテキストのパターン一致を使用する攻撃者は、盗み出したデータを使用できません。

e. 「続行」をクリックして「表の作成」(または「表の編集」)ページに戻ります。

f. 「暗号化」の下のボックスを選択して、列の暗号化を有効にします。

6. 「適用」をクリックし、次に「戻る」をクリックします。
「表」ページが表示されます。

表の更新時も、読取りアクセスは可能です。後で、列内の既存のデータおよび将来格納されるデータは、データベース・ファイルに書き込まれるときに暗号化され、認可されたユーザーが選択したときに復号化されます。データ操作言語(DML)文が必要な場合は、オンラインで再定義できます。

表領域の暗号化

新規表領域を作成中に新規表領域を暗号化できますが、既存の表領域を暗号化することはできません。

回避策として、CREATE TABLE AS SELECT、ALTER TABLE MOVEを使用するか、またはOracle Data Pumpインポートを使用して既存の表領域からデータを取得し、暗号化されている表領域に格納することができます。表領域の作成の詳細は、Oracle Database 2日でデータベース管理者を参照してください。

表領域を暗号化するには、次のようにします。

1. この項の前述の手順で説明されているように、キーストアを作成して開いていることを確認します。

2. Enterprise Managerでデータベース・ホームページにアクセスします。
詳細は、Oracle Database 2日でデータベース管理者を参照してください。

3. 「管理」メニューから、「記憶域」、「表領域」の順に選択します。
データベース・ログイン・ページが表示されたら、SYSなどの管理ユーザーとしてログインします。ユーザーSYSは、SYSDBAロールが選択されている状態でログインする必要があります。

「表領域」ページが表示されます。

4. 「作成」をクリックしてから表示されたページの質問に回答し、表領域と必要なデータ・ファイルの作成を開始します。

5. 「表領域の作成」ページで、次のステップを実行します。

a. 「タイプ」の「永続」リストで、「暗号化」ボックスを選択します。

b. 「データファイル」で、「追加」を選択してデータ・ファイルを追加します。(LinuxとWindowsシステムのみ)

c. 「暗号化」オプションを選択して、「暗号化オプション」ページを表示します。

d. 「暗号化アルゴリズム」リストから次のオプションを選択します。

- AES192: キーの長さを192ビットに設定します。AESは「Advanced Encryption Standard」の略です。

- 3DES168: キーの長さを168ビットに設定します。3DESは「Triple Data Encryption Standard」の略です。

- AES128: キーの長さを128ビットに設定します。このオプションはデフォルトです。

- AES256: キーの長さを256ビットに設定します。

暗号化アルゴリズムの詳細は、「ネットワーク暗号化の設定」の手順5の「使用可能なメソッド」を参照してください。

e. 「続行」をクリックします。

6. 表領域の作成ページで、「OK」をクリックします。
既存の表領域のリストに新規表領域が表示されます。既存の表領域は暗号化できないことに注意してください。

関連項目:

- データベースで既存の暗号化された表領域の問合せを行う場合は、「現行のデータベース・インスタンスで暗号化されている表領域のチェックのためのデータ・ディクショナリ・ビュー」を参照してください

- 表領域暗号化の詳細は、『Oracle Database Advanced Securityガイド』を参照してください

- CREATE TABLESPACE文の詳細は、『Oracle Databaseリファレンス』を参照してください

既存の暗号化データのチェック

すでに暗号化されているデータについて、データベースに問い合せることができます。

暗号化された個々の列、暗号化された列を含む現行のデータベース・インスタンスのすべての表、暗号化されているすべての表領域をチェックできます。

トピック:

- 作成されたキーストアのタイプの確認

- キーストアの場所の確認

- キーストアが開いているか閉じているかの確認

- 個々の表の暗号化されている列のチェック

- 現行のデータベース・インスタンスで暗号化されているすべての表列のチェック

- 現行のデータベース・インスタンスで暗号化されている表領域のチェックのためのデータ・ディクショナリ・ビュー

作成されたキーストアのタイプの確認

作成されたキーストアのタイプを確認するには、V$ENCRYPTION_KEYSビューに問い合せます。

作成されたキーストアのタイプを確認するには、次のようにします。

- SQL*Plusで、次のようにV$ENCRYPTION_KEYSビューに問い合せます。

SELECT KEYSTORE_TYPE FROM V$ENCRYPTION_KEYS;

キーストアの場所が次のように表示されます。

KEYSTORE_TYPE
-----------------------------
SOFTWARE KEYSTORE

キーストアの場所の確認

キーストアの場所は、V$ENCRYPTION_WALLETビューに問い合せることで確認できます。

キーストアの場所を確認するには、次のようにします。

- SQL*Plusで、次のようにV$ENCRYPTION_WALLETビューに問い合せます。

SELECT WRL_PARAMETER FROM V$ENCRYPTION_WALLET;

キーストアの場所が次のように表示されます。

WRL_PARAMETER
-----------------------------
C:\oracle\product\12.1.0\db_1

キーストアが開いているか閉じているかの確認

キーストアが開いているか、閉じているかは、V$ENCRYPTION_WALLETビューに問い合せると、確認できます。

キーストアが開いているか閉じているかを確認するには、次のようにします。

- SQL*Plusで、次のようにV$ENCRYPTION_WALLETビューに問い合せます。

SELECT STATUS FROM V$ENCRYPTION_WALLET;

キーストアのステータスが次のように表示されます。

STATUS
-------
OPEN

個々の表の暗号化されている列のチェック

SQL*PlusでDESC(DESCRIBE)文を使用して、データベース表内の暗号化されている列をチェックできます。

個々の表の暗号化されている列をチェックするには、次のようにします。

- SQL*Plusで、次の構文を使用してDESC文を実行します。

DESC tablename;

次に例を示します。

DESC OE.ORDER_ITEMS;

表スキーマの説明が表示されます。次の出力では、QUANTITY列が暗号化されることを示しています。

Name                                      Null?     Type
----------------------------------------  --------  --------------------------
ORDER_ID                                  NOT NULL  NUMBER(12)
LINE_ITEM_ID                              NOT NULL  NUMBER(3)
PRODUCT_ID                                NOT NULL  NUMBER(6)
UNIT_PRICE                                          NUMBER(8,2)
QUANTITY                                            NUMBER(8) ENCRYPT

現行のデータベース・インスタンスで暗号化されているすべての表列のチェック

すべての暗号化された表列をチェックするには、DBA_ENCRYPTED_COLUMNSビューの問合せができます。

現行のデータベース・インスタンスで暗号化されているすべての表列をチェックするには、次のようにします。

- SQL*Plusで、DBA_ENCRYPTED_COLUMNSビューから選択します。
次に例を示します。

SELECT * FROM DBA_ENCRYPTED_COLUMNS;

このSELECT文によって、Oracle Transparent Data Encryptionを使用して暗号化された列を含む、データベースのすべての表および列がリストされます。次に例を示します。

OWNER    TABLE_NAME    COLUMN_NAME    ENCRYPTION_ALG     SALT   INTEGRITY_ALG
-------  ----------    -----------    ----------------   ----   -------------
OE       CUSTOMERS     INCOME_LEVEL   AES 128 bits key   YES    SHA-1
OE       UNIT_PRICE    ORADER_ITEMS   AES 128 bits key   YES    SHA-1
HR       EMPLOYEES     SALARY         AES 192 bits key   YES    SHA-1

関連項目:

DBA_ENCRYPTED_COLUMNSビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

現行のデータベース・インスタンスで暗号化されている表領域のチェックのためのデータ・ディクショナリ・ビュー

Oracle Databaseでは、暗号化されている表領域をチェックするために問い合せできるデータ・ディクショナリ・ビューのセットが提供されています。

表4-1に、暗号化されている表領域のチェックに使用できるデータ・ディクショナリ・ビューを示します。

表4-1 暗号化されている表領域のデータ・ディクショナリ・ビュー

データ・ディクショナリ・ビュー

説明

DBA_TABLESPACES

データベース内のすべての表領域が示されます。たとえば、表領域が暗号化されたかどうかを確認し、次のように入力します。

SELECT TABLESPACE_NAME, ENCRYPTED FROM DBA_TABLESPACES;

TABLESPACE_NAME              ENC
---------------------------- ----
SYSTEM                       NO
SYSAUX                       NO
UNCOTBS1                     NO
TEMP                         NO
USERS                        NO
EXAMPLE                      NO
SECURESPACE                  YES

USER_TABLESPACES

現行ユーザーがアクセス可能な表領域について説明します。DBA_TABLESPACESと同じ列があります(PLUGGED_IN列を除く)。

V$ENCRYPTED_TABLESPACES

暗号化されている表領域に関する情報が示されます。次に例を示します。

SELECT * FROM V$ENCRYPTED_TABLESPACES;

TS#  ENCRYPTIONALG  ENCRYPTEDTS
-----------  -------------  -----------
6   AES128         YES

このリストには、表領域番号、暗号化アルゴリズム、暗号化が有効か無効かなどが示されます。

表領域の名前を検出する場合は、次の結合操作を使用します。

SELECT NAME, ENCRYPTIONALG ENCRYPTEDTS
FROM V$ENCRYPTED_TABLESPACES, V$TABLESPACE
WHERE V$ENCRYPTED_TABLESPACES.TS# = V$TABLESPACE.TS#;

関連項目:

データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

脚注の凡例

脚注1:
外部LOB (BFILE)は、暗号化できません。

5 Oracle Database Vaultを使用したアクセスの制御

Oracle Database VaultはOracle databaseに対する 管理的アクセスを制限します。

トピック:

- Oracle Database Vaultについて

- チュートリアル: ユーザー・スキーマへの管理者アクセスの制御

関連項目:

Oracle Database Vaultの管理者ガイド

Oracle Database Vaultについて

Oracle Database Vaultでは、ファイングレイン・アプローチを使用してOracle Databaseへの管理アクセスを制限できます。

これによって、内部の脅威に対する保護、コンプライアンス要件の遵守、職務分離の適用など、現在も続く、セキュリティの最も困難な問題に対処できます。Database Vaultでは、データベースへの管理者アクセスの制限以外に、職務分掌を行って、アプリケーション、データベース、およびデータにアクセスする人、時間、場所、および方法を制御できます。

通常、Oracle database管理者の主な仕事は、データベースのチューニング、アップグレードのインストール、データベースの状態監視、検出した問題の解決を行うことです。Oracle Databaseのデフォルトのインストールでは、データベース管理者はユーザーを作成し、ユーザー・データにアクセスできます。セキュリティを強化するために、これらの作業は実行する必要があるユーザーにのみ制限する必要があります。これは業務分離と呼ばれ、データベース管理者がパフォーマンス・チューニングなど、その専門知識にあったタスクに集中できるようになります。

Oracle databasesへの 管理者アクセスを制約することにより、 Oracle databases、Oracle Database VaultはPayment Card Industry (PCI) Data Security Standard (DSS)要件、米国企業改革法(Sarbanes-Oxley Act)、欧州連合(EU)のプライバシー指針および医療保険の相互運用性と説明責任に関する法(HIPAA)など、共通の規制コンプライアンスに従うお手伝いをします。これらの規制では、詐称行為、IDの盗用、財政面での不正行為および財政面での不利益をもたらす可能性のある機密情報のアクセス、開示または変更に対する強力な内部制御が必要です。

Oracle Database VaultはOracleデータベースに対して、管理者アクセスを制限する次の方法を提供します:

- 保護対象となるデータベース・スキーマ、オブジェクトおよびロールのグループ分け。このグループ分けはレルムと呼ばれ、レルムのコンポーネントはすべて保護されます。Database Vault管理者は、レルムを作成した後に、そのレルムへのアクセスを管理するユーザーを指定します。レルムは、たとえば、スキーマ内の1つの表を対象にしたり、スキーマ全体を対象にして作成できます。

- PL/SQL式を作成し、データベース制限をカスタマイズします。式はルール内に作成し、1つのカテゴリにルールが複数ある場合は、ルールをルール・セットにグループ分けします。ルール・セット内のルールを実施するには、そのルールをレルムまたはコマンド・ルールに関連付けます。たとえば、メンテナンス期間中(午後10時から12時など)にデータベースのアクセスを阻止したい場合は、その時間帯のみアクセスを制限するルールを作成します。

- ユーザーが使用できる、または使用できない特定のPL/SQL文の指定。これはコマンド・ルールと呼ばれます。コマンド・ルールには、保護する対象のコマンドと、そのコマンドの実行を許可するかどうかを決定するルール・セットが含まれます。コマンド・ルールを作成すると、1つ以上のデータベース・オブジェクトに影響を与えるSELECT、ALTER SYSTEM、データ定義言語(DDL)およびデータ操作言語(DML)文を保護できます。コマンド・ルールは、ルール・セットを関連付けてさらにカスタマイズすることができます。

- セッション・ユーザーやIPアドレスなど、Oracle Database Vaultが認識および保護できるデータを記録するための属性の定義。これらの属性はファクタと呼ばれます。ファクタは、データベースに接続するためのデータベース・アカウントの認可や、データの可視性および管理性を制限するフィルタ・ロジックの作成などのアクティビティに使用できます。ルール・セットをファクタに関連付けて、ファクタをさらにカスタマイズすることができます。

- Oracle Database Vaultルールのみによって有効になるセキュア・アプリケーション・ロールの設計。Oracle Database Vaultでセキュア・アプリケーション・ロールを作成した後、これにルール・セットを関連付けます。ルール・セットによって、セキュア・アプリケーション・ロールがいつ、どのように有効または無効になるかが定義されます。

これらのコンポーネントを使用したポリシーは、Oracle Database Vault AdministratorあるいはそのPL/SQLパッケージを使用して作成できます。マルチテナント環境では、各ポリシーは現在のプラガブル・データベース(PDB)にのみ適用されます。手順1: Oracle Database Vaultを有効にする

チュートリアル: ユーザー・スキーマへの管理者アクセスの制御

このチュートリアルでは、OEスキーマを対象としたレルムを作成し、管理者のアクセスから保護します。ただし、ユーザーSCOTTはOE.CUSTOMERS表にアクセスする必要があるため、このユーザーがこのデータへのアクセスを続行できるようにする必要があります。

OEスキーマには、顧客に許可しているクレジットの上限などの機密情報が格納されている様々な表があります。Order Entry表には、一般的に、クレジット・カード番号、社会保険番号などの機密情報が格納されています。Payment Card Industry(PCI)Data Security Standards(DSS)によれば、このような種類の情報は、このような情報へのアクセスが仕事上必要な人にのみ制限される必要があります。

トピック:

- 手順1: Oracle Database Vaultを有効にする

- 手順2: OE.CUSTOMERS表に対するSELECT権限をユーザーSCOTTに付与する

- 手順3: ユーザーSYSおよびSCOTTとしてOE.CUSTOMERS表から選択を行う

- 手順4: OE.CUSTOMERS表を保護するためにレルムを作成する

- 手順5: OE Protectionsレルムをテストする

- 手順6: このチュートリアルのコンポーネントの削除(オプション)

手順1: Oracle Database Vaultを有効にする

Oracle Database Vaultは、Oracle Databaseのデフォルトのインストールを実行したときにインストールされます。Oracle Database VaultをインストールしてからOracle Databaseに登録し、Oracle Database Vaultアカウント・マネージャのユーザー・アカウントを有効にする必要があります。

Oracle Label Securityが有効でない場合は、登録プロセスにより、Oracle Label SecurityおよびDatabase Vaultが有効になります。

Oracle Database Vaultを登録するには、次のようにします。

1. SYSDBA管理権限を持つユーザーSYSとして、データベース・インスタンスにログインします。
次に例を示します。

sqlplus sys as sysdba
Enter password: password

2. Oracle Database Vaultが有効がどうかを確認します。PARAMETER列では大/小文字が区別されるため、ここに示されているとおりに入力してください。

SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';

TRUEが戻された場合、Oracle Database Vaultは登録されています。「手順2: OE.CUSTOMERS表に対するSELECT権限をユーザーSCOTTに付与する」に進みます。FALSEが戻された場合は、『Oracle Database Vault管理者ガイド』の説明に従って、データベースにDatabase Vaultを登録します。

手順2: OE.CUSTOMERS表に対するSELECTをユーザーSCOTTに付与する

後でチュートリアルをテストするときに、ユーザーSCOTTはOE.CUSTOMERS表からの選択を行う必要があります。まず、SCOTTアカウントが有効であることを確認する必要があります。

トピック:

- ユーザーSCOTTの有効化

- ユーザーSCOTTへのOE.CUSTOMERS表に対するSELECT権限の付与

Oracle Database Vaultに対するユーザーSCOTTの有効化

ユーザーSCOTTを有効にするには、Enterprise Managerを使用できます。

ユーザーSCOTTを有効にするには、次のようにします。

1. Enterprise Managerで、NORMALロールが選択されたDatabase Vaultアカウント・マネージャ(ロールDV_ACCTMGRが付与されたユーザー)としてログインしていることを確認します。
Oracle Database Vaultを有効にすると、管理アカウント(SYSやSYSTEMなど)を使用してユーザー・アカウントを作成または有効にすることはできなくなります。これは、Oracle Database Vaultがデフォルトの状態のままでも、管理アカウントに対して職務分離の方針が適用されるためです。この時点から、ユーザー・アカウントを管理するには、Oracle Database Vaultアカウント・マネージャのアカウントを使用する必要があります。

管理ユーザーは管理に必要な権限を持ったままです。たとえば、システム権限と多数のPL/SQLパッケージを所有するユーザーSYSは、引き続きこれらの権限を他のユーザーに付与できます。ただし、ユーザーSYSが、ユーザー・アカウントを作成、変更、削除することはできなくなっています。かわりに、Database Vaultアカウント・マネージャとしてログインする必要があります。

2. 「管理」メニューから、「セキュリティ」を選択し、「ユーザー」を選択します。

3. ユーザー・ページでSCOTTユーザーを選択し、ユーザーの表示ページで「編集」をクリックします。
ユーザーの編集ページが表示されます。

4. 次の設定を入力します。

- 「パスワードの入力」および「パスワードの確認」: SCOTTアカウントのパスワードのステータスが期限切れである場合は、新しいパスワードを入力します。「パスワードの作成要件」に記載されたガイドラインに従って、安全なパスワードを入力します。

- ステータス: 「ロック解除」をクリックします。

5. 「適用」をクリックします。

6. Enterprise Managerを終了しないでください。

ユーザーSCOTTへのOE.CUSTOMERS表に対するSELECT権限の付与

ユーザーSCOTTが有効になった後、適切な権限を付与できます。

ユーザーSCOTTにOE.CUSTOMERS表に対するSELECT権限を付与するには、次のようにします。

1. OEユーザーとしてSQL*Plusにログインします。

sqlplus oe
Enter password: password
Connected.

2. ユーザーSCOTTにOE.CUSTOMERS表に対するSELECT権限を付与します。

GRANT SELECT ON CUSTOMERS TO SCOTT;

手順3: ユーザーSYSおよびSCOTTとしてOE.CUSTOMERS表から選択を行う

現在、SYSは管理権限を持ち、SCOTTはユーザーOEから明示的なSELECT権限を付与されているので、SYSおよびSCOTTの両方のユーザーは、OE.CUSTOMERS表から選択することができます。

ユーザーSYSおよびSCOTTとしてOE.CUSTOMERSから選択を行うには、次のようにします。

1. SQL*Plusで、SYSDBA管理権限を使用してユーザーSYSとして接続します。

sqlplus sys as sysdba
Enter password: password

2. 次のように、OE.CUSTOMERS表から選択を行います。

SELECT COUNT(*) FROM OE.CUSTOMERS;

次のような出力結果が表示されます。

COUNT(*)
--------
319

3. ユーザーSCOTTとして接続し、同じSELECT文を実行します。

CONNECT SCOTT
Enter password: password
Connected.

SELECT COUNT(*) FROM OE.CUSTOMERS;

次の出力が表示されます。

COUNT(*)
--------
319

手順4: OE.CUSTOMERS表を保護するためにレルムを作成する

管理者からのOE.CUSTOMER表へのアクセスを制限するには、OEスキーマを囲むレルムを作成する必要がありします。

OEスキーマを対象としたレルムを作成するには、次のようにします。

1. Enterprise Managerで「ログアウト」をクリックしてデータベースからログアウトします。

2. 「確認」ダイアログ・ボックスで「(データベース・インスタンス)のログアウト」を選択し、「ログアウト後にログイン・ページを表示します。」チェック・ボックスを選択します。「ログアウト」をクリックします。

3. DV_OWNERまたはDV_ADMINアカウントが付与されたユーザー(dbv_ownerなど)としてログインします。「通常ロール」ロールを使用して接続します。

4. 「管理」メニューから、「セキュリティ」、「Database Vault」を選択します。

5. Database Vaultページで「管理」タブを選択します。

6. 「Database Vaultコンポーネント」で「レルム」を選択します。(デフォルトで選択されています。)
「レルム」ページが表示されます。(デフォルトで選択されています。)

7. 「作成」をクリックします。

8. レルムの作成ページで次の情報を入力します。

- 名前: OE Protections

- 説明: Realm to protect the OE schema

- ステータス: 「有効」をクリックします。

- 監査オプション: 「失敗時に監査」を選択します。

9. 「次へ」をクリックします。
レルム・セキュア・オブジェクト・ページが表示されます。

10. 「追加」をクリックします。

11. セキュア・オブジェクトの追加ウィンドウで、次の情報を追加します。

- 所有者: OE

- オブジェクト・タイプ: TABLE

- オブジェクト名: %

12. 「OK」をクリックします。
OE表がレルム・セキュア・オブジェクトとしてリストされます。

13. 「次へ」をクリックします。

14. レルム認可ページで「追加」をクリックします。
認可の追加ウィンドウが表示されます。

15. 次の情報を入力します。

- レルム認可の権限受領者: OEと入力します。

- レルム認可タイプ: 「所有者」を選択します。

- レルム認可ルールセット: Disabledと入力します。

16. 「OK」、続いて「次」をクリックします。
確認ページが表示され、設定を確認できます。

17. 「終了」をクリックします。
レルム・ページにOE保護レルムが表示されます。

18. Enterprise Managerを終了しないでください。

手順5: OE Protectionsレルムをテストする

これでOEスキーマを保護するレルムが作成され、テストの準備ができました。

Oracle Database Vaultで定義した保護は即時に有効になるため、データベース・セッションを再び開始する必要はありません。

OE Protectionsレルムをテストするには、次のようにします。

1. SYSDBA管理権限を使用してユーザーSYSとしてSQL*Plusに接続します。

CONNECT SYS AS SYSDBA
Enter password: password
Connected.

前にSYSとして接続している場合、再接続の必要はありません。行った変更がただちに有効になります。

2. OE.CUSTOMERS表からの選択を試行します。

SELECT COUNT(*) FROM OE.CUSTOMERS;

次の出力が表示されます。

ERROR at line 1:
ORA-01031: insufficient privileges

OE Protectionsレルムによって、管理ユーザーのOE.CUSTOMERS表へのアクセスが制限されています。スキーマ全体を保護するようにOE Protectionsレルムを定義したため、管理ユーザーはOE内の他の表にもアクセスできません。

3. ユーザーSCOTTとして接続します。

CONNECT SCOTT
Enter password: password
Connected.

4. OE.CUSTOMERS表からの選択を試行します。

SELECT COUNT(*) FROM OE.CUSTOMERS;

次の出力が表示されます。

COUNT(*)
----------
319

ユーザーOEは明示的にOE.CUSTOMERS表でSELECT権限をこのユーザーに付与したため、OE保護レルムはユーザーSCOTTには適用されません。Oracle Database Vaultでは必要な保護が設定されますが、定義済の明示的な権限はオーバーライドされません。SCOTTはまだこのテーブルへの問合せができます。

手順6: このチュートリアルで使用したコンポーネントを削除する(オプション)

コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。

トピック:

- OE保護レルムの削除

- ユーザーSCOTTのOE.CUSTOMERSに対するSELECT権限の取消し

- Oracle Database VaultおよびOracle Label Securityの無効化

OE保護レルムの削除

OE保護レルムを削除するには、Enterprise Managerを使用できます。

OE Protectionsレルムを削除するには、次のようにします。

1. Enterprise Managerで、Oracle Database Vault Administratorのページからログアウトしている場合、Oracle Database Vaultのインストール時に作成したDatabase Vault所有者アカウント(dbv_ownerなど)として再度ログインします。

2. 「管理」ページの「Database Vault機能管理」で、「レルム」をクリックします。
「レルム」ページが表示されます。

3. レルムのリストから「OE Protections」を選択し、「削除」をクリックします。その後、「確認」ページで「はい」をクリックします。

4. Database Vault Administratorからログアウトします。

ユーザーSCOTTのOE.CUSTOMERSに対するSELECT権限の取消し

ユーザーSCOTTのOE.CUSTOMERSに対するSELECT権限を取り消すには、SQL*Plusを使用できます。

OE.CUSTOMERSに対するSELECT権限をユーザーSCOTTから取り消すには、次のようにします。

1. SQL*PlusでユーザーOEとして接続します。

CONNECT OE
Enter password: password
Connected.

2. ユーザーSCOTTのSELECT権限を取り消します。

REVOKE SELECT ON CUSTOMERS FROM SCOTT;

Oracle Database VaultおよびOracle Label Securityの無効化

Oracle Database VaultおよびOracle Label Securityを無効にするには、SQL*Plusを使用できます。

Oracle Database Vaultを(必要に応じてOracle Label Securityも)削除するには、次のようにします。

1. DV_OWNERロールを付与されたユーザーとして接続します。
次に例を示します。

CONNECT dbv_owner
Enter password: password

2. 次のプロシージャを実行してOracle Database Vaultを無効にします。

EXEC DVSYS.DBMS_MACADM.DISABLE_DV;

3. SYSDBA管理権限を持つユーザーSYSとして接続します。

CONNECT SYS AS SYSDBA
Enter password: password

4. 次のプロシージャを実行してOracle Label Securityを無効にします。

EXEC LBACSYS.OLS_ENFORCEMENT.DISABLE_OLS;

Oracle Database Vaultを登録して有効にすると、Oracle Label Securityも有効になります。Oracle Database Vaultを無効にしない場合、Database VaultでOracle Label Securityを使用するため、Oracle Label Securityを無効にしないでください。(このガイドでは、Database Vaultを無効にするものとします。)ただし、Oracle Label Securityは有効で、Database Vaultを無効にすることはできます。

5. データベースを再起動します。

SHUTDOWN IMMEDIATE
STARTUP

6 Oracle仮想プライベート・データベースを使用したアクセスの制限

Oracle Virtual Private Databaseでは、ユーザーが入力するSQL文への動的なWHERE句の挿入によって、データへのアクセスを制限できます。

トピック:

- Oracle Virtual Private Databaseの概要

- チュートリアル: 問合せを行うユーザーに基づいたデータへのアクセスの制限

関連項目:

Oracle Virtual Private Databaseの動作については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

Oracle Virtual Private Databaseの概要

Oracle Virtual Private Database(VPD)では、ユーザーが実行する任意のSQL文にWHERE句を動的に追加することができます。WHERE句により、ユーザーのIDに基づいて、ユーザーがアクセスを許可されているデータがフィルタ処理されます。

この機能では、データベースに問い合せるすべてのSQL文に対してWHERE句を強制するポリシーを作成し、データへのアクセスを行または列レベルで制限します。WHERE句では、セキュリティ・ポリシーを通過したIDを持つ、すなわち、保護する対象のデータへのアクセス権を持つユーザーのみが許可されます。VPDポリシーはデータベースの表またはビュー・レベルで作成および管理しますが、これはデータベースにアクセスするアプリケーションを変更しないことを意味します。

マルチテナント環境では、各仮想プライベート・データベース・ポリシーは現在のプラガブル・データベース(PDB)にのみ適用されます。

Oracle仮想プライベート・データベースのポリシーには次のコンポーネントがあり、通常はセキュリティ管理者のスキーマに作成されます。

- 仮想プライベート・データベースの表に影響するSQL文に動的WHERE句を追加するPL/SQLファンクション。たとえば、PL/SQLファンクションにより、次のSELECT文が変換されます。

SELECT * FROM ORDERS;

この文は次のように変換されます。

SELECT * FROM ORDERS
WHERE SALES_REP_ID = 159;

この例では、ユーザーは営業担当者159の受注のみを表示できます。このWHERE句の生成に使用されるPL/SQLファンクションは次のようになります。

CREATE OR REPLACE FUNCTION auth_orders(
schema_var IN VARCHAR2,
table_var  IN VARCHAR2
)
RETURN VARCHAR2
IS
return_val VARCHAR2 (400);
BEGIN
return_val := 'SALES_REP_ID = 159';
RETURN return_val;
END auth_orders;
/

この例の説明は、次のとおりです。

- schema_varおよびtable_var: スキーマ名(OE)および表名(ORDERS)を格納するパラメータを作成します。(表に使用する2つ目のパラメータtable_varは、ビューとシノニムにも使用できます。)最初にスキーマのパラメータを作成し、次に表、ビュー、またはシノニム・オブジェクトのパラメータを作成します。ファンクション自体がOEスキーマまたはそのORDERS表を指定するのではないことに注意してください。ユーザーが作成する仮想プライベート・データベースのポリシーがこれらのパラメータを使用して、OE.ORDERS表を指定します。

- RETURN VARCHAR2: WHERE述語句に使用される文字列を返します。

- IS ... RETURN return_val: WHERE SALES_REP_ID = 159述語の作成が含まれます。

WHERE句は、ユーザーのセッション情報(ユーザーIDなど)に基づいてユーザー情報をフィルタ処理するよう構成できます。これを行うには、アプリケーション・コンテキストを作成します。アプリケーション・コンテキストを使用して、データベースとデータベース以外の両方のユーザーを認証できます。アプリケーション・コンテキストは、名前と値のペアです。次に例を示します。

SELECT * FROM oe.orders
WHERE sales_rep_id = SYS_CONTEXT('userenv','session_user');

この例では、WHERE句でSYS_CONTEXT PL/SQLファンクションを使用して、userenvコンテキストによって示されるユーザーのセッションID(session_user)を取得しています。アプリケーション・コンテキストの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

- パッケージにポリシーを追加する方法。DBMS_RLS.ADD_POLICYファンクションを使用して、パッケージにポリシーを追加します。DBMS_RLS PL/SQLパッケージを使用するには、そのPL/SQLパッケージに対するEXECUTE権限を付与される必要があります。ユーザーSYSがDBMS_RLSパッケージを所有しています。

データベース・レベルで行レベルのセキュリティを強制する方法は、アプリケーション・プログラム・レベルでセキュリティを強制した場合に比べて多くのメリットがあります。データを保護する場所であるデータベース自体にセキュリティ・ポリシーを実装できるため、様々な方法でアクセスされた場合でも攻撃を受ける可能性が低くなります。このセキュリティ層によって保護されるデータに対してユーザー(または侵入者)がどれだけアクセスを試みても、セキュリティは存在し、強制されます。データベースに接続するすべてのアプリケーションでポリシーを維持する必要はなく、1箇所(データベース)のみでポリシーを維持できるため、メンテナンス費も低く抑えられます。固有のDML操作に対してポリシーを作成できるため、非常に柔軟性の高いポリシーを適用できます。

関連項目:

- Oracle Virtual Private Databaseの動作については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

チュートリアル: 問合せを行うユーザーに基づいたデータへのアクセスの制限

このチュートリアルでは、営業担当者のユーザー・アカウントと財務管理者のアカウントを作成します。次にロールに基づいてデータ・アクセスを制限するOracle仮想プライベート・データベースを作成します。

Oracle Databaseでは、問合せを実行しているユーザーに基づいてデータへのアクセスを制限できます。たとえば営業担当者は自分が作成した注文のみを確認でき、他の従業員は確認できないようにします。

トピック:

- 問合せを行うユーザーに基づいたデータへのアクセスの制限について

- 手順1: このチュートリアルで使用するユーザー・アカウントを作成する

- 手順2: セキュリティ管理者アカウントを作成する(必要な場合)

- 手順3: セキュリティ管理者アカウントを更新する

- 手順4: F_POLICY_ORDERSポリシーのファンクションを作成する

- 手順5: ACCESSCONTROL_ORDERS仮想プライベート・データベース・ポリシーを作成する

- 手順6: ACCESSCONTROL_ORDERS仮想プライベート・データベース・ポリシーをテストする

- 手順7: このチュートリアルのコンポーネントの削除(オプション)

問合せを行うユーザーに基づいたデータへのアクセスの制限について

このチュートリアルでは、Order Entryデータベース(OE)のORDERS表を使用します。

この表には、次の情報が含まれます。

Name             Null?    Type
---------------- -------- ---------------------------------
ORDER_ID         NOTNULL  NUMBER(12)
ORDER_DATE       NOTNULL  TIMESTAMP(6) WITH LOCAL TIME ZONE
ORDER_MODE                VARCHAR2(8)
CUSTOMER_ID      NOTNULL  NUMBER(6)
ORDER_STATUS              NUMBER(2)
ORDER_TOTAL               NUMBER(8,2)
SALES_REP_ID              NUMBER(6)
PROMOTION_ID              NUMBER(6)

作成する仮想プライベート・データベース・ポリシーは、PL/SQLファンクションに関連付けられます。VPDポリシーはPL/SQLファンクションまたはプロシージャによって制御されるため、アクセスを制限するポリシーを様々な方法で設計できます。このチュートリアルでは、直属の上司が誰であるかに基づいて従業員のアクセスを制限するファンクションを作成します。このファンクションでは、顧客のIDに基づいて顧客のアクセスが制限されます。

データベース管理者やアプリケーション・アカウントとは別のデータベース・アカウントにVPDポリシーを格納する場合があります。このチュートリアルでは、「チュートリアル: セキュア・アプリケーション・ロールの作成」で作成したsec_adminアカウントを使用してVPDポリシーを作成します。アプリケーション表とVPDポリシーを分けることで、セキュリティを高めます。

行データの機密性に基づいてアクセスを制限する必要がある場合、Oracle Label Security (OLS)を使用します。OLSを使用すると、様々なレベルのセキュリティでデータを分類できます。この場合、行内のデータにアクセスできるユーザーをレベルごとに設定できます。この方法では、データのアクセス制御は、ユーザーの権限ではなくデータ自体に焦点が当てられます。詳細は、「Oracle Label Securityによる行レベルのセキュリティの強制」 を参照してください。

手順1: このチュートリアルで使用するユーザー・アカウントを作成する

OE.ORDERS表へのアクセスを必要とする従業員のための、ユーザー・アカウントを作成する準備ができました。

従業員ユーザー・アカウントを作成するには、次のようにします。

1. Enterprise Managerで、ターゲット・データベースのデータベース・ホームページに、SYSDBA管理権限を持つユーザーSYSとしてアクセスします。
詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

2. 「管理」メニューから、「セキュリティ」を選択し、「ユーザー」を選択します。

3. ユーザー・ページで、「作成」をクリックします。

4. ユーザーの作成ページで、次の情報を入力します。

- 名前: LDORAN(Louise Doranのユーザー・アカウントを作成するため)

- プロファイル: DEFAULT

- 認証: Password

- 「パスワードの入力」および「パスワードの確認」: 「パスワードの作成要件」に示されている要件を満たすパスワードを入力します。

- デフォルト表領域: EXAMPLE

- 一時表領域: TEMP

- ステータス: Unlocked

5. 「オブジェクト権限」タブを選択します。

6. 「オブジェクト・タイプの選択」リストから「表」を選択し、次に「追加」をクリックします。

7. 表オブジェクト権限の追加ページで、表オブジェクトの選択フィールドに次のテキストを入力します。

OE.ORDERS

このテキストにはスペースを含めないでください。

8. 「使用可能な権限」リストで「SELECT」を選択し、「移動」をクリックして「選択した権限」リストに移動します。「OK」をクリックします。
OE.ORDERSのSELECT権限がリストされた状態で「ユーザーの作成」ページが表示されます。

9. 「OK」をクリックします。
ユーザー・ページが表示され、ユーザーldoranが「ユーザー名」列にリスト表示されます。

10. ユーザーLDORANの選択ボタンを選択してから、「アクション」リストで「類似作成」を選択します。次に「実行」をクリックします。

11. ユーザーの作成ページで、次の情報を入力します。

- 名前: LPOPP(財務管理者のLuis Poppのユーザー・アカウントを作成するため)

- 「パスワードの入力」および「パスワードの確認」: 「パスワードの作成要件」に示されている要件を満たすパスワードを入力します。

12. 「OK」をクリックします。

両方の従業員アカウントが作成され、それらのアカウントには同じ権限が付与されています。ユーザーLPOPPの権限を確認すると、ユーザーLDORANの権限と同じであることがわかります。この段階で、OE.ORDERS表に対してSELECT文を実行すると、どちらのユーザーでも表のすべてのデータを参照できます。

手順2: 必要に応じてセキュリティ管理者アカウントを作成する

sec_adminセキュリティ管理者アカウントにより、セキュリティ管理者が実行できるタスクを実行できます。

「チュートリアル: セキュア・アプリケーション・ロールの作成」で、そのチュートリアルのsec_adminを作成しました。このチュートリアルでも、このアカウントを使用できます。

このアカウントをまだ作成していない場合は、「手順2: セキュリティ管理者アカウントを作成する」の手順に従ってsec_adminを作成してください。

手順3: セキュリティ管理者アカウントを更新する

sec_adminアカウント・ユーザーには、DBMS_RLSパッケージを使用するための権限が必要です。

このパッケージはSYSが所有しているため、このパッケージ権限をsec_adminに付与するには、SYSとしてログオンする必要があります。また、sec_adminユーザーには、OEスキーマのCUSTOMERS表およびHRスキーマのEMPLOYEES表に対するSELECT権限も必要です。

sec_adminにDBMS_RLSパッケージを使用する権限を付与するには、次のようにします。

1. Enterprise Managerで、データベース・ホームページにアクセスし、SYSDBAロールを持つユーザーSYSとしてアクセスしていることを確認します。
詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

2. 「管理」メニューから、「セキュリティ」を選択し、「ユーザー」を選択します。

3. ユーザー・ページでSEC_ADMINユーザーを選択し、ユーザーの表示ページで「編集」をクリックします。

4. ユーザーの編集ページで「オブジェクト権限」をクリックします。

5. 「オブジェクト・タイプの選択」リストから「パッケージ」を選択し、次に「追加」をクリックします。

6. パッケージ・オブジェクト権限の追加ページのパッケージ・オブジェクトの選択で、sec_adminにDBMS_RLSパッケージのアクセス権を付与するためにSYS.DBMS_RLSと入力します。

7. 「使用可能な権限」で「EXECUTE」を選択し、「移動」をクリックして「選択した権限」リストに移動します。

8. 「OK」をクリックします。

9. ユーザーの編集ページの「オブジェクト・タイプの選択」リストから「表」を選択し、「追加」をクリックします。

10. 表オブジェクト権限の追加ページの表オブジェクトの選択フィールドで、sec_adminにHR.EMPLOYEES表のアクセス権を付与するためにHR.EMPLOYEESと入力します。

11. 「使用可能な権限」で「SELECT」を選択し、「移動」をクリックして「選択した権限」リストに移動します。

12. 「OK」をクリックします。
ユーザーの編集ページが表示されます。これはユーザーsec_adminにHR.EMPLOYEES表およびDBMS_RLS PL/SQLパッケージへのオブジェクト権限があることを示しています。どちらのオブジェクトに対しても付与オプションを選択していないことを確認します。

13. 「適用」をクリックします。
すべての変更内容(ここでは、2つのオブジェクト権限の追加)が、sec_adminユーザー・アカウントに適用されます。

手順4: F_POLICY_ORDERSポリシーのファンクションを作成する

f_policy_ordersポリシーは、ORDERS表に問合せを行うユーザーのフィルタリングに使用される、ポリシーを定義するPL/SQLファンクションです。

ユーザーをフィルタリングするために、ポリシー・ファンクションでは、データベースにログイン中のユーザーに関するセッション情報を取得するSYS_CONTEXT PL/SQLファンクションが使用されます。

アプリケーション・コンテキストとパッケージを作成するには、次のようにします。

1. 「ログアウト」を選択し、データベース・インスタンスからログアウトします。

2. 「確認」ダイアログ・ボックスで「(データベース・インスタンス)のログアウト」を選択し、「ログアウト後にログイン・ページを表示します。」チェック・ボックスを選択します。「ログアウト」をクリックします。

3. NORMALロールを使用するユーザーsec_adminとしてログインします。

4. 「スキーマ」メニューから、「プログラム」、「ファンクション」を選択します。

5. データベース・ログイン・ページで、NORMALロールが選択されているユーザーsec_adminとしてログインします。

6. 「スキーマ」メニューから、「プログラム」、「ファンクション」を選択します。

7. ファンクション・ページで、「オブジェクト・タイプ」メニューが「ファンクション」に設定されていることを確認し、「作成」をクリックします。

8. ファンクションの作成ページで、次の情報を入力します。

- 名前: F_POLICY_ORDERS

- スキーマ: SEC_ADMIN

- ソース: 表示された空のファンクション・コードを削除してから、次のコードを入力し(ただしコード左側の行番号は入力しない)、ログオンしたユーザーが営業担当者かどうかをチェックするファンクションを作成します。
f_policy_ordersファンクションはSYS_CONTEXT PL/SQLファンクションを使用してユーザーに関するセッション情報を取得します。次に、この情報を、sec_adminがSELECT権限を持つHR.EMPLOYEES表のそのユーザーのジョブIDと比較します。

(schema in varchar2,
tab in varchar2)
return varchar2
as
v_job_id   varchar2(20);
v_user     varchar2(100);
predicate  varchar2(400);

begin
v_job_id  := null;
v_user    := null;
predicate := '1=2';

v_user := lower(sys_context('userenv','session_user'));

select lower(job_id) into v_job_id from hr.employees
where lower(email) = v_user;

if  v_job_id='sa_rep' then
predicate := '1=1';
else
null;
end if;

return predicate;

exception
when no_data_found then
null;
end;

次のように指定します。

- (schema in varchar2, tab in varchar2): 保護する必要があるスキーマ(schema)および表(tab)のパラメータを定義します。このファンクションはOE.ORDERS表を指定しません。「手順5: ACCESSCONTROL_ORDERS仮想プライベート・データベース・ポリシーを作成する」で作成するACCESSCONTROL_ORDERSポリシーは、これらのパラメータを使用してOEスキーマとORDERS表を指定します。最初にschemaパラメータを作成し、その後にtabパラメータを作成してください。

- return varchar2: WHERE述語句に使用される文字列を返します。この戻り値のデータ型としてはVARCHAR2が常に使用されます。

- as ... predicate: ジョブID、ログオンしたユーザーのユーザー名、および述語の値を格納する変数を定義します。

- begin ... return predicate: v_job_idおよびv_userの設定のためのBEGIN句で開始する、WHERE述語の作成が含まれます。

- v_job_id varchar2(20)およびv_user varchar2(100): v_job_id変数とv_user変数をnullに、およびpredicate変数を1=2(つまり、false値)に設定します。この段階では、これらの変数がselect lower(job_id) into v_job_idで開始するテストに通るまで、WHERE述語を生成できません。

- v_user := lower(sys_context...: SYS_CONTEXTファンクションを使用してユーザーのセッション情報を取得し、v_user変数に書き込みます。

- select lower(job_id) into v_job_id...end if: ユーザーのジョブIDを比較して、ログオンしたユーザーが営業担当者かどうかを確認します。ログオンしたユーザーのジョブIDがsa_rep(営業担当者)である場合は、predicate変数が1=1に設定されます。つまりユーザーは営業担当者であることになり、テストに通ります。

- return predicate: WHERE role_of_user_logging_on IS "sa_rep"となるWHERE述語を返します。このWHERE述語は、ユーザーLDORANとLPOPPがOE.ORDERS表に対して発行するSELECT文に追加されます。

- exception ... null: 適切な権限のないユーザーがログオンした場合のためにEXCEPTION句を提供します。

9. 「OK」をクリックします。

手順5: ACCESSCONTROL_ORDERS仮想プライベート・データベース・ポリシーを作成する

仮想プライベート・データベース・ポリシーの作成が終了したので、次に仮想プライベート・データベース・ポリシー、accesscontrol_ordersを作成し、これをORDERS表に追加します。

このポリシーには、パフォーマンスを向上させるためにCONTEXT_SENSITIVEパラメータを追加します。これによりOracle Databaseは、アプリケーション・コンテキストの内容が変わった場合にのみ、f_policy_ordersファンクションを実行するようになります(このケースでは、新しいユーザーがログオンした場合)。Oracle Databaseは、ユーザーがORDERS表でSQL SELECT文を実行したときのみポリシーをアクティブにします。このポリシーはINSERT、UPDATEおよびDELETE文を許可しないので、ユーザーはこれらの操作を実行できません。

ACCESSCONTROL_ORDERS仮想プライベート・データベース・ポリシーを作成するには、次のようにします。

1. 「管理」メニューから、「セキュリティ」、「仮想プライベート・データベース・ポリシー」を選択します。

2. 仮想プライベート・データベース・ポリシー・ページで、「作成」をクリックします。

3. ポリシーの作成ページの「一般」で、次の情報を入力します。

- ポリシー名: ACCESSCONTROL_ORDERS

- オブジェクト名: OE.ORDERS

- ポリシー・タイプ: 「CONTEXT_SENSITIVE」を選択します。
このタイプは、最後にカーソルを使用して以降のコンテキストの変更を検出した場合、文実行時にポリシー・ファンクションを再評価します。複数のクライアントが1つのデータベース・セッションを共有するセッション・プーリングの場合、クライアント切替え時に中間層でコンテキストをリセットする必要があります。Oracle Databaseは、このポリシー・タイプのファンクションにより戻された値をキャッシュしません。常に文の解析時にポリシー・ファンクションを実行します。CONTEXT_SENSITIVEポリシー・タイプは1つのオブジェクトのみに適用されます。

ポリシー・タイプを有効にするには、「有効」ボックスを選択します。

4. 「ポリシー・ファンクション」で次の入力を行います。

- ポリシー・ファンクション: ポリシーの述語を生成するファンクション名(この場合はSEC_ADMIN.F_POLICY_ORDERS)を入力します。

- 長い述語: このボックスは選択しないでください。
通常は、32KBまでの長さの述語を返すためにこのボックスを選択します。このボックスを選択しないと、Oracle Databaseは述語を4000バイトに制限します。

5. 「強制」でSELECTオプションを選択しますが、その他にすでに選択されているオプションがあれば選択解除します。

6. 「セキュリティ関連列」のオプションは、いずれも選択しないでください。

7. 「OK」をクリックします。
「仮想プライベート・データベース・ポリシー」ページのポリシーのリストにACCESSCONTROL_ORDERSポリシーが表示されます。

8. Enterprise Managerからログアウトしないでください。

手順6: ACCESSCONTROL_ORDERS仮想プライベート・データベース・ポリシーをテストする

accesscontrol_ordersポリシーを作成した後、それをテストするために、各ユーザーとしてログオンし、ORDERS表からデータを選択できるかどうかを試します。

ACCESSCONTROL_ORDERSポリシーをテストするには、次のようにします。

1. SQL*Plusを起動します。
コマンド・プロンプトで、次のコマンドを入力してSQL*Plusを起動し、販売担当者Louise Doran(ユーザー名はldoran)としてログインします。

sqlplus ldoran
Enter password: password

SQL*Plusが起動し、デフォルトのデータベースに接続してから、プロンプトが表示されます。

SQL*Plusの起動の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

2. 次のSELECT文を入力します。

SELECT COUNT(*) FROM OE.ORDERS;

Louiseに関する次のような結果が表示されます。表示のとおり、LouiseはOE.ORDERS表のすべての注文にアクセスできます。

COUNT(*)
--------
105

3. 財務管理者のLuis Poppとして接続します。

CONNECT lpopp
Enter password: password

4. 次のSELECT文を入力します。

SELECT COUNT(*) FROM OE.ORDERS;

Popp氏は営業担当者ではないため、OE.ORDERS表のデータにアクセスできず、次のような結果が表示されます。Popp氏にはアクセス権がないので、Oracle Databaseから0行へのアクセスのみが許可されます。

COUNT(*)
--------
0

5. SQL*Plusを終了します。

EXIT

手順7: このチュートリアルで使用したコンポーネントを削除する(オプション)

コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。

トピック:

- sec_adminによって作成されたデータ構造の削除

- ユーザー・アカウントの削除

- ユーザーsec_adminのDBMS_RLSに対する権限の取消し

sec_adminによって作成されたデータ構造の削除

ユーザーsec_adminによって作成されたデータ構造を削除するには、Enterprise Managerを使用できます。

sec_adminで作成したデータ構造を削除するには、次のようにします。

1. Enterprise Managerで、sec_adminユーザーとしてログインしていることを確認します。

2. 「管理」メニューから、「セキュリティ」、「仮想プライベート・データベース・ポリシー」を選択します。

3. 仮想プライベート・データベース・ポリシー・ページの「検索」で、「実行」をクリックします。

- スキーマ名: OE

- オブジェクト名: ORDERS

- ポリシー名: %

作成したポリシーのACCESSCONTROL_ORDERSが表示されます。

4. 「ACCESSCONTROL_ORDERS」を選択し、「削除」をクリックします。

5. 「確認」ページで「はい」をクリックします。

6. 「スキーマ」メニューから、「プログラム」、「ファンクション」を選択します。

7. F_POLICY_ORDERSファンクションが表示されていない場合は、「検索」フィールドを使用して検索します。

8. F_POLICY_ORDERSファンクションの選択ボタンを選択し、「削除」をクリックします。

9. 「確認」ウィンドウで「OK」をクリックします。

ユーザー・アカウントの削除

ユーザー・アカウントを削除するには、Enterprise Managerを使用できます。

ユーザー・アカウントを削除するには、次のようにします。

1. Enterprise Managerで「ログアウト」を選択し、データベース・インスタンスからログアウトします。

2. NORMALロールが選択されているユーザーSYSTEMとしてログインします。

3. データベースのホームページの「管理」メニューから「セキュリティ」、「ユーザー」の順に選択します。

4. ユーザー・ページで次の各ユーザーを選択し、「削除」をクリックしてそれらを削除します。

- LDORAN

- LPOPP

sec_adminは削除しないでください。このマニュアルの以降のチュートリアルで、このアカウントが必要になります。

ユーザーsec_adminのDBMS_RLSに対する権限の取消し

ユーザーsec_adminのDBMS_RLSパッケージに対するEXECUTE権限を取り消すには、Enterprise Managerを使用できます。

ユーザーsec_adminのDBMS_RLSパッケージに対するEXECUTE権限を取り消すには、次のようにします。

1. Enterprise Managerで「ログアウト」を選択し、データベース・インスタンスからログアウトします。

2. SYSDBAロールが選択されているSYS管理ユーザーとしてログインします。

3. ユーザー・ページでユーザー「SEC_ADMIN」を選択し、「編集」をクリックします。

4. 「オブジェクト権限」タブを選択します。

5. オブジェクト権限のリストから、HR.EMPLOYEES表に対するSELECT権限の項目を選択します。

6. 「削除」をクリックします。

7. オブジェクト権限のリストから、DBMS_RLSパッケージに対するEXECUTE権限の項目を選択します。

8. 「削除」をクリックします。

9. 「適用」をクリックします。

10. Enterprise Managerを終了します。

7 Oracle Data Redactionを使用した機密データへのアクセスの制限

Oracle Data Redactionは、リアルタイムのデータ・リダクションにより、機密データへのアクセスを制限します。

トピック:

- Oracle Data Redactionについて

- チュートリアル: 選択したユーザーのグループに対するデータのリダクション

Oracle Data Redactionについて

Oracle Data Redactionにより、列のデータをリダクション(マスク)できます。

データ・リダクションでは、次のいずれかの方法を使用できます。

- 完全リダクション。列データの内容をすべてリダクションします。問合せを行ったユーザーに返される、リダクションされた値は、列のデータ型によって異なります。たとえば、NUMBERデータ型の列はゼロ(0)でリダクションされ、文字データ型は空白でリダクションされます。

- 部分リダクション。列データの一部をリダクションします。たとえば、クレジット・カードの番号の大半(最後の4桁以外)をアスタリスク(*)でリダクションできます。

- 正規表現。完全または一部のいずれのリダクションでも正規表現を使用できます。これにより、データの検索パターンに基づいてデータをリダクションできます。たとえば、正規表現を使用して、データ内の特定の電話番号または電子メール・アドレスをリダクションできます。

- ランダム・リダクション。問合せを行ったユーザーに表示される、リダクションされたデータは、値が表示のたびにランダムに生成されて表示されます。

- リダクションなし。このオプションでは、リダクション・ポリシーが定義された表に対する問合せの結果に影響を与えずに、ポリシーの内部動作をテストできます。このオプションを使用して、リダクション・ポリシー定義を本番環境に適用する前にテストできます。

データ・リダクションでは、実行時、つまり、ユーザーがデータを表示する際にリダクションが行われます。この機能は、データが常に変化する動的本番システムに非常に適しています。データはリダクションされますが、Oracle Databaseですべてのデータを通常どおり処理し、バックエンドの参照整合性制約を保持できます。データ・リダクションは、クレジットカード業界のセキュリティ基準(PCI DSS)やサーベンス・オクスリー法などの業界の規則の順守に役立ちます。

チュートリアル: 選択したユーザーのグループに対するデータのリダクション

非常に制限されたデータにのみアクセスできるユーザー・グループと、より多くのデータにアクセスできるグループが存在する場合は、選択したユーザー・グループのデータをリダクションできます。

トピック:

- 選択したユーザー・グループに対するデータ・リダクションについて

- 手順1: ユーザー・アカウントの作成および必要な権限の付与

- 手順2: SALES_OPPS販売機会表の作成とデータの移入

- 手順3: SALES_OPPS_POL Oracle Data Redactionポリシーの作成

- 手順5: SALES_OPPS_POL Oracle Data Redactionポリシーのテスト

- 手順6: このチュートリアルのコンポーネントの削除(オプション)

選択したユーザー・グループに対するデータ・リダクションについて

このチュートリアルのシナリオは営業所に関するもので、営業部長(ユーザーezlotkey)は、様々な販売機会に関するsales_opps表のすべてのデータを表示できる必要があります。

ただし、この営業部長の下で働く営業担当者(ユーザーahuttonおよびeabel)による、顧客名と手続き完了日を表すsales_opps表の列へのアクセスは制限する必要があります。

この問題を解決するには、次の処理を行ってこれらの要件を満たすOracle Data Redactionポリシーを作成します。

- ポリシーによって2つの列のデータをリダクションします。それぞれ異なるリダクション・スタイルを使用します。

- ポリシーの効果は問合せ結果の表示で、問合せを行っているユーザーに対して有効になっているロールに基づいて実際のデータまたはリダクションされたデータが表示されます。

このチュートリアルでは、データベース・ユーザー・アカウントを使用してデータベースと直接対話します。これはわかりやすくするためです。Oracle Data Redactionには使用シナリオが2通り想定されており、データベース・アプリケーションのリダクションと直接データベース・アクセスのリダクションです。Oracle Data Redaction自体が、パッケージ化されたアプリケーションおよびカスタム・アプリケーションからの機密データのリダクションに関する優れたソリューションです。チュートリアルを完了すると、実際のアプリケーション・ユーザーに関するシナリオに対して(データベース・ユーザー・アカウントを使用して)学んだことを応用するために必要が知識が得られます。直接データベース・アクセスがターゲット・シナリオの場合、Oracle Data Redactionを、権限付きデータベース・ユーザーに対するセキュリティを提供する予防的統制および発見的統制(Oracle Database Vault、Oracle Label Security、Oracle Audit Vault、Oracle Database Firewallなど)と組み合せる必要があります。

手順1: ユーザー・アカウントの作成および必要な権限の付与

まず、必要なユーザー・アカウントを作成し、ユーザーsec_adminにDBMS_REDACT PL/SQLパッケージに対するEXECUTE権限を付与する必要があります。これは、Oracle Data Redactionポリシーを作成するために必要です。

このチュートリアルで使用するユーザー・アカウントを作成するには、次のようにします。

1. Enterprise Managerで、ターゲット・データベースのデータベース・ホームページに、SYSDBA管理権限を持つユーザーSYSとしてアクセスします。
詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

2. 「管理」メニューから「セキュリティ」を選択し、「ロール」を選択します。

3. ロールページで「作成」を選択します。

4. ロールの作成ページの「名前」フィールドにSUPERVISORと入力し、「OK」をクリックします。

5. 「管理」メニューから「セキュリティ」を選択し、「ユーザー」を選択します。

6. ユーザー・ページで、「作成」をクリックします。

7. ユーザーの作成ページで、次の情報を入力します。

- 名前: EZLOTKEY (Eleni Zlotkeyのユーザー・アカウントの作成)

- プロファイル: DEFAULT

- 認証: Password

- 「パスワードの入力」および「パスワードの確認」: 「パスワードの作成要件」に示されている要件を満たすパスワードを入力します。

- デフォルト表領域: EXAMPLE

- 一時表領域: TEMP

- ステータス: Unlocked

8. 「システム権限」タブを選択します。

9. 「リストの編集」ボタンを選択します。

10. 「システム権限の変更」リストで次の権限を選択し、「選択したシステム権限」リストに移動します。

- CREATE SESSION

- CREATE TABLE

- UNLIMITED TABLESPACE

11. 「OK」をクリックします。

12. ユーザーの作成ページで「ロール」タブを選択し、「リストの編集」ボタンを選択します。

13. ロールの変更ページで、「使用可能なロール」リストのSUPERVISORロールをダブルクリックし、「選択したロール」リストに移動します。

14. 「OK」をクリックし、「OK」を再度クリックしてユーザー・ページに戻ります。

15. 「作成」ボタンを選択します。

16. ユーザーの作成ページで、次の情報を入力します。

- 名前: EABEL (Ellen Abelのユーザー・アカウントの作成)

- プロファイル: DEFAULT

- 認証: Password

- 「パスワードの入力」および「パスワードの確認」: 「パスワードの作成要件」に示されている要件を満たすパスワードを入力します。

- デフォルト表領域: EXAMPLE

- 一時表領域: TEMP

- ステータス: Unlocked

17. 「システム権限」タブを選択します。

18. 「リストの編集」ボタンを選択します。

19. システム権限の変更」リストでCREATE SESSIONシステム権限をダブルクリックして「選択したシステム権限」に移動します。

20. 「OK」をクリックします。

21. ユーザー・ページでEABELユーザーを選択します。

22. 「アクション」リストから「類似作成」ボタンを選択して「実行」をクリックします。

23. ユーザーの作成ページで、次の情報を入力します。

- 名前: AHUTTONと入力します(ユーザーAlyssa Hutton)。

- 「パスワードの入力」および「パスワードの確認」: 「パスワードの作成要件」に示されている要件を満たすパスワードを入力します。

ユーザーezlotkeyにはロールsupervisorが付与されていますが、ユーザーeabelおよびahuttonにはロールが付与されていないことに注意してください。

24. 「OK」をクリックします。

25. ユーザー・ページでSEC_ADMINユーザーを選択し、「編集」ボタンをクリックします。
ユーザーSEC_ADMINが存在しない場合、次の文を入力してSQL*Plusでこのユーザーを簡単に作成できます。

GRANT CREATE PROCEDURE, CREATE ROLE, CREATE SESSION, INHERIT ANY PRIVILEGES, SELECT ANY DICTIONARY TO sec_admin IDENTIFIED BY password;

このアカウントの作成については、「手順2: セキュリティ管理者アカウントを作成する」も参照してください。

26. 「オブジェクト権限」タブを選択します。

27. 「オブジェクト権限」タブで、「オブジェクト・タイプの選択」リストから「パッケージ」を選択し、「追加」をクリックします。

28. パッケージ・オブジェクトの選択フィールドにSYS.DBMS_REDACTと入力し、「使用可能な権限」リストのEXECUTE権限を「選択した権限」リストに移動します。

29. 「OK」をクリックし、次に「適用」をクリックします。

手順2: SALES_OPPS販売機会表の作成とデータの移入

sales_oppsには、販売機会である小企業に関する情報が含まれます。後でOracle Data Redactionポリシーを作成する必要のある列が2つ含まれます。

sales_opps販売機会表を作成し、データを移入するには、次のようにします。

1. データベース・インスタンスにユーザーezlotkeyとしてログインします。

sqlplus ezlotkey
Enter password: password

2. sales_opps表を作成します。

CREATE TABLE sales_opps (
account varchar2(30),
region varchar2(20),
product varchar2(20),
sales_rep varchar2(15),
close_date date,
price number,
quantity number);

3. sales_opps表にデータを移入します。

INSERT INTO sales_opps VALUES ('Rising Dough Bakery', 'north-east', 'AA1 AccountPro', 'ahutton', '07-JUL-12', 400.00, 4);
INSERT INTO sales_opps VALUES ('Shear Madness Hair Salon', 'south-west', 'AA1 AccountPro', 'eabel', '20-APR-12', 400.00, 1);
INSERT INTO sales_opps VALUES ('Doublecheck Accounting', 'north-east', 'AA1 AccountPro', 'ahutton', '14-MAR-12', 400.00, 12);
INSERT INTO sales_opps VALUES ('State of Art Framing', 'south-west', 'AA1 TaxPro', 'eabel', '21-MAY-12', 300.00, 2);
INSERT INTO sales_opps VALUES ('Shady Trees Arborists', 'north-east', 'AA1 AccountPro', 'ahutton', '17-JUN-12', 400.00, 16);

4. リダクションの対象のデータを確認するには、sales_opps表のaccount列とclose_date列を問い合せます。

SELECT account, close_date, product, quantity FROM sales_opps;

ACCOUNT                        CLOSE_DAT PRODUCT                QUANTITY
------------------------------ --------- -------------------- ----------
Rising Dough Bakery            07-JUL-12 AA1 AccountPro                4
Shear Madness Hair Salon       20-APR-12 AA1 AccountPro                1
Doublecheck Accounting         14-MAR-12 AA1 AccountPro               12
State of Art Framing           21-MAY-12 AA1 TaxPro                    2
Shady Trees Arborists          17-JUN-12 AA1 AccountPro               16

手順3: SALES_OPPS_POL Oracle Data Redactionポリシーの作成

ユーザーsec_adminとして、sales_opps_pol Oracle Data Redactionポリシーを作成します。

sales_opps_polデータ・リダクション・ポリシーを作成するには、次のようにします。

1. Enterprise Managerからログアウトし、ユーザーsec_adminとしてログインしなおします。
詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

2. 「管理」メニューから「セキュリティ」を選択し、「Oracle Data Redaction」を選択します。

3. データ・リダクション・ページで「作成」ボタンを選択します。

4. データ・リダクション・ポリシーの作成ページで、ポリシーの基本の次の情報を入力します。

- スキーマ: EZLOTKEYと入力します(大文字)。

- 表/ビュー: SALES_OPPSと入力します(大文字)。

- ポリシー名: SALES_OPPS_POLと入力します。

- ポリシー式: 次の式を入力します。

SYS_CONTEXT('SYS_SESSION_ROLES', 'SUPERVISOR') = 'FALSE'

式は、supervisorロールが有効になっていないユーザーに対してaccount列のデータをリダクションするという意味です。つまり、スーパーバイザezlotkeyのみがaccount列のデータを表示できます。

5. データ・リダクション・ページで、次のようにしてsales_opps_policyポリシーを列に適用します。

a. 「追加」ボタンを選択します。

b. 追加ウィンドウで、「列」リストから「ACCOUNT」を選択します。
「列のデータ型」フィールドに、ACCOUNTのデータ型であるVARCHAR2が表示されます。

c. リダクション・テンプレート・リストから「カスタム」(デフォルトの選択肢)を選択します。

d. リダクション機能リストから「FULL」を選択します。
FULLは、account列のすべての文字がリダクションされるということです。account列のデータ型はVARCHAR2のため、データは空白で表示されます。

e. 「OK」をクリックします。

6. 次のようにして、sales_opps_polポリシーを2つ目の列に適用します。

a. 「追加」ボタンを選択します。

b. 追加ウィンドウで、「列」リストから「CLOSE_DATE」を選択します。
「列のデータ型」フィールドで、CLOSE_DATEのデータ型はDATEと判別されます。

c. リダクション機能リストから「PARTIAL」を選択します。
即座に追加ウィンドウが拡張され、機能の属性領域が表示されます。

d. 「日付リダクション形式」フィールドに次の属性を入力します。

m06d7YHMS

この設定では、各日付の月と日をリダクションし、07-JUNE-12と表示されるよう設定します。

e. 「OK」をクリックします。
次のように「データ・リダクション・ポリシーの作成」ページが表示されます。

7. データ・リダクション・ポリシーの作成ページで、「OK」をクリックします。
ポリシーが、データ・リダクション・ポリシー・リストに表示されます。

Enterprise Managerを終了しないでください。

手順5: SALES_OPPS_POL Oracle Data Redactionポリシーのテスト

sales_opps_pol Oracle Data Redactionポリシーをテストするには、以前に作成したユーザーとしてログインし、sales_opps表のリダクションされた列を問い合せます。

sales_opps_polポリシーをテストするには、次のようにします。

1. ユーザーezlotkeyとしてSQL*Plusに接続します。

connect ezlotkey
Enter password: password

2. 営業担当者に、sales_opps表に対するSELECT権限を付与します。

GRANT SELECT ON sales_opps TO eabel;
GRANT SELECT ON sales_opps TO ahutton;

3. ユーザーeabelとして接続します。

connect eabel
Enter password: password

4. 次のように、sales_opps表に問い合せます。

SELECT account, close_date, product, quantity FROM ezlotkey.sales_opps;

次のような出力が表示されます。

ACCOUNT                        CLOSE_DAT PRODUCT                QUANTITY
------------------------------ --------- -------------------- ----------
07-JUN-12 AA1 AccountPro                4
07-JUN-12 AA1 AccountPro                1
07-JUN-12 AA1 AccountPro               12
07-JUN-12 AA1 TaxPro                    2
07-JUN-12 AA1 AccountPro               16

account列は、各行に空白を表示するようリダクションされているため、データは表示されません。close_date列に日付は表示されますが、すべて部分的な日付値です。データ・リダクション・ポリシーが適用されていないため、product列とquantity列には予期されたデータが表示されます。

5. ユーザーahuttonとして接続し、同じ問合せを実行します。

connect ahutton
Enter password: password

SELECT account, close_date, product, quantity FROM ezlotkey.sales_opps;

ACCOUNT                        CLOSE_DAT PRODUCT                QUANTITY
------------------------------ --------- -------------------- ----------
07-JUN-12 AA1 AccountPro                4
07-JUN-12 AA1 AccountPro                1
07-JUN-12 AA1 AccountPro               12
07-JUN-12 AA1 TaxPro                    2
07-JUN-12 AA1 AccountPro               16

ユーザーahuttonに対しても、データはリダクションされます。

6. ユーザーezlotkeyとして接続し、同じ問合せを実行します。

connect ezlotkey
Enter password: password

SELECT account, close_date, product, quantity FROM sales_opps;

ACCOUNT                        CLOSE_DAT PRODUCT                QUANTITY
------------------------------ --------- -------------------- ----------
Rising Dough Bakery            07-JUL-12 AA1 AccountPro                4
Shear Madness Hair Salon       20-APR-12 AA1 AccountPro                1
Doublecheck Accounting         14-MAR-12 AA1 AccountPro               12
State of Art Framing           21-MAY-12 AA1 TaxPro                    2
Shady Trees Arborists          17-JUN-12 AA1 AccountPro               16

sales_opps_polデータ・リダクション・ポリシーでは、ユーザーezlotkeyはsupervisorロールが有効なため、実際のデータが表示されます。ただし、このロールがezlotkeyに対して無効の場合、sales_opps表を作成し、所有していても、この表に問い合せると、account列とclose_date列はリダクションされます。

7. SQL*Plusからログアウトします。

EXIT

手順6: このチュートリアルで使用したコンポーネントを削除する(オプション)

コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。

このチュートリアルで使用したコンポーネントを削除するには、次のようにします。

1. Enterprise Managerで、sec_adminユーザーとしてログインしていることを確認します。

2. データ・リダクション・ポリシー・ページでSALES_OPPS_POLポリシーを選択します。

3. 「削除」ボタンをクリックします。

4. 「確認」ページで「はい」をクリックします。

5. Enterprise Managerからログアウトし、SYSDBA管理権限を使用してユーザーSYSとして再度ログインします。

6. データベース・ホーム・ページで、「セキュリティ」、「管理」、「ユーザー」の順に選択します。

7. ユーザー「AHUTTON」を選択して「削除」をクリックし、確認ウィンドウで「はい」を選択します。

8. ユーザー「EABEL」を選択して「削除」をクリックし、確認ウィンドウで「はい」を選択します。

9. ユーザー「EZLOTKEY」を選択して「削除」をクリックし、確認ウィンドウで「はい」を選択します。

10. 「管理」メニューから「セキュリティ」を選択し、「ロール」を選択します。

11. ロールSUPERVISORを選択して「削除」をクリックし、確認ウィンドウで「はい」を選択します。

12. ユーザー・ページで「SEC_ADMIN」ユーザーを選択し、「編集」をクリックします。

13. ユーザーの編集: SEC_ADMINページで「オブジェクト権限」タブを選択します。

14. DBMS_REDACTパッケージのEXECUTE権限を選択し、「削除」をクリックします。

15. 「適用」ボタンをクリックします。

16. 「ログアウト」ボタンをクリックし、Enterprise Managerを終了します。

8 Oracle Label Securityによる行レベルのセキュリティの強制

Oracle Label Securityにより、行レベルのセキュリティを強制できます。

トピック:

- Oracle Label Securityについて

- 仮想プライベート・データベース、Oracle Label Security、データ・リダクション間の相違点

- Oracle Label Securityのポリシー計画のガイドライン

- チュートリアル: ユーザーに基づいた表データへのアクセスのレベルの作成

関連項目:

Oracle Label Security管理者ガイド

Oracle Label Securityについて

Oracle Label Security(OLS)は、データベース表に行レベルのセキュリティを提供します。セキュリティのレベルを定義する1つまたは複数のセキュリティ・ラベルを表のデータ行に割り当てることで、セキュリティを実装できます。

この機能では、データベース表を行レベルで保護し、セキュリティ・ラベルに基づいてこれらの行に異なるセキュリティ・レベルを割り当てます。その後、OLSラベルに基づいてユーザーのセキュリティ認可を作成できます。

たとえば、非常に機密性の高いデータを含む行にはHIGHLY SENSITIVEというラベルを割り当て、機密性がそれほど高くないデータを含む行にはSENSITIVEというラベルを割り当てたりできます。すべてのユーザーがアクセスできる行にはPUBLICというラベルを割り当てます。ラベルは必要なだけ作成でき、使用する環境のセキュリティ要件に適合させることができます。マルチテナント環境では、ラベルはローカル・プラガブル・データベース(PDB)に適用され、セッション・ラベルはローカル・ユーザーに適用されます。

ラベルを作成して割り当てたら、Oracle Label Securityを使用して、これらのラベルに基づき特定の行に特定のユーザー認可を割り当てます。以降、Oracle Label Securityはデータ行のラベルとユーザーのセキュリティ・クリアランスを自動的に比較し、行のデータにユーザーがアクセスできるかどうかを決定します。

Oracle Label Securityポリシーには次のコンポーネントがあります。

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

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

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

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

- ポリシー。ポリシーは、ラベル、ルール、認証と関連付けられる名前です。

Oracle Label Securityのラベルとポリシーは、Enterprise Managerで作成するか、SA_SYSDBA、SA_COMPONENTS、SA_LABEL_ADMIN PL/SQLパッケージを使用して作成できます。PL/SQLパッケージの詳細は、Oracle Label Security管理者ガイドを参照してください。このマニュアルには、Enterprise Managerを使用してOracle Label Securityのラベルとポリシーを作成する方法が記載されています。

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

仮想プライベート・データベース、Oracle Label Security、データ・リダクション間の相違点

Oracle仮想プライベート・データベース(VPD)、Oracle Label Security (OLS)およびOracle Data Redactionでは、データベース表で表示できるデータをユーザーごとに制限することができます。

しかし、どの機能を使用すべきでしょうか。仮想プライベート・データベースは、アクセス要件の決定に利用できる既存のデータがある場合に効果的です。たとえば、営業担当者はその本人が入力した顧客注文表の行と列しか閲覧できないように構成できます。Oracle Label Securityは、表のアクセス要件の指定に利用できる一般的なデータ(ユーザー・アカウント、従業員IDなど)がないときに便利です。このタイプのユーザー・アクセス権を決定する場合は、表の行に機密性のレベルを割り当てます。Oracle Data Redactionでは、3つの異なる(リダクション)スタイルから選択できます。リダクションは、ユーザーがデータにアクセスしたときに適用され、データベース表に直接は適用されません。

Oracle Virtual Private DatabaseとOracle Label Securityが相互に補完しあう場合もあります。次の実習形式のOracle Technology Networkチュートリアルでは、仮想プライベート・データベース・ポリシーでOracle Label Securityユーザー・クリアランスと最小クリアランスを比較する方法が示されています。ユーザー・クリアランスがしきい値を超えている場合、Salary列は非表示になりません。

http://www.oracle.com/technetwork/database/security/ols-cs1-099558.html

表8-1では、Oracle Virtual Private Database,、Oracle Label SecurityおよびOracle Data Redactionの機能を比較しています。

表8-1 Virtual Private Database、Label SecurityおよびData Redactionの比較

機能

VPD

OLS

Data Redaction

完全マスキング、部分マスキングおよびランダム・マスキングを提供

不可

不可

可

ユーザーのアクセス時にリアルタイムでデータをリダクション

不可

不可

可

行レベル・セキュリティの提供

可

可

不可

列レベル・セキュリティ(列マスク)の提供

可

不可

可

表、ビューまたはシノニムへのユーザー定義のPL/SQLパッケージのバインド

可

なし脚注 1

不可

PL/SQLプロシージャから戻されるWHERE句を動的に追加することによるSQLの変更

可

不可

不可

権限を持っているユーザーによるデータベース操作の制限 [2]

不可

不可

不可

行の機密性ラベルおよびユーザーのセキュリティ・レベルに基づいた一連の行へのアクセスの制御

不可

可

不可

保護されている表に行の機密性ラベルを格納するように設計された列(オプションで非表示)の追加 [3]

不可

可

不可

自身を管理するユーザー・アカウントの提供

なし脚注4

あり脚注5

不可

行レベル・セキュリティに対する事前定義済のPL/SQLパッケージの提供

不可

可

不可

Oracle Databaseのデフォルトのインストールでの提供

可

可

可

Oracle Databaseの追加オプションとしての提供(ライセンスが付与されている必要あり)

不可

不可

可

脚注1

Oracle Label Securityは、表にセキュリティ・ポリシーをアタッチする際に、ユーザーが作成したパッケージではなく、事前定義されたPL/SQLパッケージを使用します。

脚注2

権限ユーザーのアクセスを制限する場合は、Oracle Database Vaultの使用を検討してください。

脚注3

透明性を確保し、追加の列を表示するように設計されていないアプリケーションを破損しないために、通常この列は非表示です。

脚注4

Oracle Virtual Private Databaseはユーザー・アカウントを提供しませんが、Virtual Private Databaseポリシーの管理のみを目的としたユーザー・アカウントを作成できます。

脚注5

LBACSYSアカウントは、Oracle Label Securityポリシーを管理します。これによって、特定のユーザー・アカウントがこれらのポリシーに対して責任を負うことから、セキュリティの層が増し、別のユーザーがポリシーを不正に変更する危険性が軽減されます。

関連項目:

- Oracle Database Vaultを使用したアクセスの制御

- Oracle Virtual Private Databaseを使用したアクセスの制限

- Oracle Data Redactionを使用した機密データへのアクセスの制限

Oracle Label Securityのポリシー計画のガイドライン

Oracle Label Securityポリシーを作成する前 に、アプリケーション・スキーマにラベルを適用する場所と方法を決定する必要があります。

アプリケーション・データのOracle Label Securityポリシーを適用する場所と方法を決定するには、次のガイドラインに従います。

1. アプリケーション・スキーマを分析します。Oracle Label Securityポリシーを適用する必要がある表を特定します。多くの場合、Oracle Label Securityポリシーが必要となるアプリケーションの表は限られています。たとえば、ルックアップ値や定数を格納している表などは、通常セキュリティ・ポリシーで保護する必要はありません。ただし、患者の病歴や従業員の給与などの機密データを含む表は、ポリシーを使用して保護する必要があります。

2. データ・レベルの使用状況を分析します。表の特定後、表のデータを評価して、表のセキュリティ・レベルを決定します。分析のこの段階では、ビジネス活動について熟知しているユーザーの意見も参考にしてください。

データ・レベルはデータの機密性を表します。データ・レベルには、PUBLIC、SENSITIVE、HIGHLY SENSITIVEなどがあります。今後、機密性がどう変化するかも考慮する必要があります。そうすることで、強固なラベル定義が作成できます。

データ・レコードに割り当てられた機密性ラベルのレベル・コンポーネントが、ユーザーのクリアランスより低いレベルの場合、このレコードにアクセスするユーザーにはこの行へのアクセス権が付与されます。

3. データ・コンパートメントの使用状況を分析します。データ・コンパートメントは主に、行政環境で使用されます。使用するアプリケーションが商業アプリケーションの場合、多くの場合はデータ・コンパートメントを作成しません。

4. データ・グループを分析します。データ・グループとデータ・コンパートメントは通常、組織、地域、データ所有者によってデータへのアクセスを制御するために使用されます。たとえば、アプリケーションが販売アプリケーションの場合、国または地域によって販売データへのアクセスを制御できます。

コンパートメントおよびグループと一緒に機密性ラベルがデータ・レコードに割り当てられた場合、このデータを読み取るユーザーは、データ・ラベル、データ・ラベルのすべてのコンパートメント、機密性ラベル内の少なくとも1つのグループのレベルと同等またはそれ以上のレベルのユーザー・クリアランスを持っている必要があります。グループは階層になっているため、データ・ラベルに割り当てられた機密性ラベルの1つのグループの親を所有している場合は、そのレコードにもアクセスできます。

5. ユーザー分布を分析します。ユーザーを複数のユーザー・タイプに分類します。たとえば、通常ユーザー、特権ユーザー、管理ユーザーのいずれかに指定します。ユーザーのカテゴリを作成したら、手順2で作成したデータ・レベルと比較します。カテゴリは、手順1で実行したスキーマ分析で識別した各表に正確に対応する必要があります。次に、ユーザー分布の組織構造を手順4で識別したデータ・グループと比較します。

6. 特権ユーザーと管理ユーザーを確認して、割り当てるOracle Label Security認可を決定します。Oracle Label Securityには、ユーザーに割り当てることのできる特別な認可が複数あります。多くの場合、通常ユーザーに特別な認可は必要ありません。認可の詳細は、『Oracle Label Security管理者ガイド』を参照してください。

7. 収集したデータを確認し、ドキュメント化します。この手順は企業全体の連続性を維持するために重要であり、ドキュメントは企業のセキュリティ・ポリシーの一部となります。たとえば、このドキュメントには保護されるアプリケーションのリストとその理由などが含まれます。

チュートリアル: ユーザーに基づいた表データへのアクセスのレベルの作成

ユーザーに基づいて異なるレベルで表データへのOracle Label Securityアクセスを作成できます。

トピック:

- ユーザーに基づいた表データへのアクセス・レベルの作成について

- 手順1: Oracle Label Securityの有効化

- 手順2: LBACSYSアカウントの有効化

- 手順3: Oracle Label Securityのチュートリアルで使用する1つのロールおよび3人のユーザーを作成する

- 手順4: Oracle Label SecurityのACCESS_LOCATIONSポリシーを作成する

- 手順5: ACCESS_LOCATIONSポリシーのレベル・コンポーネントを定義する

- 手順6: ACCESS_LOCATIONSポリシーのデータ・ラベルを作成する

- 手順7: ACCESS_LOCATIONSポリシーのユーザー認可を作成する

- 手順8: HR.LOCATIONS表にACCESS_LOCATIONSポリシーを適用する

- 手順9: HR.LOCATIONSデータにACCESS_LOCATIONSラベルを追加する

- 手順10: ACCESS_LOCATIONSポリシーをテストする

- 手順11: このチュートリアルのコンポーネントを削除する(オプション)

ユーザーに基づいた表データへのアクセス・レベルの作成について

このチュートリアルでは、Oracle Label Securityを使用する一般的な方法を説明します。

このチュートリアルでは、HR.LOCATIONS表にセキュリティ・ラベルを適用します。ユーザーsking、kpartner、ldoranは、この表内の特定の行に対して、LOCATIONS表の都市に基づくアクセス権を持っています。

Oracle Label Securityを使用して、行データに焦点を当て、データの機密性に基づいて様々なアクセス・レベルを設計することにより、ユーザーによるデータ・アクセスを制限します。ユーザー権限または組織内のユーザーのジョブ・タイトルなどの他の方法に焦点を当ててユーザー・アクセスを制限する必要がある場合、仮想プライベート・データベース・ポリシーとともに使用するPL/SQLファンクションまたはプロシージャを作成できます。詳細は、「Oracle Virtual Private Databaseを使用したアクセスの制限」 を参照してください。

HR.LOCATIONSのスキーマは次のようになります。

Name                                      Null?    Type
----------------------------------------- -------- -------------
LOCATION_ID                               NOT NULL NUMBER(4)
STREET_ADDRESS                                     VARCHAR2(40)
POSTAL_CODE                                        VARCHAR2(12)
CITY                                      NOT NULL VARCHAR2(30)
STATE_PROVINCE                                     VARCHAR2(25)
COUNTRY_ID                                         CHAR(2)

次のラベルを適用します。

ラベル

権限

CONFIDENTIAL

ミュンヘン、オックスフォード、ローマに読取りアクセス権を付与します。

SENSITIVE

北京、東京、シンガポールに読取りアクセス権を付与します。

PUBLIC

HR.LOCATIONS内の他のすべての都市に読取りアクセス権を付与します。

手順1: Oracle Label Securityの有効化

デフォルトのOracle DatabaseのインストールでOracle Label Securityはインストールされますが、手動で有効にする必要があります。

Oracle Label Securityを有効にする手順:

1. SYSDBA管理権限を持つユーザーSYSとして、データベース・インスタンスにログインします。
次に例を示します。

sqlplus sys as sysdba
Enter password: password

2. Oracle Label Securityがデータベースに登録されているかどうかを確認します。

SELECT STATUS FROM DBA_OLS_STATUS WHERE NAME = 'OLS_CONFIGURE_STATUS';

TRUEが返される場合、Oracle Label Securityはデータベースに登録されています。出力がFALSEの場合は、次の手順を実行します。

EXEC LBACSYS.CONFIGURE_OLS;

3. Oracle Label Securityが有効がどうかを確認します。PARAMETER列では大/小文字が区別されるため、ここに示されているとおりに入力してください。

SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Oracle Label Security';

TRUEが返される場合、Oracle Label Securityは有効です。「手順2: LBACSYSアカウントの有効化」に進みます。FALSEが返される場合は、次の手順を実行して有効にします。

EXEC LBACSYS.OLS_ENFORCEMENT.ENABLE_OLS;

4. Oracle Label Securityの登録と有効化が必要だった場合は、SYSOPER権限を使用してユーザーSYSとして接続します。

CONNECT sys as sysoper
Enter password: password

5. データベースを再起動します。

SHUTDOWN IMMEDIATE
STARTUP

手順2: LBACSYSアカウントの有効化

Oracle Label Securityを有効にしたら、LBACSYSと呼ばれるデフォルトのOracle Label Securityアカウントを有効にする必要があります。

Oracle Label SecurityのLBACSYSユーザー・アカウントを有効にするには、次のようにします。

1. ターゲット・データベースのデータベース・ホームページに、SYSDBA管理権限を使用してユーザーSYSとしてアクセスします。
詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

2. 「管理」メニューから、「セキュリティ」を選択し、「ユーザー」を選択します。

3. LBACSYSアカウントを選択し、「編集」をクリックします。
アカウントがアクティブ(ステータスがOPEN)の場合、「手順3: Oracle Label Securityのチュートリアルで使用する1つのロールおよび3人のユーザーを作成する」に進みます。

4. ユーザーの編集: LBACSYSページで、次の設定を入力します。

- 「パスワードの入力」および「パスワードの確認」: 「パスワードの作成要件」に示されている要件を満たすパスワードを入力します。

- ステータス: ステータスをロック解除に設定します。

5. 「適用」をクリックします。

6. 「システム権限」タブを選択します。

7. システム権限ページで「リストの編集」ボタンを選択します。

8. システム権限の変更ページで、「使用可能なシステム権限」リストから「SELECT ANY DICTIONARY」を選択し、「選択したシステム権限」リストに移動します。「OK」をクリックします。

9. ユーザーの編集ページで「適用」をクリックします。

手順3: Oracle Label Securityのチュートリアルで使用する1つのロールおよび3人のユーザーを作成する

ロールと3人のユーザーを作成し、これらのユーザーにロールを付与します。

トピック:

- ロールの作成

- ユーザーの作成

ロールの作成

emp_roleロールは、これから作成する3人のユーザーに必要な権限を付与します。

emp_roleロールを作成するには、次のようにします。

1. データベースのホームページにアクセスします。
詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。NORMAL権限を持つユーザーSYSTEMとしてログインします。

2. 「管理」メニューから、「セキュリティ」を選択し、「ロール」を選択します。

3. ロール・ページで、「作成」をクリックします。

4. ロールの作成ページの「名前」フィールドでEMP_ROLEと入力し、「認証」は「なし」のままにします。

5. 「オブジェクト権限」サブページを選択します。

6. 「オブジェクト・タイプの選択」リストから「表」を選択し、次に「追加」をクリックします。
「表オブジェクト権限の追加」ページが表示されます。

7. 「表オブジェクトの選択」でHR.LOCATIONSと入力し、HRスキーマのLOCATIONS表を選択します。次に「使用可能な権限」で、SELECTを「選択した権限」リストに移動します。

8. 「OK」をクリックして「ロールの作成」ページに戻り、「OK」をクリックして「ロール」ページに戻ります。

Oracle Label Securityユーザーの作成

作成する必要がある3人のユーザーは、その職に応じて、HR.LOCATIONS表への異なるレベルのアクセス権を持つことになります。

Steven King(sking)は広報部長で、HR.LOCATIONS表への完全な読取りアクセス権を持ちます。Karen Partners(kpartner)は販売部マネージャでより制限されたアクセス権を持ち、Louise Doran(ldoran)は販売担当者でアクセス権が最も制限されています。

ユーザーを作成するには、次のようにします。

1. 「管理」メニューから、「セキュリティ」を選択し、「ユーザー」を選択します。
ユーザー・ページが表示されます。

2. 「作成」をクリックします。

3. ユーザーの作成ページで、次の情報を入力します。

- 名前: SKING

- プロファイル: DEFAULT

- 認証: パスワード

- 「パスワードの入力」および「パスワードの確認」: 「パスワードの作成要件」に示されている要件を満たすパスワードを入力します。

- デフォルト表領域: EXAMPLE

- 一時表領域: TEMP

- ステータス: 「ロック解除」に設定します。

- ロール: 「ロール」サブページを選択し、「リストを編集」を選択してemp_roleロールをskingに付与します。「使用可能なロール」リストからemp_roleを選択し、「移動」をクリックして「選択したロール」リストに移動します。「OK」をクリックします。「ユーザーの作成」ページで、CONNECTロールとemp_roleロールの両方で「デフォルト」ボックスが選択されていることを確認します。

- システム権限: システム権限サブページを選択し、「リストの編集」をクリックしてCREATE SESSION権限を付与します。skingにはADMIN OPTIONオプションを付与しないでください。

4. 「OK」をクリックして「ユーザーの作成」ページに戻り、そこで「OK」をクリックして「ユーザー」ページに戻ります。

5. 「ユーザー」ページでSKINGを選択し、「アクション」を「類似作成」に設定して「実行」をクリックします。

6. ユーザーの作成ページで、kpartnerおよびldoranにアカウントを作成してください。
名前とパスワードを作成します。(「パスワードの作成要件」を参照してください。)ロールやシステム権限を付与する必要はありません。これらのアカウントのロールおよびシステム権限は、skingアカウントで定義され、自動的に作成されます。

この段階で、同じ権限を持つ3人のユーザーが作成されました。これらのすべてのユーザーは、EMP_ROLEロールによってHR.LOCATIONS表に対するSELECT権限を持っています。

手順4: Oracle Label SecurityのACCESS_LOCATIONSポリシーを作成する

ユーザー・アカウントを作成した後、ACCESS_LOCATIONSポリシーを作成できます。

ACCESS_LOCATIONSポリシーを作成する手順は、次のとおりです。

1. NORMALロールが選択されているユーザーLBACSYSとして、Enterprise Managerターゲット・データベースにログインします。

2. 「管理」メニューから、「セキュリティ」、「Oracle Label Security」を選択します。

3. ラベル・セキュリティ・ポリシー・ページで、「作成」をクリックします。

4. 「Label Securityポリシーの作成」ページで、次の情報を入力します。

- 名前: ACCESS_LOCATIONS

- ラベル列: OLS_COLUMN
以降で、表にポリシーを適用するときに、このラベル列が表に追加されます。デフォルトでは、ポリシーのラベル列のデータ型はNUMBER(10)です。

- ラベル列の非表示: ラベル列が非表示にならないように、このボックスの選択を解除します。(デフォルトでは選択が解除されています。)
通常、ラベル列は非表示にしますが、開発段階ではチェックできるように表示しておきます。ポリシーの作成が完了し、使用が開始された後、アプリケーションから見えないようにこの列は非表示にします。多くのアプリケーションは、新たな列を表示するようには設計されていないため、列を非表示にすると、アプリケーションが破損しなくなります。

- 有効: このボックスを選択すると、ポリシーが有効になります。(デフォルトで有効にする必要があります。)

- インバース・ユーザーの読取りおよび書込みグループ(INVERSE_GROUP): このオプションは選択しないでください。

- デフォルトのポリシー強制オプション: 「ポリシー強制の適用」を選択して、次のオプションを選択します:
すべての問合せ用(READ_CONTROL)

ラベル列のUPDATE操作にセッションのデフォルト・ラベルを使用(LABEL_DEFAULT)

5. 「OK」をクリックします。
ACCESS_LOCATIONSポリシーが「Label Securityポリシー」ページに表示されます。

手順5: ACCESS_LOCATIONSポリシーのレベル・コンポーネントを定義する

この段階では、ポリシーが作成され、ポリシーの強制オプションが設定されています。次に、ポリシーで使用するラベル・コンポーネントを作成します。

少なくとも、PUBLICまたはSENSITIVEなど、1つ以上のレベルを作成し、詳細名、短縮名、機密性レベルを表す数値を定義する必要があります。区分およびグループはオプションです。

レベル数値は、対応するラベルに必要な機密性のレベルを表します。セキュリティ・ポリシーに追加のレベルが必要になる場合に備えて、後で拡張できるような数値の範囲を選択します。たとえば、LOW_SENSITIVITYとHIGH_SENSITIVITYというレベルを追加する必要が生じた場合、LOW_SENSITIVITYには7300、HIGH_SENSITIVITYには7600という数値を割り当て、ポリシーにより作成されるセキュリティ・スケールに適合させることができます。通常、番号が大きいほどデータの機密性が高くなります。

コンパートメントは、ラベルが割り当てられたデータの機密性を表す領域を識別し、レベル内のより詳細なレベルを表します。コンパートメントはオプションです。

グループは、データを所有する組織またはデータにアクセスする組織を識別します。グループは、データを制御された方法で配布したり、組織の変更に適切なタイミングで対処する場合に役立ちます。グループはオプションです。

この手順では、レベル・コンポーネントを定義します。レベル・コンポーネントは、ACCESS_LOCATIONSポリシーで作成する必要があるSENSITIVE、CONFIDENTIAL、PUBLICラベルの名前と関係に影響します。

ACCESS_LOCATIONSポリシーのラベル・コンポーネントを定義する手順は、次のとおりです。

1. 「Label Securityポリシー」ページでACCESS_LOCATIONSポリシーを選択し、次に「編集」を選択します。

2. Label Securityポリシーの編集ページで、ラベル・コンポーネント・サブページを選択します。

3. 「レベル」で、「 5行追加」をクリックし、次のように詳細名、短縮名および数値タグを入力します(フィールド間を移動するには、[Tab]キーを押します)。

詳細名

短縮名

数値タグ

SENSITIVE

SENS

3000

CONFIDENTIAL

CONF

2000

PUBLIC

PUB

1000

4. 「適用」をクリックします。

手順6: ACCESS_LOCATIONSポリシーのデータ・ラベルを作成する

この手順では、ACCESS_LOCATIONポリシーのデータ・ラベルを作成します。

データ・ラベルを作成するには、各レベルに数値タグを割り当てる必要があります。このタグの数値は、後でポリシーを表に適用するときにセキュリティ列に格納されます。これは、ラベルの機密性とは関係がなく、ポリシーのラベルの識別にのみ使用されます。

データ・ラベルを作成する手順は、次のとおりです。

1. 「Label Securityポリシー」リンクを選択して、「Label Securityポリシー」ページに戻ります。

2. ACCESS_LOCATIONSポリシーの選択ボタンを選択します。

3. 「アクション」リストで「データ・ラベル」を選択し、次に「実行」をクリックします。

4. データ・ラベル・ページで、「追加」をクリックします。

5. データ・ラベルの作成ページで、次の情報を入力します。

- 数値タグ: 1000を入力します。

- レベル: PUBと入力します。

6. 「OK」をクリックします。
「データ・ラベル」ページにデータ・ラベルが表示されます。

7. もう一度「追加」をクリックし、CONFレベルのデータ・ラベルを次のように作成します。

- 数値タグ: 2000と入力します。

- レベル: リストからCONFを選択します。

8. 「OK」をクリックします。

9. もう一度「追加」をクリックし、SENSレベルのデータ・ラベルを次のように作成します。

- 数値タグ: 3000と入力します。

- レベル: リストからSENSを選択します。

10. 「OK」をクリックします。
データ・ラベル・ページにCONF、PUBおよびSENSラベルが表示されます。

後で、HR.LOCATIONS表にポリシーを適用したときに、タグの数値はセキュリティ列に格納されます。これは、ラベルの機密性とは関係がなく、ポリシーのラベルの識別にのみ使用されます。

手順7: ACCESS_LOCATIONSポリシーのユーザー認可を作成する

次に、ポリシーのユーザー認可を作成します。

ポリシーに対するユーザー認証を作成する手順は、次のとおりです。

1. 「Label Securityポリシー」リンクを選択して、「Label Securityポリシー」ページに戻ります。

2. ACCESS_LOCATIONSポリシーの選択ボタンを選択します。

3. 「アクション」リストで「認可」を選択し、次に「実行」をクリックします。

4. 認可ページで、「ユーザーの追加」をクリックします。

5. ユーザーの追加: ユーザー・ページの「データベース・ユーザー」で、「追加」をクリックします。
「検索と選択: ユーザー」ページが表示されます。SKINGと入力して、「実行」をクリックします。

通常、データベース・ユーザー・アカウントは、たとえばCREATE USER SQL文を使用してデータベースにすでに作成されています。

その他のオプションは「データベース以外のユーザー」です。アプリケーション・ユーザーの多くは、データベース・ユーザー以外のユーザーとなります。データベース・ユーザー以外のユーザーは、データベース内には存在していません。Oracle Label Securityの命名方式に一致し、VARCHAR2(30)の長さのフィールドに適合していれば、どのユーザー名も追加できます。ただし、アプリケーションがデータベースに接続したときに、データベース・ユーザー以外のユーザーに関連するセキュリティ情報は、Oracle Databaseにより自動的には構成されません。この場合、アプリケーションは、Oracle Label Security関数を呼び出し、データベース・ユーザーではないユーザーのラベル認可を行う必要があります。

6. ユーザーSKINGのチェック・ボックスを選択して、「選択」をクリックします。
「ユーザーの作成」ページにユーザーSKINGが表示されます。

7. ユーザーSKINGのチェック・ボックスを選択して、「次へ」をクリックします。
(SKINGのチェック・ボックスを表示するために、ページの更新が必要な場合があります。)

8. 「権限」ページで「次へ」を選択して、「監査」ページに移動します。
ラベル認可を介してポリシーが強制されます。「権限」ページではユーザーによるポリシーのラベル認可をオーバーライド可能にするため、オプションは選択しないでください。

9. 「レベル、区分およびグループ」ページで、次の設定を入力します。

- 最大レベル: SENS(SENSITIVE)

- 最小レベル: CONF(CONFIDENTIAL)

- デフォルト・レベル: SENS

- 行レベル: SENS

10. 「次」をクリックして、監査ページに移動します。

11. 「ユーザーの追加: 監査」ページの「監査」ペインで、すべての監査の操作がNoneに設定されていることを確認し、「次へ」をクリックします。
確認ページが表示されます。

12. 設定が正しいことを確認し、「終了」をクリックします。

「確認」ページに、選択したすべての認可設定が表示されます。

13. 手順4から12までを繰り返してユーザーKPARTNERに対して次の認可を作成し、このユーザーがHR.LOCATIONSの機密データおよびパブリック・データを読み取れるようにします。

- 権限: 権限は選択しません。

- ラベル、コンパートメントおよびグループ: 4つすべてのレベルを次のように設定します。

- 最大レベル: CONF(CONFIDENTIAL)

- 最小レベル: PUB(PUBLIC)

- デフォルト・レベル: CONF

- 行レベル: CONF

- 監査:すべてNoneに設定します。

14. ユーザーLDORANに対して次の認可を作成します。このユーザーは、HR.LOCATIONSのパブリック・データの読取りのみが許可されます。

- 権限: 権限は選択しません。

- レベル、区分およびグループ: 4つすべてのレベルをPUBに設定します。

- 監査:すべてNoneに設定します。

手順8: HR.LOCATIONS表にACCESS_LOCATIONSポリシーを適用する

次に、HR.LOCATIONS表にポリシーを適用します。

ACCESS_LOCATIONSポリシーをHR.LOCATIONS表に適用する手順は、次のとおりです。

1. 「Label Securityポリシー」リンクを選択して、「Label Securityポリシー」ページに戻ります。

2. ACCESS_LOCATIONSポリシーの選択ボタンを選択します。

3. 「アクション」リストで「適用」を選択し、次に「実行」をクリックします。

4. 適用ページで、「作成」をクリックします。
「表の追加」ページが表示されます。

5. 「表」フィールドに、HR.LOCATIONSと入力します。

6. 「ポリシー列の非表示」ボックスが選択されていないことを確認します。

7. 「有効」ボックスが選択されていることを確認します。

8. 「ポリシー強制オプション」で、「デフォルトのポリシー強制を使用」を選択します。
「デフォルトのポリシー強制を使用」を選択すると、自動的に次のオプションが選択されます。

- すべての問合せ用(READ_CONTROL)

- ラベル列の更新にセッションのデフォルト・ラベルを使用(LABEL_DEFAULT)

9. 「OK」をクリックします。
ACCESS_LOCATIONSポリシーがHR.LOCATIONS表に適用されます。

手順9: HR.LOCATIONSデータにACCESS_LOCATIONSラベルを追加する

ACCESS_LOCATIONSポリシーをHR.LOCATIONS表に適用したら、ポリシーのラベルをLOCATIONSのOLS_COLUMNに適用する必要があります。

ユーザーHR(表の所有者)がこれを達成するには、ユーザーはLOCATIONSの非表示OLS_COLUMN列にデータラベルを追加する前に、場所にFULLアクセスが必要です。

トピック:

- HR.LOCATIONS表に対するHR FULLポリシー権限の付与

- HR.LOCATIONSのOLS_COLUMN表の更新

HR.LOCATIONS表に対するHR FULLポリシー権限の付与

ラベル・セキュリティ管理ユーザーLBACSYSは、必要な権限をHRに付与できます。

ACCESS_LOCATIONSポリシーへの完全なアクセス権をHRに付与するには、次のようにします。

1. 「Label Securityポリシー」リンクを選択して、「Label Securityポリシー」ページに戻ります。

2. ACCESS_LOCATIONSポリシーの選択ボタンを選択します。

3. 「アクション」リストから「認可」を選択し、「実行」をクリックします。

4. 認可ページで、「ユーザーの追加」をクリックします。

5. ユーザーの追加ページの「データベース・ユーザー」で、「追加」をクリックします。

6. 検索と選択ウィンドウで、HRユーザーのボックスを選択し、「選択」をクリックします。
ユーザーの追加ページにユーザーHRが表示されます。

7. 「次」をクリックして権限ページを表示します。

8. 「すべてのラベル・セキュリティ・チェックを省略(FULL)」権限を選択し、「次へ」をクリックします。

9. 「次へ」をクリックして、レベル、区分およびグループ・ページを表示します。

10. 「次へ」をクリックします。

11. 監査ページで、「次」をクリックして確認ページを表示します。

12. 「終了」をクリックします。
この段階で、HRは他のユーザーとともに「認可」ページにリストされています。

13. Enterprise Managerを終了しないでください。

HR.LOCATIONSのOLS_COLUMN表の更新

この時点で、ユーザーHRはHR.LOCATIONS表のOLS_COLUMN列を更新して、CITY列の都市に基づいて表内の特定の行に割り当てられるデータ・ラベルを追加できます。

HR.LOCATIONSのOLS_COLUMN表を更新する手順は、次のとおりです。

1. SQL*Plusで、ユーザーHRとして接続します。

CONNECT HR
Enter password: password

HRとしてログインできない場合、このアカウントはロックされているか、期限が切れているため、SYSTEMとしてログインしてから、次の文を入力します。passwordは、HRアカウントに適したパスワードに置き換えます。セキュリティを向上させるため、以前のリリースのOracle Databaseで使用されたパスワードを再利用しないでください。「パスワードの作成要件」を参照してください。

ALTER USER HR ACCOUNT UNLOCK IDENTIFIED BY password

このALTER USER文を実行したら、ユーザーHRとして再度ログインしてみてください。

2. 次のUPDATE文を入力して、北京、東京、シンガポールにSENSラベルを適用します。

UPDATE LOCATIONS
SET ols_column = CHAR_TO_LABEL('ACCESS_LOCATIONS','SENS')
WHERE UPPER(city) IN ('BEIJING', 'TOKYO', 'SINGAPORE');

3. 次のUPDATE文を入力して、ミュンヘン、オックスフォード、ローマにCONFラベルを適用します。

UPDATE LOCATIONS
SET ols_column = CHAR_TO_LABEL('ACCESS_LOCATIONS','CONF')
WHERE UPPER(city) IN ('MUNICH', 'OXFORD', 'ROMA');

4. 次のUPDATE文を入力して、残りの都市にPUBラベルを適用します。

UPDATE LOCATIONS
SET ols_column = CHAR_TO_LABEL('ACCESS_LOCATIONS','PUB')
WHERE ols_column IS NULL;

5. 列が更新されたことをチェックするには、次の文を入力します。

SELECT LABEL_TO_CHAR (OLS_COLUMN) FROM LOCATIONS;

次の出力が表示されます。

LABEL_TO_CHAR(OLS_COLUMN)
-----------------------------------------------------------------------------
CONF
PUB
SENS
PUB
PUB
PUB
PUB
PUB
PUB
PUB
SENS
PUB
PUB
SENS
PUB
CONF
PUB
CONF
PUB
PUB
PUB
PUB
PUB

23 rows selected.

注意:

前述の問合せでラベル列名(OLS_COLUMN)を明示的に使用すると、ラベル列が非表示になっていても表示できます。

ラベル列が非表示であるときに、ラベル列名を明示的に指定しない場合、ラベル列は問合せ結果に表示されません。たとえば、ラベル列が非表示である場合、SELECT * FROM LOCATIONS問合せを実行しても、ラベル列は表示されません。この機能を使用すると、アプリケーションからラベル列が見えないようにできます。ラベル列が追加される前に設計されたアプリケーションには、ラベル列は認識されず、表示されません。

手順10: ACCESS_LOCATIONSポリシーをテストする

ACCESS_LOCATIONSポリシーの作成は完了しました。次に、ポリシーをテストします。ポリシーは、3人の各ユーザーとしてSQL*Plusにログインし、HR.LOCATIONS表に対してSELECTを実行することでテストできます。

ACCESS_LOCATIONSポリシーをテストする手順は、次のとおりです。

1. SQL*Plusでユーザーskingとして接続します。

CONNECT sking
Enter password: password

2. 次のように入力します。

次のコマンドは、読み取りやすいように表の列幅を書式設定します。この手順を実行するのは、(kpartnerおよびldoranのログイン時も含めて)セッション全体に対して1回のみです。

COL city HEADING City FORMAT a25
COL country_id HEADING Country FORMAT a11
COL Label format a10

次に、SELECT文を次のように入力します。

SELECT CITY, COUNTRY_ID, LABEL_TO_CHAR (OLS_COLUMN)
AS LABEL FROM HR.LOCATIONS ORDER BY OLS_COLUMN;

ユーザーskingは、HR.LOCATIONS表の23行すべてにアクセスできます。アクセスはラベルCONFおよびSENSが付けられた行に対してのみ認可されていますが、ラベルPUBが付けられた行を読み取ることができます(ただし、書き込むことはできません)。

City                      Country     LABEL
------------------------- ----------- ----------
Venice                    IT          PUB
Utrecht                   NL          PUB
Bern                      CH          PUB
Geneva                    CH          PUB
Sao Paulo                 BR          PUB
Stretford                 UK          PUB
Mexico City               MX          PUB
Hiroshima                 JP          PUB
Southlake                 US          PUB
South San Francisco       US          PUB
South Brunswick           US          PUB
Seattle                   US          PUB
Toronto                   CA          PUB
Whitehorse                CA          PUB
Bombay                    IN          PUB
Sydney                    AU          PUB
London                    UK          PUB
Oxford                    UK          CONF
Munich                    DE          CONF
Roma                      IT          CONF
Singapore                 SG          SENS
Tokyo                     JP          SENS
Beijing                   CN          SENS

23 rows selected.

3. ユーザーkpartnerとldoranで、手順1と手順2を繰り返します。
ユーザーKPARTNERは、ラベルCONFおよびPUBが付けられた行にアクセスできます。

City                      Country     LABEL
------------------------- ----------- ----------
Venice                    IT          PUB
Utrecht                   NL          PUB
Bern                      CH          PUB
Mexico City               MX          PUB
Hiroshima                 JP          PUB
Southlake                 US          PUB
South San Francisco       US          PUB
South Brunswick           US          PUB
Seattle                   US          PUB
Toronto                   CA          PUB
Whitehorse                CA          PUB
Bombay                    IN          PUB
Sydney                    AU          PUB
London                    UK          PUB
Stretford                 UK          PUB
Sao Paulo                 BR          PUB
Geneva                    CH          PUB
Oxford                    UK          CONF
Munich                    DE          CONF
Roma                      IT          CONF
20 rows selected.

ユーザーLDORANは、ラベルPUBが付けられた行にアクセスできます。

City                      Country     LABEL
------------------------- ----------- ----------
Venice                    IT          PUB
Hiroshima                 JP          PUB
Southlake                 US          PUB
South San Francisco       US          PUB
South Brunswick           US          PUB
Seattle                   US          PUB
Toronto                   CA          PUB
Whitehorse                CA          PUB
Bombay                    IN          PUB
Sydney                    AU          PUB
London                    UK          PUB
Stretford                 UK          PUB
Sao Paulo                 BR          PUB
Geneva                    CH          PUB
Bern                      CH          PUB
Utrecht                   NL          PUB
Mexico City               MX          PUB

17 rows selected.

4. SQL*Plusを終了します。

手順11: このチュートリアルで使用したコンポーネントを削除する(オプション)

コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。

このチュートリアルで使用したコンポーネントを削除するには、次のようにします。

1. 「Label Securityポリシー」リンクを選択して、「Label Securityポリシー」ページに戻ります。

2. ACCESS_LOCATIONSポリシーを選択して「削除」をクリックします。「確認」ページで、「列の削除」チェック・ボックスを選択してから、「はい」をクリックします。
ACCESS_LOCATIONSポリシーを削除すると、HR.LOCATIONS表からOLS_COLUMN列も削除されます。

3. Enterprise Managerからログアウトし、ユーザーSYSTEMとして再度ログインします。

4. 「管理」メニューから、「セキュリティ」を選択し、「ユーザー」を選択します。

5. ユーザーKPARTNERを選択して「削除」をクリックします。

6. 「確認」ページで「はい」をクリックします。

7. ユーザーldoranとskingで、手順5と手順6を繰り返します。

8. 「データベース・インスタンス」リンクをクリックしてデータベースのホームページに戻ります。

9. 「管理」メニューから、「セキュリティ」を選択し、「ロール」を選択します。

10. emp_roleロールを選択し、次に「削除」を選択します。

11. 「確認」ダイアログ・ボックスで、「はい」をクリックします。

12. Enterprise Managerからログアウトします。

13. 必要に応じて、Oracle Label Securityを無効にします。

a. SYSDBA管理権限を持つSYSとして、またはLBAC_DBAロールを付与されたユーザーとしてデータベース・インスタンスにログインします。
次に例を示します。

sqlplus lbacsys
Enter password: password

b. 次のプロシージャを実行します。

EXEC LBACSYS.OLS_ENFORCEMENT.DISABLE_OLS

c. データベースを再起動します。

CONNECT SYS AS SYSOPER
Enter password: password

SHUTDOWN IMMEDIATE
STARTUP

9 データベース・アクティビティの監査

データベース・アクティビティの監査のために統合監査を使用すると、データベースでのユーザーの行動を監査するポリシーを様々な方法で作成できます。

トピック:

- 監査の概要

- 監査を使用する理由

- チュートリアル: 統合監査ポリシーの作成

関連項目:

- ユーザーおよびデータベース・アクティビティを監査する他の方法については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

- 監査ポリシーの作成に関する重要なガイドラインは、『Oracle Databaseセキュリティ・ガイド』を参照してください。

- 拡張監査機能の詳細は、『Oracle Audit Vault and Database Firewall管理者ガイド』を参照してください。

監査の概要

監査は選択したユーザーのデータベース・アクションの監視と記録です。

監査を行うには、適切なシステム権限が付与されている必要があります。職務分掌を推進するために、次の2つのデフォルト・ロールが用意されています。

- AUDIT_ADMINロール。監査の構成、および統合監査ポリシーとファイングレイン監査ポリシーの両方の管理を行えます。監査データの表示と分析も行えます。通常、セキュリティ管理者にこのロールが付与されます。

- AUDIT_VIEWERロール。監査データの表示と分析のみ行えます。通常、外部監査者にこのロールが付与されます。

この項では、次の場所から監査レコードを取得する統合監査の概要を示します。

- 統合監査ポリシーおよびAUDIT設定による監査レコード(SYS監査レコードを含む)

- DBMS_FGA PL/SQLパッケージによるファイングレイン監査レコード

- Oracle Real Application Security監査レコード

- Oracle Recovery Manager監査レコード

- Oracle Database Vault監査レコード

- Oracle Label Security監査レコード

Oracle Databaseによって、これらのレコードが1つの場所に1つの形式で統合されます。単一データベース・インスタンスの場合はUNIFIED_AUDIT_TRAILビューから、Oracle Real Application Clusters環境の場合はGV$UNIFIED_AUDIT_TRAILから参照できます。

データベースを現在のリリースにアップグレードする場合、統合監査を使用するには手動で移行する必要があります。アップグレードしたデータベースでの移行の完了後も、以前のリリースの監査レコードは使用可能です。これらの古い監査証跡のアーカイブおよびパージを行います。その後、新規監査レコードは統合監査証跡に書き込まれます。

新たに作成するデータベースの場合、Oracle Databaseで混合モードに対応した監査が提供され、新旧両方の監査機能を同時に実行できます。

統合監査ポリシーを作成し、有効にすると、このポリシーでただちに監査レコードの収集が開始されます。以前のリリースでは必要だった初期化パラメータを設定しなくても、監査全体が有効になります。ポリシーは、1ユーザーのアクティビティの監査のような単純なものにすることも、条件を使用した複雑な監査ポリシーを作成することもできます。1つのデータベースで同時に複数の監査ポリシーを有効にできます。監査ポリシーには、システム全体の監査オプションとオブジェクト固有の監査オプションの両方を含めることができます。一般的なアクティビティに対する監査の大半(標準監査を含む)に、監査ポリシーを使用する必要があります。

監査の別タイプとして、ファイングレイン監査もあります。ファイングレイン監査では、統合監査の監査機能のほとんどと次の機能が提供されます。

- 特定の列の監査。給与や社会保障番号など、機密情報が格納されている特定の関連する列を監査できます。

- イベント・ハンドラの使用。たとえば、夜中に変更されないようにする必要がある監査対象の列が更新された場合に、セキュリティ管理者に電子メール・アラートを送信する関数を作成できます。

Oracleには、よく使用されるセキュリティ関連の監査設定を対象とする、あらかじめ定義された監査ポリシーが3つあります。これらのポリシーは、強力な内部統制を実施して、コンプライアンス要件を満たすための効果的な方法となるように設計されています。

関連項目:

- 統合監査への移行および混合モード監査の詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。

- 監査証跡のアーカイブとパージの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

- ファイングレイン監査の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

- 事前定義された監査ポリシーの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

監査を使用する理由

通常、監査は、ユーザー・アカウンタビリティの有効化、不適切なユーザー・アクションの抑止、不審なアクティビティの調査などの業務を実行するために使用されます。

監査を使用する理由は、次のとおりです。

- アクションに対するアカウンタビリティの有効化。特定のスキーマ、表または行に対して実行されるアクション、あるいは特定の内容に影響を与えるアクションなどがあります。

- アカウンタビリティに基づいて不審なユーザーによる不適切なアクションを阻止します。

- 不審なアクティビティを調査します。たとえば、ユーザーが表からデータを削除しようとした場合、セキュリティ管理者は、そのデータベースへのすべての接続と、そのデータベースにあるすべての表からの行の削除(成功および失敗)をすべて監査できます。

- 認可されていないユーザーによるアクションを監査人に通知します。たとえば、認可されていないユーザーがデータを変更または削除を実行できるなど、予期した以上の権限を持っている場合に、ユーザー認可を再評価できます。

- 認可またはアクセス制御の実装に関する問題の検出。たとえば、データは他の方法で保護されているため、監査レコードは生成されないと予測される監査ポリシーを作成できます。しかし、これらのポリシーで監査レコードが生成された場合は、他のセキュリティ制御が正しく実装されていないことがわかります。

- コンプライアンスのための監査要件への対処。次のような法規に、監査に関連する一般的な要件が含まれています。

- サーベンス・オクスリー法

- 米国の医療保険の相互運用性と説明責任に関する法律(Health Insurance Portability and Accountability Act、HIPAA)

- 自己資本の測定と基準に関する国際的統一化: 改訂された枠組(バーゼルII)(International Convergence of Capital Measurement and Capital Standards: a Revised Framework、Basel II)

- 日本の個人情報保護法

- 欧州連合のプライバシと電子通信に関する指令(European Union Directive on Privacy and Electronic Communications)

- 特定のデータベース・アクティビティに関するデータの監視と収集。たとえば、データベース管理者は、更新された表、実行された論理I/O操作の回数、ピーク時に接続していた同時実行ユーザーの数などに関する統計を収集できます。

チュートリアル: 統合監査ポリシーの作成

OE.CUSTOMERS表のSELECT文を監査する場合を想定します。このチュートリアルでは、OE.CUSTOMERS表に対するSELECT文を監視する統合監査ポリシーを作成します。

トピック:

- 手順1: 統合監査の有効化(必要に応じて)

- 手順2: SEC_ADMINユーザーへのAUDIT_ADMINロールの付与

- 手順3: 統合監査ポリシーの作成と有効化

- 手順4: 統合監査ポリシーのテスト

- 手順5: このチュートリアルのコンポーネントの削除(オプション)

- 手順6: SEC_ADMINセキュリティ管理者アカウントの削除(オプション)

手順1: 統合監査の有効化(必要に応じて)

この手順では、統合監査が有効かどうかをチェックし、有効でない場合は有効にします。

統合監査を有効にするには、次のようにします。

1. SYSDBA管理権限を使用してユーザーSYSとしてSQL*Plusにログインします。

sqlplus sys as sysdba
Enter password: password

2. 次の問合せを実行して、データベースが統合監査を使用するよう移行されているかどうかを確認します。次に示す大/小文字でUnified Auditingと入力します。

SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';

VALUE列の出力がFALSEの場合、この項の残りのステップを実行して統合監査に移行します。出力がTRUEの場合は、統合監査が有効であり、「手順2: SEC_ADMINユーザーへのAUDIT_ADMINロールの付与」に進むことができます。

3. データベースを停止します。
単一インスタンスのインストールの場合、SQL*Plusから次のコマンドを入力します。

SHUTDOWN IMMEDIATE
EXIT

Windowsシステムでは、Oracleサービスを停止します。

net stop OracleService%ORACLE_SID%

Oracle Real Application Clusters (Oracle RAC)インストールの場合、次のようにして各データベース・インスタンスを停止します。

srvctl stop database -db db_name

4. リスナーを停止します。(Oracle RACおよびGrid Infrastructureリスナーでは、リスナーを停止する必要はありません。)

lsnrctl stop listener_name

リスナー名は、lsnrctl statusコマンドを実行すると確認できます。この名前は、Alias設定によって示されます。

5. $ORACLE_HOME/rdbms/libディレクトリに移動します。

6. 統合監査実行可能ファイルを有効にします。

- UNIX: 次のコマンドを実行します。

make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME

- Windows: %ORACLE_HOME%/bin/orauniaud12.dll.optionファイルの名前を%ORACLE_HOME%/bin/orauniaud12.dllに変更します。

7. リスナーを再起動します。

lsnrctl start listener_name

8. データベースを再起動します。SQL*Plusにログインしてから、次のように、STARTUPコマンドを入力します。

sqlplus sys as sysoper
Enter password: password

SQL> STARTUP

Windowsシステムでは、Oracleサービスを再度起動します。

net start OracleService%ORACLE_SID%

Oracle RACインストールの場合は、コマンドラインから次のようにしてデータベースを再起動します。

srvctl setenv database -db orcl

手順2: SEC_ADMINユーザーへのAUDIT_ADMINロールの付与

統合監査を有効にした後、sec_adminユーザーにAUDIT_ADMINロールを付与し、SEC_ADMINが監査ポリシーを作成できるようにします。

SEC_ADMINユーザーにAUDIT_ADMINロールを付与するには、次のようにします。

1. ターゲット・データベースのデータベース・ホームページに、SYSDBA管理権限を使用してユーザーSYSとしてアクセスします。
詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

2. 「管理」メニューから、「セキュリティ」を選択し、「ユーザー」を選択します。

3. SEC_ADMINアカウントを選択し、「編集」をクリックします。
sec_adminアカウントが存在しない場合、「手順2: セキュリティ管理者アカウントを作成する」に記載されたsec_adminセキュリティ管理者アカウントの作成方法を参照してください。

4. ユーザーの編集: SEC_ADMINページで「ロール」タブを選択します。

5. 「リストの編集」ボタンを選択します。

6. ロールの変更ページで、「使用可能なロール」リストからAUDIT_ADMINを選択し、「選択したロール」リストに移動します。「OK」をクリックします。

7. ユーザーの編集: SEC_ADMINページで「オブジェクト権限」タブを選択します。

8. ユーザーの編集: SEC_ADMINページで「オブジェクト・タイプ」リストから「パッケージ」を選択し、「追加」をクリックします。

9. 「パッケージオブジェクト権限の追加」ページで、次の手順を実行します。

a. パッケージ・オブジェクトの選択フィールドにSYS.DBMS_AUDIT_MGMTと入力します。

b. 「使用可能なパッケージ」で「EXECUTE」を選択し、「移動」をクリックして「選択した権限」リストに送ります。

c. 「OK」をクリックします。

10. ユーザーの編集: SEC_ADMINページで「適用」をクリックします。

手順3: 統合監査ポリシーの作成と有効化

Enterprise Managerにsec_adminユーザーとしてログインし、OE.CUSTOMERS表へのSELECT文の統合監査ポリシーを作成できます。

統合監査ポリシーを作成するには、次のようにします。

1. Enterprise Managerからログアウトし、ユーザーsec_adminとしてログインしなおします。

2. 「管理」メニューから「セキュリティ」を選択し、「監査設定」を選択します。

3. 監査設定ページで「作成」をクリックします。

4. 監査ポリシーの作成: 権限およびロールページで次の設定を入力します。

- 名前: ポリシー名として select_cust_polと入力します。

- コメント: Audit policy for SELECT statements on OE.CUSTOMERSと入力します。

5. 「次」ボタンをクリックします。

6. 監査ポリシーの作成: コンポーネント・アクションページで「次へ」をクリックします。

7. 監査ポリシーの作成: オブジェクト・アクションページで「オブジェクトの追加」をクリックします。

8. 「オブジェクトの追加」ダイアログ・ボックスで次の設定を入力します。

- スキーマ: OE

- タイプ: TABLE

- オブジェクト: CUSTOMERS

- アクション: SELECT

9. 「OK」をクリックします。
次のように「監査ポリシーの作成 : オブジェクト・アクション」ページが表示されます。

10. 監査ポリシーの作成: オブジェクト・アクションウィンドウで「次へ」をクリックします。

11. 監査ポリシーの作成: 条件ウィンドウで「次へ」をクリックします。監査ポリシーの作成: 確認ページで「送信」をクリックします。
監査設定ページが表示され、ポリシーのリストにSELECT_CUST_POLが含まれています。

12. 「SELECT_CUST_POL」を選択して「有効化」ボタンをクリックします。

13. 「監査ポリシーの有効化」ダイアログ・ボックスですべてのユーザーに対して監査ポリシーを有効化チェック・ボックスを選択解除します。
「監査ポリシーの有効化」ダイアログ・ボックスを拡張して特定のユーザーを追加できます。

14. 「ユーザーの追加」ボタンをクリックします。

15. 「ユーザーの追加」ダイアログ・ボックスでOEを検索および入力(「Oracle提供の表示」チェック・ボックスを選択)し、「成功時に監査」および失敗時に監査チェック・ボックスが選択されていることを確認します。

16. 「OK」をクリックします。

17. この手順を繰り返して、HRをリストに追加します。

18. Enterprise Managerを終了しないでください。

手順4: 統合監査ポリシーのテスト

この段階では、監査が有効で、OE.CUSTOMERS表で実行されたSELECT文がUNIFIED_AUDIT_TRAIL動的ビューに書き込まれます。次に、監査設定をテストします。

統合監査ポリシーは、監査中のユーザーに対する次のユーザー・セッションで有効となります。したがって、監査記録を取得する前に、ユーザーはポリシーが作成されてからデータベースに接続する必要があります。

監査設定をテストするには、次のようにします。

1. SQL*Plusで、ユーザーOEとして接続し、OE.CUSTOMERS表に問い合せ、監査証跡用のレコードを生成します。

connect OE
Enter password: password

SELECT COUNT(*) FROM CUSTOMERS;

COUNT(*)
--------
319

2. ユーザーHRとして接続し、次の問合せを実行します。

connect HR
Enter password: password

SELECT COUNT(*) FROM OE.CUSTOMERS;

ERROR at line 1:
ORA-00942: table or view does not exist

この時点で、監査証跡には2つのレコードが含まれています。1つは、ユーザーOEによる成功した問合せに関するもので、もう1つは、ユーザーHRによる失敗した問合せに関するものです。

3. ユーザーSHとして接続し、同じ問合せを実行します。

connect SH
Enter password: password

SELECT COUNT(*) FROM OE.CUSTOMERS;

ERROR at line 1:
ORA-00942: table or view does not exist

このユーザーは監査の対象ではないため、このアクションに対する監査レコードはありません。

4. ユーザーsec_adminとして接続します。

connect sec_admin
Enter password: password

5. 次のプロシージャを実行します。

EXEC SYS.DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL;

監査証跡モードがQUEUEDの場合、インメモリー・キューが一杯になるまで、監査レコードはディスクに書き込まれません。このコマンドによってキューをディスクに書き出すよう明示的に指示され、UNIFIED_AUDIT_TRAILビューで監査証跡レコードを確認できます。

6. 次の文を入力して、UNIFIED_AUDIT_TRAILビューに問い合せます。

col dbusername format a12
col sql_text format a30
col event_timestamp format a38

SELECT DBUSERNAME, SQL_TEXT, EVENT_TIMESTAMP
FROM UNIFIED_AUDIT_TRAIL
WHERE SQL_TEXT LIKE 'SELECT %';

このSELECT文では、ユーザーOE、HRおよびSHとしてSELECT文を入力したときと同じ大/小文字を使用して、SQL_TEXT列のテキスト('SELECT %')を入力します。つまり、SELECT文を小文字で入力した場合は、'SELECT %'ではなく、'select %'と入力してDBA_AUDIT_TRAILビューを問い合せます。

次のような出力が表示されます。

DBUSERNAME SQL_TEXT                          EVENT_TIMESTAMP
---------- --------------------------------- --------------------------------
OE         SELECT COUNT(*) FROM CUSTOMERS    04-JAN-13 03.39.02.468963 PM
HR         SELECT COUNT(*) FROM OE.CUSTOMERS 04-JAN-13 03.38.05.974127 PM

監査ポリシーはユーザーOEおよびHRのみに適用されているため、ユーザーSHのアクションに関するレコードはありません。

手順5: このチュートリアルで使用したコンポーネントを削除する(オプション)

不要になった場合は、このチュートリアルのコンポーネントを削除できます。

このチュートリアルで使用した監査設定を削除するには、次のようにします。

1. Enterprise Managerで、sec_adminユーザーとしてログインしていることを確認します。

2. 「管理」を選択し、「セキュリティ」、「監査設定」の順に選択して監査設定ページを表示します。

3. SELECT_CUST_POLポリシーを選択して「無効化」をクリックし、「確認」ダイアログ・ボックスで「はい」を選択します。

4. SELECT_CUST_POLポリシーを再度選択して「削除」をクリックし、「確認」ダイアログ・ボックスで「はい」を選択します。「はい」を再度クリックします。

5. Enterprise Managerからログアウトし、SYSDBA管理権限を使用してユーザーSYSとして再度ログインします。

6. 「管理」メニューから「セキュリティ」を選択し、「ユーザー」を選択します。

7. SEC_ADMINユーザーを選択し、「編集」をクリックします。

8. ユーザーの編集: SEC_ADMINページで「ロール」を選択します。

9. 「リストの編集」ボタンを選択します。

10. ロールの変更ページで、AUDIT_ADMINロールを「使用可能なロール」リストに移動し、「OK」をクリックします。

11. ユーザーの編集: SEC_ADMINページで「オブジェクト権限」タブを選択します。

12. DBMS_AUDIT_MGMTパッケージのEXECUTE権限を選択し、「削除」をクリックします。

13. 「適用」をクリックします。

手順6: SEC_ADMINセキュリティ管理者アカウントの削除(オプション)

これは、このガイドの最後の例です。sec_admin管理者アカウントが不要になった場合は、このアカウントを削除する必要があります。

sec_adminセキュリティ管理者アカウントを削除するには、次のようにします。

1. SYSTEMユーザーとしてデータベースにログインします。

2. データベースのホームページで、「管理」、「セキュリティ」、「ユーザー」の順に選択します。

3. ユーザーsec_adminを選択します。

4. 「削除」をクリックします。

5. 確認ページで「はい」を選択します。

6. Enterprise Managerを終了します。

索引

A  C  D  E  F  G  H  I  K  L  M  N  O  P  R  S  T  U  V  W  X

A

- アクセス制御

- データの暗号化 1

- Oracle Label Security 1

- 管理アカウント

- 概要 1

- 事前定義済, 表示 1

- 管理者

- アクセスの制限 1

- 職務分離 1

- ANONYMOUSユーザー・アカウント 1

- アプリケーション・コンテキスト

- Oracle Virtual Private Database、使用 1

- ASMSNMPユーザー・アカウント 1

- 監査

- 概要 1

- ファイングレイン監査 1

- ユーザー・アクションの監視 1

- 監査を行う理由 1

- AUDSYSユーザー・アカウント 1

- 実行者の権限を使用するAUTHID CURRENT USER句 1

C

- CONNECTロール, 使用可能な権限 1

- CREATE DATABASE LINK文 1

- CREATE EXTERNAL JOB権限

- デフォルトのセキュリティ設定, 変更 1

- CREATE SESSION文 1

- CTXSYSユーザー・アカウント 1

D

- データベース

- 互換性の確認 1

- データベース・アカウント

- 「ユーザー・アカウント」を参照

- データ・ディクショナリ

- 概要 1

- 保護 1

- データ・ディクショナリ・ビュー

- DBA_USERS_WITH_DEFPWD 1

- DBA_USERS_WITH_DEFPWDデータ・ディクショナリ・ビュー 1

- DBSNMPユーザー・アカウント

- 概要 1

- デフォルト・パスワード

- 変更の重要性 1

- デフォルトのセキュリティ設定

- 概要 1

- DIPユーザー・アカウント 1

E

- 暗号化

- 概要 1

- アルゴリズム, 説明 1

- コンポーネント 1

- ネットワーク 1

- 暗号化しない理由 1

- 暗号化する理由 1

- エラー

- トレース・ファイルの確認 1

- WHEN NO_DATA_FOUND例外の例 1

- 例 1

- 「チュートリアル」も参照

- 例外

- WHEN NO_DATA_FOUNDの例 1

F

- ファイングレイン監査 1

G

- GRANT ALL PRIVILEGES権限 1

- セキュリティのガイドライン

- 監査

- 事前定義の統合監査ポリシー 1

- Oracle Label Securityポリシー, 計画 1

- パスワード

- 作成 1

- 権限, 付与 1

- ロール, ユーザーへの付与 1

H

- HRユーザー・アカウント 1

I

- 初期化パラメータ

- 構成関連 1

- デフォルトのセキュリティ, 変更 1

- FAILED_LOGIN_ATTEMPTS 1

- インストール関連 1

- MAX_ENABLED_ROLES 1

- 変更 1

- O7_DICTIONARY_ACCESSIBILITY

- 概要 1

- データ・ディクショナリ, 保護 1

- デフォルト設定 1

- OS_AUTHENT_PREFIX 1

- OS_ROLES 1

- PASSWORD_GRACE_TIME 1

- PASSWORD_LIFE_TIME 1

- PASSWORD_LOCK_TIME 1

- PASSWORD_REUSE_MAX 1

- PASSWORD_REUSE_TIME 1

- REMOTE_LISTENER 1

- REMOTE_OS_AUTHENT 1

- REMOTE_OS_ROLES 1 , 2

- SEC_CASE_SENSITIVE_LOGIN 1

- SEC_MAX_FAILED_LOGIN_ATTEMPTS 1

- SEC_RETURN_SERVER_RELEASE_BANNER 1

- SQL92_SECURITY 1

- 実行者の権限 1

- IXユーザー・アカウント 1

K

- キーストア

- 閉じる 1

- 作成 1

- マスター暗号化鍵の作成 1

- ソフトウェア・パスワード・キーストアの作成 1

- 開く 1

L

- LBACSYSユーザー・アカウント 1

- 最小権限の原則 1

M

- マスター暗号化鍵

- 作成 1

- MDDATAユーザー・アカウント 1

- MDSYSユーザー・アカウント 1

- 監視

- 「監査」を参照

- マルチテナント・コンテナ・データベース

- 「CDB」を参照

- My Oracle Support

- 概要 1

- サービス・リクエストを記録するためのユーザー・アカウント 1

N

- ネットワーク暗号化

- 概要 1

- コンポーネント 1

- 構成 1

- データベース・ユーザー以外のユーザー 1

O

- オブジェクト権限 1

- OEユーザー・アカウント 1

- OLAPSYSユーザー・アカウント 1

- ORACLE_OCMユーザー・アカウント 1

- Oracle Database Vault

- 概要 1

- コンポーネント 1

- データベースへの登録 1

- コンプライアンス, 遵守 1

- チュートリアル 1

- Oracle Data Redaction

- 概要 1

- VPDおよびOLSとの比較 1

- 業界のコンプライアンス 1

- リアルタイムで実行するリダクション 1

- チュートリアル 1

- リダクションのタイプ 1

- Oracle Enterprise Manage

- 概要 1

- Oracle Label Security(OLS)

- VPDおよびデータ・リダクションとの比較 1

- コンポーネント 1

- 計画のガイドライン 1

- 動作 1

- チュートリアル 1

- Oracle Virtual Private Databaseとの併用 1

- Oracle MetaLink

- 「My Oracle Support」を参照

- Oracle Net

- ネットワーク・トラフィックの暗号化 1

- Oracle Virtual Private Database(VPD)

- 概要 1

- メリット 1

- アプリケーション・コンテキスト 1

- OLSおよびデータ・リダクションとの比較 1

- コンポーネント 1

- チュートリアル 1

- Oracle Label Securityとの併用 1

- ORDDATAユーザー・アカウント 1

- ORDPLUGINSユーザー・アカウント 1

- ORDSYSユーザー・アカウント 1

P

- パスワード

- 変更 1

- デフォルトのセキュリティ設定, 変更 1

- デフォルト・ユーザー・アカウント 1

- セキュリティのためのパスワード

- 要件 1

- プラガブル・データベース

- 「PDB」を参照

- PMユーザー・アカウント 1

- 最小権限の原則 1

- 権限

- 概要 1

- CREATE DATABASE LINK文 1

- SYSTEMおよびOBJECT 1

R

- ロール

- CONNECT 1

- 独自の作成 1

- 担当業務の権限のみ 1

S

- SCOTTユーザー

- 概要 1

- 権限の制限 1

- 例のsec_adminセキュリティ管理者

- 削除 1

- セキュア・アプリケーション・ロール

- 概要 1

- メリット 1

- コンポーネント 1

- 実行者の権限 1

- チュートリアル 1

- セキュリティ管理者

- sec_adminの削除 1

- セキュリティ・タスク, 一般的 1

- SELECT ANY DICTIONARY権限

- GRANT ALL PRIVILEGES権限, 含まれない 1

- 機密データ

- Oracle Virtual Private Database 1

- セキュア・アプリケーション・ロール 1

- 職務分離の概念 1

- 職務分離の概念

- 概要 1

- Oracle Database Vault 1

- セッション情報、取得 1

- SHユーザー・アカウント 1

- SI_INFORMTN_SCHEMAユーザー・アカウント 1

- SPATIAL_CSW_ADMIN_USRユーザー・アカウント 1

- SPATIAL_WFS_ADMIN_USRユーザー・アカウント 1

- 標準監査

- チュートリアル 1

- SYSBACKUPユーザー・アカウント

- 概要 1

- SYSDGユーザー・アカウント

- 概要 1

- SYSKMユーザー・アカウント

- 概要 1

- システム管理者

- 「管理アカウント」, 「セキュリティ管理者」を参照

- システム権限 1

- SYSTEMユーザー・アカウント

- 概要 1

- SYSユーザー・アカウント

- 概要 1

T

- 表領域

- 暗号化 1

- TDE

- 「透過的データ暗号化(TDE)」を参照

- トレース・ファイル

- エラーの確認 1

- 透過的データ暗号化(TDE)

- 概要 1

- メリット 1

- キーストアを閉じる 1

- コンポーネント 1

- 構成 1

- マスター暗号化鍵の作成 1

- ソフトウェア・パスワード・キーストアの作成 1

- キーストアが開いているか閉じているかの確認 1

- キーストアの場所の確認 1

- キーストアのタイプの確認 1

- 動作 1

- キーストアを開く 1

- パフォーマンスへの影響 1

- 記憶領域 1

- 表の列

- データベース・インスタンスでのチェック 1

- 暗号化 1

- 表領域

- チェック 1

- 表領域, 暗号化 1

- トラブルシューティング

- トレース・ファイルの確認 1

- チュートリアル

- Oracle Database Vault 1

- Oracle Label Security 1

- Oracle Virtual Private Database 1

- セキュア・アプリケーション・ロール 1

- 標準監査 1

U

- ユーザー・アカウント

- 概要 1

- デフォルト, パスワードの変更 1

- 期限切れ 1

- ロック 1

- パスワード要件 1

- 事前定義済

- 管理 1

- 非管理 1

- サンプル・スキーマ 1

- ロック解除 1

- ユーザー・アカウント, 事前定義

- ANONYMOUS 1

- ASMSNMP 1

- AUDSYS 1

- CTXSYS 1

- DBSNMP 1

- DIP 1

- HR 1

- IX 1

- LBACSYS 1

- MDDATA 1

- MDSYS 1

- OE 1

- OLAPSYS 1

- ORACLE_OCM 1

- ORDDATA 1

- ORDPLUGINS 1

- ORDSYS 1

- PM 1

- SCOTT 1 , 2

- SH 1

- SI_INFORMTN_SCHEMA 1

- SPATIAL_CSW_ADMIN_USR 1

- SPATIAL_WFS_ADMIN_USR 1

- SYS 1

- SYSBACKUP 1

- SYSDG 1

- SYSKM 1

- SYSTEM 1

- WMSYS 1

- XDB 1

- XS$NULL 1

- ユーザー・セッション情報, 取得 1

V

- ビュー

- 「データ・ディクショナリ・ビュー」を参照

- 仮想プライベート・データベース

- 「Oracle Virtual Private Database」を参照

- VPD

- 「Oracle Virtual Private Database」を参照

W

- WMSYSユーザー・アカウント 1

X

- XDBユーザー・アカウント 1

- XS$NULLユーザー・アカウント 1

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)を参照してください。