Oracle® Database

Advanced Security管理者ガイド

11gリリース2 (11.2)

B56286-10(原本部品番号:E40393-10)

2016年3月

Oracle Database Advanced Security管理者ガイド 11g リリース2 (11.2)

B56286-10

Copyright © 1996, 2016, Oracle and/or its affiliatesAll rights reserved.

原本著者: Sumit Jeloka

原本協力者: Min-Hank Ho、Peter Knaggs、Adam Lee、Dah-Yoh Lim、Rahil Mir、Gopal Mulagund、Paul Needham、Vikram Pesati、Paul Youn、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 Advanced Securityの新機能

- Oracle Database 11gリリース2 (11.2.0.4)におけるOracle Advanced Securityの新機能

- Oracle Database 11gリリース2 (11.2.0.3)におけるOracle Advanced Securityの新機能

- Oracle Database 11gリリース2 (11.2)におけるOracle Advanced Securityの新機能

- Oracle Database 11gリリース1 (11.1)におけるOracle Advanced Securityの新機能

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

1 Oracle Advanced Securityの概要

- 1.1 エンタープライズ環境におけるセキュリティの問題

- 1.1.1 エンタープライズ・グリッド・コンピューティング環境におけるセキュリティ

- 1.1.2 イントラネットまたはインターネット環境におけるセキュリティ

- 1.1.3 一般的なセキュリティの脅威

- 1.1.3.1 傍受とデータの盗難

- 1.1.3.2 データの書換え

- 1.1.3.3 ユーザーIDの偽造

- 1.1.3.4 パスワード関連の脅威

- 1.2 Oracle Advanced Securityによるセキュリティ問題の解決

- 1.2.1 データの暗号化

- 1.2.1.1 サポートされる暗号化アルゴリズム

- 1.2.1.2 データの整合性

- 1.2.1.3 米国連邦情報処理標準

- 1.2.2 厳密認証

- 1.2.2.1 集中化された認証とシングル・サインオン

- 1.2.2.2 サポートされている認証方式

- 1.3 Oracle Advanced Securityのアーキテクチャ

- 1.4 システム要件

- 1.5 Oracle Advanced Securityの制限事項

2 構成ツールと管理ツールの概要

- 2.1 ネットワーク暗号化ツールと厳密認証構成ツール

- 2.1.1 Oracle Net Manager

- 2.1.1.1 Oracle Net Managerの起動

- 2.1.1.2 Oracle Advanced Securityプロファイルへのナビゲート

- 2.1.1.3 Oracle Advanced Securityプロファイルのプロパティ・シート

- 2.1.2 Oracle Advanced SecurityのKerberosアダプタ・コマンドライン・ユーティリティ

- 2.2 公開鍵インフラストラクチャ資格証明管理ツール

- 2.2.1 Oracle Wallet Manager

- 2.2.1.1 Oracle Wallet Managerの起動

- 2.2.1.2 Oracle Wallet Managerユーザー・インタフェースのナビゲート

- 2.2.1.3 ツールバー

- 2.2.1.4 メニュー

- 2.2.2 orapkiユーティリティ

- 2.3 セキュリティ管理者/DBAの責務

第II部 Oracle Data Redaction

3 Oracle Data Redactionの概要

- 3.1 Oracle Data Redactionとは

- 3.2 Oracle Data Redactionを使用する状況

- 3.3 Oracle Data Redactionを使用する利点

- 3.4 Oracle Data Redactionのターゲットのユースケース

- 3.4.1 データベース・アプリケーションにおけるOracle Data Redactionの使用

- 3.4.2 非定型データベース問合せにおけるOracle Data Redaction使用時の考慮事項

4 Oracle Data Redactionの特徴と機能

- 4.1 完全データ・リダクションを使用した全データのリダクション

- 4.2 部分データ・リダクションを使用したデータのセクションのリダクション

- 4.3 正規表現を使用したデータのパターンのリダクション

- 4.4 ランダム・データ・リダクションを使用したランダム化された値の生成

- 4.5 データ型に基づいた完全、部分およびランダム・リダクションの比較

- 4.5.1 Oracle組込みデータ型のリダクション機能

- 4.5.2 ANSIデータ型のリダクション機能

- 4.5.3 ユーザー定義データ型またはオラクル社提供データ型のリダクション機能

- 4.6 テストを目的にリダクションしない場合

5 Oracle Data Redactionポリシーの構成

- 5.1 Oracle Data Redactionポリシーについて

- 5.2 Oracle Data Redactionポリシーを作成できるユーザー

- 5.3 Oracle Data Redactionポリシーの作成の計画

- 5.4 DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文

- 5.5 データ・リダクション・ポリシーの条件の定義における式の使用

- 5.5.1 データ・リダクション・ポリシーにおける式の使用について

- 5.5.2 ユーザー環境に基づくリダクション・ポリシーの適用

- 5.5.3 データベース・ロールに基づくリダクション・ポリシーの適用

- 5.5.4 Oracle Application Expressのセッション状態に基づくリダクション・ポリシーの適用

- 5.5.5 フィルタリングなしでのリダクション・ポリシーの適用

- 5.6 完全データ・ポリシーの作成とデフォルトの完全リダクション値の変更

- 5.6.1 完全リダクション・ポリシーの作成

- 5.6.1.1 完全データ・リダクション・ポリシーの作成について

- 5.6.1.2 完全リダクション・ポリシーを作成する構文

- 5.6.1.3 完全データ・リダクション・ポリシーの例

- 5.6.2 デフォルトの完全データ・リダクション値の変更

- 5.6.2.1 デフォルトの完全データ・リダクション値の変更について

- 5.6.2.2 LOB以外のデータ型の列に対するデフォルトの完全データ・リダクション値の変更

- 5.6.2.3 LOBデータ型の列に対するデフォルトの完全データ・リダクション値の変更

- 5.7 部分リダクション・ポリシーの作成

- 5.7.1 部分リダクション・ポリシーの作成について

- 5.7.2 部分リダクション・ポリシーを作成する構文

- 5.7.3 固定文字ショートカットを使用した部分リダクション・ポリシーの作成

- 5.7.3.1 固定文字ショートカットの設定

- 5.7.3.2 固定文字ショートカットを使用した部分リダクション・ポリシーの例

- 5.7.4 文字データ型を使用した部分リダクション・ポリシーの作成

- 5.7.4.1 文字データ型の設定

- 5.7.4.2 文字データ型を使用した部分リダクション・ポリシーの例

- 5.7.5 数値データ型を使用した部分リダクション・ポリシーの作成

- 5.7.5.1 数値データ型の設定

- 5.7.5.2 数値データ型を使用した部分リダクション・ポリシーの例

- 5.7.6 日時データ型を使用した部分リダクション・ポリシーの作成

- 5.7.6.1 日時データ型の設定

- 5.7.6.2 日時データ型を使用した部分リダクション・ポリシーの例

- 5.8 正規表現ベースのリダクション・ポリシーの作成

- 5.8.1 正規表現ベースのリダクション・ポリシーの作成について

- 5.8.2 正規表現ベースのリダクション・ポリシーを作成する構文

- 5.8.3 ショートカットを使用した正規表現ベースのリダクション・ポリシーの作成

- 5.8.3.1 正規表現ショートカット

- 5.8.3.2 ショートカットを使用した正規表現リダクション・ポリシーの例

- 5.8.4 カスタム正規表現リダクション・ポリシーの作成

- 5.8.4.1 カスタム正規表現の設定

- 5.8.4.2 カスタム正規表現リダクション・ポリシーの例

- 5.9 ランダム・リダクション・ポリシーの作成

- 5.9.1 ランダム・リダクション・ポリシーの作成について

- 5.9.2 ランダム・リダクション・ポリシーを作成する構文

- 5.9.3 ランダム・リダクション・ポリシーの例

- 5.10 リダクションを使用しないポリシーの作成

- 5.10.1 リダクションを使用しないポリシーの作成について

- 5.10.2 リダクションを使用しないポリシーを作成する構文

- 5.10.3 リダクションを実行しない例

- 5.11 Oracle Data Redactionポリシーからのユーザーの除外

- 5.12 Oracle Data Redactionポリシーの変更

- 5.12.1 Oracle Data Redactionポリシーの変更について

- 5.12.2 DBMS_REDACT.ALTER_POLICYプロシージャの構文

- 5.12.3 様々なDBMS_REDACT.ALTER_POLICY操作に必要なパラメータ

- 5.12.4 Oracle Data Redactionポリシーの変更例

- 5.13 複数列のリダクション

- 5.14 Oracle Data Redactionポリシーの有効化と無効化

- 5.14.1 Oracle Data Redactionポリシーの無効化

- 5.14.2 Oracle Data Redactionポリシーの有効化

- 5.15 Oracle Data Redactionポリシーの削除

- 5.16 例: Oracle Data Redactionが表およびビューに与える影響

- 5.17 例: SQL式を使用したリダクションされた値を含むレポートの作成

- 5.18 Oracle Data Redactionポリシーに関する情報の検索

6 Oracle Data RedactionとOracle Database機能の併用

- 6.1 Oracle Data Redactionと、DMLおよびDDL操作

- 6.2 ネストした関数、インライン・ビューおよびWHERE句でのOracle Data Redaction

- 6.3 Oracle Data Redactionおよび集計関数

- 6.4 Oracle Data Redactionおよびオブジェクト型

- 6.5 Oracle Data Redactionおよびエディション

- 6.6 Oracle Data RedactionとOracle Virtual Private Database

- 6.7 Oracle Data RedactionとOracle Database Vault

- 6.8 Oracle Data RedactionとEXPDPユーティリティのaccess_methodパラメータ

- 6.9 Oracle Data RedactionとData Masking and Subsetting Pack

7 Oracle Data Redactionのセキュリティ・ガイドライン

- 7.1 一般的な使用上のガイドライン

- 7.2 Oracle Data Redactionポリシーへの管理アクセスの制限

- 7.3 Oracle Data RedactionがSYS、SYSTEMおよびデフォルト・スキーマに与える影響

- 7.4 SYS_CONTEXT属性に依存するポリシー式の記述

- 7.5 マテリアライズド・ビューに対するポリシーの作成

- 7.6 ごみ箱が有効になっている場合のポリシーの削除

第III部 データ暗号化および整合性

8 透過的データ暗号化を使用した格納済データの保護

- 8.1 透過的データ暗号化について

- 8.1.1 透過的データ暗号化を使用する利点

- 8.1.2 透過的データ暗号化のタイプ

- 8.1.2.1 TDE列暗号化

- 8.1.2.2 TDE表領域暗号化

- 8.2 透過的データ暗号化の使用

- 8.2.1 透過的データ暗号化の有効化

- 8.2.1.1 透過的データ暗号化用のウォレット・ロケーションの指定

- 8.2.1.2 自動ログインが有効なウォレットの使用

- 8.2.2 マスター暗号化鍵の設定および再設定

- 8.2.2.1 マスター暗号化鍵の設定

- 8.2.2.2 マスター暗号化鍵の再設定

- 8.2.3 暗号化ウォレットのオープンおよびクローズ

- 8.2.4 表の列の暗号化

- 8.2.4.1 暗号化列を含む表の作成

- 8.2.4.2 既存の表にある列の暗号化

- 8.2.4.3 暗号化列に対する索引の作成

- 8.2.4.4 暗号化列に対するSaltの追加または削除

- 8.2.4.5 暗号化列を含む表に対する暗号化鍵またはアルゴリズムの変更

- 8.2.4.6 TDE列暗号化で暗号化できるデータ型

- 8.2.4.7 TDE列暗号化の使用に関する制限

- 8.2.5 表領域全体の暗号化

- 8.2.5.1 表領域マスター暗号化鍵の設定

- 8.2.5.2 Oracleウォレットのオープン

- 8.2.5.3 暗号化された表領域の作成

- 8.2.5.4 TDE表領域暗号化の使用に関する制限

- 8.2.6 TDEでのハードウェア・セキュリティ・モジュールの使用

- 8.2.6.1 sqlnet.oraファイルでのENCRYPTION_WALLET_LOCATIONパラメータの設定

- 8.2.6.2 正しいパスへのPKCS#11ライブラリのコピー

- 8.2.6.3 HSMの設定

- 8.2.6.4 HSMベースの暗号化のためのマスター暗号化鍵の生成

- 8.2.6.5 ソフトウェア・ウォレットの再構成(オプション)

- 8.2.6.6 HSMがアクセス可能であることの確認

- 8.2.6.7 データの暗号化と復号化

- 8.2.7 Oracle RACでの透過的データ暗号化の使用

- 8.2.7.1 非共有ファイル・システムを使用したウォレットの格納

- 8.3 透過的データ暗号化の管理

- 8.3.1 Oracleウォレットの管理

- 8.3.1.1 透過的データ暗号化用の別のウォレットの指定

- 8.3.1.2 自動ログイン・ウォレットの使用

- 8.3.1.3 ウォレットの作成

- 8.3.2 マスター暗号化鍵のバックアップおよびリカバリ

- 8.3.2.1 Oracleウォレットのバックアップおよびリカバリ

- 8.3.2.2 PKI鍵ペアのバックアップおよびリカバリ

- 8.3.3 暗号化列を含む表のエクスポートおよびインポート

- 8.3.4 パフォーマンスと記憶域のオーバーヘッド

- 8.3.4.1 パフォーマンスのオーバーヘッド

- 8.3.4.2 記憶域のオーバーヘッド

- 8.3.5 セキュリティに関する考慮事項

- 8.3.6 マルチデータベース環境における透過的データ暗号化の使用

- 8.3.7 分散環境でのレプリケーション

- 8.3.8 暗号化データの圧縮とデータ重複除外

- 8.3.9 OCIを使用した透過的データ暗号化

- 8.3.10 マルチデータベース環境における透過的データ暗号化

- 8.3.11 透過的データ暗号化のデータ・ディクショナリ・ビュー

- 8.4 例: TDE列暗号化とTDE表領域暗号化のスタート・ガイド

- 8.4.1 透過的データ暗号化用データベースの準備

- 8.4.1.1 sqlnet.oraファイルでのOracleウォレット・ロケーションの指定

- 8.4.1.2 マスター暗号化鍵の作成

- 8.4.1.3 Oracleウォレットのオープン

- 8.4.2 暗号化列を含む表の作成

- 8.4.3 暗号化列に対する索引の作成

- 8.4.4 既存の列を暗号化するための表の変更

- 8.4.5 暗号化された表領域の作成

- 8.4.6 暗号化された表領域での表の作成

- 8.5 透過的データ暗号化のトラブルシューティング

- 8.6 透過的データ暗号化の参照情報

- 8.6.1 サポートされる暗号化と整合性のアルゴリズム

- 8.6.2 クイック・リファレンス: 透過的データ暗号化のSQLコマンド

9 Oracleサーバーとクライアントに対するネットワーク・データの暗号化および整合性の構成

- 9.1 Oracle Advanced Securityの暗号化

- 9.1.1 Advanced Encryption Standard

- 9.1.2 Triple-DESのサポート

- 9.2 Oracle Advanced Securityのデータの整合性

- 9.2.1 サポートされるデータの整合性アルゴリズム

- 9.3 Diffie-Hellmanベースの鍵交換

- 9.3.1 認証鍵フォールドイン

- 9.4 データの暗号化および整合性の構成方法

- 9.4.1 暗号化および整合性のアクティブ化について

- 9.4.2 暗号化および整合性のネゴシエーションについて

- 9.4.2.1 REJECTED

- 9.4.2.2 ACCEPTED

- 9.4.2.3 REQUESTED

- 9.4.2.4 REQUIRED

- 9.4.3 Oracle Net Managerを使用した暗号化および整合性パラメータの構成

- 9.4.3.1 クライアントとサーバーでの暗号化の構成

- 9.4.3.2 クライアントとサーバーでの整合性の構成

10 シンJDBCクライアントに対するネットワーク認証、暗号化および整合性の構成

- 10.1 Java実装について

- 10.1.1 Java Database Connectivityのサポート

- 10.1.2 シンJDBCの保護

- 10.1.3 実装の概要

- 10.1.4 不明瞭化

- 10.2 構成パラメータ

- 10.2.1 CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVELパラメータ

- 10.2.2 CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPESパラメータ

- 10.2.3 CONNECTION_PROPERTY_THIN_NET_CHECKSUM_LEVELパラメータ

- 10.2.4 CONNECTION_PROPERTY_THIN_NET_CHECKSUM_TYPESパラメータ

- 10.2.5 CONNECTION_PROPERTY_THIN_NET_AUTHENTICATION_SERVICESパラメータ

- 10.2.6 AnoServices定数

第IV部 Oracle Advanced Securityの厳密認証

11 RADIUS認証の構成

- 11.1 RADIUSについて

- 11.2 RADIUS認証モード

- 11.2.1 同期認証モード

- 11.2.2 チャレンジ・レスポンス(非同期)認証モード

- 11.3 RADIUS認証、認可およびアカウンティングの有効化

- 11.3.1 手順1: Oracleデータベース・サーバーとOracleクライアントでのRADIUSのインストール

- 11.3.2 手順2: RADIUS認証の構成

- 11.3.2.1 手順2A: OracleクライアントでのRADIUSの構成

- 11.3.2.2 手順2B: Oracleデータベース・サーバーでのRADIUSの構成

- 11.3.2.3 手順2C: その他のRADIUS機能の構成

- 11.3.3 手順3: ユーザーの作成とアクセス権の付与

- 11.3.4 手順4: 外部RADIUS認可の構成(オプション)

- 11.3.4.1 手順4A: Oracleサーバー(RADIUSクライアント)の構成

- 11.3.4.2 手順4B: ユーザーがログインするOracleクライアントの構成

- 11.3.4.3 手順4C: RADIUSサーバーの構成

- 11.3.5 手順5: RADIUSアカウンティングの構成

- 11.3.5.1 手順5A: Oracleデータベース・サーバーでのRADIUSアカウンティングの設定

- 11.3.5.2 手順5B: RADIUSアカウンティング・サーバーの構成

- 11.3.6 手順6: RADIUSクライアント名のRADIUSサーバー・データベースへの追加

- 11.3.7 手順7: RADIUSとともに使用する認証サーバーの構成

- 11.3.8 手順8: 認証サーバーとともに使用するRADIUSサーバーの構成

- 11.3.9 手順9: マッピング・ロールの構成

- 11.4 RADIUSを使用したデータベースへのログイン

- 11.5 RSA ACE/Server構成チェックリスト

12 Kerberos認証の構成

- 12.1 Kerberos認証の有効化

- 12.1.1 手順1: Kerberosのインストール

- 12.1.2 手順2: Oracleデータベース・サーバーに対するサービス・プリンシパルの構成

- 12.1.3 手順3: Kerberosからのサービス・キー表の抽出

- 12.1.4 手順4: Oracleデータベース・サーバーとOracleクライアントのインストール

- 12.1.5 手順5: Oracle Net ServicesとOracle Advanced Securityのインストール

- 12.1.6 手順6: Oracle Net ServicesとOracle Databaseの構成

- 12.1.7 手順7: Kerberos認証の構成

- 12.1.7.1 手順7A: クライアントとデータベース・サーバーでのKerberosの構成

- 12.1.7.2 手順7B: 初期化パラメータの設定

- 12.1.7.3 手順7C: sqlnet.oraパラメータの設定(オプション)

- 12.1.8 手順8: Kerberosユーザーの作成

- 12.1.9 手順9: 外部認証されたOracleユーザーの作成

- 12.1.10 手順10: Kerberos/Oracleユーザーの初期チケットの取得

- 12.2 Kerberos認証アダプタのユーティリティ

- 12.2.1 okinitユーティリティを使用した初期チケットの取得

- 12.2.2 oklistユーティリティを使用した資格証明の表示

- 12.2.3 okdstryユーティリティを使用したキャッシュ・ファイルからの資格証明の削除

- 12.2.4 Kerberosによって認証されたOracle Databaseサーバーへの接続

- 12.3 Windows 2000ドメイン・コントローラKDCとの相互運用性の構成

- 12.3.1 手順1: Windows 2000ドメイン・コントローラKDCのためのOracle Kerberosクライアントの構成

- 12.3.1.1 手順1A: クライアントKerberos構成ファイルの作成

- 12.3.1.2 手順2A: sqlnet.oraファイルでのOracle構成パラメータの指定

- 12.3.1.3 手順3A: リスニング・ポート番号の指定

- 12.3.2 手順2: OracleクライアントのためのWindows 2000ドメイン・コントローラKDCの構成

- 12.3.2.1 手順2A: ユーザーの作成

- 12.3.2.2 手順2B: Oracle Databaseプリンシパルの作成

- 12.3.3 手順3: Windows 2000ドメイン・コントローラKDCのためのOracleデータベースの構成

- 12.3.3.1 手順3A: sqlnet.oraファイルでの構成パラメータの設定

- 12.3.3.2 手順3B: 外部認証されたOracleユーザーの作成

- 12.3.4 手順4: Kerberos/Oracleユーザーの初期チケットの取得

- 12.4 Kerberos認証フォールバック動作の構成

- 12.5 Oracle Kerberos認証の構成のトラブルシューティング

13 Secure Sockets Layer認証の構成

- 13.1 Secure Sockets LayerおよびTransport Layer Security

- 13.1.1 Secure Sockets LayerとTransport Layer Securityの違い

- 13.1.2 Oracle DatabaseでのSecure Sockets Layerを使用した認証

- 13.1.3 Oracle環境におけるSecure Sockets Layerの機能: SSLハンドシェイク

- 13.2 Oracle環境における公開鍵インフラストラクチャ

- 13.2.1 Oracle環境における公開鍵インフラストラクチャについて

- 13.2.2 公開鍵の暗号化について

- 13.2.3 Oracle環境における公開鍵インフラストラクチャ・コンポーネント

- 13.2.3.1 認証局

- 13.2.3.2 証明書

- 13.2.3.3 証明書失効リスト

- 13.2.3.4 ウォレット

- 13.2.3.5 ハードウェア・セキュリティ・モジュール

- 13.3 Secure Sockets Layerと他の認証方式の併用

- 13.3.1 アーキテクチャ: Oracle Advanced SecurityとSecure Sockets Layer

- 13.3.2 Secure Sockets Layerと他の認証方式の併用

- 13.4 Secure Sockets Layerとファイアウォール

- 13.5 Secure Sockets Layer使用時の問題

- 13.6 Secure Sockets Layerの有効化

- 13.6.1 手順1: Oracle Advanced Securityと関連製品のインストール

- 13.6.2 手順2: サーバーでのSecure Sockets Layerの構成

- 13.6.2.1 手順2A: サーバーでのウォレット作成の確認

- 13.6.2.2 手順2B: サーバーでのデータベース・ウォレット・ロケーションの指定

- 13.6.2.3 手順2C: サーバーでのSecure Sockets Layer暗号スイートの設定(オプション)

- 13.6.2.4 手順2D: サーバーでの必要なSSLバージョンの設定(オプション)

- 13.6.2.5 手順2E: サーバーでのSSLクライアント認証の設定(オプション)

- 13.6.2.6 手順2F: サーバーでの認証サービスとしてのSSLの設定(オプション)

- 13.6.2.7 手順2G: SSL付きTCP/IPを使用するリスニング・エンドポイントのサーバーでの作成

- 13.6.3 手順3: クライアントでのSecure Sockets Layerの構成

- 13.6.3.1 手順3A: クライアント・ウォレット作成の確認

- 13.6.3.2 手順3B: サーバーDNの構成とクライアントのSSL付きTCP/IPの使用

- 13.6.3.3 手順3C: 必要なクライアントSSL構成の指定(ウォレット・ロケーション)

- 13.6.3.4 手順3D: クライアントのSecure Sockets Layer暗号スイートの設定(オプション)

- 13.6.3.5 手順3E: 必要なSSLバージョンのクライアントでの設定(オプション)

- 13.6.3.6 手順3F: クライアントにおける認証サービスとしてのSSLの設定(オプション)

- 13.6.3.7 手順3G: クライアントでの認証に使用する証明書の指定(オプション)

- 13.6.4 手順4: データベース・インスタンスへのログオン

- 13.7 Secure Sockets Layerのトラブルシューティング

- 13.8 証明書失効リストによる証明書の検証

- 13.8.1 証明書失効リストによる証明書検証について

- 13.8.2 使用するCRLの選択方法

- 13.8.3 CRLチェックの動作の仕組み

- 13.8.4 証明書失効リストによる証明書検証の構成

- 13.8.4.1 証明書失効リストによる証明書検証の構成について

- 13.8.4.2 クライアントまたはサーバーの証明書失効ステータス・チェックの有効化

- 13.8.4.3 証明書失効ステータス・チェックの無効化

- 13.8.5 証明書失効リストの管理

- 13.8.5.1 証明書失効管理について

- 13.8.5.2 CRLを管理するコマンドのorapkiヘルプの表示

- 13.8.5.3 証明書検証用ハッシュ値によるCRLの名前変更

- 13.8.5.4 Oracle Internet DirectoryへのCRLのアップロード

- 13.8.5.5 Oracle Internet Directoryに格納されているCRLの一覧表示

- 13.8.5.6 Oracle Internet DirectoryでのCRLの表示

- 13.8.5.7 Oracle Internet DirectoryからのCRLの削除

- 13.8.6 証明書検証のトラブルシューティング

- 13.8.6.1 証明書検証に関連するOracle Netトレース・ファイルのエラー・メッセージ

- 13.9 ハードウェア・セキュリティ・モジュールを使用するためのシステムの構成

- 13.9.1 ハードウェア・セキュリティ・モジュールを使用するためのシステムの構成について

- 13.9.2 Oracle Advanced Securityでハードウェア・セキュリティ・モジュールを使用するためのガイドライン

- 13.9.3 nCipherハードウェア・セキュリティ・モジュールを使用するためのシステムの構成

- 13.9.3.1 nCipherハードウェア・セキュリティ・モジュールを使用するためのシステムの構成について

- 13.9.3.2 nCipherハードウェア・セキュリティ・モジュールを使用するために必要なOracleコンポーネント

- 13.9.3.3 nCipherハードウェア・セキュリティ・モジュールのインストールについて

- 13.9.4 SafeNETハードウェア・セキュリティ・モジュールを使用するためのシステムの構成

- 13.9.4.1 SafeNetハードウェア・セキュリティ・モジュールを使用するためのシステムの構成について

- 13.9.4.2 SafeNET Luna SAハードウェア・セキュリティ・モジュールのOracleコンポーネント

- 13.9.4.3 SafeNETハードウェア・セキュリティ・モジュールのインストールについて

- 13.9.5 ハードウェア・セキュリティ・モジュールの使用時のトラブルシューティング

- 13.9.5.1 Oracle Netトレース・ファイルのエラー

- 13.9.5.2 ハードウェア・セキュリティ・モジュールの使用に関連するエラー・メッセージ

- 13.10 Oracle Real Application Clusters環境でのSSLの構成

- 13.10.1 手順1: TCPSプロトコル・エンドポイントの構成

- 13.10.2 手順2: 各Oracle RACノードでのローカル・リスナー・パラメータの更新

- 13.10.3 手順3: クラスタおよびクライアントのSSL証明書およびウォレットの作成

- 13.10.3.1 各クラスタ用およびテスト・クライアント用SSL証明書の作成

- 13.10.3.2 各ユーザー証明書の署名

- 13.10.4 手順4: 各クラスタ・ノードへのウォレットのコピーおよび不明瞭化されたウォレットの作成

- 13.10.5 手順5: listener.oraおよびsqlnet.oraファイルへのウォレット・ロケーションの定義

- 13.10.6 手順6: データベース・インスタンスおよびリスナーの再起動

- 13.10.7 手順7: クラスタ・ノードからの構成のテスト

- 13.10.8 手順8: リモート・クライアントからの構成のテスト

14 Oracle Wallet Managerの使用方法

- 14.1 Oracle Wallet Managerの概要

- 14.1.1 ウォレット・パスワード管理

- 14.1.2 強力なウォレット暗号化

- 14.1.3 Microsoft Windowsレジストリ・ウォレット・ストレージ

- 14.1.3.1 サポートされているオプション

- 14.1.4 下位互換性

- 14.1.5 公開鍵暗号規格(PKCS)サポート

- 14.1.6 複数証明書サポート

- 14.1.7 LDAPディレクトリのサポート

- 14.2 Oracle Wallet Managerの起動

- 14.3 完全なウォレットの作成方法: プロセス概要

- 14.4 ウォレットの管理

- 14.4.1 ウォレット・パスワードの作成に関する必須ガイドライン

- 14.4.2 ウォレットの新規作成

- 14.4.2.1 標準ウォレットの作成

- 14.4.2.2 ハードウェア・セキュリティ・モジュール資格証明を格納するためのウォレットの作成

- 14.4.3 既存のウォレットのオープン

- 14.4.4 ウォレットのクローズ

- 14.4.5 サード・パーティ環境へのOracleウォレットのエクスポート

- 14.4.6 PKCS #12をサポートしないツールへのOracleウォレットのエクスポート

- 14.4.7 LDAPディレクトリへのウォレットのアップロード

- 14.4.8 LDAPディレクトリからのウォレットのダウンロード

- 14.4.9 変更の保存

- 14.4.10 開いているウォレットの新しい場所への保存

- 14.4.11 システム・デフォルトへの保存

- 14.4.12 ウォレットの削除

- 14.4.13 パスワードの変更

- 14.4.14 自動ログインの使用

- 14.4.14.1 自動ログインの有効化

- 14.4.14.2 自動ログインの無効化

- 14.5 証明書の管理

- 14.5.1 ユーザー証明書の管理

- 14.5.1.1 証明書リクエストの追加

- 14.5.1.2 ウォレットへのユーザー証明書のインポート

- 14.5.1.3 サード・パーティによって作成された証明書およびウォレットのインポート

- 14.5.1.4 ウォレットからのユーザー証明書の削除

- 14.5.1.5 証明書リクエストの削除

- 14.5.1.6 ユーザー証明書のエクスポート

- 14.5.1.7 ユーザー証明書リクエストのエクスポート

- 14.5.2 信頼できる証明書の管理

- 14.5.2.1 信頼できる証明書のインポート

- 14.5.2.2 信頼できる証明書の削除

- 14.5.2.3 信頼できる証明書のエクスポート

- 14.5.2.4 すべての信頼できる証明書のエクスポート

15 複数の認証方式の構成およびOracle Advanced Securityの無効化

- 15.1 ユーザー名とパスワードによる接続

- 15.2 Oracle Advanced Security認証の無効化

- 15.3 複数の認証方式の構成

- 15.4 外部認証のためのOracle Databaseの構成

- 15.4.1 sqlnet.oraでのSQLNET.AUTHENTICATION_SERVICESパラメータの設定

- 15.4.2 OS_AUTHENT_PREFIXのNull値への設定

第V部 付録

A データ暗号化および整合性パラメータ

- A.1 サンプルsqlnet.oraファイル

- A.2 データ暗号化および整合性パラメータ

- A.2.1 SQLNET.ENCRYPTION_SERVERパラメータ

- A.2.2 SQLNET.ENCRYPTION_CLIENTパラメータ

- A.2.3 SQLNET.SSL_EXTENDED_KEY_USAGEパラメータ

- A.2.4 SQLNET.CRYPTO_CHECKSUM_SERVERパラメータ

- A.2.5 SQLNET.CRYPTO_CHECKSUM_CLIENTパラメータ

- A.2.6 SQLNET.ENCRYPTION_TYPES_SERVERパラメータ

- A.2.7 SQLNET.ENCRYPTION_TYPES_CLIENTパラメータ

- A.2.8 SQLNET.CRYPTO_CHECKSUM_TYPES_SERVERパラメータ

- A.2.9 SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENTパラメータ

B 認証パラメータ

- B.1 Kerberos認証を使用するクライアントとサーバーのパラメータ

- B.2 RADIUS認証を使用するクライアントとサーバーのパラメータ

- B.2.1 sqlnet.oraファイルのパラメータ

- B.2.1.1 SQLNET.AUTHENTICATION_SERVICESパラメータ

- B.2.1.2 SQLNET.RADIUS_AUTHENTICATIONパラメータ

- B.2.1.3 SQLNET.RADIUS_AUTHENTICATION_PORTパラメータ

- B.2.1.4 SQLNET.RADIUS_AUTHENTICATION_TIMEOUTパラメータ

- B.2.1.5 SQLNET.RADIUS_AUTHENTICATION_RETRIESパラメータ

- B.2.1.6 SQLNET.RADIUS_SEND_ACCOUNTINGパラメータ

- B.2.1.7 SQLNET.RADIUS_SECRETパラメータ

- B.2.1.8 SQLNET.RADIUS_ALTERNATEパラメータ

- B.2.1.9 SQLNET.RADIUS_ALTERNATE_PORTパラメータ

- B.2.1.10 SQLNET.RADIUS_ALTERNATE_TIMEOUTパラメータ

- B.2.1.11 SQLNET.RADIUS_ALTERNATE_RETRIESパラメータ

- B.2.1.12 SQLNET.RADIUS_CHALLENGE_RESPONSEパラメータ

- B.2.1.13 SQLNET.RADIUS_CHALLENGE_KEYWORDパラメータ

- B.2.1.14 SQLNET.RADIUS_AUTHENTICATION_INTERFACEパラメータ

- B.2.1.15 SQLNET.RADIUS_CLASSPATHパラメータ

- B.2.2 最小限のRADIUSパラメータ

- B.2.3 初期化ファイル・パラメータ

- B.3 Secure Sockets Layerを使用するクライアントとサーバーのパラメータ

- B.3.1 Secure Sockets Layer認証パラメータ

- B.3.2 暗号スイート・パラメータ

- B.3.2.1 サポートされているSSL暗号スイート

- B.3.3 Secure Sockets Layerバージョン・パラメータ

- B.3.4 Secure Sockets Layerクライアント認証パラメータ

- B.3.4.1 SSL X.509サーバー照合パラメータ

- B.3.5 ウォレット・ロケーション

C RADIUSを使用した認証デバイスの統合

- C.1 RADIUSチャレンジ・レスポンス・ユーザー・インタフェースについて

- C.2 RADIUSチャレンジ・レスポンス・ユーザー・インタフェースのカスタマイズ

D Oracle Advanced Security FIPS 140の設定

- D.1 FIPS 140の設定について

- D.2 FIPS 140-2用のOracle Databaseの構成

- D.2.1 FIPS 140-2の設定について

- D.2.2 SSLFIPS_140パラメータの構成

- D.2.3 暗号スイートの選択

- D.2.4 インストール後のチェック

- D.2.5 FIPS接続の検証

- D.3 FIPS 140-1用のOracle Databaseの構成

- D.3.1 FIPS 140-1の設定について

- D.3.2 sqlnet.oraのFIPS 140-1構成パラメータ

- D.3.2.1 サーバー暗号化レベルの設定

- D.3.2.2 クライアント暗号化レベルの設定

- D.3.2.3 サーバー暗号化選択リスト

- D.3.2.4 クライアント暗号化選択リスト

- D.3.2.5 FIPSパラメータ

- D.3.3 インストール後のチェック

- D.3.4 ステータス情報

- D.3.5 物理的なセキュリティ

E orapkiユーティリティ

- E.1 orapkiユーティリティの概要

- E.1.1 orapkiユーティリティの構文

- E.2 テスト用の署名付き証明書の作成

- E.3 orapkiユーティリティを使用したOracleウォレットの管理

- E.3.1 orapkiを使用したウォレットの作成、表示および変更

- E.3.1.1 PKCS#12ウォレットの作成

- E.3.1.2 自動ログイン・ウォレットの作成

- E.3.1.3 ウォレットの表示

- E.3.1.4 ウォレットのパスワードの変更

- E.3.2 orapkiを使用した証明書と証明書リクエストのOracleウォレットへの追加

- E.3.3 orapkiを使用した証明書と証明書リクエストのOracleウォレットからのエクスポート

- E.4 orapkiユーティリティを使用した証明書失効リスト(CRL)の管理

- E.5 orapkiの使用例

- E.6 orapkiユーティリティ・コマンドのサマリー

- E.6.1 orapki cert create

- E.6.1.1 用途

- E.6.1.2 構文

- E.6.2 orapki cert display

- E.6.2.1 用途

- E.6.2.2 構文

- E.6.3 orapki crl delete

- E.6.3.1 用途

- E.6.3.2 前提条件

- E.6.3.3 構文

- E.6.4 orapki crl display

- E.6.4.1 用途

- E.6.4.2 構文

- E.6.5 orapki crl hash

- E.6.5.1 用途

- E.6.5.2 構文

- E.6.6 orapki crl list

- E.6.6.1 用途

- E.6.6.2 構文

- E.6.7 orapki crl upload

- E.6.7.1 用途

- E.6.7.2 構文

- E.6.8 orapki wallet add

- E.6.8.1 用途

- E.6.8.2 構文

- E.6.9 orapki wallet create

- E.6.9.1 用途

- E.6.9.2 構文

- E.6.10 orapki wallet display

- E.6.10.1 用途

- E.6.10.2 構文

- E.6.11 orapki wallet export

- E.6.11.1 用途

- E.6.11.2 構文

F Entrust対応のSecure Sockets Layer認証

- F.1 Entrust対応のOracle Advanced Securityの利点

- F.1.1 拡張X.509ベースの認証とシングル・サインオン

- F.1.2 Entrust Authorityの鍵管理との統合

- F.1.3 Entrust Authorityの証明書失効との統合

- F.2 Entrust対応のOracle Advanced Securityに必要なシステム・コンポーネント

- F.2.1 Entrust Authority for Oracle

- F.2.1.1 Entrust Authority Security Manager

- F.2.1.2 Entrust Authority Self-Administration Server

- F.2.1.3 Entrust Entelligence Desktop Manager

- F.2.2 Entrust Authority Server Login Feature

- F.2.3 Entrust Authority IPSec Negotiator Toolkit

- F.3 Entrust認証プロセス

- F.4 Entrust認証の有効化

- F.4.1 Entrustプロファイルの作成

- F.4.1.1 管理者によるEntrustプロファイルの作成

- F.4.1.2 ユーザーによるEntrustプロファイルの作成

- F.4.2 Oracle Advanced SecurityおよびEntrust対応のSSL関連製品のインストール

- F.4.3 Entrust対応のSSLのためのクライアントおよびサーバーにおけるSSLの構成

- F.4.4 クライアントにおけるEntrustの構成

- F.4.4.1 UNIXクライアントにおけるEntrustの構成

- F.4.4.2 WindowsクライアントにおけるEntrustの構成

- F.4.5 サーバーにおけるEntrustの構成

- F.4.5.1 UNIXサーバーにおけるEntrustの構成

- F.4.5.2 WindowsサーバーにおけるEntrustの構成

- F.4.6 Entrust対応データベース・ユーザーの作成

- F.4.7 Entrust対応のSSLを使用したデータベースへのログイン

- F.5 Entrust対応のSSLに適用される問題および制限事項

- F.6 Oracle Advanced SecurityにおけるEntrustのトラブルシューティング

- F.6.1 プラットフォームに関係なくEntrust実行時に戻されるエラー・メッセージ

- F.6.2 WindowsプラットフォームでのEntrust実行時に戻されるエラー・メッセージ

- F.6.3 Entrustを実行するための一般的なチェックリスト(すべてのプラットフォームに共通)

- F.6.3.1 WindowsでのEntrustインストールのチェックリスト

用語集

索引

例一覧

- 5-1 セッション・ユーザー名によるユーザーのフィルタリング

- 5-2 データベース・ロールに基づくデータ・リダクション・ポリシーの適用

- 5-3 Oracle Application Expressセッション・ステートによるユーザーのフィルタリング

- 5-4 フィルタリングなしでのリダクション・ポリシーの適用

- 5-5 完全データ・リダクション・ポリシー

- 5-6 完全にリダクションされたデータ・リダクションの文字値

- 5-7 部分的にリダクションされた文字値

- 5-8 部分的にリダクションされたデータ・リダクションの文字値

- 5-9 部分的にリダクションされたデータ・リダクションの数値

- 5-10 日時値を使用した部分的にリダクションされたデータ・リダクション

- 5-11 正規表現データ・リダクション文字値

- 5-12 正規表現を使用した部分的にリダクションされたデータ・リダクション

- 5-13 ランダムにリダクションされたデータ・リダクションの値

- 5-14 リダクションされないデータ・リダクション値

- 5-15 データ・リダクション・ポリシーへの列の追加

- 5-16 データ・リダクション・ポリシーの無効化

- 5-17 データ・リダクション・ポリシーの有効化

- 5-18 データ・リダクション・ポリシーの削除

- 8-1 PKIベースの秘密鍵を使用するためのマスター暗号化鍵の設定または再設定

- 8-2 ALTER SYSTEMを使用した外部セキュリティ・モジュール・ウォレットのオープン

- 8-3 デフォルト・アルゴリズム(AES192)を使用する暗号化列を含む新しい表の作成

- 8-4 3DES168およびNO SALTを使用する暗号化列を含む新しい表の作成

- 8-5 CREATE TABLE文でのNOMACパラメータの使用

- 8-6 表の整合性アルゴリズムの変更

- 8-7 パスワード生成表キーを使用した新しい外部表の作成

- 8-8 既存の表への暗号化列の追加

- 8-9 暗号化されていない列の暗号化

- 8-10 ALTER TABLE文でのNOMACパラメータの使用

- 8-11 列の暗号化の無効化

- 8-12 Saltなしで暗号化された列に対する索引の作成

- 8-13 暗号化列へのSaltの追加

- 8-14 暗号化列からのSaltの削除

- 8-15 暗号化列を含む表での暗号化鍵の変更

- 8-16 暗号化列を含む表での暗号化鍵およびアルゴリズムの変更

- 8-17 暗号化された表領域の作成

- 8-18 暗号化された表領域の作成

- 10-1 JDBCクライアント・コード内でのAnoServices定数の使用

- 13-1 サーバー証明書のDNとSSL付きTCP/IPを指定するサンプルのtnsnames.oraファイル

- 13-2 プロトコルとしてSSL付きTCP/IPを指定するサンプルのlistener.oraファイル

- E-1 自己署名証明書を含むウォレットの作成と証明書のエクスポート

- E-2 ウォレットおよびユーザー証明書の作成

図一覧

- 1-1 暗号化

- 1-2 Oracle認証アダプタによる厳密認証

- 1-3 ネットワーク認証サービスでのユーザーの認証方式

- 1-4 Oracleネットワーク環境におけるOracle Advanced Security

- 1-5 認証アダプタを使用したOracle Net Services

- 2-1 Oracle Net ManagerのOracle Advanced Securityプロファイル

- 2-2 Oracle Wallet Managerユーザー・インタフェース

- 2-3 Oracle Wallet Managerの右側のペインに表示される証明書リクエスト情報

- 5-1 Oracle Data Redactionポリシーのビュー・チェーンでの動作内容

- 8-1 TDE列暗号化の概要

- 8-2 TDE表領域暗号化

- 11-1 Oracle環境でのRADIUS

- 11-2 同期認証の順序

- 11-3 非同期認証の順序

- 13-1 SSLと他の認証方式との関係

- 15-1 Oracle Advanced Securityの「認証」ウィンドウ

- F-1 Entrust認証プロセス

表一覧

- 1-1 認証方式とシステム要件

- 2-1 Oracle Wallet Managerのナビゲータ・ペインのオブジェクト

- 2-2 Oracle Wallet Managerのツールバー・ボタン

- 2-3 Oracle Wallet Managerの「ウォレット」メニュー・オプション

- 2-4 Oracle Wallet Managerの「操作」メニュー・オプション

- 2-5 Oracle Wallet Managerの「ヘルプ」メニュー・オプション

- 2-6 セキュリティ管理者/DBAの一般的な構成および管理タスク

- 4-1 Oracle組込みデータ型のリダクション機能

- 4-2 ANSIデータ型のリダクション機能

- 4-3 ユーザー定義データ型またはOracle指定データ型のリダクション機能

- 5-1 DBMS_REDACTプロシージャ

- 5-2 部分固定文字リダクションのショートカット

- 5-3 regexp_patternパラメータのショートカット

- 5-4 regexp_replace_stringパラメータのショートカット

- 5-5 様々なDBMS_REDACT.ALTER_POLICYの操作に必要なパラメータ

- 5-6 データ・リダクション・ビュー

- 8-1 各データ型の最大許容サイズ

- 8-2 ALL_ENCRYPTED_COLUMNSデータ・ディクショナリ・ビューの説明

- 8-3 V$ENCRYPTED_TABLESPACESビューの説明

- 8-4 V$WALLETビューの説明

- 8-5 V$ENCRYPTION_WALLETビューの説明

- 8-6 透過的データ暗号化でサポートされる暗号化アルゴリズム

- 8-7 透過的データ暗号化のSQLコマンドのクイック・リファレンス

- 9-1 攻撃の2つの形態

- 9-2 暗号化とデータ整合性のネゴシエーション

- 9-3 有効な暗号化アルゴリズム

- 10-1 CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVELの属性

- 10-2 CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPESの属性

- 10-3 CONNECTION_PROPERTY_THIN_NET_CHECKSUM_LEVELの属性

- 10-4 CONNECTION_PROPERTY_THIN_NET_CHECKSUM_TYPESの属性

- 10-5 CONNECTION_PROPERTY_THIN_NET_AUTHENTICATION_SERVICESの属性

- 11-1 RADIUS認証の構成要素

- 12-1 okinitユーティリティのオプション

- 12-2 oklistユーティリティのオプション

- 13-1 SSL暗号スイート

- 14-1 KeyUsageの値

- 14-2 Oracle Wallet ManagerによるOracleウォレットへのユーザー証明書のインポート

- 14-3 Oracle Wallet ManagerによるOracleウォレットへの信頼できる証明書のインポート

- 14-4 PKIウォレットのエンコーディング規格

- 14-5 証明書のタイプ

- 14-6 証明書リクエスト: フィールドと説明

- 14-7 使用可能な鍵サイズ

- A-1 アルゴリズムのタイプの選択

- A-2 SQLNET.ENCRYPTION_SERVERパラメータの属性

- A-3 SQLNET.ENCRYPTION_CLIENTパラメータの属性

- A-4 SQLNET.EXTENDED_KEY_USAGEパラメータの属性

- A-5 SQLNET.CRYPTO_CHECKSUM_SERVERパラメータの属性

- A-6 SQLNET.CRYPTO_CHECKSUM_CLIENTパラメータの属性

- A-7 SQLNET.ENCRYPTION_TYPES_SERVERパラメータの属性

- A-8 SQLNET.ENCRYPTION_TYPES_CLIENTパラメータの属性

- A-9 SQLNET.CRYPTO_CHECKSUM_TYPES_SERVERパラメータの属性

- A-10 SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENTパラメータの属性

- B-1 Kerberos認証パラメータ

- B-2 SQLNET.AUTHENTICATION_SERVICESパラメータの属性

- B-3 SQLNET.RADIUS_AUTHENTICATIONパラメータの属性

- B-4 SQLNET.RADIUS_AUTHENTICATION_PORTパラメータの属性

- B-5 SQLNET.RADIUS_AUTHENTICATION_TIMEOUTパラメータの属性

- B-6 SQLNET.RADIUS_AUTHENTICATION_RETRIESパラメータの属性

- B-7 SQLNET.RADIUS_SEND_ACCOUNTINGパラメータの属性

- B-8 SQLNET.RADIUS_SECRETパラメータの属性

- B-9 SQLNET.RADIUS_ALTERNATEパラメータの属性

- B-10 SQLNET.RADIUS_ALTERNATE_PORTパラメータの属性

- B-11 SQLNET.RADIUS_ALTERNATE_TIMEOUTパラメータの属性

- B-12 SQLNET.RADIUS_ALTERNATE_RETRIESパラメータの属性

- B-13 SQLNET.RADIUS_CHALLENGE_RESPONSEパラメータの属性

- B-14 SQLNET.RADIUS_CHALLENGE_KEYWORDパラメータの属性

- B-15 SQLNET.RADIUS_AUTHENTICATION_INTERFACEパラメータの属性

- B-16 SQLNET.RADIUS_CLASSPATHパラメータの属性

- B-17 ウォレット・ロケーション・パラメータ

- C-1 サーバー暗号化レベルの設定

- D-1 v$session_connect_infoからの出力例

はじめに

このマニュアルは、Oracle Advanced Securityの11gリリース2 (11.2)の『Oracle Database Advanced Security管理者ガイド』です。

Oracle Advanced Securityには、企業のネットワークを保護して、インターネットに安全に拡張するための一連の包括的なセキュリティ機能が組み込まれています。複数のネットワークの暗号化と認証のソリューション、シングル・サインオン・サービスおよびセキュリティ・プロトコルを統合する単一ソースを提供します。

『Oracle Database Advanced Security管理者ガイド』では、Oracle Advanced Securityを実装、構成および管理する方法について説明します。

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

- 対象読者

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

- 関連ドキュメント

- 表記規則

対象読者

『Oracle Database Advanced Security管理者ガイド』は、Oracle Advanced Securityの実装、構成および管理に携わる次のようなユーザーとシステム担当者を対象としています。

- 実装の専門家

- システム管理者

- セキュリティ管理者

- データベース管理者(DBA)

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

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

Oracle Supportへのアクセス

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

関連ドキュメント

詳細は、次のOracleマニュアルを参照してください。

- 『Oracle Database Net Services管理者ガイド』

- 『Oracle Database Heterogeneous Connectivityユーザーズ・ガイド』

- 『Oracle Database JDBC開発者ガイドおよびリファレンス』

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

- 『Oracle Database管理者ガイド』

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

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

リリース・ノート、インストール関連ドキュメント、ホワイト・ペーパーまたはその他の関連ドキュメントは、OTN(Oracle Technology Network)から、無償でダウンロードできます。OTNを使用するには、オンラインでの登録が必要です。登録は、次の場所から無償で行えます。

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

すでにOTNのユーザー名およびパスワードを取得している場合は、次の場所でOTN Webサイトのドキュメントのセクションに直接接続できます。

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

サード・パーティ・ベンダーからの情報は、次の資料を参照してください。

- Security Dynamics社の『ACE/Server Administration Manual』

- Security Dynamics社の『ACE/Server Client for UNIX』

- Security Dynamics社の『ACE/Server Installation Manual』

- 『RADIUS Administrator's Guide』

- Kerberosバージョン5ソース配布からのKerberosの構築とインストールに関する資料

- 『Entrust/PKI for Oracle』

- 『Administering Entrust/PKI on UNIX』

- 『Application Environment Specification/Distributed Computing』

Oracle Advanced Securityによってサポートされているネットワーク・セキュリティ技術の概念の詳細は、次のサード・パーティの出版物を参照してください。

- 『Applied Cryptography, Second Edition: Protocols, Algorithms, and Source Code in C』Bruce Schneier著。New York: John Wiley & Sons, 1996

- 『SSL & TLS Essentials: Securing the Web』Stephen A.Thomas著。New York: John Wiley & Sons, 2000

- 『Understanding and Deploying LDAP Directory Services』Timothy A.Howes、Ph.D.、Mark C.Smith、Gordon S.Good共著。Indianapolis: New Riders Publishing, 1999

- 『Understanding Public-Key Infrastructure: Concepts, Standards, and Deployment Considerations』Carlisle Adams、Steve Lloyd共著。Indianapolis: New Riders Publishing, 1999

表記規則

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

規則

意味

太字

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

イタリック体

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

固定幅フォント

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

Oracle Advanced Securityの新機能

この項では、Oracle Advanced Security 11g リリース2 (11.2)の新機能について説明し、追加情報の参照先を示します。

- Oracle Database 11gリリース2 (11.2.0.4)におけるOracle Advanced Securityの新機能

- Oracle Database 11gリリース2 (11.2.0.3)におけるOracle Advanced Securityの新機能

- Oracle Database 11gリリース2 (11.2)におけるOracle Advanced Securityの新機能

- Oracle Database 11gリリース1 (11.1)におけるOracle Advanced Securityの新機能

Oracle Database 11g リリース2 (11.2.0.4)におけるOracle Advanced Securityの新機能

このリリースには、次の新機能があります。

- データをマスクするためのOracle Data Redaction

- Secure Sockets Layer証明書のフィルタ処理

データをマスクするためのOracle Data Redaction

このリリースには、権限の低いユーザーやアプリケーションからデータを偽装(マスク)することができるOracle Data Redactionが含まれています。たとえば、次のクレジット・カード番号があると仮定します。

- 5105 1051 0510 5100

- 5111 1111 1111 1118

- 5454 5454 5454 5454

データ・リダクションを使用して、末尾4桁を次のように偽装できます。

- 5105 1051 0510 ****

- 5111 1111 1111 ****

- 5454 5454 5454 ****

データは起動時にリダクションされます、つまり、データは、ユーザーがデータを含むページにアクセスするときは非表示になりますが、データベースからは参照できています。これにより、機密データを通常どおりに処理することができ、バックエンドでの参照整合性やデータ制約は維持されます。部分的にデータをリダクションすることもでき、これにより、オリジナル・データの一部は、それ全体を固定値で置換するか、暗号化された値を持つデータで置換することで保持されます(クレジット・カード番号の末尾4桁など)。また、Oracle Data Redactionポリシーを簡単にエンタープライズのデータベースに適用できます。

詳細は、第I部「Oracle Data Redaction」を参照してください。

Secure Sockets Layer証明書のフィルタ処理

このリリース以降、sqlnet.oraファイルのSQLNET.SSL_EXTENDED_KEY_USAGEパラメータを使用して、クライアントの認証に自動的に使用されるSecure Sockets Layer証明書を選択できます。たとえば、スマートカードに複数の証明書があるが、証明書の1つのみにclient authenticationの拡張鍵使用方法フィールドがあるとします。アプリケーションでは、証明書選択ダイアログ・ボックスが表示され、認証の種類を選択するように要求されます。認証の種類は常にクライアント用であるため、SQLNET.SSL_EXTENDED_KEY_USAGEパラメータにより、このダイアログ・ボックスをバイパスし、自動的にクライアント認証を選択できます。その結果、タスクで実行する手順が減り、ユーザーの仕事は、より簡単でより効率的になります。

詳細は、「手順3G: クライアントでの認証に使用する証明書の指定(オプション)」を参照してください。

Oracle Database 11gリリース2 (11.2.0.3)におけるOracle Advanced Securityの新機能

このリリースには、次の新機能があります。

- SHA-2証明書署名のサポート

- スマートカードでのPINおよび複数証明書のサポート

- Solaris用TDEハードウェア・アクセラレーション

SHA-2証明書署名のサポート

この機能では、データベースでネットワーク暗号化および認証に使用されるSHA-2 (256ビット)署名付き証明書のサポートが導入されます。

これらの証明書は別の認証局(CA)で発行され、安全なデータベース接続が確立されている場合に、データベースとクライアントの間で交換されます。

スマートカードでのPINおよび複数証明書のサポート

この機能では、複数の証明書を含むCommon Access Cards (CAC、HSPD-12)を使用した、データベースに対する認証のサポートが導入されます。

1つ以上のデジタル証明書が記録されているカードをデータベース・ユーザーが挿入すると、データベースは読み取る証明書をインテリジェントに選択しようとします。データベースが読み取る証明書を判別できない場合、Windowsクライアントでは選択ボックスが表示されます。ユーザーは、正しいPINを手動で入力することも必要です。

Solaris用TDEハードウェア・アクセラレーション

透過的データ暗号化(TDE)では、暗号化および復号化処理を高速化する専用の暗号シリコンを搭載したデータベース・ホスト・マシンを自動的に検出します。検出すると、TDEは専用のシリコンを使用して暗号処理を実行し、暗号パフォーマンス全体を高速化します。

以前のリリースでは、TDEの暗号ハードウェア・アクセラレーションはIntel Xeonでしか使用できず、Linuxにしか対応していませんでした。リリース11.2.0.3以降では、SPARC TシリーズおよびIntel Xeonの両方で実行される現行バージョンのSolaris 11でも使用できます。

Oracle Database 11g リリース2 (11.2)におけるOracle Advanced Securityの新機能

このリリースには、次の新機能があります。

- TDE表領域暗号化の拡張

- TDEによるIntel Advanced Encryption Standard New Instructions (Intel AES-NI)のサポート

- Internet Protocol Version 6(IPv6)のサポート

- Kerberosの機能強化

TDE表領域暗号化の拡張

Oracle Database 11g リリース2 (11.2)では、TDE表領域暗号化に次の拡張が実装されています。

- 透過的データ暗号化(TDE)列暗号化とTDE表領域暗号化の両方で、統合マスター暗号化鍵が使用されます。

- オプションとして、統合マスター暗号化鍵は、ハードウェア・セキュリティ・モジュールに格納することもできます。これにより、TDE表領域暗号化機能をハードウェア・セキュリティ・モジュールと組み合せて使用できるようになります。

- 統合マスター暗号化鍵はリセット(rekey)できます。これによってセキュリティが強化され、セキュリティ要件やコンプライアンス要件への対応が促進されます。

関連項目:
「表領域全体の暗号化」

TDEによるIntel Advanced Encryption Standard New Instructions (Intel AES-NI)のサポート

透過的データ暗号化(TDE)でIntel AES-NIがサポートされるようになりました。Intel AES-NIを使用するIntel Xeon 5600シリーズ・プロセッサベースのサーバーで実行されるOracle Database 11g リリース2 (11.2)では、TDE暗号化および復号化速度の大幅な向上が示されます。

ベンチマーク結果によると、TDEでは、AES-NIを利用するIntel Xeon X5680プロセッサで、256ビット鍵を使用した場合、AES-NIを利用しないIntel Xeon X5560プロセッサと比較して、AES暗号化処理速度が10倍高速化し、復号化処理速度が8倍高速化することが示されています。

Internet Protocol Version 6(IPv6)のサポート

Oracle Advanced Securityは、Internet Protocol Version 6 (IPv6)ネットワークを完全にサポートします。

Kerberosの機能強化

Oracle Kerberos認証メカニズムでは、Microsoft Windows Server 2003の制約付き委任機能がサポートされるようになりました。中間層はKerberosアダプタを使用して、ユーザーの転送されたKerberos資格証明を提供しなくても、Oracle Databaseに対する認証を行うことができます。

ユーザーは、Kerberos以外の認証メカニズムを使用して中間層に対する認証を行うことができます。中間層は、ユーザーのかわりにKerberos認証メカニズムを使用してバックエンドOracle Databaseに対する認証を行うことができます。

関連項目:
Microsoft Windows Server 2003の制約付き委任機能の詳細は、Microsoft社のドキュメントを参照してください。

Oracle Database 11g リリース1 (11.1)におけるOracle Advanced Securityの新機能

このリリースには、次の新機能があります。

- 透過的データ暗号化の拡張

- Kerberos認証の安全性と管理性の向上

透過的データ暗号化の拡張

透過的データ暗号化を使用すると、暗号化鍵を管理することなく列内のデータを暗号化できます。企業はアプリケーションを変更することなく、データベース内の機密データを保護できます。

Oracle Advanced Securityでは、AESや3DESなどの業界標準暗号化アルゴリズムを使用して、暗号化対象としてマークされた列を暗号化します。鍵管理はデータベースによって処理されます。鍵管理に対するSQLインタフェースによって暗号化の複雑さが隠されます。

表領域暗号化を使用して表領域全体を暗号化できるようになりました。暗号化されている表領域に作成されたオブジェクトはすべて自動的に暗号化されます。詳細は、「TDE表領域暗号化」を参照してください。

透過的データ暗号化では、ハードウェア・セキュリティ・モジュール(HSM)を使用してマスター暗号化鍵を格納できるようになりました。これにより、セキュリティが強化されました。詳細は、「TDEでのハードウェア・セキュリティ・モジュールの使用」を参照してください。

関連項目:
サポートされている暗号化アルゴリズムの詳細は、「サポートされる暗号化アルゴリズム」を参照してください。
透過的データ暗号化の実装および使用の詳細は、第8章「透過的データ暗号化を使用した格納済データの保護」を参照してください。

Kerberos認証の安全性と管理性の向上

Kerberosの実装で、DESのかわりに3DESやAESなどの安全な暗号化アルゴリズムが使用されるようになりました。これにより、Kerberos使用の安全性が向上しています。Oracle DatabaseのKerberos認証メカニズムでは、現在次の暗号化タイプがサポートされています。

- DES3-CBC-SHA (DES3アルゴリズム、CBCモード、HMAC-SHA1チェックサム)

- AES128-CTS (128ビット鍵のAESアルゴリズム、CTSモード、HMAC-SHA1チェックサム)

- AES256-CTS (256ビット鍵のAESアルゴリズム、CTSモード、HMAC-SHA1チェックサム)

Kerberos実装は、Microsoft社の製品およびMITのKey Distribution Centersと円滑に相互運用されるように拡張されています。

Kerberosのプリンシパル名に、30を超える文字を使用できるようになりました。データベース・ユーザー名に使用できる文字数によって制限されなくなりました。

関連項目:
第12章「Kerberos認証の構成」

注意:
このリリースでは、多重化および接続プーリングの機能はSSLトランスポートの機能とともに使用できません。JDBCで使用可能な暗号化サポートの詳細は、『Oracle Database JDBC開発者ガイドおよびリファレンス』を参照してください。

第I部

Oracle Advanced Securityスタート・ガイド

ここでは、Oracle Advanced Securityが提供するセキュリティ・ソリューション、機能およびツールについて説明します。

第I部は、次の章で構成されています。

- 第1章「Oracle Advanced Securityの概要」

- 第2章「構成ツールと管理ツールの概要」

1 Oracle Advanced Securityの概要

この章では、Oracle Advanced Securityの概要、対象となるセキュリティ上の問題の要約、およびその機能について説明します。これらの機能は、Oracle Database、Oracle Application Server、Oracle Identity Managementインフラストラクチャなど、Oracle Net Servicesとインタフェースするデータベースおよび関連製品で使用できます。

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

- エンタープライズ環境におけるセキュリティの問題

- Oracle Advanced Securityによるセキュリティ問題の解決

- Oracle Advanced Securityのアーキテクチャ

- システム要件

- Oracle Advanced Securityの制限事項

1.1 エンタープライズ環境におけるセキュリティの問題

効率を高め、コストを削減するために、企業はビジネス・プロセスを自動化する戦略を採用します。そのような戦略の1つに、より多くのビジネスをWeb上で行うことがありますが、それにはコンピュータ処理能力を高める必要があり、ITコストの増加につながります。ITコストの増加に対応して、複数の安価なコンピュータが1つの強力なシステムとして機能するエンタープライズ・グリッド・コンピューティング・アーキテクチャを検討する企業が増えています。このような戦略によって収益は向上しますが、保管中および移動中のデータの保護と、増加し続けるユーザーIDの管理に関連するリスクも発生します。

この項では、今日のエンタープライズ・コンピューティング環境におけるセキュリティの問題について次のトピックで説明します。

- エンタープライズ・グリッド・コンピューティング環境におけるセキュリティ

- イントラネットまたはインターネット環境におけるセキュリティ

- 一般的なセキュリティの脅威

1.1.1 エンタープライズ・グリッド・コンピューティング環境におけるセキュリティ

グリッド・コンピューティングは、数多くのサーバーとストレージを調整して、単一の大規模コンピュータとして動作させるコンピューティング・アーキテクチャです。ビジネス・ニーズの変化に応じて安価な既製のコンポーネントをグリッドに追加できるため、柔軟性、コスト削減およびIT投資保護が実現されます。グリッド・コンピューティング環境には大きな利点がありますが、コンピューティング・リソースが分散され、異機種混合である場合も多いため、固有のセキュリティ要件があります。次の項では、これらの要件について説明します。

分散環境のセキュリティ要件

エンタープライズ・グリッド・コンピューティングは、分散されたビジネス・コンピューティング・リソースをプールし、クラスタ化されたサーバーとストレージの能力を利用してコスト効率を高めます。分散環境では安全なネットワーク接続が必要です。グリッド環境でさらに重要なのは、対象となるユーザーとそのユーザーに許可されることの統一された定義が必要であることです。そのような統一された定義がないと、管理者は、従業員、顧客およびパートナの情報を保護するために、様々なソフトウェア・アプリケーションで各ユーザーに対する認可の割当て、管理および取消しを頻繁に行う必要があります。これには時間を要するため、コストが大幅に増加します。その結果、グリッド・コンピューティングによって得られるコスト削減は実現されません。

異機種環境のセキュリティ要件

グリッド・コンピューティング環境はビジネス・ニーズの変化に応じて拡大する場合が多いため、コンピューティング・リソースが長期にわたって追加され、多様なハードウェアとソフトウェアが集まることになります。このような異機種環境では、業界標準に準拠した様々なタイプの認証メカニズムのサポートが必要です。業界標準に厳密に準拠していないと、異機種コンポーネントの統合にはコストと時間がかかります。繰り返しになりますが、適切なインフラストラクチャが存在しないと、グリッド・コンピューティングの利点は失われます。

1.1.2 イントラネットまたはインターネット環境におけるセキュリティ

Oracleデータベースは、インターネット上の大規模なWebサイトや人気の高いWebサイトの原動力となっています。世界中の組織が、Oracle DatabaseとOracle Net Servicesをベースとする分散データベースおよびクライアント/サーバー・アプリケーションを記録的な数でデプロイしています。分散コンピューティングがこのように急増することで、組織がコンピュータに格納する情報量も増加しています。従業員レコードや財務レコード、顧客からの注文、製品情報およびその他の機密データが、書類整理棚からファイル構造へと移されています。Web上にある機密情報の量の増加により、損なわれる可能性があるデータ価値も増加しました。

1.1.3 一般的なセキュリティの脅威

分散異機種環境でのデータ量の増加により、ユーザーは次に示すような様々なセキュリティの脅威に直面しています。

- 傍受とデータの盗難

- データの書換え

- ユーザーIDの偽造

- パスワード関連の脅威

1.1.3.1 傍受とデータの盗難

インターネットやWide Area Network環境では、公衆通信事業者とプライベート・ネットワークの両方が、安全性の低い陸上回線、攻撃を受けやすいマイクロ波や衛星リンク、または多数のサーバーを経由してネットワークの一部をルーティングしており、貴重なデータが利害関係のある第三者にさらされています。建物やキャンパス内のローカル・エリア・ネットワーク環境では、物理的な配線にアクセスできる内部の者が自分用ではないデータを見たり、ネットワークSnifferをインストールしてネットワーク・トラフィックを傍受する可能性があります。

1.1.3.2 データの書換え

分散環境では、サイト間を移動するデータが悪質な第三者に書き換えられることによって、整合性が損なわれる可能性があります。

1.1.3.3 ユーザーIDの偽造

分散環境では、ユーザーが識別情報を偽造して機密情報にアクセスできる可能性が高くなります。クライアントBからサーバーAに接続しているユーザーが本人であるということは、どうすれば確認できるでしょうか。

さらに、分散環境では、犯罪者が接続を乗っ取る可能性があります。クライアントBとサーバーAが本当にクライアントBとサーバーAであるということは、どうすれば確認できるでしょうか。サーバーAの人事システムからサーバーBの給与支払いシステムに送られるトランザクションが移動中に傍受され、サーバーBとして偽装した端末に再ルーティングされる可能性があります。

1.1.3.4 パスワード関連の脅威

大規模なシステムでは、通常、ユーザーは使用する様々なアプリケーションやサービスごとに複数のパスワードを記憶する必要があります。たとえば、開発者はワークステーション上の開発アプリケーションにアクセスし、電子メールを送信するためにPCにアクセスし、テスト、不具合の報告および構成管理のために複数のコンピュータまたはイントラネット・サイトにアクセスする場合があります。

ユーザーは通常、複数のパスワードを管理するという問題を次のいくつかの方法で処理しています。

- 名前、架空の人物、辞書にある言葉など、推測しやすいパスワードを選択する場合があります。これらのパスワードはすべて、辞書攻撃に対して脆弱です。

- すべてのシステムまたはWebサイトで同じになるように、パスワードを標準化する場合もあります。その結果、パスワードが見破られた場合に影響を受ける可能性のある範囲が拡大します。また、知られたパスワードから容易に導き出せる、類似したパスワードを使用することもあります。

- 複雑なパスワードを使用するユーザーは、それを攻撃者が簡単に見つけられる場所に書き留める場合があります。また、単純に忘れてしまう場合があり、コストのかかる管理とサポートの労力が必要となります。

これらの方法のすべてにおいて、パスワードの機密性とサービスの可用性が損なわれます。さらに、複数のユーザー・アカウントとパスワードの管理は複雑で、時間もコストもかかります。

1.2 Oracle Advanced Securityによるセキュリティ問題の解決

エンタープライズ・コンピューティングにおけるセキュリティの問題を解決するために、Oracle Advanced Securityは、業界標準に基づいたデータの機密、整合性、認証、シングル・サインオンおよびアクセス認可を様々な方法で提供します。たとえば、データの機密のために、Oracle Net固有の暗号化またはSecure Sockets Layer (SSL)を構成できます。また、Oracle Advanced Securityでは、Kerberos、スマートカード、デジタル証明書など、複数の厳密認証方式も選択できます。

Oracle Advanced Securityでは、次のセキュリティ機能をサポートしています。

- データの暗号化

- 厳密認証

1.2.1 データの暗号化

データベースに格納されたり、エンタープライズ・ネットワークやインターネット上を移動する機密情報は、暗号化アルゴリズムによって保護できます。暗号化アルゴリズムによって、情報は復号化鍵がないと解読できない形式に変換されます。

図1-1は、ネットワークで送信されるトランザクションのセキュリティを確保するために、暗号化がどのように機能するかを示しています。たとえば、管理者がボーナスを承認した場合、このデータはネットワークで送信されるときに、傍受されないように暗号化される必要があります。クライアント、データベースおよびアプリケーション・サーバー間のすべての通信が暗号化されると、管理者がボーナスの金額をデータベースに送信したときに、このデータは保護されます。

図1-1 暗号化

このセクションのトピックは次のとおりです:

- サポートされる暗号化アルゴリズム

- データの整合性

- 米国連邦情報処理標準

1.2.1.1 サポートされる暗号化アルゴリズム

Oracle Advanced Securityは、ネットワーク・データ送信のプライバシを保護するために、次の暗号化アルゴリズムを提供しています。

- Triple-DES暗号化

- Advanced Encryption Standard

ネットワーク暗号化アルゴリズムの選択はユーザー構成オプションであり、様々なタイプのデータ転送に様々なレベルのセキュリティとパフォーマンスが提供されます。

Oracle Advanced Securityの以前のバージョンには、米国内版、アップグレード版および輸出版の3つのエディションがあり、それぞれ異なる鍵の長さが使用されていました。Oracle Advanced Security 11g リリース2 (11.2)には、米国内版エディションでのみ利用可能であった暗号化アルゴリズムと鍵の長さを補完したものが組み込まれています。以前のバージョンの製品をデプロイする場合は、該当する製品リリースの米国内版エディションを入手できます。

注意:
米国政府は、暗号化製品に対する輸出ガイドラインを緩和しました。これにより、オラクル社は最も強力な暗号化機能を備えたOracle Advanced Securityをすべての顧客に出荷できます。

1.2.1.1.1 Triple-DES暗号化

Oracle Advanced Securityは、Triple-DES暗号化(3DES)もサポートします。この暗号化では、メッセージ・データをDESアルゴリズムに3回渡すことによって暗号化します。3DESでは高度なメッセージ・セキュリティが提供されますが、パフォーマンスは低下します。低下の度合いは、暗号化を実行するプロセッサの速度によって異なります。通常、3DESでは、標準のDESアルゴリズムに比べてデータ・ブロックの暗号化に3倍の時間がかかります。

3DESには2つの鍵を使用するバージョンと3つの鍵を使用するバージョンがあり、それぞれ有効な鍵の長さは112ビットと168ビットです。どちらのバージョンも、外部暗号ブロック連鎖(CBC)モードで動作します。

1.2.1.1.2 Advanced Encryption Standard

米国商務省国立標準技術研究所(NIST)により、米国連邦情報処理標準(FIPS)刊行物197で承認されたAdvanced Encryption Standard (AES)は、DESにかわるものとして開発された暗号化アルゴリズム規格です。AESは、128、192および256ビットの長さの暗号鍵を使用して128ビットのデータ・ブロックを処理できる対称型ブロック暗号であり、それぞれAES-128、AES-192およびAES-256と呼ばれます。3つのバージョンはすべて外部CBCモードで動作します。

関連項目:

- 第9章「Oracleサーバーとクライアントに対するネットワーク・データの暗号化および整合性の構成」

- 付録A「データ暗号化および整合性パラメータ」

1.2.1.2 データの整合性

伝送時のデータ・パケットの整合性を確保するために、Oracle Advanced SecurityではSHA-1のハッシング・アルゴリズムを使用して暗号化の見地から安全なメッセージ・ダイジェストを生成し、それをネットワーク上で送信される各メッセージに含めることができます。

データ整合性アルゴリズムは、オーバーヘッドをほとんど追加せず、次の攻撃からデータを保護します。

- データ変更

- パケット削除

- 再生攻撃

注意:
SHA-1は、以前にサポートされていたMD5よりも大きいメッセージ・ダイジェストを作成し、総当たり攻撃および反転攻撃に対処できます。

関連項目:
SHA-1の詳細は、第9章「Oracleサーバーとクライアントに対するネットワーク・データの暗号化および整合性の構成」を参照してください。

1.2.1.3 米国連邦情報処理標準

Oracle Advanced Securityリリース8.1.6は、米国連邦情報処理標準140-1 (FIPS)Level 2セキュリティ・レベルで検証されています。これにより、Oracle Advanced Securityが米国連邦政府の標準に準拠していることが独自に確認されています。

Oracle Database 10gに含まれるSSLの暗号ライブラリは、FIPS 140-2 Level 2セキュリティ・レベルで検証されています。FIPS 140-1およびFIPS 140-2関連の構成設定については、付録D「Oracle Advanced Security FIPS 140の設定」で説明されています。

1.2.2 厳密認証

認証はユーザーの識別情報を証明するために使用されます。分散環境では、ユーザーIDを認証することが必須であり、これを行わないとネットワーク・セキュリティの信頼性はほぼありません。パスワードは、認証で最も一般的な手段です。Oracle Advanced Securityでは、Oracle認証アダプタを使用して厳密な認証を行います。Oracle認証アダプタは、デジタル証明書を使用したSSLを含む様々なサード・パーティ認証サービスをサポートします。

図1-2は、サード・パーティの認証サーバーを使用するように構成されたOracleデータベース・インスタンスでのユーザー認証を示しています。ネットワークのすべてのメンバー(クライアントからサーバー、サーバーからサーバー、ユーザーからクライアントとサーバーの両方)を1箇所で集中的に認証する方法は、メンバーのIDを偽造するネットワーク・ノードの脅威に対処する効果的な方法の1つです。

図1-2 Oracle認証アダプタによる厳密認証

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

- 集中化された認証とシングル・サインオン

- サポートされている認証方式

1.2.2.1 集中化された認証とシングル・サインオン

集中化された認証では、シングル・サインオン(SSO)の利点もユーザーに提供されます。シングル・サインオンでは、ユーザーは1つのパスワードで複数のアカウントとアプリケーションにアクセスできます。ユーザーがログインする必要があるのは1回のみであり、ユーザー名とパスワードを再度入力しなくても、他の任意のサービスに自動的に接続できます。シングル・サインオンを使用すると、ユーザーは複数のパスワードを記憶したり管理する必要がなくなるため、複数のサービスへのログインに費やす時間を削減できます。

1.2.2.1.1 集中化されたネットワーク認証の動作

図1-3は、集中化されたネットワーク認証サービスの通常の動作を示しています。

図1-3 ネットワーク認証サービスでのユーザーの認証方法

集中化されたネットワーク認証プロセスは、次のように動作します。

1. ユーザー(クライアント)が認証サービスを要求し、トークンまたはパスワードなどの識別情報を入力します。

2. 認証サーバーによりユーザーの識別情報が検証され、チケットまたは資格証明がクライアントに渡されます。チケットまたは資格証明には期限がある場合があります。

3. クライアントは、これらの資格証明をサービス要求(データベースへの接続など)と一緒にOracleサーバーに渡します。

4. サーバーは資格証明を認証サーバーに渡し、認証を行います。

5. 認証サーバーは資格証明をチェックし、Oracleサーバーに通知します。

6. 認証サーバーが資格証明を受け入れた場合、Oracleサーバーはユーザーを認証します。認証サーバーが資格証明を拒否した場合、認証は失敗し、サービス要求は拒否されます。

1.2.2.2 サポートされている認証方式

Oracle Advanced Securityは、業界で標準的な次の認証方式をサポートしています。

- Kerberos

- Remote Authentication Dial-In User Service (RADIUS):

- Secure Sockets Layer (デジタル証明書を使用)

- Entrust/PKI

1.2.2.2.1 Kerberos

Oracle Advanced SecurityはKerberosをサポートしており、Oracleユーザーにシングル・サインオンおよび集中化された認証の利点を提供します。Kerberosは、共有秘密を使用するサード・パーティの認証システムです。これは、サード・パーティがセキュアであることを保障し、シングル・サインオン機能、集中化されたパスワード・ストレージ、データベース・リンク認証、拡張されたPCセキュリティを提供します。 Kerberosは、Kerberos認証サーバーを使用して認証を行います。このアダプタの構成および使用の詳細は、第12章「Kerberos認証の構成」を参照してください。

注意:
Kerberos用のOracle認証では、データベース・リンク認証(プロキシ認証とも呼ばれる)が提供されます。Kerberosは、エンタープライズ・ユーザー・セキュリティでサポートされている認証方式でもあります。

1.2.2.2.2 Remote Authentication Dial-In User Service (RADIUS):

RADIUSは、最も広く知られている、リモートでの認証とアクセスを可能にするクライアント/サーバー・セキュリティ・プロトコルです。Oracle Advanced Securityは、この標準をクライアント/サーバー・ネットワーク環境で使用して、RADIUSプロトコルをサポートするあらゆる認証方式の使用を可能にします。RADIUSは、トークン・カードやスマート・カードなど、いろいろな認証メカニズムで使用できます。

関連項目:
RADIUSの構成および使用の詳細は、第11章「RADIUS認証の構成」を参照してください。

- スマートカード
RADIUS準拠のスマートカードは、クレジット・カードに似たハードウェア・デバイスであり、メモリーとプロセッサを備えています。クライアント・ワークステーションにあるスマートカード・リーダーで読み取られます。

- トークン・カード

トークン・カード(Secure IDまたはRADIUSに準拠)は、いくつかの異なるメカニズムによって使いやすくできます。一部のトークン・カードは、認証サービスと同期された1回かぎりのパスワードを動的に表示します。サーバーは、認証サービスにアクセスすることにより、トークン・カードによって提供されるパスワードを任意の時点で検証できます。トークン・カードにはキーパッドを持ち、チャレンジ・レスポンス・ベースで動作するものがあります。この場合、サーバーはユーザーがトークン・カードに入力するチャレンジ(番号)を提供します。トークン・カードはレスポンス(チャレンジから暗号的に導出される別の番号)を提供し、ユーザーはそれを入力してサーバーに送信します。

SecurIDトークンはRADIUSアダプタを介して使用できます。

1.2.2.2.3 Secure Sockets Layer

Secure Sockets Layer(SSL)は、ネットワーク接続を保護するための業界標準プロトコルです。SSLは、認証、データの暗号化およびデータの整合性を提供します。

SSLプロトコルは、公開鍵インフラストラクチャ(PKI)の基盤です。認証のために、SSLはX.509v3標準に準拠したデジタル証明書と公開鍵/秘密鍵ペアを使用します。

Oracle Advanced SecurityのSSLは、任意のクライアントと任意のサーバー間の通信を保護するために使用できます。SSLは、サーバーのみ、クライアントのみ、またはクライアントとサーバーの両方に認証を提供するように構成できます。また、Oracle Advanced Securityでサポートされている他の認証方式(データベース・ユーザー名とパスワード、RADIUSおよびKerberos)と組み合せて、SSL機能を構成することもできます。

PKI実装をサポートするために、Oracle Advanced SecurityにはSSL以外に次の機能があります。

- Oracleウォレット(PKI資格証明を格納できる)

- Oracle Wallet Manager (Oracleウォレットを管理するために使用できる)

- 証明書失効リスト(CRL)による証明書の検証

- ハードウェア・セキュリティ・モジュールのサポート

関連項目:

- SSL、証明書の検証およびハードウェア・セキュリティ・モジュールの概念、構成および使用の詳細は、第13章「Secure Sockets Layer認証の構成」を参照してください。

- このツールを使用したOracleウォレットの管理の詳細は、第14章「Oracle Wallet Managerの使用方法」を参照してください。

- 他の認証方式と組み合せたSSLの構成の詳細は、第15章「複数の認証方式の構成およびOracle Advanced Securityの無効化」を参照してください。

1.2.2.2.4 Entrust/PKI

Oracle Advanced Securityは、Entrust Technologies社のEntrust/PKIソフトウェアが提供する公開鍵インフラストラクチャをサポートします。Entrust対応のOracle Advanced Securityを使用すると、EntrustユーザーはEntrustのシングル・サインオンをOracleのアプリケーションに取り込むことができ、それにより、OracleユーザーはEntrustベースのシングル・サインオンをOracleのアプリケーションに取り込むことが可能になります。

関連項目:
この機能の詳細は、付録F「Entrust対応のSecure Sockets Layer認証」を参照してください。

1.3 Oracle Advanced Securityのアーキテクチャ

Oracle Advanced Securityは、高度なセキュリティ機能によってOracleサーバーまたはクライアントのインストールを補完します。図1-4は、Oracleネットワーク環境におけるOracle Advanced Securityのアーキテクチャを示しています。

図1-4 Oracleネットワーク環境におけるOracle Advanced Security

Oracle Advanced Securityでは、既存のOracleプロトコル・アダプタと同様のアダプタによって認証がサポートされます。図1-5に示すように、認証アダプタによってOracle Netインタフェースが統合され、既存のアプリケーションを変更しなくてもそれらのアプリケーションで新しい認証システムを透過的に利用できるようになります。

図1-5 認証アダプタを使用したOracle Net Services

関連項目:
Oracleネットワーク環境でのスタック通信の詳細は『Oracle Database Net Services管理者ガイド』を参照してください。

1.4 システム要件

Oracle Advanced Security 11g リリース2 (11.2)は、Oracle Net 11g リリース2 (11.2)を必要とし、Oracle Database Enterprise Editionをサポートしています。表1-1は、その他のシステム要件を示しています。

注意:
Oracle Advanced Securityは、Oracle Database Standard Editionでは使用できません。

表1-1 認証方式とシステム要件

認証方式

システム要件

Kerberos

- MIT Kerberosバージョン5、リリース1.1以上。

- Kerberos認証サーバーを、物理的に安全なシステムにインストールする必要があります。

RADIUS

- Internet Engineering Task Force (IETF) RFC #2138 Remote Authentication Dial In User Service (RADIUS)およびRFC #2139 RADIUS Accountingの規格に準拠するRADIUSサーバー。

- チャレンジ・レスポンス認証を有効にするには、JavaSoftのJava Development Kitのリリース1.1で指定されているJavaネイティブ・インタフェースをサポートするオペレーティング・システムでRADIUSを実行する必要があります。

SSL

- Oracle Wallet Manager 10gリリースと互換性のあるウォレット。以前のリリースのOracle Wallet Managerで作成されたウォレットは、上位互換ではありません。

Entrust/PKI

- Entrust IPSEC Negotiator Toolkitリリース6.0

- Entrust/PKI 6.0

1.5 Oracle Advanced Securityの制限事項

Oracle Applicationsは、Oracle Advanced Securityの暗号化およびデータの整合性をサポートしています。ただし、Oracle Advanced Securityではデータを安全に送信するためにOracle Net Servicesが必要であるため、Microsoft Windowsで実行されるOracleの財務管理アプリケーション、人事管理アプリケーションおよび生産管理アプリケーションの一部では、Oracle Advanced Securityの外部認証機能はサポートされません。これらの製品のOracle Display Manager (ODM)を使用する部分では、Oracle Advanced Securityは利用されません。ODMではOracle Net Servicesが使用されないためです。

2 構成ツールと管理ツールの概要

Oracleデータベース・インスタンスに高度なセキュリティ機能を構成するには、Oracle Net Servicesの暗号化、整合性(チェックサム)および厳密認証方式を構成します。厳密認証方式の構成には、KerberosやRADIUSなどのサード・パーティ・ソフトウェアを含めることができ、Secure Sockets Layer (SSL)でデジタル証明書を使用するための公開鍵インフラストラクチャの構成や管理が必要になることがあります。

このように多様で高度なセキュリティ機能には、それを構成および管理するための様々なツールが必要です。この章では、Oracleデータベースの高度なセキュリティ機能を構成および管理するために使用されるツールについて、次のトピックで説明します。

- ネットワーク暗号化ツールと厳密認証構成ツール

- 公開鍵インフラストラクチャ資格証明管理ツール

- セキュリティ管理者/DBAの責務

2.1 ネットワーク暗号化ツールと厳密認証構成ツール

Oracle Net Servicesは、標準の暗号化アルゴリズムを使用してデータを暗号化し、Kerberos、RADIUS、SSLなどの厳密認証方式に対応するように構成できます。次の各項では、Oracle Databaseのこれらの高度なセキュリティ機能を構成するために使用できるOracleツールについて説明します。

- Oracle Net Manager

- Oracle Advanced Security Kerberosアダプタ・コマンドライン・ユーティリティ

2.1.1 Oracle Net Manager

Oracle Net Managerは、グラフィカル・ユーザー・インタフェース・ツールで、主にローカル・クライアントまたはサーバー・ホスト上のOracleホームにOracle Net Servicesを構成するために使用されます。

Oracle Net Managerを使用して、ネーミング、リスナー、一般的なネットワーク設定などのOracle Net Servicesを構成できますが、Oracle Netプロトコルを使用する次のOracle Advanced Security機能を構成することもできます。

- 厳密認証(Kerberos、RADIUSおよびSecure Sockets Layer)

- ネットワーク暗号化(Triple-DESおよびAES)

- データ整合性のためのチェックサム(SHA-1)

この項では、Oracle Advanced Securityの構成に使用するOracle Net Managerの機能について説明します。内容は次のとおりです。

- Oracle Net Managerの起動

- Oracle Advanced Securityプロファイルへのナビゲート

関連項目:

- このツールで実行できる、高度なセキュリティ機能を構成する作業の詳細は、「セキュリティ管理者/DBAの責務」を参照してください。

- このツールの詳細なドキュメントは、『Oracle Database Net Services管理者ガイド』およびOracle Net Managerオンライン・ヘルプを参照してください。

2.1.1.1 Oracle Net Managerの起動

Oracle Net Managerは、Oracle Enterprise Managerコンソールを使用して起動するか、またはスタンドアロン・アプリケーションとして起動できます。ただし、Oracle Advanced Securityの機能を構成できるOracle Advanced Securityプロファイルにアクセスするには、スタンドアロン・アプリケーションを使用する必要があります。

Oracle Net Managerをスタンドアロンのアプリケーションとして起動するには、次の手順を実行します。

- (UNIXの場合)$ORACLE_HOME/binから、コマンドラインで次のように入力します。

netmgr

- (Windows)「スタート」→「プログラム」→Oracle - HOME_NAME→Configuration and Migration Tools→Net Managerを選択します。

2.1.1.2 Oracle Advanced Securityプロファイルへのナビゲート

Oracle Net Managerインタフェース・ウィンドウには、2つのペイン(ナビゲータ・ペインと右側のペイン)があります。インタフェースには、様々なプロパティ・シートが表示され、ネットワーク・コンポーネントを構成できます。ナビゲータ・ペインでネットワーク・オブジェクトを選択すると、そのオブジェクトに関連するプロパティ・シートが右側のペインに表示されます。Oracle Advanced Security機能を構成するには、図2-1に示すように、ナビゲータ・ペインで「プロファイル」オブジェクトを選択し、右側のペインのリストから「Oracle Advanced Security」を選択します。

図2-1 Oracle Net ManagerのOracle Advanced Securityプロファイル

2.1.1.3 Oracle Advanced Securityプロファイルのプロパティ・シート

Oracle Advanced Securityプロファイルには、次のプロパティ・シートが含まれています。

- 「認証」プロパティ・シート

- 「その他のパラメータ」プロパティ・シート

- 「整合性」プロパティ・シート

- 「暗号化」プロパティ・シート

- 「SSL」プロパティ・シート

2.1.1.3.1 「認証」プロパティ・シート

このプロパティ・シートを使用して、Kerberos Version 5 (KERBEROS5)、Windows固有の認証(NTS)、RADIUSなどの厳密認証方式を選択します。

2.1.1.3.2 「その他のパラメータ」プロパティ・シート

このプロパティ・シートを使用して、「認証」プロパティ・シートで選択した認証方式の他のパラメータを設定します。

2.1.1.3.3 「整合性」プロパティ・シート

このプロパティ・シートを使用して、クライアントまたはサーバーでのチェックサムを有効にし、安全なメッセージ・ダイジェストを生成するための暗号化アルゴリズムを選択します。

2.1.1.3.4 「暗号化」プロパティ・シート

このプロパティ・シートを使用して、ネイティブ暗号化アルゴリズムでクライアントまたはサーバー接続を暗号化するための1つ以上の暗号スイートを選択します。

2.1.1.3.5 「SSL」プロパティ・シート

このプロパティ・シートを使用して、ウォレット・ロケーションや暗号スイートなどのSecure Sockets Layer (SSL)をクライアントまたはサーバーに構成します。

2.1.2 Oracle Advanced SecurityのKerberosアダプタ・コマンドライン・ユーティリティ

Oracle Advanced SecurityのKerberosアダプタは、Kerberos資格証明を取得、キャッシュ、表示および削除できる3つのコマンドライン・ユーティリティを提供します。次の表では、これらのユーティリティについて簡単に説明しています。

ユーティリティ名

説明

okinit

Key Distribution Center (KDC) からKerberosチケットを取得し、それをユーザーの資格証明キャッシュに格納します。

oklist

指定された資格証明キャッシュ内のKerberosチケットのリストを表示します。

okdstry

指定された資格証明キャッシュからKerberos資格証明を削除します。

関連項目:
これらのユーティリティ、構文および使用可能なオプションの詳細は、「Kerberos認証アダプタのユーティリティ」を参照してください。

注意:
Cybersafeアダプタは、このリリースからサポートされなくなりました。かわりに、OracleのKerberosアダプタを使用する必要があります。Kerberosアダプタを使用する場合は、Cybersafe KDC (Trust Broker)によるKerberos認証が引き続きサポートされます。

2.2 公開鍵インフラストラクチャ資格証明管理ツール

公開鍵インフラストラクチャ(PKI)によって提供されるセキュリティは、PKI資格証明をどの程度効果的に格納、管理および検証しているかに依存します。次のOracleツールを使用すると、証明書、ウォレットおよび証明書失効リストを管理して、PKI資格証明を安全に格納し、証明書検証メカニズムを最新の状態に保持できます。

- Oracle Wallet Manager

- orapkiユーティリティ

2.2.1 Oracle Wallet Manager

Oracle Wallet Managerは、Oracleウォレット内のセキュリティ資格証明の管理および編集するためにウォレットの所有者およびセキュリティ管理者が使用するアプリケーションです。ウォレットはパスワードで保護されたコンテナで、認証情報や、SSLに必要な秘密鍵、証明書および信頼できる証明書を含む署名証明書が格納されます。Oracle Wallet Managerを使用して次のタスクを実行できます。

- 公開鍵と秘密鍵のペアの生成

- ユーザー資格証明書の格納および管理

- 証明書リクエストの生成

- 資格証明の格納および管理(ルート鍵証明書および証明連鎖)

- ウォレットのLDAPディレクトリへのアップロードおよびLDAPディレクトリからのダウンロード

- ハードウェア・セキュリティ・モジュールの資格証明書を格納するウォレットの作成

次のトピックでは、Oracle Wallet Managerのユーザー・インタフェースについて説明します。

- Oracle Wallet Managerの起動

- Oracle Wallet Managerユーザー・インタフェースのナビゲート

- ツールバー

- メニュー

関連項目:
このアプリケーションの使用方法の詳細は、第14章「Oracle Wallet Managerの使用方法」を参照してください。

2.2.1.1 Oracle Wallet Managerの起動

Oracle Wallet Managerを起動する手順は、次のとおりです。

- (UNIXの場合)$ORACLE_HOME/binから、コマンドラインで次のように入力します。

owm

- (Windowsの場合)「スタート」→「プログラム」→Oracle - HOME_NAME→Integrated Management Tools→Wallet Managerの順に選択します。

2.2.1.2 Oracle Wallet Managerユーザー・インタフェースのナビゲート

Oracle Wallet Managerのユーザー・インタフェースには、図2-2に示すように、2つのペイン、ツールバーおよび様々なメニュー項目があります。

図2-2 Oracle Wallet Managerユーザー・インタフェース

2.2.1.2.1 ナビゲータ・ペイン

ナビゲータ・ペインには、Oracle Wallet ManagerがインストールされたOracleホームに格納されている証明書リクエストや証明書のグラフィカル・ナビゲーション・ツリー表示があります。ナビゲーション・ペインを使用して、証明書や証明書リクエストを表示、変更、追加または削除できます。

ナビゲータ・ペインは、他のOracleグラフィカル・ユーザー・インタフェース・ツールと同じように機能し、このペインで次の操作を実行できます。

- ウォレット・オブジェクトを開閉して、その中に含まれるユーザーや信頼できる証明書を管理します。

- ウォレット、証明書または証明書リクエストを右クリックして、追加、削除、インポート、エクスポートなどの操作を実行します。

ウォレットを開くと、ユーザーと信頼できる証明書のネストされたリストが表示されます。ナビゲータ・ペインでウォレットまたは証明書を選択すると、Oracle Wallet Managerの隣接する右側のペインに選択項目に関する詳細が表示されます。表2-1に、ナビゲータ・ペインに表示されるメイン・オブジェクトを示します。

表2-1 Oracle Wallet Managerのナビゲータ・ペインのオブジェクト

オブジェクト

説明

ウォレット

認証や署名の資格証明を格納するために使用する、パスワードで保護されたコンテナ

証明書リクエスト脚注 1

要求者の識別名(DN)、公開鍵、鍵サイズおよび鍵タイプを含む、PKCS #10でエンコードされたメッセージ

証明書脚注 1

エンティティのDNと公開鍵を含み、信頼されている機関(認証局)によって署名されているX.509データ構造

信頼できる証明書脚注 1

ルート鍵証明書とも呼ばれることもあり、一定の信頼度を有すると認定されたサード・パーティ機関からの証明書

脚注 1 これらのオブジェクトが表示されるのは、ウォレットを作成し、証明書リクエストを生成して、ウォレットに証明書をインポートした後のみです。

2.2.1.2.2 右側のペイン

右側のペインには、ナビゲータ・ペインで選択されたオブジェクトに関する情報が表示されます。右側のペインは読取り専用です。

図2-3は、ナビゲータ・ペインで証明書リクエスト・オブジェクトが選択されたときの右側のペインの表示を示しています。リクエストに関する情報と要求者の識別情報が「リクエストされた識別情報」、「鍵のサイズ」および「鍵のタイプ」フィールドに表示されます。PKCS #10でエンコードされた証明書リクエストは、「証明書リクエスト」テキスト・ボックスに表示されます。認証局に証明書をリクエストするには、このリクエストを電子メールにコピーするか、ファイルにエクスポートできます。

注意:
図2-3に、ユーザーの証明書リクエストを示します。CN属性にユーザー名ではなくサーバー名が含まれている場合は、証明書はサーバーに対してリクエストされることがあります。

図2-3 Oracle Wallet Managerの右側のペインに表示される証明書リクエスト情報

2.2.1.3 ツールバー

ツールバーには、ウォレットを管理できるボタンがあります。ツールバーのボタンの上にカーソルを置くと、そのボタンの機能の説明が表示されます。ツールバーのボタンについては、表2-2で説明します。

表2-2 Oracle Wallet Managerのツールバーのボタン

ツールバーのボタン

説明

新規

新規ウォレットを作成します。

ウォレットを開く

ファイル・システムを参照し、既存のウォレットを検索して開くことができます。

ウォレットの保存

現在開いているウォレットを保存します。

ウォレットの削除

ナビゲータ・ペインで現在選択しているウォレットを削除します。

ヘルプ

Oracle Wallet Managerオンライン・ヘルプを開きます。

2.2.1.4 メニュー

Oracle Wallet Managerのメニューを使用して、ウォレットやその中に含まれている資格証明を管理します。次の各項では、各メニューで使用できるオプションについて説明します。

2.2.1.4.1 「ウォレット」メニュー

表2-3に、「ウォレット」メニューの内容を示します。

表2-3 Oracle Wallet Managerの「ウォレット」メニュー・オプション

オプション

説明

新規

新規ウォレットを作成します。

開く

既存のウォレットを開きます。

閉じる

現在開いているウォレットを閉じます。

ディレクトリ・サービス内へのアップロード

ウォレットを指定したLDAPディレクトリ・サーバーにアップロードします。

ディレクトリ・パスワード、ホスト名およびポート情報を入力する必要があります。

ディレクトリ・サービスからのダウンロード

ウォレットを指定したLDAPディレクトリ・サーバーからダウンロードします。ディレクトリ・パスワード、ホスト名およびポート情報を入力する必要があります。

保存

現在開いているウォレットを現在の作業ディレクトリに保存します。

別名保存

ファイル・システムを参照して、現在開いているウォレットの保存先ディレクトリの場所を選択できます。

システム・デフォルトに保存

現在開いているウォレットをシステム・デフォルトの場所に保存します。

- (UNIXの場合) /etc/ORACLE/WALLETS/username

- (Windowsの場合) %USERPROFILE%\ORACLE\WALLETS

削除

現在の作業ディレクトリのウォレットを削除します。

ウォレット・パスワードを指定する必要があります。

パスワードの変更

現在開いているウォレットのパスワードを変更します。新しいパスワードを作成する前に、古いパスワードを指定する必要があります。

自動ログイン

現在開いているウォレットの自動ログイン機能を設定します。

終了

Oracle Wallet Managerアプリケーションを終了します。

2.2.1.4.2 「操作」メニュー

表2-4に、「操作」メニューの内容を示します。

表2-4 Oracle Wallet Managerの「操作」メニュー・オプション

オプション

説明

証明書リクエストの追加

認証局(CA)に証明書をリクエストするために使用できる、現在開いているウォレットの証明書リクエストを生成します。

ユーザー証明書のインポート

CAから発行されたユーザー証明書をインポートします。ユーザー証明書をインポートする前に、発行元CAの証明書を信頼できる証明書としてインポートする必要があります。

信頼できる証明書のインポート

CAの信頼できる証明書をインポートします。

証明書リクエストの削除

現在開いているウォレットの証明書リクエストを削除します。証明書リクエストを削除する前に、関連するユーザー証明書を削除する必要があります。

ユーザー証明書の削除

現在開いているウォレットからユーザー証明書を削除します。

信頼できる証明書の削除

現在開いているウォレットから、ナビゲータ・ペインで選択されている信頼できる証明書を削除します。削除する前に、信頼できる証明書によって署名されているすべてのユーザー証明書を削除する必要があります。

ユーザー証明書のエクスポート

現在開いているウォレットのユーザー証明書をエクスポートしてファイル・システム・ディレクトリに保存します。

証明書リクエストのエクスポート

現在開いているウォレットの証明書リクエストをエクスポートしてファイルに保存します。

信頼できる証明書のエクスポート

ナビゲータ・ペインで選択されている信頼できる証明書をエクスポートして、ファイル・システムの別の場所に保存します。

すべての信頼できる証明書のエクスポート

現在開いているウォレットのすべての信頼できる証明書をエクスポートして、ファイル・システムの別の場所に保存します。

ウォレットのエクスポート

現在開いているウォレットをエクスポートして、テキスト・ファイルとして保存します。

2.2.1.4.3 「ヘルプ」メニュー

表2-5に、「ヘルプ」メニューの内容を示します。

表2-5 Oracle Wallet Managerの「ヘルプ」メニュー・オプション

オプション

説明

目次

Oracle Wallet Managerオンライン・ヘルプを開きます。

キーワードで検索

Oracle Wallet Managerオンライン・ヘルプを開き、「検索」タブを表示します。

Oracle Wallet Managerバージョン情報

Oracle Wallet Managerのバージョン番号と著作権情報が表示されるウィンドウを開きます。

2.2.2 orapkiユーティリティ

orapkiユーティリティは、証明書失効リスト(CRL)の管理、Oracleウォレットの作成と管理、およびテスト用の署名付き証明書の作成に使用できるコマンドライン・ツールです。

このユーティリティの基本構文は次のとおりです。

orapki module command -option_1 argument ... -option_n argument

たとえば、次のコマンドを実行すると、machine1.us.example.comにインストールされ、ポート389を使用するOracle Internet DirectoryのインスタンスのCRLサブツリーにあるすべてのCRLがリストされます。

orapki crl list -ldap machine1.us.example.com:389

関連項目:

- orapkiを使用してディレクトリ内のCRLを管理する方法の詳細は、「証明書失効リストの管理」を参照してください。

- 使用可能なすべてのorapkiコマンドに関する参照情報は、付録E「orapkiユーティリティ」を参照してください。

2.3 セキュリティ管理者/DBAの責務

セキュリティ管理者のほとんどのタスクでは、Oracleデータベースとの間の接続を保護する必要があります。表2-6に、セキュリティ管理者の主なタスク、タスクの実行に使用するツール、およびタスクに関するマニュアルへのリンクを示します。

表2-6 セキュリティ管理者/DBAの一般的な構成および管理タスク

タスク

使用するツール

関連項目

データベース・サーバーとクライアント間の暗号化されたOracle Net接続を構成します。

Oracle Net Manager

「クライアントとサーバーでの暗号化の構成」

データベース・サーバーとクライアント間のOracle Net接続のチェックサムを構成します。

Oracle Net Manager

「クライアントとサーバーでの整合性の構成」

RADIUS認証を受け入れるようにデータベース・クライアントを構成します。

Oracle Net

「手順2A: OracleクライアントでのRADIUSの構成」

RADIUS認証を受け入れるようにデータベースを構成します。

Oracle Net

「手順2B: Oracleデータベース・サーバーでのRADIUSの構成」

RADIUSユーザーを作成し、データベース・セッションへのアクセス権を付与します。

SQL*Plus

「手順3: ユーザーの作成とアクセス権の付与」

データベース・クライアントとサーバーにKerberos認証を構成します。

Oracle Net Manager

「手順7: Kerberos認証の構成」

Kerberosデータベース・ユーザーを作成します。

- kadmin.local

- Oracle Net Manager

- 「手順8: Kerberosユーザーの作成」

- 「手順9: 外部認証されたOracleユーザーの作成」

資格証明キャッシュ内のKerberos資格証明を管理します。

- okinit

- oklist

- okdstry

- 「okinitユーティリティを使用した初期チケットの取得」

- 「oklistユーティリティを使用した資格証明の表示」

- 「okdstryユーティリティを使用したキャッシュ・ファイルからの資格証明の削除」

データベース・クライアントまたはサーバーのウォレットを作成します。

- Oracle Wallet Manager

「ウォレットの新規作成」

認証局(CA)にSSL認証用のユーザー証明書をリクエストします。

- Oracle Wallet Manager

- 「証明書リクエストの追加」

- 「ウォレットへのユーザー証明書のインポート」

ユーザー証明書とそれに関連する信頼できる証明書(CA証明書)をウォレットにインポートします。

- Oracle Wallet Manager

- 「信頼できる証明書のインポート」

- 「ウォレットへのユーザー証明書のインポート」

データベース・クライアントのSSL接続を構成します。

- Oracle Net Manager

「手順3: クライアントでのSecure Sockets Layerの構成」

データベース・サーバーのSSL接続を構成します。

- Oracle Net Manager

「手順2: サーバーでのSecure Sockets Layerの構成」

証明書失効リストを使用した証明書の検証を有効化します。

- Oracle Net Manager

- 「証明書失効リストによる証明書検証の構成」

第II部

Oracle Data Redaction

ここでは、Oracle Data Redactionの使用方法について説明します。

第II部は、次の章で構成されています。

- 第3章「Oracle Data Redactionの概要」

- 第4章「Oracle Data Redactionの特徴と機能」

- 第5章「Oracle Data Redactionポリシーの構成」

- 第6章「Oracle Data RedactionとOracle Database機能の併用」

- 第7章「Oracle Data Redactionのセキュリティ・ガイドライン」

3 Oracle Data Redactionの概要

Oracle Data Redactionには、一般には機密データを、リアルタイムでリダクションする機能があります。

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

- Oracle Data Redactionとは

- Oracle Data Redactionを使用する状況

- Oracle Data Redactionを使用する利点

- Oracle Data Redactionのターゲットのユースケース

3.1 Oracle Data Redactionとは

Oracle Data Redactionを使用すると、アプリケーションが発行する問合せから返されるデータをマスク(リダクション)できます。次の方法のいずれかを使用して、列データをリダクションできます。

- 完全リダクション。列データの内容をすべてリダクションします。問合せを行ったアプリケーション・ユーザーに返される、リダクションされた値は、列のデータ型によって異なります。たとえば、NUMBERデータ型の列はゼロ(0)でリダクションされ、文字データ型は空白1つでリダクションされます。

- 部分リダクション。列データの一部をリダクションします。たとえば、社会保障番号の最後の4桁以外をアスタリスク(*)でリダクションできます。

- 正規表現。正規表現を使用してリダクションするデータのパターンを検索できます。たとえば、正規表現を使用して、文字の長さが変化する可能性のある電子メール・アドレスをリダクションできます。これは、文字データのみで使用するように設計されています。

- ランダム・リダクション。問合せを行ったアプリケーション・ユーザーに表示されるリダクションされたデータは、列のデータ型に応じて、表示されるたびにランダムに生成された値として表示されます。

- リダクションなし。リダクション・タイプNoneを指定するオプションでは、リダクション・ポリシーが定義された表に対する問合せの結果に影響を与えずに、ポリシーの内部動作をテストできます。このオプションを使用して、リダクション・ポリシー定義を本番環境に適用する前にテストできます。

Oracle Databaseは、起動時、およびユーザーがデータにアクセスするとき(つまり問合せ実行時)にリダクションを適用します。このソリューションは、本番システムでも十分の機能します。データがリダクションされている間、処理中のすべてのデータは通常どおりに実行され、バックエンドの参照整合性制約は保持されます。

データ・リダクションは、クレジットカード業界のセキュリティ基準(PCI DSS)やサーベンス・オクスリー法などの業界の規則の順守に役立ちます。

3.2 Oracle Data Redactionを使用する状況

アプリケーションおよびアプリケーション・ユーザーがアクセスする必要のある機密データを偽装しなければならない場合には、Oracle Data Redactionを使用します。データ・リダクションを使用すると、いくつかの異なるリダクション・スタイルを使用して簡単にデータを偽装できます。

Oracle Data Redactionは、特定のアプリケーション・ユーザーに戻される、個人を識別できる情報(PII)の問合せの結果セットから、特定の文字をリダクションする必要がある場合に最適です。たとえば、末尾が4320の米国社会保障番号番号を、***-**-4320のように提示できます。

Oracle Data Redactionは特に、コール・センター・アプリケーションや読取り専用のアプリケーションに適しています。更新を実行してデータベースに書き戻すアプリケーションにOracle Data Redactionを使用する場合は注意してください。リダクションされたデータがこのデータベースに書き戻されることもあるからです。

3.3 Oracle Data Redactionを使用する利点

データを保護する際にOracle Data Redactionを使用する利点は、次のとおりです。

- 異なるスタイルのリダクションから選択できます。

- データは起動時にリダクションされるため、データ・リダクションは、データが常時変更されている環境に非常に適しています。

- 中央となる1か所にリダクション・ポリシーを作成して、そこから簡単に管理できます。

- データ・リダクション・ポリシーを使用して、データ・リダクション・ポリシーがアプリケーション・ユーザーの問合せの結果に適用されるタイミングを決定するために、実行時に使用できるSYS_CONTEXT値に基づいて、様々な種類の関数の条件を作成できます。

3.4 Oracle Data Redactionのターゲットのユースケース

Oracle Data Redactionは、一般的なユースケース・シナリオに対応します。

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

- データベース・アプリケーションにおけるOracle Data Redactionの使用

- 非定型データベース問合せにおけるOracle Data Redaction使用時の考慮事項

3.4.1 データベース・アプリケーションにおけるOracle Data Redactionの使用

Oracle Data Redactionは、データベース・アプリケーションに表示される機密データを保護します。データ・リダクションは、元のデータ型と(オプションで)形式を維持するためアプリケーション・ユーザーに対して透過的です。データは同じバッファ、キャッシュ、記憶域に保持され、呼出し元にSQL問合せの結果が戻される直前に初めて変更されるので、データベースに対して非常に透過的です。リダクションは、基礎となる同じデータベースを使用するすべてのアプリケーションに一貫して適用されます。リダクションされたデータのみが表示されるアプリケーション・ユーザーを指定するには、SYS_CONTEXT関数でデータベースに渡されるアプリケーション・ユーザー情報をチェックします。データは、現在のデータベースまたはアプリケーション・ユーザーの属性に基づいてリダクションでき、特定のリダクション・ポリシーに複数の論理条件を実装できます。また、データ・リダクションは、パフォーマンス・オーバーヘッドを最小化する方法で実装されます。このような特徴から、Oracle Data Redactionは、共通の本番データベースを共有する様々なアプリケーション、分析ツール、レポート・ツールおよび監視ツールを使用する場合に非常に適しています。この主要なターゲットは、アプリケーションの本番データのリダクションですが、Oracle Data Redactionは、テストおよび開発環境の機密データを保護するために、Oracle Enterprise Manager Data Masking and Subsetting Packと組み合せて使用することもできます。

関連項目:

- データ・マスキングの詳細は、『Oracle Database Real Application Testingユーザーズ・ガイド』を参照してください。

- 「Oracle Data RedactionとData Masking and Subsetting Pack」

3.4.2 非定型データベース問合せにおけるOracle Data Redaction使用時の考慮事項

データベース・ユーザーによって実行される非定型の問合せの機密データをリダクションすると便利な場合に遭遇する可能性があります。たとえば、本番アプリケーションのサポート中に、ユーザーは、非定型のデータベース問合せを実行して、アプリケーションの緊急な問題のトラブルシューティングを行って修正する必要がある場合があります。これは、「データベース・アプリケーションにおけるOracle Data Redactionの使用」の項で説明されている、通常はSQL問合せのバインドされたセットを生成し、定義されたデータベース・アカウントを使用し、権限が固定されている、というアプリケーション・ベースのシナリオとは異なります。

Oracle Data Redactionは、データベースに対して非定型問合せを実行するデータベース・ユーザーにデータが公開されることを防ぐために設計されているわけではありませんが、誤ってデータが公開される危険性を少なくする追加のセキュリティ層として利用できます。そのようなユーザーは、データを変更したり、データベース・スキーマを変更したり、SQL問合せインタフェースを完全に回避する権限があるため、悪質なユーザーは、特定の状況ではデータ・リダクション・ポリシーをバイパスすることができます。

Oracle Databaseのセキュリティ・ツールは、全体的なセキュリティを向上させるために同時に使用するように設計されています。Oracle Data Redactionを補完するものとして1つ以上のこれらのツールをデプロイすることで、全体的なセキュリティ体制を改善することができます。

関連項目:
他の一般的な使用上のガイドラインは、「一般的な使用上のガイドライン」を参照してください。

4 Oracle Data Redactionの特徴と機能

Oracle Data Redactionには、データをリダクションする様々な方法があります。

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

- 完全データ・リダクションを使用した全データのリダクション

- 部分データ・リダクションを使用したデータのセクションのリダクション

- 正規表現を使用したデータのパターンのリダクション

- ランダム・データ・リダクションを使用したランダム値の生成

- データ型に基づいた完全、部分およびランダム・リダクションの比較

- テストを目的にリダクションしない場合

4.1 完全データ・リダクションを使用した全データのリダクション

すべてのデータのリダクションを指定するOracle Data Redactionポリシーが表またはビューに適用されると、列の全コンテンツがリダクションされます。デフォルトでは、出力は次のように表示されます。

- 文字データ型: 出力テキストは、空白1つです。

- 数値データ型: 出力テキストはゼロです(0)です。

- 日時データ型: 出力テキストは、2001年1月1日に設定されており、01-JAN-01と表示されます。

完全リダクションがデフォルトで、これは、データ・リダクション・ポリシーで列を指定されているが、function_typeパラメータ設定が指定されていないときに使用されます。完全リダクションにfunction_typeパラメータ設定を設定するには、DBMS_REDACT.ADD_POLICYプロシージャを実行するときに、次の設定を入力します。

function_type    => DBMS_REDACT.FULL

DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESプロシージャを使用すると、完全リダクションの出力を別の値に変更できます。

関連項目:

- 「完全リダクション・ポリシーを作成する構文」

- 「デフォルトの完全データ・リダクション値のアラート」

4.2 部分データ・リダクションを使用したデータのセクションのリダクション

部分データ・リダクションでは、表示される出力の一部をリダクションします。実際のデータ内に、リダクションを開始する位置、その位置からリダクションする文字数および使用するリダクション文字を設定できます。このタイプのリダクションは、なんらかの方法でデータがリダクションされたことを、データを表示しているユーザーに明らかにしたい場合に便利です。通常、このタイプのリダクションは、クレジット・カードやID番号に使用します。

部分データ・リダクションでは、データの幅が固定されている必要があることに注意してください。様々な長さの文字列値を含む列をリダクションする場合、「正規表現を使用したデータのパターンのリダクション」の説明に従って正規表現を使用する必要があります。

部分リダクションを指定するには、DBMS_REDACT.ADD_POLICYプロシージャのfunction_typeパラメータをDBMS_REDACT.PARTIALに設定し、function_parametersパラメータを使用して部分リダクション動作を定義する必要があります。

部分データ・リダクションで表示される出力は、次のとおりです。

- 文字データ型: 部分的にリダクションする場合、987-65-4320という値の社会保障番号(文字データ型内で文字列がハイフンで連結されている)をリダクションすると、次の例のように表示されます。右側のコードは文字データのリダクション方法を指定します。このコードで、実際のデータの期待される入力形式、リダクションされる出力の表示に使用する形式、リダクションの開始位置、リダクションに使用する文字、リダクションする文字数が指定されます。最初の例では、文字データ型の社会保障番号に事前定義されたショートカットを使用し、2番目の例では、番号間のハイフン(-)を保持しながら最初の5つの番号をアスタリスク(*)で置換します。

XXX-XX-4320    function_parameters => DBMS_REDACT.REDACT_US_SSN_F5,

***-**-4320    function_parameters => 'VVVFVVFVVVV,VVV-VV-VVVV,*,1,5',

- 数値データ型: 部分的にリダクションされたNUMBERデータ型の社会保障番号987654328は、次のように表示されます。どちらも最初の5桁をリダクションします。最初の例では、NUMBERデータ型の社会保障番号のために設計されている事前定義されたショートカットを使用し、2番目の例では、最初の5桁の番号が9で置換されます。

XXXXX4328    function_parameters => DBMS_REDACT.REDACT_NUM_US_SSN_F5,

999994328    function_parameters => '9,1,5',

- 日時データ型: 部分的にリダクションされた日時の値を単純に別の日付に表示できます。たとえば、日付29-AUG-11 10.20.50.000000 AMは、次のように表示されます。最初の例では、月の日付が02 (d02という設定を使用)にリダクションされ、2番目の例では、月がDEC (m12を使用)にリダクションされます。大文字の値は、実際の月(M)、年(Y)、時間(H)、分(M)および秒(S)を示します。

02-AUG-11 10.20.50.000000 AM   function_parameters  =>  'Md02YHMS',

29-DEC-11 10.20.50.000000 AM   function_parameters  =>  'm12DYHMS',

関連項目:

- 「部分リダクション・ポリシーを作成する構文」

- 「正規表現ベースのリダクション・ポリシーを作成する構文」

4.3 正規表現を使用したデータのパターンのリダクション

正規表現を使用して、パターン検索に基づいて列データの値内にある特定のデータをリダクションできます。たとえば、ドメインのみが表示されるように電子メール・アドレスのユーザー名をリダクションできます(電子メール・アドレスhpreston@example.comのhprestonを[redacted]に置き換えて、[redacted]@example.comと表示するなど)。リダクションを実行するには、DBMS_REDACT.ADD_POLICYプロシージャのfunction_typeパラメータをDBMS_REDACT.REGEXPに設定し、さらに次のパラメータを使用して、正規表現を作成する必要があります。

- 文字列検索パターン(つまり、検索対象の値)で、例は次のとおりです。

regexp_pattern         => '(.+)@(.+\.[A-Za-z]{2,4})'

この設定では、次の形式のパターンが検索されます。

one_or_more_characters@one_or_more_characters.2-4_characters_in_range_A-Z_or_a-z

- regexp_pattern設定で一致した値を置換する置換文字列です。置換文字列は、主要な正規表現パターンの副次式に後方参照を含めることができます。次の例では、(regexp_pattern設定の) @記号の前にあるデータをテキスト[redacted]に置き換えます。\2設定は、2番目の一致グループであるregexp_pattern設定の(.+\.[A-Za-z]{2,4})を示します。

regexp_replace_string  => '[redacted]@\2'

- データの最初の文字などの文字列検索の文字の開始位置で、例は次のとおりです。

regexp_position        => DBMS_REDACT.RE_BEGINNING

- 実行する検索および置換操作の種類(最初の出現、5回おきの出現、すべて出現)で、例は次のとおりです。

regexp_occurrence      => DBMS_REDACT.RE_ALL

- 検索および置換操作のデフォルトの一致動作で、検索で大/小文字を区別するかどうかの例は次のとおりです(iはこれを大/小文字の区別なしに設定します)。

regexp_match_parameter => 'i

デフォルトのパラメータに加え、電話番号、電子メール・アドレスおよびクレジット・カード番号に、よく使用される正規表現を使用できるように事前定義されたショートカットのセットを使用できます。

関連項目:
「正規表現ベースのリダクション・ポリシーの作成について」

4.4 ランダム・データ・リダクションを使用したランダム化された値の生成

ランダム・データ・リダクションでは、値全体がランダムな値に置換されてリダクションされます。問合せの結果セットに表示されるリダクションされた値は、アプリケーション・ユーザーが問合せを実行するたびに、ランダムに変更されます。このタイプのリダクションは、データがリダクションされていることを明らかにしたくない場合に便利です。ランダム・データか実際のデータか区別するのが難しい数値および日時データ型の場合に、特に最適です。

ランダム値として表示される出力は、次のように、リダクションされた列のデータ型によって異なります。

- 文字データ型: ランダムな出力は、文字が混合されています(たとえば、HTU[G{\pjkEWcK)。CHARとVARCHAR2のデータ型では、次に示すように動作が異なります。

- CHARデータ型: リダクションされた出力のキャラクタ・セットは、常に列のキャラクタ・セットと同一になります。リダクションされた出力のバイト長は、常に列定義の長さ(つまり、表の作成時に指定した列の長さ)と同一になります。たとえば、列がCHAR(20)である場合、ユーザー問合せのリダクションされた出力には、ランダムな20文字が提供されます。

- VARCHAR2データ型: VARCHARデータ型のランダム・リダクションでは、リダクションされた出力のキャラクタ・セットは、常に列のキャラクタ・セットと同一になります。リダクションされた出力の長さは、列の実際のデータの長さに基づいて制限されます。実際のデータの長さを超える文字は表示されません。たとえば、列がVARCHAR2(20)で、リダクションされる行に長さ12の実際のデータが含まれている場合、その行に対するユーザー問合せのリダクションされた出力には、ランダムな12文字(20文字ではない)が提供されます。

- 数値データ型: 実際の各数値が、実際のデータの絶対値のモジュロである、ランダムな非負値に置換されてリダクションされます。このリダクション結果は、実際のデータの精度を超えないランダムな数値になります。たとえば、数値987654321は、数値12345678、13579、0または987654320のいずれかに置換されてリダクションされます。数値987654321、99987654321または-1に置換されることはありません。数値-123は、数値122、0または83に置換されてリダクションされますが、数値123、1123または-2のいずれかに置換されることはありません。
前述の例の唯一の例外は、実際の値が-1から9の間の整数である場合です。この場合、実際のデータは、ランダムな非負整数であるmodulo 10に置換されてリダクションされます。

- 日時データ型: 日付データ型の値がランダム・データ・リダクションを使用してリダクションされる場合、Oracle Databaseには、実際のデータの日付と異なるランダムな日付が常に表示されます。

ランダム・リダクションを使用する設定は、次のとおりです。

function_type    => DBMS_REDACT.RANDOM

関連項目:
「ランダム・リダクション・ポリシーを作成する構文」

4.5 データ型に基づいた完全、部分およびランダム・リダクションの比較

完全、部分およびランダムのどのデータ・リダクション方式を使用するかによって、Oracle組込み、ANSI、ユーザー定義、およびオラクル社提供のデータ型に対する影響は異なります。

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

- Oracle組込みデータ型のリダクション機能

- ANSIデータ型のリダクション機能

- ユーザー定義データ型またはオラクル社提供データ型のリダクション機能

4.5.1 Oracle組込みデータ型のリダクション機能

表4-1では、Oracle組込みデータ型に対する、完全、部分およびランダム・リダクションの機能の違いを比較します。

表4-1 Oracle組込みデータ型のリダクション機能

データ型

注意

完全リダクション

部分リダクション

ランダム・リダクション

文字: CHAR、VARCHAR2(たとえばVARCHAR2(20000)などの長いVARCHAR2)、NCHAR、NVARCHAR2

なし

デフォルトのリダクションされた値は、空白1つです。

サポートされているデータ型

サポートされているデータ型

数値: NUMBER、FLOAT、BINARY_FLOAT、BINARY_DOUBLE

なし

デフォルトのリダクションされた値はゼロ(0)です。

サポートされているデータ型

サポートされているデータ型

Raw: LONG、RAW、RAW

なし

サポート外のデータ型

サポート外のデータ型

サポート外のデータ型

日時: DATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONE

なし

デフォルトのリダクションされた値は、01-01-01、または01-01-01 01:00:00。

サポートされているデータ型

サポートされているデータ型

インターバル: INTERVAL YEAR TO MONTH、INTERVAL DAY TO SECOND

なし

サポート外のデータ型

サポート外のデータ型

サポート外のデータ型

ラージ・オブジェクト: BFILE

なし

サポート外のデータ型

サポート外のデータ型

サポート外のデータ型

ラージ・オブジェクト: BLOB

リダクションなしの型(DBMS_REDACT.NONE)はLOBデータ型をサポートしません。

Oracleの[redacted]のRAW表現

サポート外のデータ型

サポート外のデータ型

ラージ・オブジェクト: CLOB、NCLOB

リダクションなしの型(DBMS_REDACT.NONE)はLOBデータ型をサポートしません。

デフォルトのリダクションされた値は、[redacted]です。

サポート外のデータ型

サポート外のデータ型

Rowid: ROWID、UROWID

なし

サポート外のデータ型

サポート外のデータ型

サポート外のデータ型

4.5.2 ANSIデータ型のリダクション機能

表4-2では、ANSIデータ型に対する、完全、部分およびランダム・リダクションの機能の違いを比較します。

表4-2 ANSIデータ型のリダクション機能

データ型

変換方法

完全リダクション

部分リダクション

ランダム・リダクション

CHARACTER(n)、

CHAR(n)

CHAR(n)に変換

デフォルトのリダクションされた値は、空白1つです。

サポートされているデータ型

サポートされているデータ型

CHARACTER VARYING(n)、

CHAR VARYING(n)

VARCHAR2(n)に変換

デフォルトのリダクションされた値は、空白1つです。

サポートされているデータ型

サポートされているデータ型

NATIONAL CHARACTER(n)、

NATIONAL CHAR(n)、

NCHAR(n)

NCHAR(n)に変換

デフォルトのリダクションされた値は、空白1つです。

サポートされているデータ型

サポートされているデータ型

NATIONAL CHARACTER VARYING(n)、

NATIONAL CHAR VARYING(n)、

NCHAR VARYING(n)

NVARCHAR2(n)に変換

デフォルトのリダクションされた値は、空白1つです。

サポートされているデータ型

サポートされているデータ型

NUMERIC[(p,s)]

DECIMAL[(p,s)]

NUMBER(p,s)に変換

デフォルトのリダクションされた値はゼロ(0)です。

サポートされているデータ型

サポートされているデータ型

INTEGER

INT

SMALLINT

NUMBER(38)に変換

デフォルトのリダクションされた値はゼロ(0)です。

サポートされているデータ型

サポートされているデータ型

FLOAT

DOUBLE PRECISION

FLOAT(126)に変換

デフォルトのリダクションされた値はゼロ(0)です

サポートされているデータ型

サポートされているデータ型

REAL

FLOAT(63)に変換

デフォルトのリダクションされた値はゼロ(0)です。

サポートされているデータ型

サポートされているデータ型

GRAPHIC

LONG VARGRAPHIC

VARGRAPHIC

TIME

なし

サポート外のデータ型

サポート外のデータ型

サポート外のデータ型

4.5.3 ユーザー定義データ型またはオラクル社提供データ型のリダクション機能

表4-3では、ユーザー定義およびオラクル社提供データ型に対する、完全、部分およびランダム・リダクションの機能の違いを比較します。

表4-3 ユーザー定義データ型またはOracle指定データ型のリダクション機能

データ型またはタイプ

完全リダクション

部分リダクション

ランダム・リダクション

ユーザー定義データ型

サポート外のデータ型

サポート外のデータ型

サポート外のデータ型

任意の型、XML型、Oracle Spatial型、Oracle Media型

サポート外のデータ型

サポート外のデータ型

サポート外のデータ型

4.6 テストを目的にリダクションしない場合

リダクションを実行しないデータ・リダクション・ポリシーを作成できます。これは、リダクションされたベース表があるが、特定のアプリケーション・ユーザーのビューには実際のデータを常に表示する必要があるケースで便利です。リダクションされた表の新しいビューを作成して、このビューにデータ・リダクション・ポリシーを定義できます。ポリシーは引き続きベース表に存在しますが、DBMS_REDACT.NONE function_type設定を使用してビューにポリシーを作成した場合、アプリケーションがビューを使用して問い合せてもリダクションは実行されません。

第5章 Oracle Data Redactionポリシーの構成

Oracle Data Redactionポリシーでは、表の列タイプおよび使用するリダクションのタイプに応じて、列でデータをどのようにリダクションするかを定義します。ポリシーは必要に応じて有効および無効にできます。

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

- Oracle Data Redactionポリシーについて

- Oracle Data Redactionポリシーを作成できるユーザーは？

- Oracle Data Redactionポリシーの作成の計画

- DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文

- データ・リダクション・ポリシーの条件を定義する式の使用

- 完全データ・ポリシーの作成とデフォルトの完全リダクション値の変更

- 部分リダクション・ポリシーの作成

- 正規表現ベースのリダクション・ポリシーの作成

- ランダム・リダクション・ポリシーの作成

- リダクションを使用しないポリシーの作成

- Oracle Data Redactionポリシーからのユーザーの除外

- Oracle Data Redactionポリシーの変更

- 複数列のリダクション

- Oracle Data Redactionポリシーの有効化と無効化

- Oracle Data Redactionポリシーの削除

- 例: Oracle Data Redactionが表およびビューに与える影響

- 例: SQL式を使用したリダクションされた値を含むレポートの作成

- Oracle Data Redactionポリシーに関する情報の検索

5.1 Oracle Data Redactionポリシーについて

Oracle Data Redactionポリシーでは、表またはビューでリダクションが発生する条件を定義します。

データ・リダクション・ポリシーには、次のような特徴があります。

- データ・リダクション・ポリシーは、実行するリダクションの種類、リダクションの出現方法およびリダクションを実行するタイミングを定義します。Oracle Databaseは、実行時に、データがアプリケーションに戻される直前にリダクションを実行します。

- データ・リダクション・ポリシーでは、値の完全なリダクション、部分的なリダクション、ランダムなリダクションが可能です。さらに、テスト環境でポリシーをテストする場合には、データをまったくリダクションしないようにデータ・リダクション・ポリシーを定義することもできます。

- データ・リダクション・ポリシーは、ポリシー式がTRUEまたはFALSEのどちらを返すかに基づいて、異なるアプリケーション・ユーザーにリダクションされたデータまたは実際のデータのいずれかの表示を許可するポリシー式で定義できます。ポリシー式の評価のブール結果がTRUEであると、リダクションが実行されます。セキュリティ上の理由から、ポリシー式で使用できる関数および演算子は、SYS_CONTEXTなどの少数に限定されています。ユーザー作成関数は使用できません。ポリシー式では、SYS_SESSION_ROLES名前空間とSYS_CONTEXT関数を組み合せて使用し、有効なロールを確認できます。

表5-1に、DBMS_REDACTパッケージのプロシージャを示します。

表5-1 DBMS_REDACTプロシージャ

プロシージャ

説明

DBMS_REDACT.ADD_POLICY

データ・リダクション・ポリシーを表またはビューに追加します

DBMS_REDACT.ALTER_POLICY

データ・リダクション・ポリシーを変更します

DBMS_REDACT.UPDATE_FULL_REDACTION_VALUES

指定されたデータ型の完全にリダクションされた値をグローバルに更新します。データベース・インスタンスを再起動すると、更新された値を使用できます。

DBMS_REDACT.ENABLE_POLICY

データ・リダクション・ポリシーを有効化します

DBMS_REDACT.DISABLE_POLICY

データ・リダクション・ポリシーを無効化します

DBMS_REDACT.DROP_POLICY

データ・リダクション・ポリシーを削除します

関連項目:
DBMS_REDACT PL/SQLパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

5.2 Oracle Data Redactionポリシーを作成できるユーザー

リダクション・ポリシーを作成するには、DBMS_REDACT PL/SQLパッケージに対するEXECUTE権限が必要です。ポリシーで保護される基礎となる表やビューにアクセスする場合、権限は一切必要ありません。

5.3 Oracle Data Redactionポリシーの作成の計画

Oracle Data Redactionポリシーを作成する前に、データに最適なデータ・リダクション・プロセスを計画することが重要です。

1. DBMS_REDACT PL/SQLパッケージに対するEXECUTE権限が付与されていることを確認してください。

2. リダクションする表またはビューの列のデータ型を決定します。

3. この列がOracle Virtual Private Database (VPD) 行フィルタ処理条件で使用されていないことを確認してください。つまり、VPDポリシー関数によって生成されるVPD述語の一部であってはなりません。

4. 実行するリダクションのタイプ(完全、ランダム、部分、正規表現またはなし)を決定します。

5. データ・リダクション・ポリシーを適用するユーザーを決定します。

6. この情報に基づいて、DBMS_REDACT.ADD_POLICYプロシージャを使用てデータ・リダクション・ポリシーを作成します。

7. 「複数列のリダクション」の項の説明に従って、追加の列をリダクションするようにポリシーを構成することもできます。

データ・リダクション・ポリシーは、作成後、自動的に有効化され、データをリダクションできるようになります。

5.4 DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文

データ・リダクション・ポリシーを作成するには、DBMS_REDACT.ADD_POLICYプロシージャを使用します。詳細な構文は次のとおりです。

DBMS_REDACT.ADD_POLICY (
DBMS_REDACT.ADD_POLICY (
object_schema               IN VARCHAR2 := NULL,
object_name                 IN VARCHAR2 := NULL,
policy_name                 IN VARCHAR2,
policy_description          IN VARCHAR2 := NULL,
column_name                 IN VARCHAR2 := NULL,
column_description          IN VARCHAR2 := NULL,
function_type               IN BINARY_INTEGER := DBMS_REDACT.FULL,
function_parameters         IN VARCHAR2 := NULL,
expression                  IN VARCHAR2,
enable                      IN BOOLEAN := TRUE,
regexp_pattern              IN VARCHAR2 := NULL,
regexp_replace_string       IN VARCHAR2 := NULL,
regexp_position             IN BINARY_INTEGER :=1,
regexp_occurrence           IN BINARY_INTEGER :=0,
regexp_match_parameter      IN VARCHAR2 := NULL);

次のように指定します。

- object_schema: データ・リダクション・ポリシーを適用するオブジェクトのスキーマを指定します。この設定を省略(またはNULLを入力)する場合、Oracle Databaseは現在のユーザー名を使用します。ここでの「現在のユーザー」の意味は、DBMS_REDACT.ADD_POLICYプロシージャを呼び出す場所によって変わる場合があることに注意してください。
たとえば、ユーザーmpikeは、ユーザーfbrownに、mpikeのスキーマ内のmpike.protect_dataという名前の定義者権限のPL/SQLパッケージに対するEXECUTE権限を付与すると仮定します。このパッケージ内から、mpikeは、protect_cust_dataと呼ばれるプロシージャをコード化し、これにより、DBMS_REDACT.ADD_POLICYが呼び出されます。ユーザーmpikeは、object_schemaパラメータをNULLに設定しました。

fbrownがmpike.protect_dataパッケージのprotect_cust_dataプロシージャを呼び出すと、Oracle Databaseは、fbrownのスキーマのcust_dataオブジェクトではなく、mpikeスキーマのオブジェクトcust_dataの周りにデータ・リダクション・ポリシーを定義しようとします。

- object_name: データ・リダクション・ポリシーが適用する表またはビューの名前を指定します。

- policy_name: 作成するポリシーの名前を指定します。この名前は、データベース・インスタンス内で必ず一意である必要があります。REDACTION_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せることで、既存のデータ・リダクション・ポリシーのリストを検索できます。

- policy_description: ポリシーの目的についての簡単な説明を指定します。

- column_name: データをリダクションする必要がある列を指定します。次の点に注意してください。

- データ・リダクション・ポリシーを複数の列に適用できます。データ・リダクション・ポリシーを複数の列に適用する場合、DBMS_REDACT.ADD_POLICYを使用してポリシーを作成した後、DBMS_REDACT.ALTER_POLICYプロシージャを必要な回数実行して、必要な残りの列それぞれをポリシーに追加します。「Oracle Data Redactionポリシーの変更」の項を参照してください。

- 表またはビューに定義できるポリシーは1つだけです。ただし、表に新しいビューを作成できるため、2つ目のリダクション・ポリシーをこの新しいビューに定義することで、この新しいビューに対して問合せを発行するときに、異なる方法で列をリダクションできます。指定された列のリダクション方法を決める際、Oracle Databaseは、ビュー・チェーンの最初のビューのポリシーを使用します。ビューでのデータ・リダクション・ポリシーの使用に関する詳細は、「例: Oracle Data Redactionが表およびビューに与える影響」の項を参照してください。

- 列を指定しない場合(たとえば、NULLを入力)、いずれの列もポリシーによるリダクションは行われません。これにより、ユーザー自身のポリシーを作成して配置できるようになるため、後で準備ができたときに列の仕様を追加することができます。

- Oracle Virtual Private Database (VPD)の行フィルタ処理条件で現在使用されている列は使用しないでください。つまり、列は、VPDポリシー関数によって生成されるVPD述語の一部にすることはできません。VPDでデータ・リダクションを使用する方法の詳細は、「Oracle Data RedactionとOracle Virtual Private Database」を参照してください。

- 仮想列にデータ・リダクション・ポリシーを定義することはできません。また、任意の仮想列のSQL式に関連する列にデータ・リダクション・ポリシーを定義することもできません。

- column_description: リダクションする列の簡単な説明を指定します。

- function_type: リダクションのタイプを設定するファンクションを指定します。詳細は、次の各項を参照してください。

- 「完全リダクション・ポリシーを作成する構文」

- 「部分リダクション・ポリシーを作成する構文」

- 「正規表現ベースのリダクション・ポリシーを作成する構文」

- 「ランダム・リダクション・ポリシーを作成する構文」

- 「リダクションを使用しないポリシーの作成の構文」

function_typeパラメータを省略する場合、デフォルトのリダクションfunction_type設定は、DBMS_REDACT.FULLです。

- function_parameters: 部分リダクションのために列のリダクションをどのように表示するかを指定します。「部分リダクション・ポリシーを作成する構文」を参照してください。

- expression: ポリシーの適用方法を決定するブール型SQL式を指定します。リダクションは、ポリシー式がTRUEと評価された場合にのみ実行されます。「データ・リダクション・ポリシーの条件を定義する式の使用」を参照してください。

- enable: TRUEに設定すると、作成時にポリシーが有効になります。FALSEに設定すると、無効化されたポリシーとしてポリシーを作成します。デフォルトはTRUEです。ポリシーを作成した後、そのポリシーを無効化または有効化できます。次の各項を参照してください。

- Oracle Data Redactionポリシーの無効化

- Oracle Data Redactionポリシーの有効化

- regexp_pattern、regexp_replace_string、regexp_position、regexp_position、regexp_occurrence、regexp_match_parameter: 正規表現を使用してデータを完全に、または部分的にリダクションできます。実際のデータにregexp_patternに一致するものがない場合は完全リダクションが実行されるので、regexp_patternを指定するときは注意してください。列のすべての値が、使用している正規表現のセマンティクスに一致しているか確認します。詳細は、「正規表現ベースのリダクション・ポリシーを作成する構文」を参照してください。

5.5 データ・リダクション・ポリシーの条件の定義における式の使用

Oracle Data Redactionポリシーを作成する場合は、DBMS_REDACT.ADD_POLICYプロシージャでexpressionパラメータを使用して、ポリシーが適用される条件を指定する必要があります。

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

- データ・リダクション・ポリシーでの式の使用について

- ユーザー環境に基づくリダクション・ポリシーの適用

- データベース・ロールに基づくリダクション・ポリシーの適用

- Oracle Application Expressセッション・ステートに基づくリダクション・ポリシーの適用

- フィルタリングなしでのリダクション・ポリシーの適用

5.5.1 データ・リダクション・ポリシーにおける式の使用について

DBMS_REDACT.ADD_POLICYプロシージャのexpressionパラメータには、リダクションが実行される前にTRUEに評価される必要のあるブール式を定義します。

この式は次のいずれかのファンクションに基づいている必要があります。

- 指定された名前領域を使用するSYS_CONTEXT。SYS_CONTEXTのデフォルトの名前空間は、SESSION_USERおよびCLIENT_IDENTIFIERなどの値を含むUSERENVです。(この関数の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。)使用できるもう一つの名前空間は、各ロールの属性を含むSYS_SESSION_ROLES名前空間です。

- 次のOracle Application Expressファンクション:

- APEX_UTIL.GET_SESSION_STATEファンクションのラッパーであるV

- NV、APEX_UTIL.GET_NUMERIC_SESSION_STATE関数のラッパーです。

これらのAPEX_UTILパッケージ・ファンクションの詳細は、『Oracle Application Express APIリファレンス』を参照してください。

- 『Oracle Label Security管理者ガイド』で説明されている、OLS_LABEL_DOMINATESファンクションは、LBACSYS.OLS_LABEL_DOMINATESファンクションのラッパーです。

式を記述する場合は次のガイドラインに従ってください。

- 使用できる演算子は、=、!=、>、<、>=、<=のみです。

- リダクションの際に式はTRUEに評価される必要があるので、NULLと比較する場合には注意が必要です。SQLでは、値NULLは定義されていないため、NULLと比較すると、FALSEを返す傾向があります。

- expressionパラメータでユーザー作成ファンクションを使用することはできません。

ユーザーSYSおよびEXEMPT REDACTION POLICY権限を持つユーザーでは、すべてのデータ・リダクション・ポリシーがバイパスされるため、問合せの結果はリダクションされないことに注意してください。データ・リダクション・ポリシーから除外されるユーザーの詳細は、次を参照してください。

ユーザーSYSおよびEXEMPT REDACTION POLICY権限を持つユーザーでは、すべてのデータ・リダクション・ポリシーがバイパスされるため、問合せの結果はリダクションされないことに注意してください。データ・リダクション・ポリシーから除外されるユーザーの詳細は、「Oracle Data Redactionポリシーからのユーザーの除外」を参照してください。

5.5.2 ユーザー環境に基づくリダクション・ポリシーの適用

セッション・ユーザー名やクライアント識別子などのユーザー環境に基づくデータ・リダクション・ポリシーを適用するために、DBMS_REDACT.ADD_POLICY expressionパラメータで、SYS_CONTEXTファンクションのUSERENV名前空間を使用できます。

例5-1では、セッション・ユーザー名psmithのみにポリシーを適用する方法を示します。

例5-1 セッション・ユーザー名によるユーザーのフィルタリング

expression  => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''PSMITH'''

関連項目:
SYS_CONTEXTファンクションで使用できる名前空間の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

5.5.3 データベース・ロールに基づくリダクション・ポリシーの適用

データ・リダクション・ポリシーをデータベース・ロールに基づいて適用するには、各ロールの属性が含まれている、SYS_CONTEXTファンクションのSYS_SESSION_ROLES名前空間を使用します。指定されたロールが、問合せを行ったアプリケーション・ユーザーに対して有効化されている場合、属性の値はTRUEで、ロールが有効化されていない場合、属性の値はFALSEです。

たとえば、スーパーバイザのみに実際のデータの表示を許可するとします。例5-2では、DBMS_REDACT.ADD_POLICY expressionパラメータを使用してポリシーを設定し、supervisorロールが有効化されているアプリケーション・ユーザーには実際のデータを表示し、他のすべてのアプリケーション・ユーザーにはデータをリダクションする方法を示します。

例5-2 データベース・ロールに基づくデータ・リダクション・ポリシーの適用

expression  => 'SYS_CONTEXT(''SYS_SESSION_ROLES'',''SUPERVISOR'') = ''FALSE'''

5.5.4 Oracle Application Expressのセッション状態に基づくリダクション・ポリシーの適用

Oracle Application Express (APEX)セッション・ステートに基づいてデータ・リダクション・ポリシーを適用するには、次に示すパブリックApplication Express APIのいずれかをDBMS_REDACT.ADD_POLICY expressionパラメータに使用します。

- V、APEX_UTIL.GET_SESSION_STATEファンクションのシノニムです。

- NV、 APEX_UTIL.GET_NUMERIC_SESSION_STATEファンクションのシノニムです。

たとえば、これらのようなファンクションを使用することにより、APEXアプリケーションのセッション・ステートに格納されているジョブまたは権限ロールに基づいてデータをリダクションできます。

例5-3では、G_JOBというアプリケーション項目の値がCLERKとなったときにリダクションを発生させる場合に、DBMS_REDACT.ADD_POLICYのexpressionパラメータを設定する方法を説明しています。

例5-3 Oracle Application Expressのセッション状態によるユーザーのフィルタリング

expression => 'V'(''G_JOB'') = ''CLERK'''

問合せユーザーがAPEXアプリケーションのコンテキストにないとき(問合せがAPEXフレームワーク外、たとえばSQL*Plusから直接発行されたとき)にリダクションを発生させる場合は、次のようにIS NULL句を使用します。このポリシー式を使用すると、mavisというユーザーの問合せがAPEXアプリケーション内部から発行された場合にのみ、このユーザーに実際のデータが表示されます。それ以外の場合、問合せ結果はリダクションされます。

expression => 'V(''APP_USER'') != ''mavis@example.com'' or V(''APP_USER'') is null'

関連項目:
Oracle Application Express APIリファレンス

5.5.5 フィルタリングなしでのリダクション・ポリシーの適用

フィルタリングを使用しなければ、コンテキストに関係なくポリシーを任意のユーザーに適用できます。ただし、ユーザーSYSおよびEXEMPT REDACTION POLICY権限を持つユーザーは常にOracle Data Redactionポリシーから除外されることに注意してください。SYS以外のユーザーまたはEXEMPT REDACTION POLICY権限が付与されていないユーザーにポリシーを適用するには、例5-4に示すように、TRUEに評価されるDBMS_REDACT.ADD_POLICY expressionパラメータを記述します。

例 5-4 フィルタリングなしでのリダクション・ポリシーの適用

expression  => '1=1'

関連項目:
「Oracle Data Redactionポリシーからのユーザーの除外」

5.6 完全データ・ポリシーの作成とデフォルトの完全リダクション値の変更

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

- 完全リダクション・ポリシーの作成

- デフォルトの完全データ・リダクション値のアラート

5.6.1 完全リダクション・ポリシーの作成

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

- 完全データ・リダクション・ポリシーの作成について

- 完全リダクション・ポリシーを作成する構文

- 完全データ・リダクション・ポリシーの例

5.6.1.1 完全データ・リダクション・ポリシーの作成について

完全データ・リダクション・ポリシーでは、データ列のすべての内容がリダクションされます。リダクション・ポリシーを完全に設定するには、function_typeパラメータをDBMS_REDACT.FULLに設定する必要があります。デフォルトでは、NUMBERデータ型の列はゼロ(0)で、文字データ型の列は1つのスペース( )で置き換えられます。DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESプロシージャを使用することにより、このデフォルトを変更できます。

関連項目:
デフォルトの完全リダクション値を変更する場合には、「デフォルトの完全データ・リダクション値の変更」を参照してください。

5.6.1.2 完全リダクション・ポリシーを作成する構文

完全データ・リダクション・ポリシーを作成する場合のフィールドは次のとおりです。

DBMS_REDACT.ADD_POLICY (
object_schema           IN VARCHAR2 := NULL,
object_name             IN VARCHAR2,
column_name             IN VARCHAR2 := NULL,
policy_name             IN VARCHAR2,
function_type           IN BINARY_INTEGER := NULL,
expression              IN VARCHAR2,
enable                  IN BOOLEAN := TRUE);

次のように指定します。

- object_schema、object_name、column_name、policy_name、expression、enable: 「DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文」を参照してください。

- function_type: リダクションのタイプの設定に使用するファンクションを指定します。DBMS_REDACT.FULLと入力します。
function_typeパラメータを省略する場合、デフォルトのリダクションfunction_type設定は、DBMS_REDACT.FULLです。

列のデータ型は、使用が許可されているfunction_type設定を決定することに注意してください。「データ型に基づいた完全、部分およびランダム・リダクションの比較」を参照してください。

5.6.1.3 完全データ・リダクション・ポリシーの例

例5-5に、HR.EMPLOYEES表のCOMMISSION_PCT列にすべての値の完全なリダクションを使用する方法を示します。式パラメータは、EXEMPT REDACTION POLICYシステム権限が付与されているユーザーは除き、表の問合せを行った任意のユーザーにポリシーを適用します。(EXEMPT REDACTION POLICYシステム権限の詳細は、「Oracle Data Redactionポリシーからのユーザーの除外」を参照してください。)

例5-5 完全データ・リダクション・ポリシー

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema    => 'hr',
object_name      => 'employees',
column_name      => 'commission_pct',
policy_name      => 'redact_com_pct',
function_type    => DBMS_REDACT.FULL,
expression       => '1=1');
END;
/

問合せおよびリダクションされた結果:

SELECT COMMISSION_PCT FROM HR.EMPLOYEES;

COMMISSION_PCT
--------------
0
0
0

例5-6では、mavis.cust_info表のuser_id列のユーザーIDを完全にリダクションする方法を示しています。user_id列は、VARCHAR2データ型です。出力は空白の文字列です。expression設定により、MGRロールのあるユーザーは、ユーザーIDを表示できます。

例5-6 完全にリダクションされたデータ・リダクション文字値

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema   => 'mavis',
object_name     => 'cust_info',
column_name     => 'user_id',
policy_name     => 'redact_cust_user_ids',
function_type   => DBMS_REDACT.FULL,
expression      => 'SYS_CONTEXT(''SYS_SESSION_ROLES'',''MGR'') = ''FALSE''');
END;
/

問合せおよびリダクションされた結果:

SELECT user_id FROM mavis.cust_info;

USER_ID
------------
0
0
0

5.6.2 デフォルトの完全データ・リダクション値の変更

デフォルトのデータの完全リダクション値を変更するには、DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESプロシージャを使用してこの値を変更します。

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

- デフォルトの完全データ・リダクション値の変更について

- LOB以外のデータ型の列に対するデフォルトの完全データ・リダクション値の変更

- LOBデータ型の列に対するデフォルトの完全データ・リダクション値の変更

5.6.2.1 デフォルトの完全データ・リダクション値の変更について

完全データ・リダクションを使用するデータ・リダクション・ポリシーで表示されるデフォルトの値を変更できます。任意のデータ型のデフォルトの完全リダクションの任意の値を別の値に変更する場合は、次のリストに示すように、そのデータ型に適用される方法を使用できます。

- 列のデータ型がLOB以外のデータ型(BINARY_FLOAT、BINARY_DOUBLE、CHAR、VARCHAR2、NCHAR、NVARCHAR2、DATE、TIMESTAMPまたはTIMESTAMP WITH TIME ZONE)である場合は、DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESプロシージャを使用する必要があります(「LOB以外のデータ型の列に対するデフォルトの完全データ・リダクション値の変更」を参照)。

- 列のデータ型がLOBデータ型(BLOB、CLOBまたはNCLOB)である場合は、UPDATE文を実行する必要があります(「LOBデータ型の列に対するデフォルトの完全データ・リダクション値の変更」を参照)。

値を有効にするには、変更した後に、データベースを再起動する必要があります。現在の値を検索するには、REDACTION_VALUES_FOR_TYPE_FULLデータ・ディクショナリ・ビューを問い合せます。

この変更は、完全なデータ・リダクションを使用するデータベースのすべてのデータ・リダクション・ポリシーに影響することに注意してください。デフォルトの完全データ・リダクション値を変更する前に、既存の完全データ・リダクション・ポリシーにこの変更が及ぼす影響を確認してください。

5.6.2.2 LOB以外のデータ型の列に対するデフォルトの完全データ・リダクション値の変更

LOB以外のデータ型の列に対するデフォルトの完全データ・リダクション値を変更するには、DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESプロシージャを使用します。

1. DBMS_REDACT PL/SQLパッケージに対するEXECUTE権限が付与されたユーザーとして、データベース・インスタンスにログインします。

2. (オプション)変更する値を確認します。
たとえば、NUMBERデータ型を使用する列の現在の値を確認します。

SELECT NUMBER_VALUE FROM REDACTION_VALUES_FOR_TYPE_FULL;

NUMBER_VALUE
------------
0

3. DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESプロシージャを実行して値を変更します。
次の構文を使用します。

EXEC DBMS_REDACT.UPDATE_FULL_REDACTION_VALUES (datatype_value => new_value);

たとえば、NUMBER列を変更し、デフォルトとして7を使用するには、次のようにします。

EXEC DBMS_REDACT.UPDATE_FULL_REDACTION_VALUES (number_val => 7);

他のデータ型の場合、datatype_valueを次の設定に置き換え、new_valueを、使用する値に置き換えます。

データ型

new_value設定

BINARY_FLOAT

binfloat_val

BINARY_DOUBLE

bindouble_val

CHAR

char_val

VARCHAR2

varchar_val

NCHAR

nchar_val

NVARCHAR2

nvarchar_val

DATE

date_val

TIMESTAMP

ts_val

TIMESTAMPWITHTIMEZONE

tswtz_val

4. データベース・インスタンスを再起動します。
次に例を示します。

SHUTDOWN IMMEDIATE

STARTUP

関連項目:

- DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESプロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

- REDACTION_VALUES_FOR_TYPE_FULLビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

5.6.2.3 LOBデータ型の列に対するデフォルトの完全データ・リダクション値の変更

LOBデータ型の列に対するデフォルトの完全データ・リダクション値を変更するには、次のようにします。

1. RADM_FPTM_LOB$データ・ディクショナリ表を更新する権限を持つユーザーとして、データベース・インスタンスにログインします。

2. (オプション)REDACTION_VALUES_FOR_TYPE_FULLデータ・ディクショナリ・ビューに問い合せて、変更する値を確認します。

3. LOB値を更新します。

- BLOBデータ型の場合、BLOBデータ型の新しい完全データ・リダクション値の変数(blob_valなど)を初期化します。次に、RADM_FPTM_LOB$表のBLOBVAL列のUPDATE文を実行し、BLOBデータ型の列の完全リダクションの新しいデフォルトの値を設定します。

DECLARE
blob_val BLOB;
BEGIN
DBMS_LOB.CREATETEMPORARY(blob_val, TRUE);

DBMS_LOB.WRITE(blob_val, 8, 1,  UTL_RAW.CAST_TO_RAW('newvalue'));

UPDATE RADM_FPTM_LOB$ SET BLOBCOL = BLOB_VAL WHERE FPVER = 1;

DBMS_LOB.FREETEMPORARY(blob_val);
END;
/

- CLOBデータ型の場合、CLOBデータ型の新しい完全データ・リダクション値の変数(clob_valなど)を初期化します。次に、RADM_FPTM_LOB$表のCLOBVAL列のUPDATE文を実行し、CLOBデータ型の列の完全リダクションの新しいデフォルトの値を設定します。

DECLARE
clob_val CLOB;
BEGIN
DBMS_LOB.CREATETEMPORARY(clob_val, TRUE);

DBMS_LOB.WRITE(clob_val, 8, 1, 'newvalue');

UPDATE RADM_FPTM_LOB$ SET CLOBCOL = CLOB_VAL WHERE FPVER = 1;

DBMS_LOB.FREETEMPORARY(clob_val);
END;
/

- NCLOBデータ型の場合、NCLOBデータ型の新しい完全データ・リダクション値の変数(nclob_valなど)を初期化します。次に、RADM_FPTM_LOB$表のNCLOBVAL列のUPDATE文を実行し、NCLOBデータ型の列の完全リダクションの新しいデフォルトの値を設定します。

DECLARE
nclob_val NCLOB;
BEGIN
DBMS_LOB.CREATETEMPORARY(nclob_val, TRUE);

DBMS_LOB.WRITE(nclob_val, 8, 1, N'newvalue');

UPDATE RADM_FPTM_LOB$ SET NCLOBCOL = NCLOB_VAL WHERE FPVER = 1;

DBMS_LOB.FREETEMPORARY(nclob_val);
END;
/

4. データベース・インスタンスを再起動します。
次に例を示します。

SHUTDOWN IMMEDIATE

STARTUP

関連項目:
REDACTION_VALUES_FOR_TYPE_FULLビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

5.7 部分リダクション・ポリシーの作成

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

- 部分リダクション・ポリシーの作成について

- 部分リダクション・ポリシーを作成する構文

- 固定文字ショートカットを使用した部分リダクション・ポリシーの作成

- 文字データ型を使用した部分リダクション・ポリシーの作成

- 数値データ型を使用した部分リダクション・ポリシーの作成

- 日時データ型を使用した部分リダクション・ポリシーの作成

5.7.1 部分リダクション・ポリシーの作成について

データの部分リダクションでは、ID番号の最初の5桁など、データの一部のみがリダクションされます。たとえば、クレジット・カードの番号の大半(最後の4桁以外)をアスタリスク(*)でリダクションできます。文字、数値または日時のデータ型を使用する列に対してポリシーを作成できます。文字データ型をリダクションするポリシーの場合には、固定文字リダクションのショートカットを使用できます。

5.7.2 部分リダクション・ポリシーを作成する構文

部分リダクション・ポリシーを作成する場合の DBMS_REDACT.ADD_POLICYフィールドは次のとおりです。

DBMS_REDACT.ADD_POLICY (
object_schema           IN VARCHAR2 := NULL,
object_name             IN VARCHAR2,
column_name             IN VARCHAR2 := NULL,
policy_name             IN VARCHAR2,
function_type           IN BINARY_INTEGER := NULL,
function_parameters     IN VARCHAR2 := NULL,
expression              IN VARCHAR2,
enable                  IN BOOLEAN := TRUE);

次のように指定します。

- object_schema、object_name、column_name、policy_name、expression、enable: 「DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文」の項を参照してください。

- function_type: リダクションのタイプの設定に使用するファンクションを指定します。DBMS_REDACT.PARTIALと入力します。

- function_parameters: ここで設定するパラメータは、column_nameパラメータに指定された列のデータ型によって異なります。詳細は次の項を参照してください。

- 「固定文字ショートカットを使用した部分リダクション・ポリシーの作成」

- 「文字データ型を使用した部分リダクション・ポリシーの作成」

- 「数値データ型を使用した部分リダクション・ポリシーの作成」

- 「日時データ型を使用した部分リダクション・ポリシーの作成」

5.7.3 固定文字ショートカットを使用した部分リダクション・ポリシーの作成

DBMS_REDACT.ADD_POLICY function_parametersパラメータを使用することにより、固定文字ショートカットを使用できるようになります。

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

- 固定文字ショートカットの設定

- 固定文字ショートカットを使用した部分リダクション・ポリシーの例

5.7.3.1 固定文字ショートカットの設定

表5-2では、該当する列にVARCHAR2またはNUMBERデータ型のいずれかが使用される一般にリダクションされる社会保障番号、郵便番号、およびクレジット・カードに対して使用することができるDBMS_REDACT.ADD_POLICY function_parametersパラメータ・ショートカットについて説明します。

表5-2 部分固定文字リダクションのショートカット

ショートカット

説明

DBMS_REDACT.REDACT_US_SSN_F5

列がVARCHAR2データ型の場合、社会保障番号の最初の5つの数字をリダクションします。たとえば、番号987-65-4320はXXX-XX-4320になります。

DBMS_REDACT.REDACT_US_SSN_L4

列がVARCHAR2データ型の場合、社会保障番号の最後の4つの数字をリダクションします。たとえば、番号987-65-4320は987-65-XXXXになります。

DBMS_REDACT.REDACT_US_SSN_ENTIRE

列がVARCHAR2データ型の場合、社会保障番号全体をリダクションします。たとえば、番号987-65-4320はXXX-XX-XXXXになります。

DBMS_REDACT.REDACT_NUM_US_SSN_F5

列がNUMBERデータ型の場合、社会保障番号の最初の5つの数字をリダクションします。たとえば、番号987654320はXXXXX4320になります。

DBMS_REDACT.REDACT_NUM_US_SSN_L4

列がNUMBERデータ型の場合、社会保障番号の最後の4つの数字をリダクションします。たとえば、番号987654320は98765XXXXになります。

DBMS_REDACT.REDACT_NUM_US_SSN_ENTIRE

列がNUMBERデータ型の場合、社会保障番号全体をリダクションします。たとえば、番号987654320はXXXXXXXXXになります。

DBMS_REDACT.REDACT_ZIP_CODE

列がVARCHAR2データ型の場合、5桁の郵便番号をリダクションします。たとえば、95476はXXXXXになります。

DBMS_REDACT.REDACT_NUM_ZIP_CODE

列がNUMBERデータ型の場合、5桁の郵便番号をリダクションします。たとえば、95476はXXXXXになります。

DBMS_REDACT.REDACT_DATE_MILLENNIUM

DD-MON-YY形式の日付を01-JAN-00 (2000年1月1日)にリダクションします。

DBMS_REDACT.REDACT_DATE_EPOCH

すべての日付を01-JAN-70にリダクションします。

DBMS_REDACT.REDACT_CCN16_F12

最後の4桁は表示したまま、16桁のクレジット・カード番号をリダクションします。たとえば、5105 1051 0510 5100は****-****-****-5100になります。

関連項目:
その他のDBMS_REDACT.ADD_POLICYパラメータについては、「DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文」を参照してください。

5.7.3.2 固定文字ショートカットを使用した部分リダクション・ポリシーの例

例5-7 では、VARCHAR2データ型の列にある社会保障番号をREDACT_US_SSN_F5ショートカットによってリダクションする方法について説明します。

例5-7 部分的にリダクションされた文字値

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema       => 'mavis',
object_name         => 'cust_info',
column_name         => 'ssn',
policy_name         => 'redact_cust_ssns3',
function_type       => DBMS_REDACT.PARTIAL,
function_parameters => DBMS_REDACT.REDACT_US_SSN_F5,
expression          => '1=1',
policy_description  => 'Partially redacts 1st 5 digits in SS numbers',
column_description  => 'ssn contains Social Security numbers');
END;
/

問合せおよびリダクションされた結果:

SELECT ssn FROM mavis.cust_info;

SSN
-------
XXX-XX-4320
XXX-XX-4323
XXX-XX-4325
XXX-XX-4329

5.7.4 文字データ型を使用した部分リダクション・ポリシーの作成

DBMS_REDACT.ADD_POLICY function_parametersパラメータを使用することにより、文字データ型をリダクションできるようになります。

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

- 文字データ型の設定

- 文字データ型を使用した部分リダクション・ポリシーの例

5.7.4.1 文字データ型の設定

DBMS_REDACT.ADD_POLICYのfunction_parametersパラメータを設定して文字データ型の部分リダクションを定義するときは、次の順序で次の設定の値を入力します。各値はカンマで区切ります。

注意:
部分リダクションには、固定幅の文字セットを使用する必要があることに注意してください。つまり、リダクションされる各文字は、バイト長が等しい別の文字に置換される必要があります。可変長の文字セット(たとえば、UTF-8)を使用する場合、正規表現ベースのリダクションを使用する必要があります。詳細は、「正規表現ベースのリダクション・ポリシーを作成する構文」を参照してください。

設定は次のとおりです。

1. 入力形式: データが現在どのようにフォーマットされているかを指定します。クレジット・カード番号の全桁など、リダクションされる可能性のある各文字にVを入力します。クレジット・カード番号のハイフンまたは空白のような書式化文字を使用して書式化する場合、Fを入力します。各文字に、対応するVまたはF値があるか確認します。(入力形式の値は大/小文字を区別しません。)

2. 出力形式: 表示されるデータを書式化する方法を定義します。リダクションされる可能性のある各文字にVを入力します。入力形式の各文字Fをハイフンなど表示される文字に使用する文字に置換します。(出力形式の値は大/小文字を区別しません。)

3. マスク文字: リダクションに使用する文字を指定します。アスタリスク(*)など、リダクションに使用する単一の文字を入力します。

4. 開始する数字位置: リダクションで開始するVの数字位置を指定します。

5. 終了する数字位置: リダクションで終了するVの数字位置を指定します。終了する位置の値を決めるときは、Fの位置を含めないでください。

たとえば、次の設定は、クレジット・カード番号5105 1051 0510 5100の最初の12桁のVをリダクションし、Fの位置(空白)をハイフンに置換することでクレジット・カード番号で通常使用されるスタイルに書式化し、その結果****-****-****-4320と表示されます。

function_parameters  => 'VVVVFVVVVFVVVVFVVVV,VVVV-VVVV-VVVV-VVVV,*,1,12',

関連項目:
その他のDBMS_REDACT.ADD_POLICYパラメータについては、「DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文」を参照してください。

5.7.4.2 文字データ型を使用した部分リダクション・ポリシーの例

例5-8には、VARCHAR2データ型の列にある社会保障番号をリダクションする方法と、社会保障番号に含まれているハイフンを保持する方法を示します。

例5-8 部分的にリダクションされたデータ・リダクションの文字値

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema       => 'mavis',
object_name         => 'cust_info',
column_name         => 'ssn',
policy_name         => 'redact_cust_ssns2',
function_type       => DBMS_REDACT.PARTIAL,
function_parameters => 'VVVFVVFVVVV,VVV-VV-VVVV,*,1,5',
expression          => '1=1',
policy_description  => 'Partially redacts Social Security numbers',
column_description  => 'ssn contains character Social Security numbers');
END;
/

問合せおよびリダクションされた結果:

SELECT ssn FROM mavis.cust_info;

SSN
-----------
***-**-4320
***-**-4323
***-**-4325
***-**-4329

5.7.5 数値データ型を使用した部分リダクション・ポリシーの作成

DBMS_REDACT.ADD_POLICY function_parametersパラメータを使用することにより、数値データ型をリダクションできるようになります。

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

- 数値データ型の設定

- 数値データ型を使用した部分リダクション・ポリシーの例

5.7.5.1 数値データ型の設定

数値データ型の部分リダクションの場合、DBMS_REDACT.ADD_POLICY function_parametersパラメータについて、次の設定項目の値を記載されている順番に入力します。

1. マスク文字: 表示する文字を指定します。0から9までの数値を入力します。

2. 開始する数字位置: 最初の数字に1を指定するなど、リダクションで開始するの数字位置を指定します。

3. 終了する数字位置: リダクションで終了する数字位置を指定します。

たとえば、次の設定は、社会保障番号987654321の最初の5桁をリダクションし、その結果、999994321と表示されます。

function_parameters  => '9,1,5',

関連項目:
その他のDBMS_REDACT.ADD_POLICYパラメータについては、「DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文」を参照してください。

5.7.5.2 数値データ型を使用した部分リダクション・ポリシーの例

例5-9では、mavis.cust_info表の一連の社会保障番号を、ログインした任意のアプリケーション・ユーザーに対して部分リダクションする方法を示しています。(そのため、expressionパラメータはTRUEと評価されます。)このシナリオでは、社会保障番号はデータ型NUMBERの列にあります。つまり、ssn列に含まれるのは数字のみで、ハイフンまたは空白など他の文字は含まれせん。

例5-9 部分的にリダクションされたデータ・リダクションの数値

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema       => 'mavis',
object_name         => 'cust_info',
column_name         => 'ssn',
policy_name         => 'redact_cust_ssns1',
function_type       => DBMS_REDACT.PARTIAL,
function_parameters => '7,1,5',
expression          => '1=1',
policy_description  => 'Partially redacts Social Security numbers',
column_description  => 'ssn contains numeric Social Security numbers');
END;
/

問合せおよびリダクションされた結果:

SELECT ssn FROM mavis.cust_info;

SSN
---------
777774320
777774323
777774325
777774329

5.7.6 日時データ型を使用した部分リダクション・ポリシーの作成

DBMS_REDACT.ADD_POLICY function_parametersパラメータを使用することにより、日時データ型をリダクションできるようになります。

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

- 日時データ型の設定

- 日時データ型を使用した部分リダクション・ポリシーの例

5.7.6.1 日時データ型の設定

日時データ型の部分リダクションの場合、次のDBMS_REDACT.ADD_POLICY function_parametersパラメータ設定項目の値を、記載されている順番に入力します。

1. m: 月をリダクションします。月の名前でリダクションするには、1から12を小文字のmに追加します。たとえば、m5は、MAYと表示されます。リダクションを省略するには、大文字のMを入力します。

2. d: 月の日をリダクションします。月の日でリダクションするには、1から31を小文字のdに追加します。たとえば、d7は、07と表示されます。月の日よりも大きい数値(たとえば、2月に31を入力)を入力すると、その月の最終日(たとえば、28)が表示されます。リダクションを省略するには、大文字のDを入力します。

3. y: 年をリダクションします。年でリダクションするには、1から9999を小文字のyに追加します。たとえば、y1984は、84と表示されます。リダクションを省略するには、大文字のYを入力します。

4. h: 時間をリダクションします。時間でリダクションするには、0から23を小文字のhに追加します。たとえば、h20は、20と表示されます。リダクションを省略するには、大文字のHを入力します。

5. m: 分をリダクションします。分でリダクションするには、0から59を小文字のmに追加します。たとえば、m30は、30と表示されます。リダクションを省略するには、大文字のMを入力します。

6. s: 秒をリダクションします。秒でリダクションするには、0から59を小文字のsに追加します。たとえば、s45は、45と表示されます。リダクションを省略するには、大文字のSを入力します。

関連項目:
その他のDBMS_REDACT.ADD_POLICYパラメータについては、「DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文」を参照してください。

5.7.6.2 日時データ型を使用した部分リダクション・ポリシーの例

例5-10では、日付を部分的にリダクションする方法を示しています。この例では顧客の誕生年をリダクションし、それを13に置き換え、残りの値はそのまま保持します。

例5-10 日時値を使用した部分リダクションによるデータ・リダクション

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema       => 'mavis',
object_name         => 'cust_info',
column_name         => 'birth_date',
policy_name         => 'redact_cust_bdate',
function_type       => DBMS_REDACT.PARTIAL,
function_parameters => 'mdy2013HMS',
expression          => '1=1',
policy_description  => 'Replaces birth year with 2013',
column_description  => 'birth_date contains customer's birthdate');
END;
/

問合せおよびリダクションされた結果:

SELECT birth_date FROM mavis.cust_info;

BIRTH_DATE
07-DEC-13 09.45.40.000000 AM
12-OCT-13 04.23.29.000000 AM

5.8 正規表現ベースのリダクション・ポリシーの作成

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

- 正規表現ベースのリダクション・ポリシーの作成について

- 正規表現ベースのリダクション・ポリシーを作成する構文

- ショートカットを使用した正規表現ベースのリダクション・ポリシーの作成

- カスタム正規表現リダクション・ポリシーの作成

5.8.1 正規表現ベースのリダクション・ポリシーの作成について

正規表現を使用したリダクションでは、リダクションするデータのパターンを検索できます。たとえば、正規表現を使用して、文字の長さが変化する可能性のある電子メール・アドレスをリダクションできます。これは、文字データのみで使用するように設計されています。検索および置換操作にショートカットを使用することも、カスタム・パターンを作成することもできます。

列内の値のサブセットのリダクションに正規表現は使用できません。REGEXP_REPLACE_STRINGの設定を有効にするには、REGEXP_PATTERN (正規表現パターン)がすべての値に一致する必要があり、REGEXP_REPLACE_STRINGが値を変更する必要があります。

REGEXP_PATTERNが一致しない行では、データ・リダクションはDBMS_REDACT.FULLリダクションを実行します。これにより、一致しない行の実際のデータの表示から、正規表現が列内の値のすべてに一致しない原因となるREGEXP_PATTERNでの誤りのリスクが軽減されます。

さらに、正規表現の置換操作中に、REGEXP_REPLACE_STRING設定の結果として発生する値への変更がない場合、データ・リダクションはDBMS_REDACT.FULLリダクションを実行します。

5.8.2 正規表現ベースのリダクション・ポリシーを作成する構文

正規表現ベース完全データ・リダクション・ポリシーを作成する場合のDBMS_REDACT.ADD_POLICYフィールドは次のとおりです。

DBMS_REDACT.ADD_POLICY (
object_schema           IN VARCHAR2 := NULL,
object_name             IN VARCHAR2,
column_name             IN VARCHAR2 := NULL,
policy_name             IN VARCHAR2,
function_type           IN BINARY_INTEGER := NULL,
expression              IN VARCHAR2,
enable                  IN BOOLEAN := TRUE,
regexp_pattern          IN VARCHAR2 := NULL,
regexp_replace_string   IN VARCHAR2 := NULL,
regexp_position         IN BINARY_INTEGER := 1,
regexp_occurrence       IN BINARY_INTEGER := 0,
regexp_match_parameter  IN VARCHAR2 := NULL);

次のように指定します。

- object_schema、object_name、column_name、policy_name、expression、enable: 「DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文」を参照してください。

- function_type: リダクションのタイプの設定に使用するファンクションを指定します。DBMS_REDACT.REGEXPと入力します。
次の点に注意してください。

- function_typeパラメータをDBMS_REDACT.REGEXPに設定すると、function_parametersパラメータを省略します。

- 正規表現(regexp_pattern、regexp_replace、regexp_position、regexp_occurrenceおよびregexp_match_parameter)を、pattern、replace、position、occurrenceおよびmatch_parameter引数をREGEXP_REPLACE SQLファンクションに指定するときとほぼ同じ方法で指定します。REGEXP_REPLACE SQLファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

- regexp_pattern: 一致する必要のあるデータの検索パターンを説明します。一致が見つかった場合、Oracle Databaseは、regexp_replace_string設定で指定されたとおりにデータを置換します。詳細は、次の各項を参照してください。

- 「ショートカットを使用した正規表現ベースのリダクション・ポリシーの作成」

- 「カスタム正規表現リダクション・ポリシーの作成」

- regexp_replace_string: データのリダクション方法を指定します。詳細は、次の各項を参照してください。

- 「ショートカットを使用した正規表現ベースのリダクション・ポリシーの作成」

- 「カスタム正規表現リダクション・ポリシーの作成」

- regexp_position: 文字列検索の開始位置を指定します。入力する値は、Oracle Databaseが検索を開始するcolumn_nameデータの文字を示す正の整数です。デフォルトは、1またはRE_BEGINNINGショートカットで、Oracle Databaseはcolumn_nameデータの最初の文字で検索を開始することを意味します。

- regexp_occurrence: 検索および置換操作の実行方法を指定します。入力する値は、置換操作の回数を示す正の整数です。

- 0またはRE_ALLショートカットを指定する場合、Oracle Databaseは、一致したすべてのものを置換します。

- RE_FIRSTショートカットを指定する場合、Oracle Databaseは、最初に一致したものを置換します。

- 正の整数nを指定すると、Oracle Databaseは最初からn個まで一致したものを置換します。

出現が1より大きい場合、1番目のパターンが検出された後に続く1文字目から、2番目(以降)の出現を検索します。

- regexp_match_parameter: ファンクションが持つデフォルトの照合動作を変更できるテキスト・リテラルを指定します。このパラメータの動作は、REGEXP_REPLACE SQLファンクションのこのファンクションの動作と同じです。詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
大文字・小文字を区別せずに検索をフィルタするには、RE_MATCH_CASE_INSENSITIVEショートカットを指定します。

5.8.3 ショートカットを使用した正規表現ベースのリダクション・ポリシーの作成

DBMS_REDACT.ADD_POLICYプロシージャ内のregexp_patternパラメータとregexp_replace_stringパラメータの両方に対してショートカットを使用できます。

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

- 正規表現のショートカット

- ショートカットを使用した正規表現リダクション・ポリシーの例

5.8.3.1 正規表現ショートカット

表5-3では、DBMS_REDACT.ADD_POLICYプロシージャ内のregexp_patternパラメータで使用できるショートカットについて説明します。

表5-3 regexp_patternパラメータのショートカット

ショートカット

説明

DBMS_REDACT.RE_PATTERN_ANY_DIGIT

任意の桁と一致します。DBMS_REDACT.RE_PATTERN_ANY_DIGITは、regexp_replace_stringパラメータの次の値でよく使用されます。

regexp_replace_string => DBMS_REDACT.RE_REDACT_WITH_SINGLE_X,

この設定によって、一致した任意の桁がXの文字に置換されます。

次の設定では、一致した任意の桁が1の文字に置換されます。

regexp_replace_string => DBMS_REDACT.RE_REDACT_WITH_SINGLE_1,

DBMS_REDACT.RE_PATTERN_CC_L6_T4

regexp_replace_stringパラメータで指定された文字を使用した先頭6桁および末尾4桁を持つ任意のクレジット・カードの中央の桁を検索します。

このショートカットで使用する必要のある適切なregexp_replace_string設定はDBMS_REDACT.RE_REDACT_CC_MIDDLE_DIGITSであり、これによって先頭6桁および末尾4桁が実際のデータとして残される任意のクレジット・カードが検索されます。その後、中央の桁がリダクションされます。

DBMS_REDACT.RE_PATTERN_US_PHONE

regexp_replace_stringパラメータで指定された文字を使用した任意の米国の電話番号を検索します。

このショートカットで使用する必要のある適切なregexp_replace_string設定はDBMS_REDACT.RE_REDACT_US_PHONE_L7であり、これによって米国の電話番号が検索され、その後、最後の7桁がリダクションされます。

DBMS_REDACT.RE_PATTERN_EMAIL_ADDRESS

regexp_replace_stringパラメータで指定された文字を使用した任意の電子メール・アドレスを検索します。

このショートカットで使用できる適切なregexp_replace_string設定は次のとおりです。

RE_REDACT_EMAIL_NAME: 任意の電子メール・アドレスを検索して電子メール・ユーザー名をリダクションします。

RE_REDACT_EMAIL_DOMAIN: 任意の電子メール・アドレスを検索して電子メール・ドメインをリダクションします。

RE_REDACT_EMAIL_ENTIRE: 任意の電子メール・アドレスを検索して電子メール・アドレス全体をリダクションします。

DBMS_REDACT.RE_PATTERN_IP_ADDRESS

regexp_replace_stringパラメータで指定された文字を使用したIPアドレスを検索します。

このショートカットで使用する必要のある適切なregexp_replace_string設定はDBMS_REDACT.RE_REDACT_IP_L3であり、これによってIPアドレスにおけるドット付きの10進文字列表現の最後のセクションが、リダクションされたことを示す文字の999に置換されます。

表5-4では、DBMS_REDACT.ADD_POLICYプロシージャ内のregexp_replace_stringパラメータで使用できるショートカットについて説明します。

表5-4 regexp_replace_stringパラメータのショートカット

ショートカット

説明

DBMS_REDACT.RE_REDACT_WITH_SINGLE_X

実際のデータの各文字を単一の文字Xで置換します。たとえば、クレジット・カード番号5105 1051 0510 5100をXXXX XXXX XXXX XXXXに置換できます。

DBMS_REDACT.RE_REDACT_WITH_SINGLE_1

実際のデータの各桁を1桁の数字1で置換します。たとえば、クレジット・カード番号5105 1051 0510 5100を1111 1111 1111 1111に置換できます。

DBMS_REDACT.RE_REDACT_CC_MIDDLE_DIGITS

クレジット・カード番号の中央の桁を、RE_PATTERN_CC_L6_T4ショートカットを使用したregexp_patternパラメータの設定で指定したとおりにリダクションします。このリダクションにより、リダクションされる各文字はXに置換されます。たとえば、クレジット・カード番号5105 1051 0510 5100を5105 10XX XXXX 5100に置換できます。

DBMS_REDACT.RE_REDACT_PHONE_L7

米国の電話番号の最後の7桁を、RE_PATTERN_US_PHONEショートカットを使用したregexp_patternパラメータの設定で指定したとおりにリダクションします。このリダクションにより、リダクションされる各文字はXに置換されます。この設定はハイフンで連結された電話番号にのみ適用され、空白を含む電話番号には適用されません。たとえば、電話番号415-555-0100は、415-XXX-XXXXに置換できます。

DBMS_REDACT.RE_REDACT_EMAIL_NAME

電子メール・アドレスを、RE_PATTERN_EMAIL_ADDRESSショートカットを使用したregexp_patternパラメータの設定で指定したとおりにリダクションします。このリダクションにより、電子メール・ユーザー名は4つの文字xに置換されます。たとえば、電子メール・アドレスpsmith@example.comは、xxxx@example.comに置換されます。

DBMS_REDACT.RE_REDACT_EMAIL_DOMAIN

電子メール・ドメイン名を、RE_PATTERN_EMAIL_ADDRESSショートカットを使用したregexp_patternパラメータの設定で指定したとおりにリダクションします。このリダクションにより、ドメインは5つの文字xに置換されます。たとえば、電子メール・アドレスpsmith@example.comは、psmith@xxxxx.comに置換できます。

DBMS_REDACT.RE_REDACT_IP_L3

IPアドレスの最後の3桁を、RE_PATTERN_IP_ADDRESSショートカットを使用したregexp_patternパラメータの設定で指定したとおりにリダクションします。たとえば、IPアドレス192.0.2.254は、無効なIPアドレスである192.0.2.999に置換されます。

5.8.3.2 ショートカットを使用した正規表現リダクション・ポリシーの例

例5-11では、正規表現ショートカットを使用してクレジット・カード番号をリダクションする方法を示しています。

例5-11 正規表現データ・リダクション文字値

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema          => 'mavis',
object_name            => 'cust_info',
column_name            => 'cc_num',
policy_name            => 'redact_cust_cc_nums',
function_type          => DBMS_REDACT.REGEXP,
function_parameters    => NULL,
expression             => '1=1',
regexp_pattern         => DBMS_REDACT.RE_PATTERN_CC_L6_T4,
regexp_replace_string  => DBMS_REDACT.RE_REDACT_CC_MIDDLE_DIGITS,
regexp_position        => DBMS_REDACT.RE_BEGINNING,
regexp_occurrence      => DBMS_REDACT.RE_FIRST,
regexp_match_parameter => DBMS_REDACT.RE_MATCH_CASE_INSENSITIVE,
policy_description     => 'Regular expressions to redact credit card numbers',
column_description     => 'cc_num contains customer credit card numbers');
END;
/

問合せおよびリダクションされた結果:

SELECT cc_num FROM mavis.cust_info;

CC_NUM
-------
401288XXXXXX1881
411111XXXXXX1111
555555XXXXXX1111
511111XXXXXX1118

5.8.4 カスタム正規表現リダクション・ポリシーの作成

データ・リダクション・ポリシーで正規表現をカスタマイズできます。

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

- カスタム正規表現の設定

- カスタム正規表現リダクション・ポリシーの例

5.8.4.1 カスタム正規表現の設定

カスタム正規表現リダクション・ポリシーを作成するには、DBMS_REDACT.ADD_POLICYプロシージャで次のパラメータを使用します。

- regexp_pattern: このパターンは通常テキスト・リテラルであり、データ型はCHAR、VARCHAR2、NCHARまたはNVARCHAR2のいずれかになります。パターンには、 512バイトまで入力できます。regexp_patternパラメータの正規表現を記述する方法の詳細は、『Oracle Database SQL言語リファレンス』にあるREGEXP_REPLACE SQL関数のpattern引数の説明を参照してください(データ・リダクションがサポートする正規表現の一致は、REGEXP_REPLACE SQL関数のものとよく似ているため)。

- regexp_replace_string: データ型はCHAR、VARCHAR2、NCHARまたはNVARCHAR2のいずれかになります。regexp_replace_stringには、最大500個の部分正規表現への後方参照を\nという書式で指定でき、nは、1から9の数値です。regexp_replace_string設定にバックスラッシュ(\)を含める場合、その前にエスケープ文字(これもバックスラッシュ)を付ける必要があります。たとえば、一致したパターンを文字どおり\2に置換するには(それを一致したパターンで2番目に一致した部分正規表現に置換するのではない場合)、regexp_replace_string設定に\\2を入力します。詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

関連項目:
その他のDBMS_REDACT.ADD_POLICYパラメータについては、「DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文」を参照してください。

5.8.4.2 カスタム正規表現リダクション・ポリシーの例

例5-12では、emp_id列データをリダクションする正規表現の使用方法を示しています。次の例では、regexp_patternパラメータとregexp_replace_stringパラメータが組み合されて、最初に9桁のパターンが検索されます。参照用に、それらは最初の3桁、次の2桁、最後の4桁を含む3つのグループに分割されます。その後、9桁すべてが、元のパターンで検索された3番目のグループ(最後の4桁)と連結されたXXXXXに置換されます。

例5-12 正規表現を使用した部分的にリダクションされたデータ・リダクション

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema          => 'mavis',
object_name            => 'cust_info',
column_name            => 'emp_id',
policy_name            => 'redact_cust_ids',
function_type          => DBMS_REDACT.REGEXP,
expression             => '1=1',
regexp_pattern         => '(\d\d\d)(\d\d)(\d\d\d\d)',
regexp_replace_string  => 'XXXXX\3',
regexp_position        => 1,
regexp_occurrence      => 0,
regexp_match_parameter => 'i',
policy_description     => 'Redacts customer IDs using regular expression',
column_description     => 'emp_id contains employee ID numbers');
END;
/

問合せおよびリダクションされた結果:

SELECT emp_id FROM mavis.cust_info;

EMP_ID
------------
XXXXX1234
XXXXX5678

5.9 ランダム・リダクション・ポリシーの作成

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

- ランダム・リダクション・ポリシーの作成について

- ランダム・リダクション・ポリシーを作成する構文

- ランダム・リダクション・ポリシーの例

5.9.1 ランダム・リダクション・ポリシーの作成について

ランダム・リダクション・ポリシーでは、リダクション済のデータが、列のデータ型に応じて、表示されるたびにランダムに生成された値として、問合せを行ったアプリケーション・ユーザーに表示されます。LOB列がサポートされていないことに注意してください。

5.9.2 ランダム・リダクション・ポリシーを作成する構文

ランダム・リダクション・ポリシーを作成する場合の DBMS_REDACT.ADD_POLICYフィールドは次のとおりです。

DBMS_REDACT.ADD_POLICY (
object_schema           IN VARCHAR2 := NULL,
object_name             IN VARCHAR2,
column_name             IN VARCHAR2 := NULL,
policy_name             IN VARCHAR2,
function_type           IN BINARY_INTEGER := NULL,
expression              IN VARCHAR2,
enable                  IN BOOLEAN := TRUE);

次のように指定します。

- object_schema、object_name、column_name、policy_name、expression、enable: 「DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文」を参照してください。

- function_type: リダクションのタイプの設定に使用するファンクションを指定します。DBMS_REDACT.RANDOMと入力します。
function_typeパラメータを省略する場合、デフォルトのリダクションfunction_type設定は、DBMS_REDACT.FULLです。

列のデータ型は、使用が許可されているfunction_type設定を決定することに注意してください。「データ型に基づいた完全、部分およびランダム・リダクションの比較」を参照してください。

5.9.3 ランダム・リダクション・ポリシーの例

例5-13では、ランダム値の生成方法を示しています。SELECT文を実行するたびに、出力は異なります。

例5-13 ランダムにリダクションされたデータ・リダクションの値

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema   => 'mavis',
object_name     => 'cust_info',
column_name     => 'login_username',
policy_name     => 'redact_cust_rand_username',
function_type   => DBMS_REDACT.RANDOM,
expression      => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''APP_USER''');
END;
/

問合せおよびリダクションされた結果:

SELECT login_username FROM mavis.cust_info;

LOGIN_USERNAME
----------
N[CG{\pTVcK

5.10 リダクションを使用しないポリシーの作成

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

- リダクションを使用しないポリシーの作成について

- リダクションを使用しないポリシーの作成の構文

- リダクションを実行しない例

5.10.1 リダクションを使用しないポリシーの作成について

リダクション・タイプNoneを指定するオプションでは、リダクション・ポリシーが定義された表に対する問合せの結果に影響を与えずに、ポリシーの内部動作をテストできます。このオプションを使用して、リダクション・ポリシー定義を本番環境に適用する前にテストできます。LOB列がサポートされていないことに注意してください。

5.10.2 リダクションを使用しないポリシーを作成する構文

リダクションを使用しないポリシーを作成する場合の DBMS_REDACT.ADD_POLICYフィールドは次のとおりです。

DBMS_REDACT.ADD_POLICY (
object_schema           IN VARCHAR2 := NULL,
object_name             IN VARCHAR2,
column_name             IN VARCHAR2 := NULL,
policy_name             IN VARCHAR2,
function_type           IN BINARY_INTEGER := NULL,
expression              IN VARCHAR2,
enable                  IN BOOLEAN := TRUE);

次のように指定します。

- object_schema、object_name、column_name、policy_name、expression、enable: 「DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文」を参照してください。

- function_type: データ・リダクションのタイプの設定に使用するファンクションを指定します。DBMS_REDACT.NONEと入力します。
function_typeパラメータを省略する場合、デフォルトのリダクションfunction_type設定は、DBMS_REDACT.FULLです。

5.10.3 リダクションを実行しない例

例5-14では、表示されている値のいずれもリダクションしないデータ・リダクション・ポリシーの生成方法を示しています。

例5-14 リダクションされないデータ・リダクション値

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema    => 'mavis',
object_name      => 'cust_info',
column_name      => 'user_name',
policy_name      => 'redact_cust_no_vals',
function_type    => DBMS_REDACT.NONE,
expression       => '1=1');
END;
/

問合せおよびリダクションされた結果:

SELECT user_name FROM mavis.cust_info;

USER_NAME
----------
IDA NEAU

5.11 Oracle Data Redactionポリシーからのユーザーの除外

アクセスしたデータにOracle Data Redactionポリシーを適用しないように、ユーザーを除外することができます。そのためには、そのユーザーにEXEMPT REDACTION POLICYシステム権限を付与します。この権限は信頼できるユーザーにのみ付与してください。

また、この権限を付与されているユーザーに加え、ユーザーSYSも、すべてのデータ・リダクション・ポリシーから除外されます。データ・リダクション・ポリシーを作成するユーザーは、そのユーザーがユーザーSYSであるか、またはEXEMPT REDACTION POLICYシステム権限が付与されている場合を除き、デフォルトでは、データ・リダクション・ポリシーから除外されません。

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

- 表に対するINSERT権限があるユーザーは、データ・リダクション・ポリシーがテーブルに存在するかどうかにかかわらず、リダクションされた列に値を挿入できます。データ・リダクションは、ユーザーが発行したSQL SELECT文(つまり、問合せ)のみに影響しし、ユーザーが発行するその他のSQL(INSERT、UPDATEまたはDELETE文など)には影響しません。(この例の例外は、次の箇条書きを参照してください。)

- 選択されている列(ソース列)のいずれかがデータ・リダクション・ポリシーで保護されている場合、ユーザーは、EXEMPT REDACTION POLICYシステム権限が付与されていないかぎり、CREATE TABLE AS SELECTを実行できません(同様に、ソースがリダクションされた列である場合、DML操作も実行できません)。

- EXEMPT REDACTION POLICYシステム権限は、DBAロールに含まれますが、この権限は、DBAロールが付与された場合のWITH ADMIN OPTIONには含まれないので、明示的にユーザーに付与される必要があります。DBAロールには、EXEMPT REDACTION POLICYシステム権限が付与されるEXP_FULL_DATABASEロールが含まれるため、DBAロールが付与されたユーザーはリダクション・ポリシーから除外されます。

関連項目:
「Oracle Data Redactionポリシーへの管理アクセスの制限」

5.12 Oracle Data Redactionポリシーの変更

DBMS_REDACT.ALTER_POLICYプロシージャを使用すると、Oracle Data Redactionポリシーを変更できます。このプロシージャでは、現在の設定を変更するのみでなく、データベース表の複数の列をリダクションした場合、ポリシーに列を追加できます。

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

- Oracle Data Redactionポリシーの変更について

- DBMS_REDACT.ALTER_POLICYプロシージャの構文

- 様々なDBMS_REDACT.ALTER_POLICY操作に必要なパラメータ

- Oracle Data Redactionポリシーの変更例

5.12.1 Oracle Data Redactionポリシーの変更について

データ・リダクション・ポリシーを変更するには、DBMS_REDACT.ALTER_POLICYプロシージャを使用します。ポリシーがすでに有効化されている場合は、最初に無効化する必要はなく、またポリシーを変更した後でもポリシーは有効化された状態が維持されます。

REDACTION_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せて、既存のデータ・リダクション・ポリシーの名前を検索したり、REDACTION_COLUMNSビューを問い合せて、ポリシー内に指定された列、関数およびパラメータに関する情報を検索できます。完全データ・リダクションを使用するポリシーを現在の値から検索するには、REDACTION_VALUES_FOR_TYPE_FULLデータ・ディクショナリ・ビューを問い合せます。

actionパラメータは、実行する変更の型を指定します。このプロシージャを実行するときは、少なくともobject_nameおよびpolicy_nameパラメータを含める必要があります。

5.12.2 DBMS_REDACT.ALTER_POLICYプロシージャの構文

DBMS_REDACT.ALTER_POLICYプロシージャの構文は次のとおりです。

DBMS_REDACT.ALTER_POLICY (
object_schema          IN VARCHAR2 := NULL,
object_name            IN VARCHAR2 := NULL,
policy_name            IN VARCHAR2,
action                 IN BINARY_INTEGER := DBMS_REDACT.ADD_COLUMN,
column_name            IN VARCHAR2 := NULL,
function_type          IN BINARY_INTEGER := DBMS_REDACT.FULL,
function_parameters    IN VARCHAR2 := NULL,
expression             IN VARCHAR2 := NULL,
regexp_pattern         IN VARCHAR2 := NULL,
regexp_replace_string  IN VARCHAR2 := NULL,
regexp_position        IN BINARY_INTEGER := NULL,
regexp_occurrence      IN BINARY_INTEGER := NULL,
regexp_match_parameter IN VARCHAR2 := NULL,
policy_description     IN VARCHAR2 := NULL,
column_description     IN VARCHAR2 := NULL);

次のように指定します。

- action: 次のいずれかの値を1つ選択し、使用するアクションの種類を定義します。

- DBMS_REDACT.MODIFY_COLUMN (column_nameの値を変更する場合)。

- DBMS_REDACT.ADD_COLUMN ((ポリシーですでに保護されている列に加えて)リダクションのために新しい列を追加する場合)。この設定はactionパラメータのデフォルトです。

- DBMS_REDACT.DROP_COLUMN (列からリダクションを削除する場合)。

- DBMS_REDACT.MODIFY_EXPRESSION (expressionの値を変更する場合)。各ポリシーに指定できるポリシー式は1つのみです。つまり、ポリシー式を変更する際は、既存のポリシー式を新しいポリシー式で置換します。

- DBMS_REDACT.SET_POLICY_DESCRIPTION (ポリシーの説明を変更する場合)。

- DBMS_REDACT.SET_COLUMN_DESCRIPTION (列の説明を変更する場合)。

関連項目:

- 「様々なDBMS_REDACT.ALTER_POLICY操作に必要なパラメータ」

- 残りのパラメータの詳細は、「DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文」を参照してください。

5.12.3 様々なDBMS_REDACT.ALTER_POLICY操作に必要なパラメータ

表5-5では、様々なDBMS_REDACT.ALTER_POLICYの操作の実行に必要なパラメータの組合せを示しています。

表5-5 様々なDBMS_REDACT.ALTER_POLICYの操作に必要なパラメータ

変更内容

設定パラメータ

列の追加または変更

- action (DBMS_REDACT.MODIFY_COLUMN)

- column_name

- function_type

- function_parameters (必要な場合)

- regexp* (必要な場合)

ポリシー式の変更

- action (DBMS_REDACT.MODIFY_EXPRESSION)

- expression

ポリシーの説明の変更

- action (DBMS_REDACT.SET_POLICY_DESCRIPTION)

- policy_description

列の説明の変更

- action (DBMS_REDACT.SET_COLUMN_DESCRIPTION)

- column_description

列の削除

- action (DBMS_REDACT.DROP_COLUMN)

- column_name

5.12.4 Oracle Data Redactionポリシーの変更例

この項の演習は、データ・リダクション・ポリシーを変更して、複数の列をリダクションする方法を示しています。また、ポリシーのexpression設定を変更する方法も示しています。これを実行するには、各段階でDBMS_REDACT.ALTER_POLICYプロシージャを実行する必要があります。

1. ポリシーを作成します。

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema   => 'hr',
object_name     => 'employees',
column_name     => 'email',
policy_name     => 'hr_employees_pol',
function_type   => DBMS_REDACT.FULL,
expression      => '1=1');
END;
/

この時点で、アプリケーション・ユーザー(HRを含む)がemail列を問い合せると、電子メール・アドレスがリダクションされ、空白が1つ表示されます。

CONNECT HR
Enter password: password

SELECT EMAIL FROM HR.EMPLOYEES;

EMAIL
------

2. このポリシーを変更し、hire_date列をリダクションして01-JAN-70を表示します。

BEGIN
DBMS_REDACT.ALTER_POLICY(
object_schema       => 'hr',
object_name         => 'employees',
policy_name         => 'hr_employees_pol',
action              => DBMS_REDACT.ADD_COLUMN,
column_name         => 'hire_date',
function_type       => DBMS_REDACT.PARTIAL,
function_parameters => DBMS_REDACT.REDACT_DATE_EPOCH);
END;
/

hire_date列をリダクションするには、function_typeパラメータを変更して部分リダクションを使用する必要があり、function_parametersパラメータを含めてDBMS_REDACT.REDACT_DATE_EPOCHショートカットを指定する必要があります。この特定の変更では、expressionパラメータは変更する必要がないため、省略されます。email列はリダクションされたままであるため、問合せは次のように表示されます。

SELECT EMAIL, HIRE_DATE FROM HR.EMPLOYEES;

EMAIL   HIRE_DATE
------  ----------
01-JAN-70

3. ユーザーHRが、EMAILおよびHIRE_DATE列に実際のデータを表示できる唯一のユーザーになるように、expressionパラメータを変更します。

BEGIN
DBMS_REDACT.ALTER_POLICY(
object_schema   => 'hr',
object_name     => 'employees',
policy_name     => 'hr_employees_pol',
action          => DBMS_REDACT.MODIFY_EXPRESSION,
expression      => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') != ''HR''');
END;
/

expression設定を変更するには、actionパラメータをDBMS_REDACT.MODIFY_EXPRESSIONに設定し、次に新しい式をexpressionパラメータに入力します。この段階では、ユーザーHRがEMAILおよびHIRE_DATE列を問い合せると、ユーザーは実際のデータを表示できます。

SELECT EMAIL, HIRE_DATE FROM HR.EMPLOYEES;

EMAIL   HIRE_DATE
------  ----------
SKING   17-JUN-03
...

4. ポリシーを削除するには、プロシージャを次のように入力します。

BEGIN
DBMS_REDACT.DROP_POLICY (
object_schema  => 'hr',
object_name    => 'employees',
policy_name    => 'hr_employees_pol');
END;
/

5.13 複数列のリダクション

データ・リダクション・ポリシーで2つ以上の列をリダクションできます。これを行うには、リダクションする最初の列に対するポリシーを作成します。その後、DBMS_REDACT.ALTER_POLICYプロシージャを使用して、次の列を追加します。必要に応じて、action、column_name、function_typeおよびfunction_parametersパラメータ(またはregexp_で始まるパラメータ)を設定して、新しい列に対するリダクションを定義しますが、object_schema、object_name、policy_nameまたはexpressionパラメータは変更しないでください。リダクションされた各列には、それを作成するために使用したのと同じリダクション・パラメータが引き続き使用されます。

例5-15では、既存のデータ・リダクション・ポリシーに列を追加する方法を示しています。この例のactionパラメータは、DBMS_REDACT.ADD_COLUMNを使用して新しい列を追加する必要があることを定義しています。新しい列の名前であるcard_numは、column_nameパラメータによって設定されます。

例5-15 データ・リダクション・ポリシーへの列の追加

BEGIN
DBMS_REDACT.ALTER_POLICY(
object_schema       => 'mavis',
object_name         => 'cust_info',
policy_name         => 'redact_cust_user_ids',
action              => DBMS_REDACT.ADD_COLUMN,
column_name         => 'card_num',
function_type       => DBMS_REDACT.FULL,
function_parameters => '',
expression          => 'SYS_CONTEXT(''SYS_SESSION_ROLES'',''ADM'') = ''TRUE''');
END;
/

5.14 Oracle Data Redactionポリシーの有効化と無効化

作成したデータ・リダクション・ポリシーは、必要に応じて無効化することも再度有効化することもできます。

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

- Oracle Data Redactionポリシーの無効化

- Oracle Data Redactionポリシーの有効化

5.14.1 Oracle Data Redactionポリシーの無効化

データ・リダクション・ポリシーを無効化するには、DBMS_REDACT.DISABLE_POLICYプロシージャを使用します。REDACTION_POLICIESビューのPOLICY_NAMEおよびENABLE列を問い合せると、既存のデータ・リダクション・ポリシーの名前およびそれらが有効化されているかがわかります。ただし、ポリシーが存在している場合は、元のポリシーが無効化されていても表またはビューに他のポリシーを作成することはできません。つまり、同じ表の列に別のポリシーを作成する場合、最初のポリシーを削除してから新しいポリシーを作成して使用する必要があります。

構文は、次のとおりです。

DBMS_REDACT.DISABLE_POLICY (
object_schema       IN VARCHAR2 DEFAULT NULL,
object_name         IN VARCHAR2,
policy_name         IN VARCHAR2);

次のように指定します。

- object_schema: データ・リダクション・ポリシーを適用するオブジェクトのスキーマを指定します。この設定を省略(またはNULLを入力)する場合、Oracle Databaseは現在のスキーマ名を使用します。

- object_name: データ・リダクション・ポリシーに使用する表またはビューの名前を指定します。

- policy_name: 無効化するポリシーの名前を指定します。

例5-16では、データ・リダクション・ポリシーを無効化する方法を示しています。

例5-16 データ・リダクション・ポリシーの無効化

BEGIN
DBMS_REDACT.DISABLE_POLICY (
object_schema  => 'mavis',
object_name    => 'cust_info',
policy_name    => 'redact_cust_user_ids');
END;
/

5.14.2 Oracle Data Redactionポリシーの有効化

データ・リダクション・ポリシーを有効化するには、DBMS_REDACT.ENABLE_POLICYプロシージャを使用します。新しいポリシーを作成した後、それを有効化する必要はなく、作成プロセスによって処理されることに注意してください。既存のデータ・リダクション・ポリシーの名前およびそれらが有効化されているかを確認するには、REDACTION_POLICIESビューのPOLICY_NAMEおよびENABLE列を問い合せます。プロシージャを実行した後、すぐに有効になります。

構文は、次のとおりです。

DBMS_REDACT.ENABLE_POLICY (
object_schema       IN VARCHAR2 DEFAULT NULL,
object_name         IN VARCHAR2,
policy_name         IN VARCHAR2);

次のように指定します。

- object_schema: データ・リダクション・ポリシーを適用するオブジェクトのスキーマを指定します。この設定を省略(またはNULLを入力)する場合、Oracle Databaseは現在のスキーマ名を使用します。

- object_name: データ・リダクション・ポリシーに使用する表またはビューの名前を指定します。

- policy_name: 有効化するポリシーの名前を指定します。

例5-17では、データ・リダクション・ポリシーを有効化する方法を示しています。

例5-17 データ・リダクション・ポリシーの有効化

BEGIN
DBMS_REDACT.ENABLE_POLICY (
object_schema  => 'mavis',
object_name    => 'cust_info',
policy_name    => 'redact_cust_user_ids');
END;
/

5.15 Oracle Data Redactionポリシーの削除

データ・リダクション・ポリシーを削除するには、DBMS_REDACT.DROP_POLICYプロシージャを使用します。既存のデータ・リダクション・ポリシーの名前を確認するには、REDACTION_POLICIESビューのPOLICY_NAME列を問い合せます。ポリシーは、削除するときに有効化または無効化できます。プロシージャを実行した後、削除はすぐに有効になります。

Oracle Data Redactionポリシーに関連付けられた表またはビューを削除すると、ポリシーは自動的に削除されます。ベスト・プラクティスは、まずポリシーを削除し、その後、表またはビューを削除することです。詳細は、「ごみ箱が有効になっている場合のポリシーの削除」を参照してください。

データ・リダクション・ポリシーを削除する構文は次のとおりです。

DBMS_REDACT.DROP_POLICY (
object_schema       IN VARCHAR2 DEFAULT NULL,
object_name         IN VARCHAR2,
policy_name         IN VARCHAR2);

次のように指定します。

- object_schema: データ・リダクション・ポリシーが適用されるオブジェクトのスキーマを指定します。この設定を省略(またはNULLを入力)する場合、Oracle Databaseは現在のスキーマ名を使用します。

- object_name: データ・リダクション・ポリシーに使用する表またはビューの名前を指定します。

- policy_name: 削除するポリシーの名前を指定します。

例5-18では、データ・リダクション・ポリシーを削除する方法を示しています。

例5-18 データ・リダクション・ポリシーの削除

BEGIN
DBMS_REDACT.DROP_POLICY (
object_schema  => 'mavis',
object_name    => 'cust_info',
policy_name    => 'redact_cust_user_ids');
END;
/

5.16例: Oracle Data Redactionが表およびビューに与える影響

Oracle Data Redactionポリシーは、ターゲットの表またはビュー、およびマテリアライズド・ビューなど、このターゲットに作成された任意のビューに適用されます。(マテリアライズド・ビューでデータ・リダクション・ポリシーを作成する場合の制限事項は、「マテリアライズド・ビューに対するポリシーの作成」を参照してください。)ビュー・チェーン(別のビューに基づいたビュー)を作成した場合、データ・リダクション・ポリシーはこのビュー・チェーンにも適用されます。ポリシーはこのビュー・チェーン全体に適用されますが、これらのビューのいずれかに別のポリシーが作成された場合、影響を受ける後続のビューの列には、この新しいポリシーが優先されて適用されます。

この概念の機能を理解するには、次の例を試してください。

1. 次の表を作成および入力します。

CREATE TABLE TABLE1 (TC1 VARCHAR2(20), TN1 NUMBER(10));

INSERT INTO TABLE1 VALUES ('5111-1111-1111-1118', 987654329);

2. 次のビューを作成して、表table1のビュー・チェーンを構成します。

CREATE VIEW view1 (vc1, vn1) AS SELECT tc1, tn1 FROM table1;
CREATE VIEW view2 (vc2, vn2) AS SELECT vc1, vn1 FROM view1;
CREATE VIEW view3 (vc3, vn3) AS SELECT vc2, vn2 FROM view2;

3. 表table1に次のポリシーを作成して、tc1列の表示をランダム値に変更します。

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema    => 'NULL',
object_name      => 'table1',
column_name      => 'tc1',
policy_name      => 't1pol',
function_type    => DBMS_REDACT.RANDOM,
expression       => '1=1');
END;
/

4. table1.tc1、view1.vc1、view2.vc2およびview3.vc3を問い合せると、これらすべては、t1polデータ・リダクション・ポリシーに基づいてランダムな出力を生成します。
次に例を示します。

SELECT vc3 FROM view3;

VC3
-----------------------
M,v]3(z+U4~e;0#3]<'

5. view2に次のポリシーを作成して、何も表示されないよう列vc2の出力を変更します(つまり、空白を出力します)。

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema    => 'NULL',
object_name      => 'view2',
column_name      => 'vc2',
policy_name      => 'v2pol',
function_type    => DBMS_REDACT.FULL,
expression       => '1=1');
END;
/

6. ビューview2およびview3を問い合せます。

SELECT vc2 FROM view2;
SELECT vc3 FROM view3;

いずれの問合せも同じ出力(空白)を生成し、これらのビューでは、ポリシーv2polがベース表のポリシーt1polをどのようにオーバーライドするかを示します。

7. 表table1およびビューview1を問い合せます。

SELECT tc1 FROM table1;
SELECT vc1 FROM view1;

table1およびview1は、チェーン内での優先度が低いため、これらは、ポリシーv2pol1の影響を受けません。いずれにも、ランダムな値が出力されます。

8. view1に次のポリシーを作成して、列vn1の数値の最初の5桁を9にリダクションします。

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema       => 'NULL',
object_name         => 'view1',
column_name         => 'vn1',
policy_name         => 'v1pol',
function_type       => DBMS_REDACT.PARTIAL,
function_parameters => '9,1,5',
expression          => '1=1');
END;
/

9. ビューview1を問い合せます。

SELECT vc1, vn1 FROM view1;

VC1                                   VN1
------------------------------------- ----------------
:'F6`B<dB/N>hJDlJ7V                   999994329

ここでは、ビューview1は2つのポリシーを使用しています。ポリシーt1pol (表table1)は、引き続き列vc1をリダクションし、ポリシーv1pol (ビューview1)は列vn1をリダクションします。

10. ビューview2を問い合せます。

SELECT vc2, vn2 FROM view2;

VC2                                   VN2
------------------------------------- ----------------
999994329

ビューview2でも、2つのポリシーを使用しています(ポリシーv2polは、列vc2の空白文字を生成し、ビューview1のポリシーv1polはvn2の数値を部分リダクションします)。

11. ビューview3を問い合せます。

SELECT vc3, vn3 FROM view3;

VC3                                   VN3
------------------------------------- ----------------
999994329

ビューview3は、直接適用されるポリシーがないため、view1およびview2の両方のポリシー設定を使用します。そのため、出力はview2の出力と同じです。

12. ポリシーを無効にします。
ポリシーを無効化した場合、ポリシーの影響を受けるビュー・チェーンのすべてのビューの出力も変更されます。

たとえば、表table1に作成されたポリシーt1polを無効化します。

EXEC DBMS_REDACT.DISABLE_POLICY (NULL, 'TABLE1', 'T1POL');

ここで、もう一度view1を問い合せます。

SELECT vc1, vn1 FROM view1;

VC1                                   VN1
------------------------------------- ----------------
5111-1111-1111-1118                   999994329

列vc1には、ベース表table1の値が表示されます。列vn1には、ポリシーv2polによってリダクションされた値が引き続き表示されます。

13. この演習のコンポーネントを削除するには、次のように実行します。

EXEC DBMS_REDACT.DROP_POLICY (NULL, 'table1', 't1pol');
EXEC DBMS_REDACT.DROP_POLICY (NULL, 'view1', 'v1pol');
EXEC DBMS_REDACT.DROP_POLICY (NULL, 'view2', 'v2pol');
DROP TABLE table1;
DROP VIEW view1;
DROP VIEW view2;
DROP VIEW view3;

図5-1では、これらのポリシーが、前の例で説明しているビュー・チェーンに与える影響を示しています。

図5-1 Oracle Data Redactionポリシーのビュー・チェーンでの動作内容

関連項目:
ごみ箱が有効になっている場合にOracle Data Redactionポリシーに関連付けられた表またはビューを削除したときのデータ・リダクション・ポリシーが受ける影響の詳細は、「ごみ箱が有効になっている場合のポリシーの削除」を参照してください。

5.17 例: SQL式を使用したリダクションされた値を含むレポートの作成

SQL式を使用して、Oracle Data Redactionポリシーが定義された列に基づくレポートを作成できます。SQL式に使用される値はリダクションされます。このリダクションはSQL式が評価される前に実行され、レポートに表示される結果の値は、リダクションされたSQL式の結果全体ではなく、リダクションされた値に対して評価されたSQL式の最終結果になります。

たとえば、HR.EMPLOYEES表に対して次のようなデータ・リダクション・ポリシーを作成した場合、これにより9という数値を持つSALARY列の最初の4桁の値およびCOMMISSION_PCT列の最初の1桁の値が9に置換されます。

BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema          => 'HR',
object_name            => 'EMPLOYEES',
column_name            => 'SALARY',
column_description     => 'emp_sal_comm shows employee salary and commission',
policy_name            => 'redact_emp_sal_comm',
policy_description     => 'Partially redacts the emp_sal_comm column',
function_type          => DBMS_REDACT.PARTIAL,
function_parameters    => '9,1,4',
expression             => '1=1');
END;
/
BEGIN
DBMS_REDACT.ALTER_POLICY(
object_schema          => 'HR',
object_name            => 'EMPLOYEES',
policy_name            => 'redact_emp_sal_comm',
action                 => DBMS_REDACT.ADD_COLUMN,
column_name            => 'COMMISSION_PCT',
function_type          => DBMS_REDACT.PARTIAL,
function_parameters    => '9,1,1',
expression             => '1=1');
END;
/

HRスキーマにログインし、次に、従業員の給料と歩合を組み合せるためのSQL式(SALARY + COMMISSION_PCT)を使用した次のレポートを実行します。

SELECT (SALARY + COMMISSION_PCT) total_emp_compensation
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 80;

TOTAL_EMP_COMPENSATION
----------------------
9999.9
9999.95
99990.95
...

レポートには、連結など様々なSQL式を使用できます。次に例を示します。

SELECT 'Employee ID '          || EMPLOYEE_ID ||
' has a salary of '     || SALARY ||
' and a commission of ' || COMMISSION_PCT || '.' detailed_emp_compensation
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 80
ORDER BY EMPLOYEE_ID;

DETAILED_EMP_COMPENSATION
-------------------------------------------------------------
Employee ID 150 has a salary of 99990 and a commission of .9.
Employee ID 151 has a salary of 9999 and a commission of .95.
Employee ID 152 has a salary of 9999 and a commission of .95.
...

5.18 Oracle Data Redactionポリシーに関する情報の検索

表5-6では、データ・リダクション・ポリシーに関する情報を提供するデータ・ディクショナリ・ビューの一覧を表示しています。これらのビューを問い合せる前に、SELECT_CATALOG_ROLEロールを付与する必要があります。

表5-6 データ・リダクション・ビュー

ビュー

説明

REDACTION_COLUMNS

データベースのリダクションされたすべての列を示し、存在する列内の表またはビューの所有者、オブジェクト名、列名、リダクション関数のタイプ、リダクション関数に対するパラメータ(該当する場合)およびリダクション・ポリシーの説明の情報を提供します。

REDACTION_POLICIES

データベースのすべてのデータ・リダクション・ポリシーを示します。これには、オブジェクトの所有者、オブジェクト名、ポリシー名、ポリシー式およびポリシーが有効かどうかに関する情報と、データ・リダクション・ポリシーの説明が含まれます。

REDACTION_VALUES_FOR_TYPE_FULL

完全リダクションを使用するデータ・リダクション・ポリシーの現在のリダクション値を表示します。

6 Oracle Data RedactionとOracle Database機能の併用

Oracle Data Redactionを、Oracle Virtual Private DatabaseまたはOracle Enterprise Manager Data Masking and Subsetting Packなどの他のOracle製品とともに使用することができます。

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

- Oracle Data Redactionと、DMLおよびDDL操作

- ネストした関数、インライン・ビューおよびWHERE句でのOracle Data Redaction

- Oracle Data Redactionおよび集計関数

- Oracle Data Redactionおよびオブジェクト型

- Oracle Data Redactionおよびエディション

- Oracle Data RedactionとOracle Virtual Private Database

- Oracle Data RedactionとOracle Database Vault

- Oracle Data RedactionとEXPDPユーティリティのaccess_methodパラメータ

- Oracle Data RedactionとData Masking and Subsetting Pack

6.1 Oracle Data Redactionと、DMLおよびDDL操作

主にアプリケーション問合せの表示結果をリダクションするためにOracle Data Redactionを使用する場合でも、それがDMLおよびDDL操作に与える影響を理解しておく必要があります。特に、リダクションされた列に対して非定型問合せを発行するユーザーがいる場合に、これが当てはまります。

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

- Oracle Data Redactionは、結果は表示されませんが、DML文のRETURNING INTO句を問合せとして処理します。バッファに送信されるのは、RETURNING INTO句が通常のSQL問合せとして実行された場合に表示される結果で、DML文の一部として実行された場合の結果ではありません。アプリケーションがRETURNING INTOの値を格納したバッファ上でさらに処理を実行する場合、バッファ内でリダクションされた結果を検索することができないため、アプリケーションの変更を検討してください。

- リダクションされた列がDMLまたはDDL操作のソースとして現れた場合、Oracle Data Redactionは、これをポリシーを回避する試みとみなし、EXEMPT REDACTION POLICYシステム権限がないかぎり、「ORA-28081: 権限が不十分です - コマンドはリダクション済のオブジェクトを参照しています。」エラーを表示して拒否します。内部ではOracle Data Pumpがこの種の操作を実行するため、リダクションされた列がある表のスキーマ・レベルのエクスポートを実行する必要があるユーザーには、EXEMPT REDACTION POLICYシステム権限の付与が必要になる可能性があります。

6.2 ネストした関数、インライン・ビューおよびWHERE句でのOracle Data Redaction

Oracle Data Redactionポリシーは次のように動作します。

- ネストした関数は、最も内側からリダクションされます。たとえば、SELECT SUM(AVG(TO_NUMBER(((X))) FROM HR.EMPLOYEES WHERE ...では、最初にTO_NUMBERがリダクションされ、次にAVGが、最後にSUM関数がリダクションされます。

- インライン・ビューは、最も外側からリダクションされます。たとえば、SELECT XYZ … AS SELECT A… AS SELECT B… AS SELECT C…では、最初にSELECT XYZがリダクションされ、次にAS SELECT A、その次にAS SELECT Bという順序でリダクションされます。AS SELECT Cは最後にリダクションされます。

- WHERE句はリダクションされません。データ・リダクションでは、列のSELECTリストのデータのみがリダクションされます。

6.3 Oracle Data Redactionおよび集計関数

Oracle Data Redactionは列の各行の値を動的に変更するため、集計関数を使用する特定のSQL問合せでは、行の値が静的であると仮定しているデータベース最適化を最大限に利用できません。集計関数をコールするSQL問合せでは、リダクションが原因でパフォーマンス・オーバーヘッドが発生する可能性があります。

6.4 Oracle Data Redactionおよびオブジェクト型

オブジェクト型をリダクションすることはできません。これは、データベース・リダクションでは、オブジェクト型の構成に使用される可能性のある異なるすべての方法を処理できないためです。

6.5 Oracle Data Redactionおよびエディション

エディション化ビューはリダクションできません。また、いずれのエディション化ビューの定義でも、リダクションされた列を使用することはできません。

6.6 Oracle Data RedactionとOracle Virtual Private Database

仮想プライベート・データベース述語を含む仮想プライベート・データベース・インライン・ビューは実際の値で動作するため、Oracle Virtual Private Databaseポリシーは、Oracle Data Redactionの影響を受けません。

Oracle Data Redactionは、次の点でOracle Virtual Private Databaseとは異なります。

- Oracle Data Redactionは、NULLリダクションのみをサポートするOracle Virtual Private Databaseよりも多くのリダクション機能を提供します。多くのアプリケーションでは、NULLリダクションを使用できないため、そのようなアプリケーションでは、データ・リダクションは有効な解決策です。

- Oracle Virtual Private Databaseポリシーは静的、動的および文脈依存を使用できる一方、データ・リダクション・ポリシーは、静的および文脈依存のポリシー表現のみを使用できます。

- データ・リダクションは、表またはビューに定義するポリシーを1つのみを許可する一方、オブジェクトには、複数の仮想プライベート・データベースのポリシーを定義できます。

- データ・リダクションは、アプリケーション・ユーザーが、シノニムを使用するデータ・リダクション・ポリシーで保護されるオブジェクトへのアクセスを試みたときに実行されますが、(Oracle Virtual Private Databaseと違って)シノニム自体に直接ポリシーを作成することはできません。

6.7 Oracle Data RedactionとOracle Database Vault

Oracle Database Vault環境で、Oracle Data Redactionを使用できます。たとえば、オブジェクトがOracle Database Vaultレルムに含まれている場合、レルムの所有者または参加者の認証済リストに属していないユーザーは、ユーザーにEXEMPT REDACTION POLICY権限が付与されているかどうかにかかわらず、オブジェクト・データを表示できません。ユーザーがデータに対してDMLまたはDDL文を試みると、エラー・メッセージが表示されます。

6.8 Oracle Data RedactionとEXPDPユーティリティのaccess_methodパラメータ

Oracle Data Pumpを使用して、新しいデータ・ポンプのデフォルト設定(direct_path)に基づいてデータベースの全体エクスポート操作を実行し、理解できないエラー・メッセージが返された場合、この項を使用して、エラーをより正確に理解できるような方法で操作を繰り返してください。

access_methodパラメータがdirect_pathに設定されたOracle Data Pump Export (EXPDP)ユーティリティを使用してデータをスキーマからエクスポートしようとするとき、このスキーマにデータ・リダクション・ポリシーが定義されているオブジェクトが含まれていると、次のエラー・メッセージが表示される場合があり、エクスポート操作は失敗します。

ORA-31696: unable to export/import TABLE_DATA:"schema.table" using client specified DIRECT_PATH method

この問題は、スキーマ・レベルのエクスポートを、EXP_FULL_DATABASEロールを付与されていないユーザーとして実行する場合にのみ発生します。EXP_FULL_DATABASEロールを必要とするデータベースの完全エクスポート時には発生しません。EXP_FULL_DATABASEロールにはEXEMPT REDACTION POLICYシステム権限が含まれており、これによりデータ・リダクション・ポリシーが無視されます。

潜在的な問題を見つけるには、EXPDP起動を再度試してください。ただし、access_methodパラメータをdirect_pathには設定しないでください。かわりに、automaticとexternal_tableのどちらかを使用してください。潜在的な問題とは、たとえば次のような権限の問題です。

ORA-28081: Insufficient privileges - the command references a redacted object.

関連項目:
データ・ポンプ・エクスポートの使用に関する詳細は、『Oracle Databaseユーティリティ』を参照してください。

6.9 Oracle Data RedactionとData Masking and Subsetting Pack

Oracle Enterprise Manager Data Masking and Subsetting Packでは、本番データベースのデータを取得し、そのデータを一括でマスクして、出力後のマスクされたデータを開発またはテスト・コピーに配置することで、本番データベースの開発またはテスト・コピーを作成できます。Oracle Enterprise Manager Data Masking and Subsetting Packですでにマスクされたデータを含む列をリダクションする場合は、データ・リダクション・ポリシーを本番以外のデータベースに適用してもかまいません。

データを開発およびテスト環境に移行する場合は、Oracle Enterprise Manager Data Masking and Subsetting Packを使用して、必ずデータ・セットをマスクしてください。データ・リダクションは、アプリケーション・コードを変更せずに、複数のアプリケーション間で一貫した方法で、起動時に本番アプリケーションをリダクションすることを主な目的として設計されています。

関連項目:
データ・マスキングの詳細は、『Oracle Database Real Application Testingユーザーズ・ガイド』を参照してください。

7 Oracle Data Redactionのセキュリティ・ガイドライン

この章では、Oracle Data Redactionを使用する場合の一連のセキュリティ・ガイドラインを示します。

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

- 一般的な使用上のガイドライン

- Oracle Data Redactionポリシーへの管理アクセスの制限

- Oracle Data RedactionがSYS、SYSTEMおよびデフォルト・スキーマに与える影響

- SYS_CONTEXT属性に依存するポリシー式の記述

- マテリアライズド・ビューに対するポリシーの作成

- ごみ箱が有効になっている場合のポリシーの削除

7.1 一般的な使用上のガイドライン

- Oracle Data Redactionは、データベースに対して直接非定型な問合せを実行する権限を持つデータベース・ユーザーによって行われる攻撃に対する保護目的では使用できません。

- Oracle Data Redactionは、推論によって実際の値を判断しようと試みる総当たりSQL問合せを実行するユーザーに対する保護目的では使用できません。

- Oracle Data Redactionは、データベースおよびアプリケーションのコンテキスト値に依存します。アプリケーションの場合、コンテキスト値を適切に初期化するのは、アプリケーションの役割です。

- Oracle Data Redactionは、SYSDBA管理権限を使用してログインしているユーザーには適用されません。

- データ・リダクション・ポリシーの管理下から実際のデータをコピーしようとする特定のDDL文(CREATE TABLE AS SELECTやINSERT AS SELECT)は、デフォルトでブロックされますが、ユーザーにEXEMPT REDACTION POLICYシステム権限を付与することでこの動作を無効にできます。

- Oracle Data Redactionは、日常のデータベース操作(バックアップおよびリカバリ、Oracle Data Pumpエクスポート/インポート、Oracle Data Guard操作、レプリケーションなど)には影響しません。

- SQL文のGROUP BY句で使用されるSQL式にリダクションされた列を含めることはできません。Oracleでは、このような動作をサポートせず、 「ORA-00979: GROUP BYの式ではありません。」エラーが発生します。これはSELECTリスト内の式がデータ・リダクションにより内部で変更される必要があるために発生しますが、GROUP BY句(その時点ではデータ・リダクションにより更新されていない)を処理するときに見つからなくなっている原因となり、この予期せぬエラー・メッセージが発生します。

7.2 Oracle Data Redactionポリシーへの管理アクセスの制限

DBMS_REDACTパッケージに対するEXECUTE権限を持つユーザーを制限し、REDACTION_POLICIESおよびREDACTION_COLUMNSビューに対するSELECT権限を持つユーザーを制限することによって、データ・リダクション・ポリシーを作成、表示および編集できるユーザーのリストを制限できます。また、EXEMPT REDACTION POLICY権限を制限することによって、リダクションから除外されるユーザーも制限できます。Oracle Database Vaultを使用して、権限ユーザーのアクセスを制限すると、レルムを使用してEXEMPT REDACTION POLICYの付与を制限できます。

関連項目:

- 「Oracle Data Redactionポリシーからのユーザーの除外」

- 「Oracle Data RedactionとOracle Database Vault」

- Oracle Database Vaultの詳細は、『Oracle Database Vault管理者ガイド』を参照してください。

7.3 Oracle Data RedactionがSYS、SYSTEMおよびデフォルト・スキーマに与える影響

ユーザーSYSおよびSYSTEMはいずれも自動的にEXEMPT REDACTION POLICYシステム権限が付与されています。(SYSTEMには、EXEMPT REDACTION POLICYシステム権限を含むEXP_FULL_DATABASEロールが付与されています。)そのため、SYSおよびSYSTEMユーザーは、常に既存のOracle Data Redactionポリシーをバイパスでき、またデータ・リダクション・ポリシーが定義されている表(またはビュー)のデータを常に表示できます。

次のガイドラインに従ってください。

- デフォルトのOracle Databaseスキーマには、データ・リダクション・ポリシーを作成しないでください。SYSおよびSYSTEMスキーマも同様です。

- 追加ロールにEXEMPT DATA REDACTIONシステム権限を付与すると、ユーザーにOracle Data Redactionのバイパスを許す場合があることに注意してください。権限受領者ロールが追加のロールに付与されている可能性があるからです。

- デフォルトで付与されているロールからは、EXEMPT DATA REDACTIONシステム権限を取り消さないでください。

7.4 SYS_CONTEXT属性に依存するポリシー式の記述

アプリケーションによって移入されるSYS_CONTEXT属性に依存するポリシー式を記述する場合、この属性はアプリケーションによって常に移入されるわけではないので、注意してください。ユーザーが(アプリケーションを通じてではなく)なんらかの方法で直接接続した場合、SYS_CONTEXT属性は移入されません。ポリシー式でこのNULLシナリオを処理しないと、意図せずに実際のデータを問合せユーザーに開示してしまうことがあります。

たとえば、クライアント識別子の値がSUPERVISORであるユーザー以外のすべてのユーザーに問合せ結果をリダクションする目的でポリシー式を作成するとします。次の式では、CLIENT_IDENTIFIERの値がNULLである問合せユーザーに、意図せずに実際のデータが表示されます。

SYS_CONTEXT('USERENV', 'CLIENT_IDENTIFIER') IS NOT 'SUPERVISOR'

ポリシー式をより厳密にすると、クライアント識別子が設定されていない場合(NULL値である場合)、問合せ結果はリダクションされます。

SYS_CONTEXT('USERENV', 'CLIENT_IDENTIFIER') IS NOT 'SUPERVISOR' OR IS NULL

SQLでは、NULLとの比較は未定義であるため、FALSEになりますが、リダクションはポリシー式がTRUEに評価された場合にのみ実行されることに注意してください。

7.5 マテリアライズド・ビューに対するポリシーの作成

Oracle Data Redactionポリシーは、マテリアライズド・ビューやその実表に作成できます。ただし、マテリアライズド・ビューの作成者(または、マテリアライズド・ビューのリフレッシュを実行するユーザー)は、データ・リダクション・ポリシーによってブロックされないようにしてください。つまり、マテリアライズド・ビューの作成操作やリフレッシュ操作を実行するユーザーは、データ・リダクション・ポリシーから除外する必要があります。ベスト・プラクティスは、新しいマテリアライズド・ビューを作成する場合に、それを実際の表のコピーとして扱い、個別のデータ・リダクション・ポリシーを作成してそれを保護することです。

7.6 ごみ箱が有効になっている場合のポリシーの削除

ごみ箱機能が有効になっている場合にOracle Data Redactionポリシーが定義されている表またはビューを削除するか、または、ごみ箱を空にする前にREDACTION_COLUMNSまたはREDACTION_POLICIESデータ・ディクショナリ・ビューを問い合せると、BIN$... (BIN$1Xu5PSW5VaPgQxGS5AoAEA==$0など)のオブジェクト名が表示されます。これは正常な動作です。これらのポリシーは、ごみ箱を空にすると削除されます。

ごみ箱が有効になっているかどうかを確認するには、SQL*PlusのSHOW PARAMETER RECYCLEBINコマンドを実行します。

関連項目:
ごみ箱からのオブジェクトの消去の詳細は、『Oracle Database管理者ガイド』を参照してください。

第III部

データの暗号化および整合性

ここでは、Oracleデータベースで透過的なデータ暗号化を実装し、管理する方法について説明します。また、OracleネットワークおよびデータベースへのシンJDBC接続に対して、Oracle Advanced Securityのデータ暗号化と整合性を構成する方法についても説明します。

第II部は、次の章で構成されています。

- 第8章「透過的データ暗号化を使用した格納済データの保護」

- 第9章「Oracleサーバーとクライアントに対するネットワーク・データの暗号化および整合性の構成」

- 第10章「シンJDBCクライアントに対するネットワーク認証、暗号化および整合性の構成」

8 透過的データ暗号化を使用した格納済データの保護

透過的データ暗号化(TDE)を使用すると、表および表領域に格納する機密データ(クレジット・カード番号など)を暗号化できます。暗号化されたデータは、アクセス権を持つデータベース・ユーザーやアプリケーションに対して透過的に復号化されます。TDEは、ストレージ・メディアやデータ・ファイルが盗まれた場合に、メディアに格納されているデータを保護するのに役立ちます。

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

- 透過的データ暗号化について

- 透過的データ暗号化の使用

- 透過的データ暗号化の管理

- 例: TDE列暗号化とTDE表領域暗号化のスタート・ガイド

- 透過的データ暗号化のトラブルシューティング

- 透過的データ暗号化の参照情報

8.1 透過的データ暗号化について

Oracle Databaseの認証、認可および監査メカニズムは、データベース内のデータを保護するためのものであり、オペレーティング・システムのデータ・ファイルに格納されているデータの保護には使用されません。このようなデータ・ファイルを保護する目的では、透過的データ暗号化(TDE)を使用します。TDEを使用すると、データ・ファイルに格納されている機密データを暗号化できます。許可なく復号化されるのを防止するため、TDEにより暗号化鍵はデータベース外部のセキュリティ・モジュールに格納されます。

データベース・ユーザーやアプリケーションは、鍵の格納を管理したり、補助の表、ビューおよびトリガーを作成する必要はありません。機密データを処理するアプリケーションでTDEを使用すると、アプリケーションをほとんどあるいはまったく変更せずに、強力なデータ暗号化を実現できます。

TDEは、表の列に格納された機密データ(クレジット・カード番号や社会保障番号など)を保護する目的で使用します。また、TDEを使用して表領域全体を暗号化することもできます。

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

- 透過的データ暗号化を使用する利点

- 透過的データ暗号化のタイプ

8.1.1 透過的データ暗号化を使用する利点

透過的データ暗号化(TDE)には、次の利点があります。

- セキュリティ管理者の場合、ストレージ・メディアまたはデータ・ファイルが盗み出された場合にも機密データを保護できます。

- TDEを実装すると、セキュリティに関連する法的コンプライアンスの問題への対応に役立ちます。

- 権限のあるユーザーやアプリケーションに対しては、データを復号化するためのトリガーやビューを作成する必要がありません。表内のデータは、データベース・ユーザーやアプリケーションに対して透過的に復号化されます。

- データベース・ユーザーやアプリケーションは、アクセスしているデータが暗号化された形式で格納されていることを認識する必要がありません。データは、データベース・ユーザーやアプリケーションに対して透過的に復号化されます。

- 暗号化されたデータを処理するためにアプリケーションを変更する必要がありません。データの暗号化/復号化は、データベースにより管理されます。

- 鍵管理操作は自動化されます。ユーザーやアプリケーションが暗号化鍵を管理する必要はありません。

8.1.2 透過的データ暗号化のタイプ

透過的データ暗号化(TDE)列暗号化を使用すると、選択した表の列に格納されている機密データを暗号化できます。TDE表領域暗号化を使用すると、表領域に格納されているすべてのデータを暗号化できます。

TDE列暗号化とTDE表領域暗号化では、どちらも2層の鍵ベース・アーキテクチャを使用します。暗号化されたデータを取得しても、許可された復号化が行われるまでは理解不能です。この復号化は、表へのアクセスを許可されたユーザーに対して自動的に行われます。

次の各項では、TDE列暗号化とTDE表領域暗号化について説明します。

- TDE列暗号化

- TDE表領域暗号化

8.1.2.1 TDE列暗号化

TDE列暗号化は、表の列に格納された機密データ(クレジット・カード番号や社会保障番号など)を保護する目的で使用します。TDE列暗号化では、2層の鍵ベース・アーキテクチャを使用して、機密の表の列を透過的に暗号化および復号化します。TDEマスター暗号化鍵は外部セキュリティ・モジュールに格納され、この外部セキュリティ・モジュールは、Oracleウォレットまたはハードウェア・セキュリティ・モジュール(HSM)にできます。このマスター暗号化鍵は表キーの暗号化に使用され、表キーは表の列のデータの暗号化と復号化に使用されます。

図8-1に、TDE列暗号化プロセスの概要を示します。

図8-1 TDE列暗号化の概要

図8-1に示すように、マスター暗号化鍵は、データベースの外部にあり、セキュリティ管理者のみがアクセスできる外部セキュリティ・モジュールに格納されます。Oracleでは、この外部セキュリティ・モジュールとして、この章で説明するOracleウォレットまたはハードウェア・セキュリティ・モジュール(HSM)を使用します。このようにマスター暗号化鍵を格納することで、不正使用を防止できます。

外部セキュリティ・モジュール(ウォレット/HSM)を使用すると、通常のプログラム機能と暗号化操作が分離されるため、データベース管理者とセキュリティ管理者の責務を分離できます。データベース管理者にはウォレット・パスワードを知らせずに、セキュリティ管理者にパスワードの提供を要求できるため、セキュリティが強化されます。

表に暗号化列が含まれる場合、暗号化列の数に関係なく、単一の表キーが使用されます。すべての表の表キーは、データベース・サーバーのマスター暗号化鍵で暗号化され、データベース内のディクショナリ表に格納されます。暗号化されていない鍵が格納されることはありません。

8.1.2.2 TDE表領域暗号化

TDE表領域暗号化を使用すると、表領域全体を暗号化できます。暗号化されている表領域に作成されたオブジェクトはすべて自動的に暗号化されます。TDE表領域暗号化は、表内の機密データを保護する場合に便利です。暗号化が必要な列を判断するために、各表の列を詳細に分析する必要はありません。

また、TDE表領域暗号化は、バルク暗号化とキャッシュを利用して、高度なパフォーマンスを実現します。アプリケーションのパフォーマンスに対する実際の影響は様々ですが、パフォーマンスのオーバーヘッドは約5%から8%までと推定されます。

TDE表領域暗号化は、表の複数の列に機密データが含まれている場合や個々の列ではなく表全体を保護する場合に、TDE列暗号化にかわる有効な代替手段です。

TDE表領域暗号化では、暗号化された表領域内に格納されているデータおよびそれに対応するREDOデータがすべて暗号化されます。この場合、BLOBやCLOBなどの内部ラージ・オブジェクト(LOB)も暗号化の対象となります。TDE表領域暗号化では、表領域の外部に格納されているデータは暗号化されません。たとえば、データベース外部に格納されるBFILEデータは暗号化されません。暗号化された表領域内でBFILE列を含む表を作成した場合、この特別な列は暗号化されません。ただし、SecureFile LOBはOracle Database 11g リリース1 (11.1)からサポートされています。

暗号化された表領域内のデータはすべて、暗号化された形式でディスク上に格納されます。データの表示または変更に必要な権限を付与されているユーザーに対しては、データが透過的に復号化されます。データベース・ユーザーやアプリケーションは、特定の表がディスク上で暗号化されているかどうかを認識する必要はありません。ディスク上のデータ・ファイルまたはバックアップ・メディアが盗まれた場合でも、データの安全性は損なわれません。

TDE表領域暗号化では、2層の鍵ベース・アーキテクチャを使用して、表領域を透過的に暗号化(および復号化)します。TDEマスター鍵は、外部セキュリティ・モジュール(OracleウォレットまたはHSM)に格納されます。このTDEマスター鍵はTDE表領域暗号化鍵の暗号化に使用され、TDE表領域暗号化鍵は表領域のデータの暗号化と復号化に使用されます。

図8-2に、TDE表領域暗号化プロセスの概要を示します。

図8-2 TDE表領域暗号化

注意:
暗号化データは、JOINやSORTなどの操作中も保護されます。これは、データを一時表領域に移動しても安全であることを意味します。UNDOログとREDOログのデータも保護されます。

TDE表領域暗号化を使用すると、暗号化された表領域のデータに対して索引レンジ・スキャンを実行することもできます。索引レンジ・スキャンは、TDE列暗号化では実行できません。

Oracle Database 11g リリース2 (11.2)では、TDE表領域暗号化に次の拡張が実装されています。

- TDE列暗号化とTDE表領域暗号化の両方で、統合マスター暗号化鍵が使用されます。

- 統合マスター暗号化鍵は再設定できます。これによってセキュリティが強化され、セキュリティ要件やコンプライアンス要件への対応が促進されます。

8.2 透過的データ暗号化の使用

次の各項では、透過的データ暗号化(TDE)の使用方法について説明します。

- 透過的データ暗号化の有効化

- マスター暗号化鍵の設定および再設定

- 暗号化ウォレットのオープンおよびクローズ

- 表の列の暗号化

- 表領域全体の暗号化

- TDEでのハードウェア・セキュリティ・モジュールの使用

- Oracle RACでの透過的データ暗号化の使用

8.2.1 透過的データ暗号化の有効化

TDE列暗号化は、Oracle Database 10g リリース2 (10.2)で最初に導入されました。この機能を使用するには、Oracle Database 10g リリース2 (10.2)以上を実行する必要があります。

TDE表領域暗号化は、Oracle Database 11g リリース1 (11.1)で導入されました。この機能を使用するには、Oracle Database 11g リリース1 (11.1)以上を実行する必要があります。

注意:
Oracle Database 11g リリース1 (11.1)以上では、JOINやSORTなどの操作中に一時表領域のデータを保護することで、より高いセキュリティが確保されます。これらの操作の間、一時表領域のデータは暗号化された状態で存在します。

TDEの使用を開始するには、セキュリティ管理者がウォレットを作成し、マスター鍵を設定する必要があります。ウォレットは、他のOracle Databaseコンポーネントと共有されるデフォルトのデータベース・ウォレットにするか、TDE専用に使用する別のウォレットにできます。マスター暗号化鍵は、独立したウォレットを使用して格納することをお薦めします。

8.2.1.1 透過的データ暗号化用のウォレット・ロケーションの指定

TDE専用のウォレットを使用する場合は、sqlnet.oraファイルでENCRYPTION_WALLET_LOCATIONパラメータを使用して、ウォレット・ロケーションを指定する必要があります。ENCRYPTION_WALLET_LOCATIONパラメータを使用して、TDEのウォレット・ロケーションを指定することをお薦めします。

関連項目:
このパラメータの設定に使用する構文の例は、「サンプルsqlnet.oraファイル」を参照してください。

8.2.1.2 自動ログインが有効なウォレットの使用

外部セキュリティ・モジュールでは、自動ログイン機能を有効化したウォレットを使用できます。このようなウォレットは常に開いたままになります。セキュリティ管理者は、データベース・インスタンスの再起動後にウォレットを再度開く必要はありません。ウォレットを明示的に開くことを義務付けてセキュリティを強化する必要がない環境においては、自動ログイン・ウォレットを使用することもできます。

ローカルの自動ログイン・ウォレットを作成することもできます。ローカルの自動ログイン・ウォレットを別のコンピュータに移動することはできません。それらは作成されたホストで使用する必要があります。

関連項目:

自動ログイン・ウォレットの詳細は、「自動ログイン・ウォレットの使用」を参照してください。

8.2.2 マスター暗号化鍵の設定および再設定

マスター暗号化鍵は外部セキュリティ・モジュールに格納され、表キーと表領域暗号化鍵の保護に使用されます。デフォルトでは、透過的データ暗号化(TDE)によって生成されるランダム鍵がマスター暗号化鍵として使用されます。また、これは、暗号化用に指定されたPKI証明書の既存の鍵ペアにすることもできます。PKI鍵ペアと一緒にTDEを使用する場合は、発行認証局が、暗号化用にマークされた鍵使用方法フィールドを含むX.509v3証明書を発行できる必要があります。

注意:
PKIベースの暗号化は、TDE表領域暗号化やハードウェア・セキュリティ・モジュールとは連携できません。ハードウェア・セキュリティ・モジュールの詳細は、「TDEでのハードウェア・セキュリティ・モジュールの使用」を参照してください。

どちらの鍵タイプも安全性は同様ですが、組織内にすでにPKIをデプロイしている場合は、そのPKIサービスを鍵供託およびリカバリとして活用できます。ただし、現在のPKIアルゴリズムを使用する暗号化では、対称鍵暗号化よりもはるかに多くのシステム・リソースが必要になります。マスター暗号化鍵としてPKI鍵ペアを使用すると、データベース内の暗号化列にアクセスする場合にパフォーマンスが大幅に低下する可能性があります。

マスター暗号化鍵を設定または再設定する(rekey)には、ALTER SYSTEMコマンドを使用します。次の各項では、マスター暗号化鍵の設定および再設定について説明します。

8.2.2.1 マスター暗号化鍵の設定

データベースの列または表領域を暗号化または復号化するには、マスター暗号化鍵を事前に生成しておく必要があります。Oracle Database 11g リリース2 (11.2)では、TDE列暗号化とTDE表領域暗号化の両方で同じマスター暗号化鍵が使用されます。

マスター暗号化鍵を設定するには、次のコマンドを使用します。

SQL> ALTER SYSTEM SET ENCRYPTION KEY ["certificate_ID"] IDENTIFIED BY "password"

各項目の意味は次のとおりです。

- certificate_IDは、Oracleウォレットに格納されている証明書の一意の識別子を含むオプション文字列です。PKI秘密鍵をマスター暗号化鍵として使用する場合は、このパラメータを使用します。このパラメータにデフォルト設定はありません。certificate_IDは、二重引用符(" ")で囲みます。
certificate_IDを検索するには、ウォレットが開いているときにV$WALLET固定ビューを問い合せます。TDEでマスター暗号化鍵として使用できる証明書のみが表示されます。

- passwordは、セキュリティ・モジュールの必須ウォレット・パスワードです。デフォルト設定はありません。大文字と小文字が区別されます。パスワード文字列は、二重引用符(" ")で囲みます。

関連項目:
パスワードの指定に関するルールは、Oracle Database SQLリファレンスを参照してください。

sqlnet.oraパラメータ・ファイルのENCRYPTION_WALLET_LOCATIONパラメータで指定されていウォレット・ロケーションは、マスター暗号化鍵の作成に使用されます。sqlnet.oraファイルにENCRYPTION_WALLET_LOCATIONパラメータが指定されていない場合は、WALLET_LOCATION値が使用されます。ウォレットがまだ存在しない場合は新規に作成されます。

sqlnet.oraファイルでウォレット・ロケーションが指定されていない場合は、デフォルトのデータベース・ウォレット・ロケーションが使用されます。デフォルトのデータベース・ウォレット・ロケーションは、ORACLE_BASE/admin/DB_UNIQUE_NAME/walletまたはORACLE_HOME/admin/DB_UNIQUE_NAME/walletです。ここで、DB_UNIQUE_NAMEは、初期化パラメータ・ファイルで指定されているデータベースの一意の名前です。

想定しているウォレット・ロケーションに既存の自動ログイン・ウォレットが存在する場合、新しいウォレットは作成されません。

8.2.2.2 マスター暗号化鍵の再設定

マスター暗号化鍵の再設定/再生成は、マスター暗号化鍵の安全性が損なわれた場合、または組織のセキュリティ・ポリシーに従う場合にのみ実行します。マスター暗号化鍵を再設定する前に、ウォレットをバックアップする必要があります。

頻繁にマスター暗号化鍵を再生成しても、システム・セキュリティが強化されるとはかぎりません。セキュリティ・モジュールには多数の鍵を格納できます。ただし、この数は無限ではありません。頻繁にマスター暗号化鍵を再生成すると、使用可能な記憶域を使い果たす可能性があります。

マスター暗号化鍵を再設定するには、「マスター暗号化鍵の設定」に記載されているSQL構文を使用します。

注意:
自動ログインを有効化したウォレットのマスター暗号化鍵を再設定する場合、マスター暗号化鍵を再設定するコマンドを発行する前に、拡張子が.ssoである自動ログイン・ウォレットと拡張子が.p12である暗号化ウォレットの両方が存在することを確認する必要があります。

ALTER SYSTEM SET ENCRYPTION KEYコマンドは、ALTER SYSTEM権限が必要なデータ定義言語(DDL)コマンドであり、これによって、保留中のトランザクションがすべて自動的にコミットされます。例8-1に、このコマンドの使用例を示します。

例8-1 PKIベースの秘密鍵を使用するためのマスター暗号化鍵の設定または再設定

SQL> ALTER SYSTEM SET ENCRYPTION KEY "j23lm781098dhb345sm" IDENTIFIED BY "password";

ここで、j23lm781098dhb345smは証明書ID、passwordはウォレット・パスワードです。

PKIベースの鍵の場合、証明書失効リストは適用されません。これは、証明書の失効を強制すると、データベース内の暗号化されたすべての情報にアクセスできなくなる可能性があるためです。ただし、同じ証明書を使用してマスター鍵を再び作成することはできません。

8.2.3 暗号化ウォレットのオープンおよびクローズ

データベースで列/表領域を暗号化または復号化するには、マスター暗号化鍵を事前にメモリーにロードする必要があります。ウォレットを開くと、データベースがマスター暗号化鍵にアクセスできるようになります。ウォレットを明示的に開くには、次のALTER SYSTEMコマンドを使用します。

SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "password"

このpasswordは、ウォレットを開くためのパスワードです。パスワード文字列は、二重引用符(" ")で囲みます。

注意:
ウォレットを開くためのパスワードは、マスター暗号化鍵を作成するために指定したパスワードです。詳細は、「マスター暗号化鍵の設定」を参照してください。

ウォレットは、一度開くと、データベース・インスタンスを停止するか、または次のコマンドを発行して明示的に閉じるまで開いたままになります。

SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "password"

ウォレットを閉じると、暗号化および復号化のすべての操作が無効化されます。データを暗号化/復号化しようとしたり、暗号化データにアクセスしようとすると、次のエラーが発生します。

ORA-28365: wallet is not open

データベース・インスタンスを再起動するたびに、ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "password"コマンドを発行して、暗号化および復号化操作を再度有効化する必要があります。

注意:
自動ログイン・ウォレットは自動的に開くため、明示的に開く必要はありません。
自動ログイン・ウォレットを閉じる必要がある場合は、次のコマンドを使用します。

SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE

自動ログイン・ウォレットを閉じる際にパスワードは不要です。

ユーザーにALTER SYSTEM権限がない場合、ウォレットが使用できない場合、または不正なパスワードが入力された場合、このコマンドはエラーを戻して終了します。ウォレットがすでに開いている場合、このコマンドはエラーを戻し、何も実行しません。例8-2に、それぞれの場合の使用例を示します。

例8-2 ALTER SYSTEMを使用した外部セキュリティ・モジュール・ウォレットのオープン

SQL> --Successfully opening the wallet
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "U83j10LLt8v";
Wallet opened.

SQL> --Trying to open a wallet that is already open
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "U83j10LLt8v";
ERROR at line 1:
ORA-28354: wallet already open

SQL> --Trying to open the wallet with an incorrect password
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "U93j10LLt8v";
ERROR at line 1:
ORA-28353: failed to open wallet

8.2.4 表の列の暗号化

次の各項では、TDE列暗号化の使用について説明します。

- 暗号化列を含む表の作成

- 既存の表にある列の暗号化

- 暗号化列に対する索引の作成

- 暗号化列に対するSaltの追加または削除

- 暗号化列を含む表に対する暗号化鍵またはアルゴリズムの変更

- TDE列暗号化で暗号化できるデータ型

- TDE列暗号化の使用に関する制限

8.2.4.1 暗号化列を含む表の作成

暗号化列を含むリレーショナル表を作成するには、CREATE TABLE文でデータベース列を定義するときにSQL ENCRYPT句を指定します。

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

- 暗号化列を含む表の作成

- デフォルト以外のアルゴリズムおよびNO SALTを使用する暗号化列を含む表の作成

- NOMACパラメータを使用したディスク領域の節約およびパフォーマンスの向上

- 外部表への暗号化列の作成

8.2.4.1.1 暗号化列を含む表の作成

TDEでは、192ビットの鍵の長さを使用するAES暗号化アルゴリズム(AES192)がデフォルトで使用されます。アルゴリズムを指定せずに表の列を暗号化すると、その列はAES192アルゴリズムを使用して暗号化されます。

TDEでは、暗号化の前にクリアテキストにsaltが追加されます。これによって、攻撃者が総当たり攻撃によってデータを盗むことがより困難になります。また、整合性をチェックするために、TDEによりデータにメッセージ認証コード(MAC)が追加されます。デフォルトでは、SHA-1整合性アルゴリズムが使用されます。

注意:
1つの表に複数の暗号化列がある場合、これらのすべての列で暗号化アルゴリズムと整合性アルゴリズムの同じペアが使用される必要があります。
saltは列レベルで指定されます。つまり、表には、saltが使用される暗号化列と使用されない暗号化列が混在していてもかまいません。

例8-3では、暗号化列を含む新しい表を作成しています。この列は、デフォルトの暗号化アルゴリズム(AES192)を使用して暗号化されます。saltおよびMACはデフォルトで追加されます。

例8-3 デフォルト・アルゴリズム(AES192)を使用する暗号化列を含む新しい表の作成

CREATE TABLE employee (
first_name VARCHAR2(128),
last_name VARCHAR2(128),
empID NUMBER,
salary NUMBER(6) ENCRYPT
);

8.2.4.1.2 デフォルト以外のアルゴリズムおよびNO SALTを使用する暗号化列を含む表の作成

デフォルトでは、TDEにより暗号化の前にクリアテキストにsaltが追加されます。これによって、攻撃者が総当たり攻撃によってデータを盗むことがより困難になります。ただし、暗号化列を索引付けする場合、NO SALTを使用する必要があります。

TDEでは、デフォルト以外の暗号化アルゴリズムも指定できます。次のいずれかのアルゴリズムを選択できます。

- 3DES168

- AES128

- AES192 (デフォルト)

- AES256

例8-4に、SQL ENCRYPT句でNO SALTパラメータを指定する方法(empID NUMBER ENCRYPT NO SALT)を示します。また、別の暗号化アルゴリズムを指定するための構文(salary NUMBER(6) ENCRYPT USING '3DES168')も示します。アルゴリズムを指定する文字列は、一重引用符(' ')で囲む必要があることに注意してください。

empID列とsalary列では、同じ3DES168暗号化アルゴリズムが使用されます。これは、表内のすべての暗号化列で同一の暗号化アルゴリズムが使用される必要があるためです。salary列では、デフォルトでsaltが使用されます。empID列にはNO SALTオプションが指定されているため、saltは使用されません。

例8-4 3DES168およびNO SALTを使用する暗号化列を含む新しい表の作成

CREATE TABLE employee (
first_name VARCHAR2(128),
last_name VARCHAR2(128),
empID NUMBER ENCRYPT NO SALT,
salary NUMBER(6) ENCRYPT USING '3DES168'
);

8.2.4.1.3 NOMACパラメータを使用したディスク領域の節約およびパフォーマンスの向上

NOMACパラメータを使用すると、TDEによって実行される整合性チェックを省略できます。この場合、暗号化された値ごとに20バイトのディスク領域が節約されます。表の行および暗号化列の数が多い場合、これにより節約されるディスク領域はかなりの量になります。

また、NOMACパラメータにより、TDEに関連するパフォーマンスのオーバーヘッドも削減できます。NOMACパラメータを使用すると、暗号化および復号化操作時の整合性チェックが省略されます。これにより、処理循環が短縮され、パフォーマンスが向上します。

注意:
TDEでは、デフォルトでSHA-1整合性アルゴリズムが使用されます。表のすべての暗号化列で同じ整合性アルゴリズムが使用される必要があります。表の列ですでにSHA-1アルゴリズムを使用している場合は、NOMACパラメータによって同じ表の別の列を暗号化することはできません。
ALTER TABLE....REKEY...コマンドを使用して、表内のすべての暗号化列で使用される整合性アルゴリズムを変更できます。この例は、例8-6を参照してください。

例8-5では、暗号化列を含む表を作成しています。empID列は、NOMACパラメータを使用して暗号化されます。

例8-5 CREATE TABLE文でのNOMACパラメータの使用

CREATE TABLE employee (
first_name VARCHAR2(128),
last_name VARCHAR2(128),
empID NUMBER ENCRYPT 'NOMAC' NO SALT ,
salary NUMBER(6)
);

例8-6に、表内の暗号化列の整合性アルゴリズムを変更する方法を示します。暗号化アルゴリズムを3DES168に、整合性アルゴリズムをSHA-1に設定しています。2番目のALTER TABLE文では、整合性アルゴリズムをNOMACに設定しています。

例8-6 表の整合性アルゴリズムの変更

SQL> ALTER TABLE EMPLOYEE REKEY USING '3DES168' 'SHA-1';

Table altered.
SQL> ALTER TABLE EMPLOYEE REKEY USING '3DES168' 'NOMAC';

Table altered.

8.2.4.1.4 外部表への暗号化列の作成

外部表の機能を使用すると、データベース表内のデータであるかのように、外部ソースのデータにアクセスできます。外部表は、ORACLE_DATAPUMPアクセス・ドライバを使用して更新できます。

関連項目:
スキーマ・オブジェクトおよび表の詳細は、『Oracle Database概要』を参照してください。

外部表の特定の列を暗号化するには、列を定義するときにENCRYPT句を使用します。列の暗号化には、システムで生成された鍵が使用されます。たとえば、次の定義では、3DES168アルゴリズムを使用してssn列を暗号化しています。

CREATE TABLE emp_ext (
first_name,
....
ssn ENCRYPT USING '3DES168',
....
...
...

外部表を新しい場所に移動することを予定している場合、列の暗号化にランダム生成の鍵は使用できません。これは、新しい場所ではランダム生成の鍵が使用できないためです。

このような場合は、列を暗号化する際にパスワードを指定する必要があります。データを移動した後で、同じパスワードを使用して、新しい場所の暗号化列データへのアクセスに必要な鍵を再生成できます。

表パーティション交換でもパスワード・ベースの表キーが必要になります。

例8-7では、表キーを作成するためのパスワードを使用して外部表を作成しています。

例8-7 パスワード生成表キーを使用した新しい外部表の作成

CREATE TABLE emp_ext (
first_name,
last_name,
empID,
salary,
ssn ENCRYPT IDENTIFIED BY "xIcf3T9u"
)  ORGANIZATION EXTERNAL
(
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY "D_DIR"
LOCATION('emp_ext.dat')
)
REJECT LIMIT UNLIMITED
AS SELECT * FROM EMPLOYEE;

関連項目:
CREATE TABLE、ENCRYPTおよびパスワードのルールの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

8.2.4.2 既存の表にある列の暗号化

既存の表に暗号化列を追加したり、既存の列を暗号化または復号化するには、ALTER TABLE SQLコマンドをADDまたはMODIFY句とともに使用します。

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

- 既存の表への暗号化列の追加

- 暗号化されていない列の暗号化

- 列の暗号化の無効化

8.2.4.2.1 既存の表への暗号化列の追加

既存の表に暗号化列を追加するには、ALTER TABLE ADDコマンドを使用し、ENCRYPT句で新しい列を指定します。例8-8では、employeeという既存の表に暗号化列ssnを追加しています。

例8-8 既存の表への暗号化列の追加

SQL> ALTER TABLE employee ADD (ssn VARCHAR2(11) ENCRYPT);

ssn列は、デフォルトのAES192アルゴリズムを使用して暗号化されます。saltおよびMACはデフォルトで追加されます。

別のアルゴリズムを使用して列を暗号化することもできます。また、列に索引を付ける場合は、NO SALTを指定できます。

8.2.4.2.2 暗号化されていない列の暗号化

暗号化されていない列を暗号化するには、ALTER TABLE MODIFYコマンドを使用し、ENCRYPT句で暗号化されていない列を指定します。例8-9では、employee表のfirst_name列を暗号化しています。

例8-9 暗号化されていない列の暗号化

SQL> ALTER TABLE employee MODIFY (first_name ENCRYPT);

first_name列は、デフォルトのAES192アルゴリズムを使用して暗号化されます。saltはデフォルトでデータに追加されます。

別のアルゴリズムを使用して列を暗号化することもできます。また、列に索引を付ける場合は、NO SALTを指定できます。NOMACパラメータを使用して、整合性チェックを省略することもできます。例8-10では、NOMACパラメータを使用してemployee表のfirst_name列を暗号化しています。

例8-10 ALTER TABLE文でのNOMACパラメータの使用

SQL> ALTER TABLE employee MODIFY (first_name ENCRYPT 'NOMAC');

8.2.4.2.3 列の暗号化の無効化

互換性やパフォーマンスの理由から、暗号化を無効にすることが必要になる場合があります。列の暗号化を無効にするには、ALTER TABLE MODIFYコマンドを使用し、DECRYPT句を指定します。例8-11では、employee表のfirst_name列を復号化しています。

例8-11 列の暗号化の無効化

SQL> ALTER TABLE employee MODIFY (first_name DECRYPT);

8.2.4.3 暗号化列に対する索引の作成

暗号化列に対して索引を作成するには、標準のCREATE INDEXコマンドを使用します。索引付け対象の列は、saltなしで暗号化されている必要があります。例8-12に、saltなしで暗号化された列に対して索引を作成する方法を示します。

例8-12 saltなしで暗号化された列に対する索引の作成

CREATE TABLE employee (
first_name VARCHAR2(128),
last_name VARCHAR2(128),
empID NUMBER ENCRYPT NO SALT,
salary NUMBER(6) ENCRYPT USING '3DES168'
);
CREATE INDEX employee_idx on employee (empID);

注意:
saltを使用して暗号化された列に対しては索引を作成できません。作成しようとすると、エラー(ORA-28338)が発生します。

8.2.4.4 暗号化列に対するSaltの追加または削除

ソルトは、暗号化されたデータのセキュリティを強化する方法で、暗号化される前のデータに追加されるランダムな文字列です。これは、暗号化の前にデータに付加されるランダムな文字列です。これにより、同じ平文データが常に同じ暗号化テキストに変換されることがなくなります。saltを追加することで、攻撃者がデータを盗むために使用する一般的な方法の1つである暗号化テキストのパターン一致を排除できます。saltを追加するには、暗号化されたデータ値ごとに16バイトの追加記憶域が必要です。

暗号化列に対してsaltを追加または削除するには、ALTER TABLE MODIFYコマンドを使用します。例8-13では、saltを使用してfirst_name列を暗号化しています。first_name列が以前にsaltなしで暗号化されていた場合は、このコマンドによって、saltを使用して列が再暗号化されます。

例8-13 暗号化列へのsaltの追加

SQL> ALTER TABLE employee MODIFY (first_name ENCRYPT SALT);

例8-14では、first_name列からsaltを削除しています。saltを使用して暗号化された列に索引を付ける必要がある場合は、索引を付ける前に、このコマンドを使用してsaltを削除します。

例8-14 暗号化列からのsaltの削除

SQL> ALTER TABLE employee MODIFY (first_name ENCRYPT NO SALT);

8.2.4.5 暗号化列を含む表に対する暗号化鍵またはアルゴリズムの変更

各表の列には1つの表キーのみ指定できます。表キーはALTER TABLEコマンドを使用して再生成できます。新しい表キーに対して別の暗号化アルゴリズムを使用することを選択することもできます。

例8-15では、employee表に対する表キーを再生成しています。

例8-15 暗号化列を含む表での暗号化鍵の変更

SQL> ALTER TABLE employee REKEY;

例8-16では、3DES168アルゴリズムを使用してemployee表に対する表キーを再生成しています。

例8-16 暗号化列を含む表での暗号化鍵およびアルゴリズムの変更

SQL> ALTER TABLE employee REKEY USING '3DES168';

8.2.4.6 TDE列暗号化で暗号化できるデータ型

この機能では、次のデータ型を暗号化できます。

- BINARY_DOUBLE

- BINARY_FLOAT

- CHAR

- DATE

- INTERVALDAYTOSECOND

- INTERVALYEARTOMONTH

- LOB (内部LOBおよびSECUREFILE LOBのみ)

- NCHAR

- NUMBER

- NVARCHAR2

- RAW

- TIMESTAMP (TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONEを含む)

- VARCHAR2

暗号化列のサイズが列のデータ型で許容されるサイズより大きくなる場合は、列を暗号化できません。表8-1に、各種データ型の最大許容サイズを示します。

表8-1 各データ型の最大許容サイズ

データ型

最大サイズ

CHAR

1932バイト

VARCHAR2

3932バイト

NVARCHAR2

1966バイト

NCHAR

966バイト

注意:
TDE表領域暗号化には、これらのデータ型制限はありません。

8.2.4.7 TDE列暗号化の使用に関する制限

TDE列暗号化では、SQLレイヤーでデータの暗号化と復号化を処理します。したがって、SQLレイヤーをバイパスするOracle Databaseのユーティリティや機能では、TDE列暗号化によるサービスを利用できません。TDE列暗号化は、次のデータベース機能と併用しないでください。

- Bツリー以外の索引タイプ

- 索引内のレンジ・スキャン検索

- 外部ラージ・オブジェクト(BFILE)

- 同期チェンジ・データ・キャプチャ

- トランスポータブル表領域

- オリジナルのインポート/エクスポート・ユーティリティ

また、TDE列暗号化では、外部キー制約で使用される列は暗号化できません。

関連項目:

- 「暗号化列を含む表のエクスポートおよびインポート」

- 「TDE列暗号化で暗号化できるデータ型」

注意:
Oracle Database 10g リリース2 (10.2)のTDEでは、BLOBやCLOBなどのラージ・オブジェクト(LOB)データ型はサポートされていませんでした。Oracle Database 11gのTDEでは、BLOBやCLOBなどの内部ラージ・オブジェクト・データ型がサポートされています。ただし、外部LOB (BFILE)は暗号化できません。

サポート対象外のこれらの機能が必要なアプリケーションでは、DBMS_CRYPTOパッケージを使用して暗号化を実行できます。

関連項目:
『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_CRYPTOに関する項を参照してください。

TDEでは、ディスクやメディアに格納されているデータを保護します。転送中のデータは保護対象外です。ネットワーク上のデータを暗号化するには、第2章「構成ツールと管理ツールの概要」に記載されているOracle Advanced Securityのネットワーク暗号化ソリューションを使用してください。

8.2.5 表領域全体の暗号化

TDE表領域暗号化を使用するには、Oracle Database 11g リリース1 (11.1)以上を実行する必要があります。以前のリリースからアップグレードした場合は、データベースの互換性が11.0.0以上に設定されています。

Oracle Database 11g リリース2 (11.2)の強化された表領域暗号化機能を使用するには、データベースの互換性を11.2以上に設定する必要があります。

注意:
COMPATIBLE初期化パラメータを使用して更新したデータベース互換性を元に戻すことはできません。

次の手順では、TDE表領域暗号化の使用方法について説明します。

- 表領域マスター暗号化鍵の設定

- Oracleウォレットのオープン

- 暗号化された表領域の作成

- TDE表領域暗号化の使用に関する制限

8.2.5.1 表領域マスター暗号化鍵の設定

表領域を暗号化または復号化するには、マスター暗号化鍵を事前に生成または設定しておく必要があります。表領域のマスター暗号化鍵は外部セキュリティ・モジュールに格納され、TDE表領域暗号化鍵を暗号化する際に使用されます。

sqlnet.oraファイルのENCRYPTION_WALLET_LOCATION (またはWALLET_LOCATION)パラメータが正しいソフトウェア・ウォレット・ロケーションを指し示していることを確認してください。次に例を示します。

ENCRYPTION_WALLET_LOCATION=
(SOURCE=(METHOD=FILE)(METHOD_DATA=
(DIRECTORY=/app/wallet)))

Oracle Database 11g リリース2 (11.2)では、TDE列暗号化とTDE表領域暗号化の両方で同じマスター暗号化鍵が使用されます。ALTER SYSTEM SET ENCRYPTION KEYコマンドを発行すると、TDE列暗号化とTDE表領域暗号化の両方に対して統合マスター暗号化鍵が作成されます。マスター暗号化鍵の作成の詳細は、「マスター暗号化鍵の設定」を参照してください。

Oracle Database 10g リリース2 (10.2)でTDEをすでに使用していて、その後データベースを11g リリース2 (11.2)にアップグレードした場合は、ALTER SYSTEM SET ENCRYPTION KEYコマンドを再発行して、統合マスター暗号化鍵を作成する必要があります。

Oracle Database 11g リリース1 (11.1)でTDE表領域暗号化をすでに使用していて、その後データベースを11g リリース2 (11.2)にアップグレードした場合は、TDE列暗号化とTDE表領域暗号化に対して個別のマスター暗号化鍵を使用します。ALTER SYSTEM SET ENCRYPTION KEYコマンドを再発行して、統合マスター暗号化鍵を作成する必要があります。

8.2.5.1.1 表領域マスター暗号化鍵の再設定

Oracle Database 11g リリース2 (11.2)では、TDE列暗号化とTDE表領域暗号化の両方で統合マスター暗号化鍵が使用されます。TDE列暗号化用にマスター暗号化鍵を再設定する(rekey)と、TDE表領域暗号化用のマスター暗号化鍵も再設定されます。

ALTER SYSTEM SET ENCRYPTION KEYコマンドを使用すると、表領域のマスター暗号化鍵が再設定されます。マスター暗号化鍵の再設定の詳細は、「マスター暗号化鍵の設定および再設定」を参照してください。

8.2.5.2 Oracleウォレットのオープン

暗号化された表領域を作成するには、表領域のマスター暗号化鍵が格納されているOracleウォレットを事前に開く必要があります。また、このウォレットは、暗号化された表領域のデータにアクセスする前に開いている必要があります。Oracleウォレットを開く方法の詳細は、「暗号化ウォレットのオープンおよびクローズ」を参照してください。

注意:
セキュリティ管理者は、Oracleインスタンスを開始した後にOracleウォレットを開く必要があります。Oracleインスタンスを再開するには、セキュリティ管理者がウォレットを再度開く必要があります。

セキュリティ管理者は、データベースのリカバリ操作を実行する前にもウォレットを開く必要があります。これは、バックグラウンド・プロセスで、暗号化されたREDOログおよびUNDOログへのアクセスが必要になる可能性があるためです。データベースのリカバリを実行するときは、データベースを開く前にウォレットを開く必要があります。次に例を示します。

SQL> STARTUP MOUNT;
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "password";
SQL> ALTER DATABASE OPEN;

ウォレットを明示的に開くことを義務付けてセキュリティを強化する必要がない環境においては、自動ログイン・ウォレットを使用することを選択することもできます。

8.2.5.3 暗号化された表領域の作成

暗号化された表領域は、CREATE TABLESPACEコマンドを使用して作成できます。permanent_tablespace_clauseを使用すると、暗号化アルゴリズムと暗号化鍵の長さを選択できます。表領域を暗号化するには、storage_clauseでENCRYPTキーワードを使用します。次の構文はこのことを示しています。

CREATE
[ BIGFILE | SMALLFILE ]
{ permanent_tablespace_clause
| temporary_tablespace_clause
| undo_tablespace_clause
} ;

説明は次のとおりです。

permanent_tablespace_clause=
TABLESPACE tablespace
.........
ENCRYPTION [USING algorithm]
.........
storage_clause
.........

説明は次のとおりです。

storage_clause=
.........
[ENCRYPT]
.........

この場合、

algorithmには、次のいずれかの値を指定できます。

- 3DES168

- AES128

- AES192

- AES256

鍵長は、アルゴリズム自体の名前に含まれています。暗号化アルゴリズムを指定しないと、デフォルトの暗号化アルゴリズムが使用されます。デフォルトの暗号化アルゴリズムはAES128です。

注意:

- permanent_tablespace_clauseのENCRYPTIONキーワードによって、暗号化アルゴリズムを指定します。storage_clauseのENCRYPTキーワードによって、表領域を実際に暗号化します。

- セキュリティ上の理由から、表領域の暗号化ではNO SALTオプションを使用できません。

関連項目:
CREATE TABLESPACEコマンドの構文は、Oracle Database SQLリファレンス・ガイドを参照してください。

例8-17では、securespaceという表領域を作成しています。この表領域は、3DESアルゴリズムを使用して暗号化されます。鍵長は168ビットです。

例8-17 暗号化された表領域の作成

CREATE TABLESPACE securespace
DATAFILE '/home/user/oradata/secure01.dbf'
SIZE 150M
ENCRYPTION USING '3DES168'
DEFAULT STORAGE(ENCRYPT);

例8-18では、securespace2という表領域を作成しています。暗号化アルゴリズムの指定がないため、デフォルトの暗号化アルゴリズム(AES128)が使用されます。鍵長は128ビットです。

例8-18 暗号化された表領域の作成

CREATE TABLESPACE securespace2
DATAFILE '/home/user/oradata/secure01.dbf'
SIZE 150M
ENCRYPTION
DEFAULT STORAGE(ENCRYPT);

次のデータ・ディクショナリ・ビューには、表領域の暗号化ステータスに関する情報が保持されます。次のビューを問い合せて、表領域が暗号化されたことを確認できます。

- DBA_TABLESPACES: ENCRYPTED列に、表領域が暗号化されているかどうかが表示されます。

- USER_TABLESPACES: ENCRYPTED列に、表領域が暗号化されているかどうかが表示されます。

関連項目:
これらのデータ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

既存の表領域は暗号化できません。ただし、Oracle Data Pumpユーティリティを使用して、暗号化された表領域にデータをインポートすることはできます。CREATE TABLE...AS SELECT...やALTER TABLE...MOVE...などのSQLコマンドを使用して、暗号化された表領域にデータを移動することもできます。CREATE TABLE...AS SELECT...コマンドでは、表を既存の表から作成できます。ALTER TABLE...MOVE...コマンドでは、表を暗号化された表領域に移動できます。

関連項目:
CREATE TABLEおよびALTER TABLEコマンドの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

8.2.5.4 TDE表領域暗号化の使用に関する制限

TDE表領域暗号化では、読取り/書込み操作中にデータを暗号化または復号化します。対照的に、TDE列暗号化では、SQLレイヤーでデータを暗号化または復号化します。このことは、データ型制限、索引タイプ制限など、TDE列暗号化に適用される制限のほとんどが、TDE表領域暗号化には適用されないことを意味します。

次のリストは、TDE表領域暗号化に適用される制限を示します。

- TDE表領域暗号化を使用して外部ラージ・オブジェクト(BFILE)を暗号化することはできません。これらのファイルはデータベース外部に存在するためです。

- インポートおよびエクスポート操作を実行するには、Oracle Data Pumpを使用します。

8.2.6 TDEでのハードウェア・セキュリティ・モジュールの使用

ハードウェア・セキュリティ・モジュール(HSM)は、暗号化鍵のために安全な記憶域を提供する物理的なデバイスです。また、暗号化および復号化操作を実行するための安全な計算領域(メモリー)も提供します。HSMは、Oracleウォレットにかわる安全性の高い代替手段です。

TDEでは、HSMを使用して機密データのセキュリティを強化できます。HSMは、TDEに使用されるマスター暗号化鍵の格納に使用されます。HSMは物理的なデバイスであり、オペレーティング・システム・ファイルではないため、鍵は不正アクセス試行から保護されます。マスター暗号化鍵を使用する暗号化および復号化操作はすべて、HSMの内部で実行されます。これは、安全性の低いメモリーにマスター暗号化鍵がさらされないことを意味します。

HSMを使用するには、HSMデバイスの初期設定が必要になります。また、HSMを使用するようにTDEを構成する必要もあります。初期設定が終了したら、HSMをOracleソフトウェア・ウォレットと同様に使用できます。次の手順では、ハードウェア・セキュリティ・モジュールの構成および使用について説明します。

1. sqlnet.oraファイルでのENCRYPTION_WALLET_LOCATIONパラメータの設定

2. 正しいパスへのPKCS#11ライブラリのコピー

3. HSMの設定

4. HSMベースの暗号化のためのマスター暗号化鍵の生成

5. ソフトウェア・ウォレットの再構成(オプション)

6. HSMがアクセス可能であることの確認

7. データの暗号化と復号化

8.2.6.1 sqlnet.oraファイルでのENCRYPTION_WALLET_LOCATIONパラメータの設定

ENCRYPTION_WALLET_LOCATIONパラメータでは、Oracleウォレットの場所を指定します。ソフトウェア・ウォレットのかわりにHSMが使用されるようにするには、このパラメータを変更する必要があります。

ENCRYPTION_WALLET_LOCATIONパラメータを設定するには、次の手順を実行します。

1. sqlnet.oraファイルを開きます。このファイルは、$ORACLE_HOME/network/adminディレクトリにあります。

2. 次のように、sqlnet.oraファイルにENCRYPTION_WALLET_LOCATIONパラメータを追加します。

ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=HSM))

sqlnet.oraファイルにENCRYPTION_WALLET_LOCATIONパラメータがすでに指定されている場合は、METHOD値をHSMに変更します。

ENCRYPTION_WALLET_LOCATION=
(SOURCE=(METHOD=HSM)(METHOD_DATA=
(DIRECTORY=/app/wallet)))

注意:
ENCRYPTION_WALLET_LOCATIONパラメータにDIRECTORY値が指定されている場合は、その値を削除しないでください。DIRECTORY値はHSMには不要ですが、HSMベースの透過的データ暗号化に移行する場合は、この値を使用して古いソフトウェア・ウォレットの場所が特定されます。また、DIRECTORY値は、Recovery Manager (RMAN)などのツールでソフトウェア・ウォレットの場所を特定するために必要になる場合があります。

3. ファイルを保存して閉じます。

8.2.6.2 正しいパスへのPKCS#11ライブラリのコピー

関連するPKCS#11ライブラリは、HSMベンダーによって提供されます。このライブラリは、データベースが検出できるように、特定のディレクトリ構造にコピーする必要があります。UNIXおよびWindowsでは、次のディレクトリ構造をそれぞれ使用します。

/opt/oracle/extapi/[32,64]/hsm/{VENDOR}/{VERSION}/libapiname.ext

%SYSTEM_DRIVE%\oracle\extapi\[32,64]\hsm\{VENDOR}\{VERSION}\libapiname.ext

この場合、

[32,64]には、提供されるバイナリが32ビットか64ビットかを指定します。

VENDORは、ライブラリを提供しているベンダー名を表します。

VERSIONは、ライブラリのバージョンを表します。なるべく、number.number.numberの形式を使用してください。

apinameには、特に決まった形式はありません。ただし、構文に示すように、apinameの前にはlibという語を付ける必要があります。

.extは、ライブラリ・ファイルの拡張子で置換する必要があります。この拡張子は、Unixの場合は.soです。

注意:
一度にサポートされるのは、1つのPKCS#11ライブラリのみです。新しいベンダーのHSMを使用する場合は、PKCS#11ライブラリを以前のベンダーのものから新しいベンダーのものに置換してください。

8.2.6.3 HSMの設定

HSMインタフェースを設定するための指示は、HSMベンダーによって提供されます。HSM管理インタフェースを使用し、ベンダーの指示に従ってHSMを設定してください。データベースでHSMとの相互作用に使用されるユーザー・アカウントとパスワードを作成します。

注意:
HSMは、HSM管理者またはTDEの管理を担当するセキュリティ管理者が設定します。

8.2.6.4 HSMベースの暗号化のためのマスター暗号化鍵の生成

HSMベースの暗号化を初めて使用する際には、HSM内部に格納されるマスター暗号化鍵を作成する必要があります。マスター暗号化キーは、HSM内の表キーを暗号化または復号化するために使用されます。

マスター暗号化鍵を作成するには、次のコマンドを使用します。

SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "user_Id:password" [MIGRATE USING "wallet_password"]

この場合、

user_Idは、HSM管理インタフェースを使用してデータベースに対して作成したユーザーIDです。

passwordは、HSM管理インタフェースを使用してユーザーIDに対して作成したパスワードです。user_Id:password文字列は、二重引用符(" ")で囲みます。

wallet_passwordは、ファイル・システム上の既存のOracleウォレットを開く際に必要なパスワードです。wallet_password文字列は、二重引用符(" ")で囲みます。

注意:
user_Idとpasswordは自動的には作成されません。これらは、ALTER SYSTEM SET ENCRYPTION KEYコマンドを発行する前に、HSM管理インタフェースを使用して設定しておく必要があります。これは、Oracleウォレットに使用される手順とは異なります。Oracleウォレットの場合、ALTER SYSTEM SET ENCRYPTION KEYコマンドを発行する前の事前設定は不要です。

透過的データ暗号化をすでに使用していて、HSMを使用していない場合は、前述のコマンドでMIGRATE USING wallet_password句を使用する必要があります。この句は、既存の表キーを復号化して、新しく作成したHSMベースのマスター暗号化キーで再度暗号化します。

注意:
データベースに公開鍵によって暗号化された列が含まれている場合は、その列が復号化されてから、HSMベースの透過的データ暗号化によって生成されたAES対称鍵を使用して再暗号化されます。

8.2.6.5 ソフトウェア・ウォレットの再構成(オプション)

この手順は、暗号化データをエクスポートした場合、またはソフトウェア・ウォレットを使用して暗号化バックアップを作成した場合に適用されます。Oracle Data PumpやRecovery Managerなどのツールでは、ソフトウェア・ウォレットを使用してエクスポートまたはバックアップしたデータに対して復号化および暗号化の操作を実行する際に、古いソフトウェア・ウォレットにアクセスする必要があります。

ソフトウェア・ウォレットを再構成するには、次のいずれかのアプローチを使用します。

- ウォレット・パスワードをHSMのuserId:password文字列に変更します。この場合、
user_Idは、HSM管理インタフェースを使用してデータベースに対して作成したユーザーIDです。

passwordは、HSM管理インタフェースを使用してユーザーIDに対して作成したパスワードです。user_Id:password文字列は、二重引用符(" ")で囲みます。

ソフトウェア・ウォレットのパスワードは、Oracle Wallet Managerまたはorapkiコマンドライン・ユーティリティを使用して変更します。SQL*Plusは、ウォレット・パスワードの変更には使用できません。

関連項目:
ウォレット・パスワードの変更の詳細は、「パスワードの変更」を参照してください。

- 自動ログイン・ウォレットを使用することもできます。自動ログイン・ウォレットのファイルは、.ssoの拡張子で識別されます。自動ログイン・ウォレットは、ウォレットを明示的に開くことを義務付けてセキュリティを強化する必要がない環境でのみ使用してください。
ローカルの自動ログイン・ウォレットを作成することもできます。ローカルの自動ログイン・ウォレットを別のコンピュータに移動することはできません。それらは作成されたホストで使用する必要があります。

関連項目:

- Oracle Wallet Managerを使用して自動ログインを有効化する方法の詳細は、「自動ログインの使用」を参照してください。

- orapkiコマンドライン・ユーティリティを使用して自動ログインおよびローカル自動ログインを有効化する方法の詳細は、「orapkiを使用したウォレットの作成、表示および変更」を参照してください。

8.2.6.6 HSMがアクセス可能であることの確認

セキュリティ管理者は、暗号化または復号化を実行する前に、HSMがデータベースにアクセスできることを確認する必要があります。これは、Oracleウォレットのオープンに類似しています。HSMをアクセス可能にするには、次のコマンドを使用します。

SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "user_Id:password"

この場合、

user_Idは、HSM管理インタフェースを使用してデータベースに対して作成したユーザーIDです。

passwordは、HSM管理インタフェースを使用してユーザーIDに対して作成したパスワードです。

user_Id:password文字列は、二重引用符(" ")で囲みます。

注意:
HSMへのアクセスは、データベース・インスタンスが再開されるたびに再度有効化する必要があります。

セキュリティ管理者は、ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "user_Id:password"コマンドを使用してHSMへのアクセスを無効化できます。これによって、HSMでの暗号化および復号化のすべての操作が無効化されます。データベース・ユーザーやアプリケーションは、ウォレットが再度開くまで、暗号化データに関係する操作を実行できません。たとえば、HSMがアクセス可能でない場合、次の操作は失敗します。

- 暗号化列からのデータの選択(SELECT)

- 暗号化列に対するデータの挿入(INSERT)

- 暗号化列を含む表の作成(CREATE)

- 列の暗号化プロパティの変更(ALTER)

- 暗号化された表領域の作成(CREATE)

8.2.6.7 データの暗号化と復号化

HSMの使用はエンド・ユーザーに透過的です。暗号化列を含む表を作成するコマンド、暗号化データにアクセスするコマンド、またはデータを復号化するコマンドは、マスター暗号化鍵がOracleウォレットにある場合もHSMにある場合も同じです。

8.2.7 Oracle RACでの透過的データ暗号化の使用

Oracle Database 11g リリース2 (11.2)を使用すると、Oracle Real Application Clusters (RAC)ノードでウォレットを共有できます。これによって、すべてのノードにウォレットを手動でコピーし同期化する必要がなくなります。ウォレットは、共有ファイル・システムで作成することをお薦めします。こうすることで、すべてのインスタンスが同じ共有ウォレットにアクセスできるようになります。

ある1つのOracle RACインスタンスで実行されるウォレットのオープン、クローズなどのウォレット操作は、他のすべてのOracle RACインスタンスに適用されます。つまり、ユーザーが1つのインスタンスに対して開閉したウォレットは、すべてのOracle RACインスタンスに対して開閉します。

共有ファイル・システムを使用する場合、すべてのOracle RACインスタンスのENCRYPTION_WALLET_LOCATIONまたはWALLET_LOCATIONパラメータが同じ共有ウォレット・ロケーションを指していることを確認する必要があります。セキュリティ管理者は、適切なディレクトリ権限を割り当てて、共有ウォレットのセキュリティを確保する必要もあります。

ある1つのインスタンスで実行されるmaster key rekeyは、すべてのインスタンスに適用されます。新しいOracle RACノードは、構成されると、現在のウォレットのステータス(オープンまたはクローズ)を認識します。

8.2.7.1 非共有ファイル・システムを使用したウォレットの格納

ウォレットの格納に共有ファイル・システムを使用しない場合は、マスター鍵を再設定した後、ウォレットをすべてのノードにコピーする必要があります。データベースのマスター暗号化鍵を再設定する必要がある場合は、次の手順を実行します。

1. 最初のOracle RACノードのマスター暗号化鍵を再設定します。次のコマンドを使用します。詳細は、「マスター暗号化鍵の設定および再設定」を参照してください。

2. 新しいマスター暗号化鍵が格納されたウォレットを最初のノードから他のすべてのノードにコピーします。

3. 任意のノードのウォレットを閉じてから再度開きます。次のコマンドを使用します。

SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "password";
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "password";

注意:
ある1つのOracle RACインスタンスで実行されるウォレットのオープン、クローズなどのウォレット操作は、他のすべてのOracle RACインスタンスに適用されます。これは、共有ファイル・システムを使用していない場合にも当てはまります。

すべてのOracle RACノードで新しいマスター暗号化鍵が使用されるようになりました。

8.3 透過的データ暗号化の管理

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

- Oracleウォレットの管理

- マスター暗号化鍵のバックアップおよびリカバリ

- 暗号化列を含む表のエクスポートおよびインポート

- パフォーマンスと記憶域のオーバーヘッド

- セキュリティに関する考慮事項

- マルチデータベース環境における透過的データ暗号化の使用

- 分散環境でのレプリケーション

- 暗号化データの圧縮とデータ重複除外

- OCIを使用した透過的データ暗号化

- マルチデータベース環境における透過的データ暗号化

- 透過的データ暗号化のデータ・ディクショナリ・ビュー

8.3.1 Oracleウォレットの管理

透過的データ暗号化(TDE)では、マスター暗号化鍵はOracleウォレット内に格納されます。ウォレットは、セキュリティ管理者が明示的に開くことを必要としないで、暗号化データにアクセスできる自動ログイン・ウォレットにすることもできます。

8.3.1.1 透過的データ暗号化用の別のウォレットの指定

TDEでは、使用するウォレットを決定する際、最初にパラメータENCRYPTION_WALLET_LOCATIONで指定されているウォレットの使用が試行されます。このパラメータが設定されていない場合は、パラメータWALLET_LOCATIONで指定されているウォレットの使用が試行されます。このことも失敗した場合は、TDEによりデフォルトのデータベースの場所でウォレットが検索されます。

TDEで使用されるマスター暗号化鍵の格納には、別のウォレットを使用することをお薦めします。別のウォレットを指定するには、sqlnet.oraファイルのENCRYPTION_WALLET_LOCATIONパラメータが、TDE専用のウォレットを指すように設定します。

関連項目:
このパラメータの設定に使用する構文の例は、「サンプルsqlnet.oraファイル」を参照してください。

8.3.1.2 自動ログイン・ウォレットの使用

自動ログイン・ウォレットは、Oracle Wallet Managerまたはorapkiコマンドライン・ユーティリティを使用して作成できます。自動ログイン・ウォレットを使用すると、データベース・インスタンスの再起動をまたいで暗号化データにアクセスすることが容易になります。

注意:
自動ログイン・ウォレット(.ssoファイル)を作成した後、PKCS#12ウォレット(ewallet.p12ファイル)を削除しないでください。将来、PKCS#12ウォレットでマスター暗号化鍵を再生成/再設定する必要があります。

TDEで自動ログイン・ウォレットが使用されるのは、その自動ログイン・ウォレットが正しい場所(ENCRYPTION_WALLET_LOCATION、WALLET_LOCATIONまたはデフォルトのウォレット・ロケーション)にあり、暗号化ウォレットを開くSQLコマンドがまだ実行されていない場合のみです。自動ログイン・ウォレットの使用中は、ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "password"コマンドを使用しないでください。

関連項目:

- Oracle Wallet Managerを使用して自動ログインを有効化する方法の詳細は、「自動ログインの使用」を参照してください。

- orapkiコマンドライン・ユーティリティを使用して自動ログインおよびローカル自動ログインを有効化する方法の詳細は、「orapkiを使用したウォレットの作成、表示および変更」を参照してください。

8.3.1.3 ウォレットの作成

ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "password"コマンドを使用してマスター暗号化鍵を作成すると、TDEによって、ウォレットがデフォルトまたは指定の場所に存在しているかどうかがチェックされます。ウォレットが存在しない場合は、自動的に作成されます。

SQLコマンド以外に、Oracle Wallet Managerを使用してウォレットを作成することもできます。Oracle Wallet Managerは、ウォレットの作成とそのコンテンツの表示および変更が可能なフル機能のツールです。

orapkiコマンドのようなユーティリティを使用してウォレットを作成することもできます。

関連項目:

- Oracle Wallet Managerの詳細は、第14章「Oracle Wallet Managerの使用方法」を参照してください。

- 「orapkiを使用したウォレットの作成、表示および変更」

8.3.2 マスター暗号化鍵のバックアップおよびリカバリ

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

- Oracleウォレットのバックアップおよびリカバリ

- PKI鍵ペアのバックアップおよびリカバリ

8.3.2.1 Oracleウォレットのバックアップおよびリカバリ

暗号化データには、マスター暗号化鍵なしでアクセスすることはできません。マスター暗号化鍵はOracleウォレットに格納されるため、ウォレットは安全な場所に定期的にバックアップする必要があります。新しいマスター暗号化鍵を設定するたびにウォレットのバックアップ・コピーを作成する必要があります。

Oracleウォレットは、暗号化データと一緒にバックアップしないでください。ウォレットは個別にバックアップする必要があります。自動ログイン・ウォレットを使用している場合は、開くときにパスワードが要求されないため、特に注意してください。バックアップ・テープの紛失に備えて、悪意のあるユーザーが暗号化データとウォレットの両方を取得できないようにすることが大切です。

Recovery Manager (RMAN)では、ウォレットはデータベース・バックアップの一環としてバックアップされません。Oracle Secure Backup (OSB)などのメディア・マネージャをRMANと併用している場合は、OSBによって、自動オープン・ウォレット(cwallet.ssoファイル)がバックアップ対象から自動的に除外されます。ただし、暗号化ウォレット(ewallet.p12ファイル)は自動的には除外されません。次のexcludeデータセット文をOSB構成に追加することをお薦めします。

exclude name *.p12

この文では、バックアップ・セットから暗号化ウォレットを除外するようにOSBに指示します。

マスター暗号化鍵を格納しているウォレットを喪失した場合は、ウォレットのバックアップを適切な場所にコピーすることで、暗号化データへのアクセスをリストアできます。リストアしたウォレットがマスター暗号化鍵の前回の再設定後にアーカイブされたものである場合、追加処置の必要はありません。

リストアしたウォレットに最新のマスター暗号化鍵が含まれていない場合に、古いデータをマスター暗号化鍵が再設定された時点までリカバリするには、データベースの状態をその時点までロールバックします。マスター暗号化鍵の再設定後に暗号化列に対して行われた変更はすべて失われます。

8.3.2.2 PKI鍵ペアのバックアップおよびリカバリ

TDE列暗号化では、マスター暗号化鍵としてPKI非対称鍵ペアを使用できます。これにより、主要な認証局ベンダーの既存の鍵のバックアップ、供託およびリカバリ機能を活用できます。

現在の鍵供託またはリカバリ・システムでは、秘密鍵のバージョンまたは秘密鍵のリカバリに役立つ情報は、通常、鍵のリカバリ機能を提供する認証局に保管されます。秘密鍵が失われた場合、ユーザーは、認証局に連絡し、鍵のリカバリ・プロセスを開始することで、元の鍵および証明書をリカバリできます。

通常、鍵のリカバリ・プロセスは自動化されており、ユーザーは認証局に対して特定の認証資格証明を提示する必要があります。リカバリ対象となる鍵およびその関連証明書が、Oracleウォレットにインポート可能なPKCS#12ファイルである必要があることを除き、TDEでは、鍵のリカバリ・プロセスに制限を設けていません。この要件は、主要な認証局の鍵のリカバリ・メカニズムと同じです。

元の証明書および秘密鍵を含むPKCS#12ファイルの取得後は、以前のウォレットと同じ場所に新しい空のウォレットを作成する必要があります。このためには、Oracle Wallet Managerを使用できます。その後、同じユーティリティを使用してPKCS#12ファイルをウォレットにインポートできます。ウォレットを保護するために強力なパスワードを選択する必要があります。

ウォレットが作成され、正しい証明書がインポートされた後、データベースにログオンし、SQLプロンプトで次のコマンドを実行してリカバリ・プロセスを完了します。

SQL> ALTER SYSTEM SET ENCRYPTION KEY "certificate_id" IDENTIFIED BY "wallet_password"

ウォレット内の証明書のcertificate_idを取得するには、ウォレットが開いてからV$WALLET固定ビューを問い合せます。

8.3.3 暗号化列を含む表のエクスポートおよびインポート

暗号化列を含む表をエクスポートする場合は、次の点が重要になります。

- 転送中も機密データが解読されないよう保つ必要があります。

- 権限のあるユーザーは、宛先にインポートされたデータを復号化できる必要があります。

暗号化列を含む表のエクスポートとインポートには、Oracle Data Pumpユーティリティを使用できます。Oracle Data Pumpでは、ENCRYPTIONパラメータを利用してダンプ・ファイル・セットのデータを暗号化できるようにします。ENCRYPTIONパラメータには、次の値を指定できます。

- ENCRYPTED_COLUMNS_ONLY: 暗号化列が暗号化された形式でダンプ・ファイル・セットに書き込まれます。

- DATA_ONLY: すべてのデータが暗号化された形式でダンプ・ファイル・セットに書き込まれます。

- METADATA_ONLY: すべてのメタデータが暗号化された形式でダンプ・ファイル・セットに書き込まれます。

- ALL: すべてのデータとメタデータが暗号化された形式でダンプ・ファイル・セットに書き込まれます。

- NONE: ダンプ・ファイル・セットに対して暗号化は使用されません。

次の手順では、ENCRYPTION=ENCRYPTED_COLUMNS_ONLYを使用して、暗号化列を含む表をエクスポートおよびインポートする方法について説明します。

1. 暗号化列を含む表をエクスポートする前に、暗号化ウォレットが開いていることを確認する必要があります。これは、暗号化列の復号化には表キーを使用する必要があり、そのためにはマスター暗号化鍵にアクセスする必要があるためです。列は、エクスポートされる前にパスワードを使用して再暗号化されます。

2. エクスポート・ダンプ・ファイル・セットの列データを暗号化する際に使用するパスワードは、ENCRYPTION_PASSWORDパラメータを使用して指定します。次に、employee_data表をエクスポートする例を示します。

expdp hr TABLES=employee_data DIRECTORY=dpump_dir
DUMPFILE=dpcd2be1.dmp ENCRYPTION=ENCRYPTED_COLUMNS_ONLY
ENCRYPTION_PASSWORD=PWD2encrypt

Password: password_for_hr

3. ターゲット・データベースにデータをインポートする際は、同じパスワードを指定する必要があります。このパスワードは、データの復号化に使用されます。データは、ターゲット・データベースに生成された新しい表キーを使用して再暗号化されます。ターゲット・データベースがマスター暗号化鍵にアクセスするためには、ウォレットが開いている必要があります。次に、employee_data表をインポートする例を示します。

impdp hr TABLES=employee_data DIRECTORY=dpump_dir DUMPFILE=dpcd2be1.dmp ENCRYPTION_PASSWORD=PWD2encrypt

Password: password_for_hr

Oracle Database 11g リリース2 (11.2)では、Oracle Data Pumpの機能が拡張されています。透過的データ暗号化列のみの暗号化とは対照的に、ダンプ・セット全体を暗号化できます。ENCRYPTION_MODEパラメータを使用して、暗号化モードを指定できます。

ENCRYPTION_MODE=DUALを使用すると、ウォレットに格納されているマスター鍵と指定したパスワードによってダンプ・セットが暗号化されます。次に、dual暗号化モードの使用例を示します。

expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr_enc.dmp
ENCRYPTION=all ENCRYPTION_PASSWORD=PWD2encrypt
ENCRYPTION_ALGORITHM=AES256 ENCRYPTION_MODE=dual

Password: password_for_hr

インポートでは、パスワードまたはウォレット・マスター鍵のいずれかを使用してデータを復号化できます。パスワードを指定しなかった場合、データの復号化にはウォレットのマスター鍵が使用されます。ターゲット・データベースにウォレットが存在し、開いている必要があります。この開いているウォレットは、ターゲット・データベースで列暗号化データを再暗号化する際にも必要です。

ENCRYPTION_MODE=TRANSPARENTを使用すると、ウォレットに格納されているマスター暗号化鍵を使用してダンプ・ファイル・セットを透過的に暗号化できます。この場合、パスワードは不要です。インポートの過程で復号化が正常に実行されるのは、ターゲット・データベースにウォレットが存在し、開いている場合のみです。この開いているウォレットは、ターゲット・データベースで列暗号化データを再暗号化する際にも必要です。

関連項目:

- Oracle Data Pumpおよび関連する暗号化パラメータの使用方法の詳細は、Oracle Databaseユーティリティ・ガイドのデータ・ポンプの概要、データ・ポンプ・エクスポートおよびデータ・ポンプ・インポートに関する項を参照してください。

- 「外部表への暗号化列の作成」

8.3.4 パフォーマンスと記憶域のオーバーヘッド

透過的データ暗号化(TDE)に関連するオーバーヘッドは、次のように分類されます。

- パフォーマンスのオーバーヘッド

- 記憶域のオーバーヘッド

8.3.4.1 パフォーマンスのオーバーヘッド

TDE表領域暗号化には、わずかなオーバーヘッドが伴います。アプリケーションのパフォーマンスに対する実際の影響は様々ですが、約5%から8%までと推定されます。

TDE列暗号化がパフォーマンスに影響を与えるのは、暗号化列に対してデータの取得または挿入が行われた場合のみです。暗号化されていない列に関係する操作の場合は、これらの列が暗号化列を含む表内にあっても、パフォーマンスが低下することはありません。

暗号化列のデータへのアクセスには、わずかなオーバーヘッドが伴います。一般的な属性(クレジット・カード番号など)の暗号化または復号化に関連するオーバーヘッドは、約5%と推定されます。これは、SELECT操作(復号化に必要)またはINSERT操作(暗号化に必要)で、クリアテキスト・データで取得する場合よりも約5%長い時間が必要になることを意味します。

全体的なパフォーマンスのオーバーヘッドは、暗号化列の数とそのアクセス頻度によって異なります。暗号化するのが最も妥当な列は、最高機密のデータを含む列です。

関連項目:
「NOMACパラメータを使用したディスク領域の節約およびパフォーマンスの向上」

既存の表で暗号化を有効化すると、表の特性を変更する他のALTER TABLE操作と同様に、完全な表更新が行われます。管理者は、大規模な既存の表で暗号化を有効化する前に、データベース・サーバーに与えるパフォーマンスおよびREDOログの潜在的な影響を考慮する必要があります。

表に対する書込み操作は、暗号化の有効化中、表キーの再設定中または暗号化アルゴリズムの変更中は一時的に実行できなくなる場合があります。このような処理が実行されている場合は、表のオンライン再定義を使用して、表への書込み操作が可能かどうかを確認できます。

関連項目:
『Oracle Database管理者ガイド』のオンラインでの表の再定義に関する項を参照してください。

大規模な表に対してTDE列暗号化を有効化している場合は、操作に対応できるよう、REDOログのサイズを大きくする必要があることがあります。

索引付けされた列の暗号化には、索引のない列の暗号化よりも多くの時間を要することもすでに判明しています。索引が作成された列を暗号化する必要がある場合は、索引を削除してから列をNO SALTで暗号化し、その後で索引を再度作成できます。

暗号化列に索引を付ける場合、索引は暗号化された値に対して作成されます。暗号化列の値を問い合せると、SQL問合せで使用される値が透過的に暗号化されます。その後、暗号化された値を使用して、索引の参照が実行されます。

注意:
索引付けされた暗号化列のレンジ・スキャンを実行する必要がある場合は、TDE列暗号化のかわりにTDE表領域暗号化を使用します。

8.3.4.2 記憶域のオーバーヘッド

TDE表領域暗号化には、記憶域のオーバーヘッドはありません。ただし、TDE列暗号化には、記憶域のオーバーヘッドが多少伴います。暗号化列のデータには、クリアテキスト・データより多くの記憶域が必要です。さらに、TDEでは、暗号化された値が16バイトの倍数に拡張されます。これは、クレジット・カード番号の格納に9バイトが必要な場合、クレジット・カード番号を暗号化して格納するには、さらに7バイトが必要になることを意味します。

暗号化された各値は、20バイトの整合性チェックにも関連付けられます。これは、NOMACパラメータを使用して列を暗号化した場合には当てはまりません。また、saltを使用してデータを暗号化した場合は、暗号化された各値を格納するために、さらに16バイトの記憶域が必要になります。

暗号化された各値の記憶域の最大オーバーヘッドは52バイトです。

関連項目:
「NOMACパラメータを使用したディスク領域の節約およびパフォーマンスの向上」

8.3.5 セキュリティに関する考慮事項

透過的データ暗号化(TDE)を使用する場合のセキュリティに関する考慮事項は、全システム・セキュリティの広範囲に適用されます。セキュリティ管理者は、対処するリスクのレベルとサイトで保持されるデータの機密度を識別する必要があります。別の方法を使用して許容レベルの保護を実現する場合は、コストと利点を評価する必要があります。一般的に、暗号化データに対して、個別のセキュリティ管理者、TDE用の個別のウォレット、およびバックアップ保護手順を用意すると有益です。TDE用の個別ウォレットを設定すると、他のOracleコンポーネントに対して自動ログインは許可されますが、TDEウォレットに対するパスワード保護は保持されます。

セキュリティに関するその他の考慮事項は、TDEを使用している場合の通常のデータベース操作およびネットワーク操作に適用されます。暗号化列のデータは、データ・ファイル、UNDOログ、REDOログおよびシステム・グローバル領域(SGA)のバッファ・キャッシュ内では暗号化されたままになります。一方、データは式の評価時に復号化されるため、ディスク上のスワップ・ファイルには復号化後のデータを表示できます。権限のあるオペレーティング・システム・ユーザーは、このデータを表示できる可能性があります。

TDEを使用して暗号化された列値は、暗号化された形式でデータ・ファイルに格納されます。ただし、これらのデータ・ファイルには、表に対する過去のデータ操作で残されたゴースト・コピーと呼ばれるクリアテキストの断片が含まれている場合があります。これは、オペレーティング・システムによってファイルが削除された後に、ディスク上にデータが残存している場合に類似しています。

古いクリアテキストの断片は、それらの値を含んでいるブロックがデータベースによって上書きされるまで、しばらく存在し続ける可能性があります。権限のあるオペレーティング・システム・ユーザーがデータベースのアクセス制御をバイパスした場合、表領域を保持するデータ・ファイル内のこれらの値に直接アクセスされる可能性があります。このリスクを最小限に抑えるには、次の手順を実行します。

1. 新しいデータ・ファイルに新しい表領域を作成します。CREATE TABLESPACE文を使用できます。

2. 暗号化列を含む表を新しい表領域に移動します。ALTER TABLE.....MOVE文を使用できます。元の表領域のすべてのオブジェクトについて、この手順を繰り返します。

3. 元の表領域を削除します。DROP TABLESPACE tablespace INCLUDING CONTENTS KEEP DATAFILES文を使用できます。データ・ファイルは、プラットフォーム固有のユーティリティを使用して安全に削除することをお薦めします。

4. 古いデータ・ファイルを安全に削除するには、プラットフォームおよびファイル・システムに固有のユーティリティを使用してください。このようなユーティリティの例には、shred (Linuxの場合)やsdelete (Windowsの場合)などがあります。

8.3.6 マルチデータベース環境における透過的データ暗号化の使用

同じサーバーに複数のOracle Databaseがインストールされている場合(同じOracleバイナリを共有しているが異なるデータファイルを使用しているデータベースなど)、各データベースはそれぞれ独自の透過的データ暗号化ウォレットにアクセスする必要があります。ウォレットは、データベース間で共有されるようには設計されていません。設計によって、データベースごとに1つのウォレットが必要となっています。複数のデータベースに同じウォレットを使用することはできません。

複数データベース環境に対してsqlnet.oraファイルを構成するには、次のオプションを使用します。

1. データベースが同じOracleホームを共有する場合、sqlnet.oraファイルをデフォルトの場所(ORACLE_HOME/network/adminディレクトリ)に保持します。
この場合、デフォルトの場所を使用することをお薦めします。sqlnet.oraファイルに、WALLET_LOCATIONまたはENCRYPTION_WALLET_LOCATIONエントリがないことを確認します。これらの2つのエントリがsqlnet.oraファイルにない場合、透過的データ暗号化は、デフォルトのsqlnet.oraの場所からウォレットにアクセスします。

2. オプション1がご使用のサイトで実行可能な場合、ORACLE_SIDのような環境変数設定に基づき、ウォレットの場所を指定できます。次に例を示します。

ENCRYPTION_WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /home/oracle/wallet/$ORACLE_SID)

3. オプション1および2が実行可能でない場合、個別のsqlnet.oraファイルを各データベースにつき1つ使用します。TNS_ADMIN環境変数が、正しいデータベース構成を指すように正確に設定されていることを確認します。TNS_ADMIN変数の詳細および設定例は、『SQL*Plusユーザーズ・ガイドおよびリファレンス』を参照してください。

注意:
他のデータベースからウォレットを使用することによって、データの一部または全部が失われる可能性があります。

8.3.7 分散環境でのレプリケーション

Oracle Data Guardでは、透過的データ暗号化(TDE)がサポートされています。プライマリ・データベースでTDEを使用する場合、Data Guard構成の各スタンバイ・データベースには、プライマリ・データベースからの暗号化ウォレットのコピーが必要です。プライマリ・データベースでマスター暗号化鍵を再設定した場合は、そのマスター暗号化鍵が格納されているウォレットを各スタンバイ・データベースにコピーする必要があります。

データをスタンバイ・データベースに転送する場合、ログ・ファイル内の暗号化データは暗号化されたままです。暗号化データは転送中も暗号化されたままです。

関連項目:
TDEとロジカル・スタンバイ・データベースの併用の詳細は、『Oracle Data Guard概要および管理』ガイドの付録Cを参照してください。

TDEは、SQL*Loaderのダイレクト・パス・ロードと連携します。暗号化列にロードされるデータは、ダイレクト・パス・ロードの過程で透過的に暗号化されます。

マテリアライズド・ビューは、TDE表領域暗号化と連携します。暗号化表領域にはマテリアライズド・ビューとマテリアライズド・ビュー・ログの両方を作成できます。

マテリアライズド・ビューは、TDE列暗号化とも連携します。ただし、マテリアライズド・ビュー・ログには、暗号化列を含めることができません。

関連項目:
マテリアライズド・ビューの詳細は、『Oracle Databaseアドバンスト・レプリケーション』ガイドのマテリアライズド・ビューの概念とアーキテクチャに関する項を参照してください。

8.3.8 暗号化データの圧縮とデータ重複除外

表領域暗号化を使用すると、Oracle Databaseでは表領域を暗号化する前に表および索引を圧縮します。これにより、圧縮から最大領域およびパフォーマンスにおける恩恵を受けるとともに、停止している暗号化のセキュリティも確保します。CREATE TABLESPACE SQL文に、COMPRESS句とENCRYPT句の両方を含めます。

列暗号化を使用すると、Oracle Databaseでは列を暗号化した後でデータを圧縮します。これは、圧縮には、暗号化された列で最小限の有効性があることを意味します。注目すべき例外が1つあります。列がSecureFiles LOBであり、暗号化がSecureFiles LOB暗号化を使用して実装され、圧縮(重複除外の場合もあり)がSecureFiles LOB圧縮および重複除外を使用して実装されている場合、圧縮は暗号化の前に実行されます。表領域暗号化のためのCREATE TABLESPACE文と同様に、COMPRESS句とENCRYPT句の両方を含めます。

関連項目:

- 拡張圧縮オプションの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

- SecureFiles LOB記憶域の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

8.3.9 OCIを使用した透過的データ暗号化

行を使用可能にする鍵は受信ポイントでは使用できないため、行の送信は使用できません。

8.3.10 マルチデータベース環境における透過的データ暗号化

同じサーバーに複数のOracle Databaseがインストールされている場合(同じOracleバイナリを共有しているが異なるデータファイルを使用しているデータベースなど)、各データベースはそれぞれ独自の透過的データ暗号化キーストアにアクセスする必要があります。ウォレットは、データベース間で共有されるようには設計されていません。設計によって、データベースごとに1つのウォレットが必要となっています。複数のデータベースに同じウォレットを使用することはできません。

複数データベース環境に対してsqlnet.oraファイルを構成するには、次のオプションを使用します。

1. データベースが同じOracleホームを共有する場合、sqlnet.oraファイルをデフォルトの場所(ORACLE_HOME/network/adminディレクトリ)に保持します。
この場合、デフォルトの場所を使用することをお薦めします。sqlnet.oraファイルに、WALLET_LOCATIONまたはENCRYPTION_WALLET_LOCATIONエントリがないことを確認します。これらの2つのエントリがsqlnet.oraファイルにない場合、透過的データ暗号化は、デフォルトのsqlnet.oraの場所からウォレットにアクセスします。

2. オプション1がご使用のサイトで実行可能な場合、ORACLE_SIDのような環境変数設定に基づき、ウォレットの場所を指定できます。次に例を示します。

ENCRYPTION_WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /home/oracle/wallet/$ORACLE_SID)

3. オプション1および2が実行可能でない場合、個別のsqlnet.oraファイルを各データベースにつき1つ使用します。TNS_ADMIN環境変数が、正しいデータベース構成を指すように正確に設定されていることを確認します。TNS_ADMIN変数の詳細および設定例は、『SQL*Plusユーザーズ・ガイドおよびリファレンス』を参照してください。

注意:
他のデータベースからキーストアを使用することによって、データの一部または全部が失われる可能性があります。

8.3.11 透過的データ暗号化のデータ・ディクショナリ・ビュー

次のデータ・ディクショナリ・ビューには、暗号化の詳細、表領域およびウォレットの詳細に関する情報が保持されます。

- ALL_ENCRYPTED_COLUMNS
ALL_ENCRYPTED_COLUMNSビューには、現在のユーザーがアクセスできる表内の暗号化列に関する暗号化情報が表示されます。表8-2に、このビューに含まれる情報を示します。

表8-2 ALL_ENCRYPTED_COLUMNSデータ・ディクショナリ・ビューの説明

列

データ型

NULL

説明

OWNER

VARCHAR2(30)

NOT NULL

表の所有者。

TABLE_NAME

VARCHAR2(30)

NOT NULL

表の名前。

COLUMN_NAME

VARCHAR2(30)

NOT NULL

列の名前

ENCRYPTION_ALG

VARCHAR2(29)

この表のデータの機密性を保護するために使用される暗号化アルゴリズム:

- 3キー・モードのTriple DES(168ビット・キー)

- AES 128ビット鍵

- AES 192ビット鍵

- AES 256ビット鍵

SALT

VARCHAR2(3)

列がSALTを使用して暗号化されているかどうか(YES | NO)

INTEGRITY_ALG

VARCHAR2(12)

表に使用される整合性アルゴリズム:

- SHA-1

- NOMAC

- DBA_ENCRYPTED_COLUMNS
DBA_ENCRYPTED_COLUMNSビューには、データベース内のすべての暗号化列の暗号化情報が表示されます。ビューの詳細は、ALL_ENCRYPTED_COLUMNSビューと同じです。

- USER_ENCRYPTED_COLUMNS
USER_ENCRYPTED_COLUMNSビューには、ユーザーのスキーマ内にある暗号化された表の列の暗号化情報が表示されます。 ビューの詳細は、ALL_ENCRYPTED_COLUMNSビューと同じです(OWNER列を除く)。ユーザーが所有する表のデータのみが表示されるため、OWNER列は含まれません。

- V$ENCRYPTED_TABLESPACES
V$ENCRYPTED_TABLESPACESビューには、暗号化された表領域に関する情報が表示されます。表8-3に、このビューに含まれる情報を示します。

表8-3 V$ENCRYPTED_TABLESPACESビューの説明

列

データ型

説明

TS#

NUMBER

表領域番号

ENCRYPTIONALG

VARCHAR2(7)

暗号化アルゴリズム:

- NONE

- 3DES168

- AES128

- AES192

- AES256

ENCRYPTEDTS

VARCHAR2(3)

表領域が暗号化されているかどうか(YES | NO)

- V$WALLET
V$WALLETビューには、TDEのマスター鍵として使用されるPKI証明書のメタデータ情報が表示されます。表8-4に、このビューに含まれる情報の概要を示します。

表8-4 V$WALLETビューの説明

列

データ型

説明

CERT_ID

VARCHAR2(52)

マスター・キーとして使用する特定のPKI証明書を指定するための一意の証明書識別子の値

DN

VARCHAR2(255)

特定のPKI証明書の識別名

SERIAL_NUM

VARCHAR2(40)

発行者または署名者が証明書に割り当てた一意のシリアル番号

ISSUER

VARCHAR2(255)

証明書を発行または署名した認証局または発行者の識別名

KEYSIZE

NUMBER

証明書に関連付けられたPKI鍵のサイズ

STATUS

VARCHAR2(16)

証明書の現在の状態:

- UNUSED

- IN USE

- USED

ユーザーは、この列を参照して、証明書が現在使用中かどうか、すでに透過的なデータベース暗号化に使用されているかどうかを識別できます。

- V$ENCRYPTION_WALLET
V$ENCRYPTION_WALLETには、TDEのウォレットおよびウォレット・ロケーションのステータスに関する情報が表示されます。表8-5に、このビューに含まれる情報の概要を示します。

表8-5 V$ENCRYPTION_WALLETビューの説明

列

データ型

説明

WRL_TYPE

VARCHAR2(20)

ウォレット・リソース・ロケータのタイプ(FILEなど)

WRL_PARAMETER

VARCHAR2(4000)

ウォレット・リソース・ロケータのパラメータ(たとえば、WRL_TYPE = FILEの場合は絶対ファイル名)

STATUS

VARCHAR2(9)

ウォレットのステータス

- OPEN

- CLOSED

- UNDEFINED

- OPEN_NO_MASTER_KEY

関連項目:
これらのデータ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

8.4 例: TDE列暗号化とTDE表領域暗号化のスタート・ガイド

この項では、TDE列暗号化とTDE表領域暗号化を開始する上で役立つチュートリアル・アプローチを使用します。次の各タスクについてサンプル・シナリオを使用して説明します。

- 透過的データ暗号化用データベースの準備

- 暗号化列を含む表の作成

- 暗号化列に対する索引の作成

- 既存の列を暗号化するための表の変更

- 暗号化された表領域の作成

- 暗号化された表領域での表の作成

8.4.1 透過的データ暗号化用データベースの準備

透過的データ暗号化(TDE)を初めて使用する場合は、最初にデータベースを準備します。そのためには、Oracleウォレット・ロケーションを指定してマスター暗号化鍵を設定する必要があります。データベースでTDEを使用できるように準備するには、次の手順を実行します。

1. sqlnet.oraファイルでのOracleウォレット・ロケーションの指定

2. マスター暗号化鍵の作成

3. Oracleウォレットのオープン

8.4.1.1 sqlnet.oraファイルでのOracleウォレット・ロケーションの指定

$ORACLE_HOME/network/adminにあるsqlnet.oraファイルを開きます。ファイルの末尾に、次の行を入力します。

ENCRYPTION_WALLET_LOCATION=
(SOURCE=(METHOD=FILE)(METHOD_DATA=
(DIRECTORY=/app/wallet)))

変更を保存して、ファイルを閉じます。

注意:
暗号化ウォレットには任意のディレクトリを選択できますが、そのパスでは、データベースのインストール時に作成した不明瞭化された標準ウォレット(cwallet.sso)を指定しないでください。

8.4.1.2 マスター暗号化鍵の作成

次に、表キーの暗号化に使用されるマスター暗号化鍵を作成する必要があります。マスター暗号化鍵を作成するには、次のコマンドを入力します。

SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "Easy2rem";

このコマンドによって、次の処理が実行されます。

- 暗号化ウォレットが指定のディレクトリに存在しない場合は、暗号化ウォレット(ewallet.p12)が作成され、このウォレットが開かれて、TDE用のマスター暗号化鍵が作成(または再作成)されます。

- 暗号化ウォレットが指定のディレクトリに存在する場合は、そのウォレットが開かれて、TDE用のマスター暗号化鍵が作成(または再作成)されます。

注意:

- マスター暗号化鍵は、データを新しい暗号化鍵で再暗号化しないかぎり、1回のみ作成してください。

- ALTER SYSTEM権限を持つユーザーのみがマスター暗号化鍵を作成したり、ウォレットを開くことができます。

8.4.1.3 Oracleウォレットのオープン

Oracleウォレットは、データベースが停止するたびに閉じます。このウォレットは明示的に閉じることもできます。

暗号化または復号化の操作を実行するには、Oracleウォレットが開いていることを事前に確認する必要があります。マスター暗号化鍵が格納されているウォレットを開くには、次のコマンドを使用します。

SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "Easy2rem";

注意:
このコマンドで使用したパスワードは、マスター暗号化鍵の作成で使用したパスワードと同じです。このパスワードは、ウォレットを開き、マスター暗号化鍵をアクセス可能にするためのパスワードになります。

8.4.2 暗号化列を含む表の作成

次に、暗号化列を含む表を作成できます。ここでは、cust_payment_infoという表を作成します。この表には、credit_card_numberという列を含めます。credit_card_number列には、暗号化対象の機密データが格納されます。表を作成するには、次のコマンドを使用します。

CREATE TABLE cust_payment_info
(first_name VARCHAR2(11),
last_name VARCHAR2(10),
order_number NUMBER(5),
credit_card_number VARCHAR2(16) ENCRYPT NO SALT,
active_card VARCHAR2(3));

この表は、このコマンドを発行したユーザーのデフォルト表領域に作成されます。credit_card_number列はSALTなしで暗号化されます。credit_card_number列に入力されたデータはすべて、ディスク上で暗号化されます。credit_card_numberデータへのアクセス権があるユーザーは、復号化後のデータを確認できます。データベース・ユーザーやアプリケーションは、特定の列の内容がディスク上で暗号化されているかどうかを認識する必要はありません。

次に、表にデータを入力できます。次に、サンプル・データをcust_payment_info表に追加する例を示します。

INSERT INTO cust_payment_info VALUES
('Jon', 'Oldfield', 10001, '5446959708812985','YES');
INSERT INTO cust_payment_info VALUES
('Chris', 'White', 10002, '5122358046082560','YES');
INSERT INTO cust_payment_info VALUES
('Alan', 'Squire', 10003, '5595968943757920','YES');
INSERT INTO cust_payment_info VALUES
('Mike', 'Anderson', 10004, '4929889576357400','YES');
INSERT INTO cust_payment_info VALUES
('Annie', 'Schmidt', 10005, '4556988708236902','YES');
INSERT INTO cust_payment_info VALUES
('Elliott', 'Meyer', 10006, '374366599711820','YES');
INSERT INTO cust_payment_info VALUES
('Celine', 'Smith', 10007, '4716898533036','YES');
INSERT INTO cust_payment_info VALUES
('Steve', 'Haslam', 10008, '340975900376858','YES');
INSERT INTO cust_payment_info VALUES
('Albert', 'Einstein', 10009, '310654305412389','YES');

credit_card_number列に入力されたデータはすべて、暗号化された形式でディスク上に格納されます。

8.4.3 暗号化列に対する索引の作成

saltなしで列を暗号化した場合は、その暗号化列に対して索引を作成できます。ここでは、credit_card_number列に対して索引を作成します。credit_card_number列に対して索引を作成するには、次のコマンドを使用します。

CREATE INDEX cust_payment_info_idx ON cust_payment_info (credit_card_number);

8.4.4 既存の列を暗号化するための表の変更

既存の表は、ALTER TABLEコマンドを使用して変更できます。ここでは、列が暗号化されていないemployeesという表を変更します。次のコマンドを使用して、employees表を表示します。

SQL> DESC employees
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
FIRSTNAME                                          VARCHAR2(11)
LASTNAME                                           VARCHAR2(10)
EMP_SSN                                            VARCHAR2(9)
DEPT                                               VARCHAR2(20)

次のコマンドを使用して、employees表のemp_ssn列を暗号化します。

SQL> ALTER TABLE employees MODIFY (emp_ssn ENCRYPT);

次のコマンドを使用して、変更したemployees表を表示します。

SQL> DESC employees
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
FIRSTNAME                                          VARCHAR2(11)
LASTNAME                                           VARCHAR2(10)
EMP_SSN                                            VARCHAR2(9) ENCRYPT
DEPT                                               VARCHAR2(20)

emp_ssn列の既存のデータはすべて、ディスク上で暗号化されます。データへのアクセス権があるユーザーには、データが透過的に復号化されます。

8.4.5 暗号化された表領域の作成

TDE表領域暗号化を使用すると、表領域全体を暗号化できます。表領域に格納されているデータはすべて、デフォルトで暗号化されます。このように、暗号化された表領域に表を作成すると、その表はデフォルトで暗号化されます。暗号化が必要な列を判断するために、各表の列を詳細に分析する必要はありません。

ここでは、暗号化された表を格納するために、暗号化された表領域を作成します。次のコマンドを使用して、securespaceという暗号化された表領域を作成します。

SQL> CREATE TABLESPACE securespace
2  DATAFILE '/home/oracle/oracle3/product/11.1.0/db_1/secure01.dbf'
3  SIZE 150M
4  ENCRYPTION
5  DEFAULT STORAGE(ENCRYPT);
Tablespace created.

8.4.6 暗号化された表領域での表の作成

暗号化された表領域に表を作成すると、表内のデータはすべて、暗号化された形式でディスク上に格納されます。次のコマンドを使用して、securespaceという暗号化された表領域にcustomer_info_paymentという表を作成します。

SQL> CREATE TABLE customer_payment_info
2  (first_name VARCHAR2(11),
3  last_name VARCHAR2(10),
4  order_number NUMBER(5),
5  credit_card_number VARCHAR2(16),
6  active_card VARCHAR2(3))TABLESPACE securespace;
Table created.

8.5 透過的データ暗号化のトラブルシューティング

この項では、透過的データ暗号化(TDE)の構成時および使用時に表示される可能性がある一般的なエラー・メッセージを示します。エラー・メッセージの一般的な原因および考えられる解決策についても示します。

ORA-28330: このデータ型は暗号化できません

原因: 列の暗号化に対して、データ型がサポートされていません。

処置: 特にありません。

ORA-28331: 暗号化された列サイズはデータ型に対して長すぎます

原因: 暗号化された列のサイズが、VARCHAR2の場合で3932、CHARの場合で1932、NVARCHAR2の場合で1966、NCHARの場合で966より長く指定されています。

処置: 列のサイズを小さくしてください。

ORA-28332: 暗号化鍵には複数のパスワードは指定できません

原因: ユーザー・コマンドで複数のパスワードが指定されました。

処置: 特にありません。

ORA-28333: 列が暗号化されていません

原因: 暗号化されていない列を再入力または復号化しようとしました。

処置: 特にありません。

ORA-28334: 列はすでに暗号化されています

原因: 暗号化された列を暗号化しようとしました。

処置: 特にありません。

ORA-28335: 参照型または被参照型の外部キー制約列は暗号化できません

原因: 参照制約に暗号化された列が関与していました。

処置: 特にありません。

ORA-28336: SYSが所有するオブジェクトは暗号化できません

原因: SYSが所有する表の列を暗号化しようとしました。

処置: 特にありません。

ORA-28337: 指定した索引が暗号化列に定義されていない可能性があります

原因: 索引列が、ファンクション索引、ドメイン索引、結合索引のいずれかでした。

処置: 特にありません。

ORA-28338: 索引付けされた列は、saltを使用して暗号化できません

原因: saltを使用して索引列を暗号化しようとしました。

処置: 表を変更し、saltを使用せずに列の暗号化を指定してください。

ORA-28339: 暗号化アルゴリズムが欠落しているか、または無効です

原因: ユーザー・コマンドの暗号化アルゴリズムが欠落しているか、無効です。

処置: 有効なアルゴリズムを指定する必要があります。

ORA-28340: 表には、別の暗号化アルゴリズムが選択されています

原因: 既存の暗号化された列が、異なるアルゴリズムに関連付けられています。

処置: アルゴリズムを指定しないか、既存の暗号化された列と同じアルゴリズムを指定してください。

ORA-28341: 制約列は、saltを使用して暗号化できません

原因: saltを使用して制約列を暗号化しようとしました。

処置: saltを使用せずに制約列を暗号化してください。

ORA-28342: 列キーでは整合性チェックが正常に実行されません

原因: 暗号化メタデータが不正に変更された可能性があります。

処置: 特にありません。

ORA-28343: データを暗号化できません

原因: データまたは暗号化メタデータが不正に変更されたか、セキュリティ・モジュールが正しく設定されていません。

処置: 特にありません。

ORA-28344: データを復号化できません

原因: データまたは暗号化メタデータが不正に変更されたか、セキュリティ・モジュールが正しく設定されていません。

処置: 特にありません。

ORA-28345: 暗号化された列が存在するため、ダウングレードできません

原因: システム内に暗号化された列が存在するにもかかわらず、ダウングレードしようとしました。

処置: これらの列を復号化してからダウングレードしてください。

ORA-28346: 暗号化された列は、パーティション化列として機能しません

原因: パーティション化キー列を暗号化しようとしたか、暗号化された列を含むパーティション化索引を作成しようとしました。

処置: 列を復号化する必要があります。

ORA-28347: 暗号化プロパティの不一致

原因: ALTER TABLE EXCHANGE PARTITION | SUBPARTITIONコマンドを発行しようとしましたが、暗号化プロパティが一致しませんでした。

処置: 暗号化アルゴリズムと列の鍵が同一であることを確認してください。対応する列は、同じsaltを使用した表とsalt以外のフレーバを使用した表の両方で暗号化する必要があります。

ORA-28348: 指定した列に定義されている索引を暗号化できません

原因: ファンクション索引、ドメイン索引または結合索引内の列を暗号化しようとしました。

処置: 索引を削除してください。

ORA-28349: マテリアライズド・ビュー・ログに記録された指定の列を暗号化できません

原因: すでにマテリアライズド・ビュー・ログに記録されている列を暗号化しようとしました。

処置: マテリアライズド・ビュー・ログを削除してください。

ORA-28350: CDC同期変更表に記録された指定の列を暗号化できません

原因: すでにCDC同期変更表に記録されている列を暗号化しようとしました。

処置: 同期変更表を削除してください。

ORA-28351: クラスタ・キーの列を暗号化できません

原因: クラスタ・キーの列を暗号化しようとしました。クラスタ表のクラスタ・キーの列は暗号化できません。

処置: 特にありません。

ORA-28353: ウォレットのオープンに失敗しました

原因: ウォレットのパスまたはパスワードが正しくないので、データベースがセキュリティ・モジュール・ウォレットをオープンできませんでした。

処置: 正しいウォレット・パスワードを使用するか、指定のディレクトリにウォレットが存在することを確認して、コマンドを再実行します。必要に応じて、新しいウォレットを作成し、初期化してください。

ORA-28354: ウォレットはすでにオープンしています。

原因: セキュリティ・モジュール・ウォレットはすでにオープンしています。

処置: 特にありません。

ORA-28356: 無効なopen wallet構文

原因: ウォレットをオープンするコマンドに、不適切な綴りまたは構文が含まれています。

処置: ウォレットをオープンする場合は、綴りと構文を検証し、コマンドを再実行してください。

ORA-28357: ウォレットのオープンに必要なパスワード

原因: ウォレットをオープンするコマンドを実行する際にパスワードが提供されませんでした。

処置: 有効なパスワードでコマンドを再試行してください。

ORA-28358: 不適切なset key構文

原因: マスター鍵を設定するコマンドに、不適切な綴りまたは構文が含まれています。

処置: 透過的データベース暗号化のマスター鍵を設定する場合は、綴りと構文を検証し、コマンドを再実行してください。

ORA-28359: 無効な証明書識別子

原因: 指定された証明書がウォレットに存在しません。

処置: V$WALLET固定ビューを問い合せて、証明書の使用に適した証明書識別子を検索してください。

ORA-28361: マスター鍵が設定されていません

原因: インスタンスのマスター鍵が設定されていません。

処置: ALTER SYSTEM SET KEYコマンドを実行し、データベース・インスタンスのマスター鍵を設定してください。

ORA-28362: マスター鍵が見つかりません

原因: 必要なマスター鍵を検出できませんでした。無効または不適切なウォレットを使用したことが原因と考えられます。

処置: ウォレット・ロケーション・パラメータで、正しいウォレットが指定されているか確認してください。また、暗号化されたウォレットを使用するべきところでSSOウォレットが使用されていないことを検証してください。

ORA-28363: 用意されたバッファーは出力用には不十分です

原因: 用意された出力バッファは、出力を含めるには小さすぎます。

処置: 出力バッファのサイズを確認し、適切なサイズに初期化されていることを確認してください。

ORA-28364: 無効なウォレット操作です

原因: ウォレットを操作するコマンドに、不適切な綴りまたは構文が含まれています。

処置: 綴りと構文を検証し、コマンドを再実行してください。

ORA-28365: ウォレットがオープンしていません

原因: セキュリティ・モジュール・ウォレットがオープンしていません。

処置: ウォレットをオープンしてください。

ORA-28366: 無効なデータベース暗号化操作です

原因: データベース暗号化のコマンドに、不適切な綴りまたは構文が含まれています。

処置: 綴りと構文を検証し、コマンドを再実行してください。

ORA-28367: ウォレットが存在しません

原因: Oracleウォレットが作成されていないか、sqlnet.oraのウォレット・ロケーション・パラメータに無効なウォレット・パスが指定されています。

処置: WALLET_LOCATIONパラメータまたはENCRYPTION_WALLET_LOCATIONパラメータが正しく、有効なウォレットが指定のパスに存在することを検証してください。

ORA-28368: ウォレットを自動作成できません

原因: データベースがOracleウォレットの自動作成に失敗しました。Oracleプロセスに適切なファイル権限がないか、ウォレットがすでに存在する可能性があります。

処置: 適切なディレクトリ権限がOracleユーザーに付与されており、暗号化または不明瞭化されたウォレットが指定のウォレット・ロケーションに存在しないことを確認し、再試行してください。

ORA-28369: オフライン時には暗号化可能な表領域にファイルを追加できません

原因: 表領域内のすべてのファイルがオフラインのとき、暗号化可能な表領域にファイルを追加しようとしました。

処置: 表領域をオンラインにし、再試行してください。

ORA-28370: ENCRYPT記憶域オプションは使用できません

原因: ENCRYPT記憶域オプションを指定しようとしました。このオプションは、CREATE TABLESPACEの実行時にのみ指定できます。

処置: このオプションを削除して、文を再実行してください。

ORA-28371: ENCRYPTION句またはENCRYPT記憶域オプション(あるいはその両方)は使用できません

原因: TEMPまたはUNDO表領域の作成でENCRYPTION句またはENCRYPT記憶域オプションを指定しようとしました。

処置: これらのオプションを削除して、文を再試行してください。

ORA-28372: 暗号化された表領域にENCRYPT記憶域オプションがありません

原因: 表領域を暗号化する際にENCRYPT記憶域オプションを指定せずにENCRYPTIONプロパティをCREATE TABLESPACEに指定しようとしました。

処置: ENCRYPT記憶域オプションを追加して、文を再試行してください。

ORA-28373: 暗号化された表領域にENCRYPTION句がありません

原因: 表領域を暗号化する際にENCRYPTIONプロパティを指定せずにENCRYPT記憶域オプションをCREATE TABLESPACEに指定しようとしました。

処置: ENCRYPTION句を追加して、文を再試行してください。

ORA-28374: 入力したマスター鍵がウォレットに見つかりません

原因: 暗号化された表領域またはREDOログにアクセスしようとしましたが、入力したマスター鍵がウォレットに存在しません。

処置: 表領域が作成されたインスタンスから正しいOracleウォレットをコピーしてください。

ORA-28375: 暗号化された表領域ではエンディアン間の変換を実行できません

原因: 暗号化された表領域でエンディアン間の変換を実行しようとしました。

処置: 暗号化された表領域でのエンディアン間の変換はサポートされていません。

ORA-28376: PKCS11ライブラリが見つかりません

原因: HSMベンダーのライブラリが見つかりません。

処置: Unix系システムの場合は/opt/oracle/extapi/[32,64]/hsm/{VENDOR}/{VERSION}/lib<apiname>.<ext>、Windowsシステムの場合は%SYSTEM_DRIVE%\oracle\extapi\[32,64]\hsm\{VENDOR}\{VERSION}\lib<apin// ame>.<ext>のディレクトリ構造に、HSMベンダーのライブラリを配置します。[32, 64]は、32または64ビット・バイナリを示します。{VENDOR}は、ライブラリを提供するベンダー名です。{VERSION}は、ライブラリのバージョンです。書式はnum#.num#.num#にします(可能な場合)。

ORA-28377: ウォレットからHSMに移行する必要はありません

原因: 暗号化された列がないか、またはすべての列キーがHSMマスター鍵を使用してすでに暗号化されています。

処置: 処置は不要です。

ORA-28378: マスター鍵の設定後、ウォレットがオープンしていません

原因: マスター鍵は設定またはリセットされました。ただし、ウォレットを正常に再オープンできませんでした。

処置: ウォレットを再オープンしてください。

8.6 透過的データ暗号化の参照情報

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

- サポートされる暗号化と整合性のアルゴリズム

- クイック・リファレンス: 透過的データ暗号化のSQLコマンド

8.6.1 サポートされる暗号化と整合性のアルゴリズム

デフォルトでは、透過的データ暗号化(TDE)には、192ビット長の暗号鍵で暗号化するAdvanced Encryption Standard (AES192)が使用されます。また、特に指定しないかぎり、暗号化の前にクリアテキストにsaltがデフォルトで追加されます。暗号化の対象となる索引付けされた列にはsaltを追加できないことに注意してください。索引付けされた列に対しては、SQL ENCRYPT句でNO SALTパラメータを選択します。

既存の暗号化列の暗号化アルゴリズムおよび暗号化鍵を変更するには、SQL ENCRYPT句で別のアルゴリズムを設定します。

関連項目:

- SQL ENCRYPT句でNO SALTパラメータを選択する場合の正しい構文は、例8-4を参照してください。

- SQL ENCRYPT句で別のアルゴリズムを設定する場合の構文例は、「暗号化列を含む表に対する暗号化鍵またはアルゴリズムの変更」を参照してください。

表8-6に、サポートされる暗号化アルゴリズムを示します。

表8-6 透過的データ暗号化でサポートされる暗号化アルゴリズム

アルゴリズム

鍵サイズ

パラメータ名

Triple-DES (Data Encryption Standard)

168ビット

3DES168

AES (Advanced Encryption Standard)

128ビット

AES128

AES

192ビット(デフォルト)

AES192

AES

256ビット

AES256

整合性保護のために、SHA-1ハッシュ・アルゴリズムが使用されます。

8.6.2 クイック・リファレンス: 透過的データ暗号化のSQLコマンド

表8-7に、透過的データ暗号化の実装および管理に使用可能なSQLコマンドのサマリーを示します。

表8-7 透過的データ暗号化のSQLコマンドのクイック・リファレンス

タスク

SQLコマンド

既存の表への暗号化列の追加

ALTER TABLE table_name ADD (column_name datatype ENCRYPT);

表の作成および列の暗号化

CREATE TABLE table_name (column_name datatype ENCRYPT);

暗号化されていない既存の列の暗号化

ALTER TABLE table_name MODIFY (column_name ENCRYPT);

マスター暗号化鍵: 設定または再設定

ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "password";

マスター暗号化鍵: PKI証明書を使用するための設定または再設定

ALTER SYSTEM SET ENCRYPTION KEY "certificate_ID" IDENTIFIED BY "password";

ウォレット: マスター暗号化鍵にアクセスするためのオープン

ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "password";

9 Oracleサーバーとクライアントに対するネットワーク・データの暗号化および整合性の構成

この章では、Oracle Advanced Securityにおける、Oracle Net Services固有のデータの暗号化および整合性を構成する方法について説明します。内容は次のとおりです。

- Oracle Advanced Securityの暗号化

- Oracle Advanced Securityのデータの整合性

- Diffie-Hellmanベースの鍵交換

- データの暗号化および整合性の構成方法

9.1 Oracle Advanced Securityの暗号化

セキュアな暗号システムの目的は、鍵に基づいて、平文データを解読不能な暗号文に変換することです。正しい鍵がなければ、暗号文を元の平文に変換することはきわめて困難(計算上は不可能)です。対称暗号システムでは、同じデータの暗号化と復号化の両方に同じ鍵を使用します。Oracle Advanced Securityは、Advanced Encryption Standard (AES)および3DESの対称暗号システムを提供して、Oracle Net Servicesトラフィックの機密保護を図ります。

この項では、Oracle Advanced Securityの最新リリースで利用可能なデータ暗号化アルゴリズムについて説明します。

- Advanced Encryption Standard

- Triple-DESのサポート

- 注意:
Oracle Advanced Securityの8.1.7より前のリリースには、米国内版、アップグレード版および輸出版の3つのエディションがあり、それぞれ異なる鍵の長さが使用されていました。このリリースには、以前は米国内版エディションでのみ利用可能であった暗号化アルゴリズムと鍵の長さを補完したものが組み込まれています。以前のバージョンの製品をデプロイする場合は、該当する製品リリースの米国内版エディションを入手できます。

9.1.1 Advanced Encryption Standard
Oracle Advanced Securityでは、米国連邦情報処理標準(FIPS)暗号化アルゴリズムであるAdvanced Encryption Standard (AES)がサポートされています。AESは、ネットワーク上で機密データを保護するために、あらゆる米国政府組織および企業で使用できます。この暗号化アルゴリズムでは、128ビット、192ビットおよび256ビットの3つの標準の鍵の長さが定義されています。いずれのバージョンも、外部暗号ブロック連鎖(CBC)モードで稼働します。

9.1.2 Triple-DESのサポート

Oracle Advanced Securityでは、DESアルゴリズムにメッセージ・データを3回渡して暗号化する、Triple-DES (3DES)暗号化がサポートされています。3DESは高度なメッセージ・セキュリティを提供しますが、パフォーマンスの低下を伴います。パフォーマンス低下の度合いは、暗号化を実行するプロセッサの速度によって異なります。3DESは、標準のDESアルゴリズムに比べ、データ・ブロックの暗号化に通常3倍の時間を要します。

3DESには2つの鍵を使用するバージョンと3つの鍵を使用するバージョンがあり、それぞれ有効な鍵の長さは112ビットと168ビットです。いずれのバージョンも外部暗号ブロック連鎖(CBC)モードで稼働します。

注意:
3DESは、企業および政府機関の使用に選択される暗号化アルゴリズムとして、AESに取って代わられました。

9.2 Oracle Advanced Securityのデータの整合性

ネットワーク・データを暗号化すると、ネットワーク上で転送される平文データを不正なユーザーが閲覧できなくなり、データのプライバシが保護されます。また、Oracle Advanced Securityでは、2つの形態の攻撃からデータを保護できます。これらの攻撃の詳細は、表9-1を参照してください。

表9-1 攻撃の2つの形態

攻撃形態

説明

データ変更攻撃

データ変更攻撃とは、不正なユーザーが転送中のデータを傍受し、データを変更して再転送することです。たとえば、銀行への$100の預入れを傍受して、金額を$10,000に変更し、その水増し金額を再転送することをデータ変更攻撃といいます。

再生攻撃

再生攻撃とは、有効なデータ全体を反復的に再送することです。たとえば、銀行からの$100の払戻しを傍受し、その払戻しを10回再転送して、最終的に$1,000受け取るといった攻撃です。

9.2.1 サポートされるデータの整合性アルゴリズム

Oracle Advanced Securityでは、鍵で順序付けられたSecure Hash Algorithm (SHA-1)を使用して、これらの両方の形態の攻撃からデータを保護できます。いずれのハッシュ・アルゴリズムでも、データがなんらかの方法で変更された場合に変わるチェックサムを作成します。この保護機能は暗号化プロセスとは独立して動作するため、暗号化の有無に関係なくデータ整合性を保つことができます。

関連項目:
「クライアントとサーバーでの整合性の構成」

9.3 Diffie-Hellmanベースの鍵交換

マルチユーザー環境では、安全な鍵を配布することは困難です。Oracle Advanced Securityでは、一般的なDiffie-Hellman鍵交換アルゴリズムを使用して、暗号化およびデータ整合性の両面において安全な鍵の配布を実現します。

暗号化を使用して暗号データを保護するときは、鍵を頻繁に変更して、鍵の安全性が損なわれた場合の影響を最小限に抑える必要があります。そのため、Oracle Advanced Securityの鍵管理機能では、セッションごとにセッション鍵が変更されます。

9.3.1 認証鍵フォールドイン

認証鍵フォールドインを使用する目的は、Diffie-Hellman鍵交換に対する第三者の攻撃(従来の呼称は介在者攻撃)を阻止することです。この暗号化では、クライアントとサーバーのみが認識している共有秘密鍵とDiffie-Hellmanによって交換される最初のセッション鍵を組み合せることによって、セッション鍵の安全性を大幅に強化しています。

クライアントとサーバーは、Diffie-Hellmanによって生成されるセッション鍵を使用して通信を開始します。サーバーに対するクライアントの認証時に、両者のみが認識する共有秘密鍵が確立されます。Oracle Advanced Securityでは、その共有秘密鍵とDiffie-Hellmanセッション鍵を組み合せることで、介在者攻撃を阻止するためのさらに強力なセッション鍵を生成します。

注意:
認証鍵フォールドイン機能は、Oracle Advanced Securityに組み込まれているため、システム管理者またはネットワーク管理者による構成作業は必要ありません。

9.4 データの暗号化および整合性の構成方法

この項では、Oracle Advanced Security固有のOracle Net Servicesによる暗号化および整合性を構成する方法について説明します。Oracle Net Servicesがインストール済であることを前提としています。

ネットワーク管理者またはセキュリティ管理者は、暗号化と整合性の構成パラメータを設定します。クライアント・システムおよびサーバー・システムでデータの暗号化と整合性を使用する場合、各システム上のプロファイル(sqlnet.oraファイル)に、この項の次のトピックで説明するパラメータの一部またはすべてを指定する必要があります。

- 暗号化および整合性のアクティブ化について

- 暗号化および整合性のネゴシエーションについて

- Oracle Net Managerを使用した暗号化および整合性パラメータの構成

関連項目:
暗号化、整合性および認証に使用するSSL機能を構成する場合は、第13章「Secure Sockets Layer認証の構成」を参照してください。

9.4.1 暗号化および整合性のアクティブ化について

どのネットワーク接続でも、クライアントとサーバーの両方が複数の暗号化アルゴリズムと複数の整合性アルゴリズムをサポートできます。接続が確立されるときに、sqlnet.oraファイルで指定されているアルゴリズムの中から、使用するアルゴリズムをサーバーが選択します。

サーバーは、クライアントとサーバーの両方で使用できるアルゴリズム間で一致するものを検索し、サーバー側のリストで最初にあって、クライアント側のリストにも出現するアルゴリズムを選択します。接続の一方の側がアルゴリズム・リストを指定していない場合、その側でインストールされているすべてのアルゴリズムを使用できます。いずれかの側でインストールされていないアルゴリズムを指定すると、エラー・メッセージORA-12650が表示され、接続が失敗します。

暗号化パラメータと整合性パラメータを定義するには、ネットワーク上のクライアントとサーバーのsqlnet.oraファイルを変更します。

利用可能なOracle Advanced Securityの暗号化アルゴリズム(表9-3)の一部またはすべて、および利用可能な整合性アルゴリズム(SHA-1)を構成できます。各接続セッションに使用できるのは、1つの暗号化アルゴリズムと1つの整合性アルゴリズムのみです。

注意:
クライアントとサーバーで利用可能なアルゴリズムのうち、最初の暗号化アルゴリズムと最初の整合性アルゴリズムが自動的に選択されます。ネゴシエーションの優先順にアルゴリズムと鍵の長さを選択することをお薦めします(つまり、最も強力な鍵の長さを最初に選択します)。

関連項目:
付録A「データ暗号化および整合性パラメータ」

9.4.2 暗号化および整合性のネゴシエーションについて

暗号化または整合性をオンにするかどうかをネゴシエートする場合、Oracle Advanced Securityの暗号化と整合性の構成パラメータに4つの値を指定できます。次に、4つの値をセキュリティ・レベルの低い順に示します。値REJECTEDは、クライアントとサーバーの間の通信に最小レベルのセキュリティを提供し、値REQUIREDは、最高レベルのネットワーク・セキュリティを提供します。

- REJECTED

- ACCEPTED

- REQUESTED

- REQUIRED

各パラメータのデフォルト値はACCEPTEDです。

Oracle Databaseサーバーおよびクライアントは、デフォルトではACCEPT暗号化接続に設定されます。これは、接続の片側のみ(サーバー側またはクライアント側)を構成するだけで、接続ペアに対して目的の暗号化および整合性設定を有効化できることを意味します。

したがって、たとえば、数多くのOracleクライアントがOracleデータベースに接続する場合も、サーバー側でsqlnet.oraに適切な変更を加えることによって、すべての接続に対して必要な暗号化および整合性設定を構成できます。クライアントごとに個別に構成の変更を実装する必要はありません。

9.4.2.1 REJECTED

接続先から要求されてもセキュリティ・サービスを有効化しない場合は、この値を選択します。

このシナリオでは、セキュリティ・サービスの使用が許可されないことを接続元で指定します。接続先がREQUIREDに設定されている場合、エラー・メッセージORA-12650が表示されて接続が終了します。接続先がREQUESTED、ACCEPTEDまたはREJECTEDに設定されている場合、エラーは発生せずに、セキュリティ・サービスが無効のまま接続が継続されます。

9.4.2.2 ACCEPTED

接続先から要求または依頼されたときにセキュリティ・サービスを有効化する場合は、この値を選択します。

このシナリオでは、接続元からはセキュリティ・サービスを要求しませんが、接続先がREQUIREDまたはREQUESTEDに設定されている場合は、セキュリティ・サービスが有効化されます。接続先がREQUIREDまたはREQUESTEDに設定されていて、該当する暗号化アルゴリズムまたは整合性アルゴリズムが見つかると、エラーは発生せずに、セキュリティ・サービスが有効のまま接続が継続されます。接続先がREQUIREDに設定されていて、該当するアルゴリズムが見つからない場合、エラー・メッセージORA-12650が表示されて接続が終了します。

接続先がREQUESTEDに設定されていて、該当するアルゴリズムが見つからない場合、または接続先がACCEPTEDまたはREJECTEDに設定されている場合、エラーは発生せずに、セキュリティ・サービスが無効のまま接続が継続されます。

9.4.2.3 REQUESTED

接続先でセキュリティ・サービスの使用が許可されているときにセキュリティ・サービスを有効化する場合は、この値を選択します。

このシナリオでは、接続元がセキュリティ・サービスの使用を希望します(必須ではない)。接続先でACCEPTED、REQUESTEDまたはREQUIREDが指定されている場合、セキュリティ・サービスが有効化されます。接続先に該当するアルゴリズムがある必要があります。見つからない場合、セキュリティ・サービスは有効化されません。接続先でREQUIREDが指定されていて、該当するアルゴリズムが見つからない場合、接続は失敗します。

9.4.2.4 REQUIRED

セキュリティ・サービスを有効化する場合、または接続を禁止する場合は、この値を選択します。

このシナリオでは、接続元がセキュリティ・サービスの有効化を強制します。接続先でREJECTEDが指定されている場合、または接続先に互換性のあるアルゴリズムが見つからない場合、接続は失敗します。

表9-2に、クライアントとサーバーの構成パラメータを各種組み合せたときに、セキュリティ・サービスが有効化されるかどうかを示します。サーバーまたはクライアントでREQUIREDが指定されている場合は、共通のアルゴリズムが存在しないと、接続が失敗します。それ以外の場合は、サービスが有効化されていて、共通のサービス・アルゴリズムが存在しないと、サービスが無効化されます。

表9-2 暗号化とデータ整合性のネゴシエーション

クライアントの設定

サーバーの設定

暗号化とデータのネゴシエーション

REJECTED

REJECTED

OFF

ACCEPTED

REJECTED

OFF

REQUESTED

REJECTED

OFF

REQUIRED

REJECTED

接続失敗

REJECTED

ACCEPTED

OFF

ACCEPTED

ACCEPTED

OFF脚注1

REQUESTED

ACCEPTED

ON

REQUIRED

ACCEPTED

ON

REJECTED

REQUESTED

OFF

ACCEPTED

REQUESTED

ON

REQUESTED

REQUESTED

ON

REQUIRED

REQUESTED

ON

REJECTED

REQUIRED

接続失敗

ACCEPTED

REQUIRED

ON

REQUESTED

REQUIRED

ON

REQUIRED

REQUIRED

ON

脚注1  この値のデフォルト値はOFFです。ユーザーがOracle Net Managerを使用するか、sqlnet.oraファイルを変更することによってこのパラメータを変更しないかぎり、暗号化とデータ整合性は有効化されません。

9.4.3 Oracle Net Managerを使用した暗号化および整合性パラメータの構成

Oracle Net Managerを使用して、暗号化および整合性パラメータを設定または変更できます。この項の内容は次のとおりです。

- クライアントとサーバーでの暗号化の構成

- クライアントとサーバーでの整合性の構成

関連項目:

- 有効な暗号化アルゴリズムの詳細は、付録A「データ暗号化および整合性パラメータ」を参照してください。

- 構成情報の詳細は、Oracle Net Managerオンライン・ヘルプを参照してください。

9.4.3.1 クライアントとサーバーでの暗号化の構成

クライアントとサーバーで暗号化を構成するには、Oracle Net Managerを使用します(「Oracle Net Managerの起動」も参照)。Oracle Net Managerを構成するには、次の手順を実行します。

1. Oracle Advanced Securityプロファイルにナビゲートします(詳細は、「Oracle Advanced Securityプロファイルへのナビゲート」を参照してください)。

2. 「暗号化」タブをクリックします。

3. 「整合性」ボックスから「クライアント」または「サーバー」オプションを選択します。

4. 「暗号化タイプ」リストから、次のいずれかを選択します。

- REQUESTED

- REQUIRED

- ACCEPTED

- REJECTED

5. (オプション)「暗号化シード」フィールドに、10字から70字のランダムな文字を入力します。クライアントの暗号化シードは、サーバーの暗号化シードとは別のものにします。

6. 「使用可能なメソッド」リストで暗号化アルゴリズムを選択します。右矢印(>)を選択して「選択メソッド」リストに移動します。追加の方式を使用する場合は、それぞれ同じ手順を繰り返します。

7. 「ファイル」→「ネットワーク構成の保存」を選択します。sqlnet.oraファイルが更新されます。

8. 同じ手順を繰り返して、もう一方のシステムで暗号化を構成します。2つのシステムのsqlnet.oraファイルに、次のエントリが含まれている必要があります。

- サーバー:

SQLNET.ENCRYPTION_SERVER = [accepted | rejected | requested | required]
SQLNET.ENCRYPTION_TYPES_SERVER = (valid_encryption_algorithm [,valid_encryption_algorithm])

- クライアント:

SQLNET.ENCRYPTION_CLIENT = [accepted | rejected | requested | required]
SQLNET.ENCRYPTION_TYPES_CLIENT = (valid_encryption_algorithm [,valid_encryption_algorithm])

表9-3に、有効な暗号化アルゴリズムと対応する有効な値を示します。

表9-3 有効な暗号化アルゴリズム

アルゴリズム名

有効な値

RC4 256ビット鍵

RC4_256

RC4 128ビット鍵

RC4_128

RC4 56ビット鍵

RC4_56

RC4 40ビット鍵

RC4_40

AES 256ビット鍵

AES256

AES 192ビット鍵

AES192

AES 128ビット鍵

AES128

3つの鍵を使用する3DES

3DES168

2つの鍵を使用する3DES

3DES112

DES 56ビット鍵

DES

DES 40ビット鍵

DES40

9.4.3.2 クライアントとサーバーでの整合性の構成

クライアントとサーバーでデータ整合性を構成するには、Oracle Net Managerを使用します。

関連項目:
「Oracle Net Managerの起動」

1. Oracle Advanced Securityプロファイルにナビゲートします。詳細は、「Oracle Advanced Securityプロファイルへのナビゲート」を参照してください。「Oracle Advanced Security」タブ・ウィンドウが表示されます。

2. 「整合性」タブをクリックします。

3. いずれのシステムを構成しているかに応じて、「整合性」ボックスから「サーバー」または「クライアント」を選択します。

4. 「チェックサム・レベル」リストから、次のチェックサム・レベル値のいずれかを選択します。

- REQUESTED

- REQUIRED

- ACCEPTED

- REJECTED

5. 「使用可能なメソッド」リストで整合性アルゴリズムを選択します。右矢印(>)を選択して「選択メソッド」リストに移動します。追加の方式を使用する場合は、それぞれ同じ手順を繰り返します。

6. 「ファイル」→「ネットワーク構成の保存」を選択します。sqlnet.oraファイルが更新されます。

7. 同じ手順を繰り返して、もう一方のシステムで整合性を構成します。2つのシステムのsqlnet.oraファイルに、次のエントリが含まれている必要があります。

- サーバー:

SQLNET.CRYPTO_CHECKSUM_SERVER = [accepted | rejected | requested | required]
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (valid_crypto_checksum_algorithm [,valid_crypto_checksum_algorithm])

- クライアント:

SQLNET.CRYPTO_CHECKSUM_CLIENT = [accepted | rejected | requested | required]
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT = (valid_crypto_checksum_algorithm [,valid_crypto_checksum_algorithm])

有効な整合性アルゴリズムはSHA-1であり、対応する有効な値はSHA1です。

10 シンJDBCクライアントに対するネットワーク認証、暗号化および整合性の構成

この章では、Java Database Connectivity (JDBC)シン・クライアントがOracle Databaseに安全に接続できるようにするOracle Advanced SecurityのJava実装について説明します。この章の内容は次のとおりです。

- Java実装について

- 構成パラメータ

関連項目:
JDBCの詳細および例は、『Oracle Database JDBC開発者ガイドおよびリファレンス』を参照してください。

10.1 Java実装について

Oracle Advanced SecurityのJava実装では、Oracle Advanced Securityが有効になっているOracle Databaseと通信するシンJDBCクライアントに対して、ネットワーク認証、暗号化および整合性の保護が提供されます。

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

- Java Database Connectivityのサポート

- シンJDBCの保護

- 実装の概要

- 不明瞭化

10.1.1 Java Database Connectivityのサポート

業界標準のJavaインタフェースであるJava Database Connectivity (JDBC)は、Javaプログラムからリレーショナル・データベースに接続するためのJava標準です。JDBC標準はSun Microsystemsによって規定され、オラクル社では独自のJDBCドライバによってこの標準を実装および拡張しています。

Oracle JDBCドライバは、Oracleデータベースと通信するJDBCアプリケーションを作成するために使用されます。Oracleでは、CベースのOracle Netクライアントの最上部に構築されたシックJDBCドライバ、およびダウンロード可能なアプレットをサポートするシン(Pure Java)JDBCドライバの2つのタイプのJDBCドライバが実装されます。JDBCに対するOracleの拡張機能には、次の機能が含まれます。

- データ・アクセスおよび操作

- LOBアクセスおよび操作

- Oracleオブジェクト型マッピング

- オブジェクト参照アクセスおよび操作

- 配列アクセスおよび操作

- アプリケーション・パフォーマンスの向上

10.1.2 シンJDBCの保護

シンJDBCドライバはインターネットで使用されるダウンロード可能なアプレットとともに使用するように設計されるため、オラクル社では、シン・クライアントとともに使用するOracle Advanced Security認証、暗号化および整合性のアルゴリズムがJavaで100%実装されるように設計しました。Oracle Advanced Securityには、シンJDBCのための次の機能が備えられています。

- 厳密認証

- データ暗号化

- データ整合性チェック

- シンJDBCクライアントからOracle RDBMSへの接続の保護

- 開発者が安全な通信チャネルでデータを転送するアプレットを作成するための機能

- Java Server Pages (JSP)を持つ中間層サーバーからOracle RDBMSへの接続の保護

- Oracle Database 11g リリース2 (11.2)からOracle Advanced Securityがインストールされている旧バージョンのOracleデータベースへの接続の保護

Oracle JDBC Thin driverは、Oracle Advanced SecurityのSSL実装およびRADIUSやKerberosなどのサード・パーティの認証方式をサポートしています。シンJDBCによるRADIUS、Kerberos、SSLなどの認証方式のサポートは、Oracle Database 11g リリース1 (11.1)で導入されました。

Oracle Advanced SecurityのJava実装では、次の暗号化アルゴリズムのJavaバージョンが提供されます。

- AES256: AES 256ビット鍵

- AES192: AES 192ビット鍵

- AES128: AES 128ビット鍵

- 3DES168: 3つの鍵を使用する3DES

- 3DES112: 2つの鍵を使用する3DES

注意:
前述のアルゴリズムのリストで、CBCは暗号ブロック連鎖モードのことです。

シンJDBCによるAdvanced Encryption Standard (AES)のサポートは、Oracle Database 11g リリース2 (11.2)で新たに導入されました。

また、この実装により、Secure Hash Algorithm (SHA1)を使用したシンJDBCのデータ整合性チェックが実行されます。シンJDBCによるSHA1のサポートは、Oracle Database 11g リリース1 (11.1)で導入されました。

関連項目:
シンJDBCクライアントに対する認証、暗号化および整合性の構成の詳細は、『Oracle Database JDBC開発者ガイドおよびリファレンス』を参照してください。

10.1.3 実装の概要

サーバー側で、アルゴリズムのネゴシエーションおよび鍵の生成は、Oracle Advanced Security固有の暗号化とまったく同様に機能します。これにより、クライアントとサーバーの下位および上位互換性が維持されます。

クライアント側では、アルゴリズムのネゴシエーションおよび鍵の生成は、OCIクライアントとまったく同じ方法で行われます。クライアントとサーバーは、従来のOracle Netクライアントと同様の方法で、暗号化アルゴリズムのネゴシエーション、乱数の生成、Diffie-Hellmanを使用したセッション鍵の交換を行い、Oracle Password Protocolを使用します。シンJDBCには、Oracle Netクライアントがpure Javaで完全に実装されています。

10.1.4 不明瞭化

Javaの暗号化コードは不明瞭化されています。不明瞭化では、不明瞭化ソフトウェアを使用して、暗号化機能と複号化機能を含むJavaクラスおよびメソッドを保護します。

Javaバイト・コードの不明瞭化は、Javaプログラムの形式で作成された知的財産を保護するためによく使用されるプロセスです。これによって、コード内のJavaシンボルが変更されます。プロセスは、元のプログラム構造をそのまま保持し、意図した動作を隠すためにクラス、メソッドおよび変数の名前を変更する一方でプログラムを正常に実行します。不明瞭化されていないJavaコードは再コンパイルして読むことができますが、不明瞭化されたJavaコードは再コンパイルが難しく、米国政府の輸出規制を満たすことができます。

10.2 構成パラメータ

複数の構成パラメータを含むプロパティ・クラス・オブジェクトは、Oracle Advanced Securityインタフェースに渡されます。

Oracle Advanced Securityに関連する接続プロパティを含むすべてのJDBC接続プロパティは、oracle.jdbc.OracleConnectionインタフェースで定数として定義されます。次のリストに、それらの接続プロパティの一部を列挙します。

- CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVELパラメータ

- CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPESパラメータ

- CONNECTION_PROPERTY_THIN_NET_CHECKSUM_LEVELパラメータ

- CONNECTION_PROPERTY_THIN_NET_CHECKSUM_TYPESパラメータ

- CONNECTION_PROPERTY_THIN_NET_AUTHENTICATION_SERVICESパラメータ

関連項目:
構成パラメータおよび構成例の詳細は、『Oracle Database JDBC開発者ガイドおよびリファレンス』を参照してください。

10.2.1 CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVELパラメータ

このパラメータは、クライアントがサーバーとネゴシエートするセキュリティのレベルを定義します。表10-1に、このパラメータの属性を示します。

表10-1 CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVELの属性

属性

説明

パラメータ・タイプ

文字列

パラメータ・クラス

静的

設定できる値

REJECTED、ACCEPTED、REQUESTED、REQUIRED

デフォルト値

ACCEPTED

構文

prop.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL,level);

propはPropertiesクラスのオブジェクトです。

例

prop.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL,"REQUIRED");

propはPropertiesクラスのオブジェクトです。

10.2.2 CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPESパラメータ

このパラメータは、使用する暗号化アルゴリズムを定義します。表10-2に、このパラメータの属性を示します。

表10-2 CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPESの属性

属性

説明

パラメータ・タイプ

文字列

パラメータ・クラス

静的

設定できる値

AES256、AES192、AES128、3DES168、3DES112

構文

prop.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES,algorithm);

propはPropertiesクラスのオブジェクトです。

例

prop.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES, "( AES256, AES192 )");

propはPropertiesクラスのオブジェクトです。

10.2.3 CONNECTION_PROPERTY_THIN_NET_CHECKSUM_LEVELパラメータ

このパラメータは、データ整合性のためにクライアントがサーバーとネゴシエートするセキュリティのレベルを定義します。表10-3に、このパラメータの属性を示します。

表10-3 CONNECTION_PROPERTY_THIN_NET_CHECKSUM_LEVEL属性

属性

説明

パラメータ・タイプ

文字列

パラメータ・クラス

静的

設定できる値

REJECTED、ACCEPTED、REQUESTED、REQUIRED

デフォルト値

ACCEPTED

構文

prop.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_CHECKSUM_LEVEL,level);

propはPropertiesクラスのオブジェクトです。

例

prop.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_CHECKSUM_LEVEL,"REQUIRED");

propはPropertiesクラスのオブジェクトです。

10.2.4 CONNECTION_PROPERTY_THIN_NET_CHECKSUM_TYPESパラメータ

このパラメータは、使用するデータ整合性アルゴリズムを定義します。表10-4に、このパラメータの属性を示します。

表10-4 CONNECTION_PROPERTY_THIN_NET_CHECKSUM_TYPESの属性

属性

説明

パラメータ・タイプ

文字列

パラメータ・クラス

静的

設定できる値

SHA1

構文

prop.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_CHECKSUM_TYPES, algorithm);

propはPropertiesクラスのオブジェクトです。

例

prop.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_CHECKSUM_TYPES,"( SHA1 )");

propはPropertiesクラスのオブジェクトです。

10.2.5 CONNECTION_PROPERTY_THIN_NET_AUTHENTICATION_SERVICESパラメータ

このパラメータは、使用する認証サービスを決定します。表10-5に、このパラメータの属性を示します。

表10-5 CONNECTION_PROPERTY_THIN_NET_AUTHENTICATION_SERVICESの属性

属性

説明

パラメータ・タイプ

文字列

パラメータ・クラス

静的

設定できる値

RADIUS、KERBEROS、SSL

構文

prop.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_AUTHENTICATION_SERVICES,authentication);

propはPropertiesクラスのオブジェクトです。

例

prop.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_AUTHENTICATION_SERVICES,"( RADIUS, KERBEROS, SSL)");

propはPropertiesクラスのオブジェクトです。

10.2.6 AnoServices定数

このリリースで、oracle.net.ano.AnoServicesインタフェースは、JDBC Thin driverによってサポートされるすべての暗号化、認証およびチェックサムのアルゴリズムの名前を含むように更新されました。次の定数が、oracle.net.ano.AnoServicesインタフェースに追加されています。

// ---- SUPPORTED ENCRYPTION ALG -----
public static final String ENCRYPTION_3DES112 = "3DES112";
public static final String ENCRYPTION_3DES168 = "3DES168";
public static final String ENCRYPTION_AES128 = "AES128";
public static final String ENCRYPTION_AES192 = "AES192";
public static final String ENCRYPTION_AES256 = "AES256";
// ---- SUPPORTED INTEGRITY ALG ----
public static final String CHECKSUM_SHA1 = "SHA1";
// ---- SUPPORTED AUTHENTICATION ADAPTORS ----
public static final String AUTHENTICATION_RADIUS = "RADIUS";
public static final String AUTHENTICATION_KERBEROS = "KERBEROS";

これらの定数を使用して、暗号化、整合性および認証のパラメータを設定できます。例10-1に、その一例を示します。

例10-1 JDBCクライアント・コード内でのAnoServices定数の使用

import java.sql.*;
import java.util.Properties;import oracle.jdbc.*;
import oracle.net.ano.AnoServices;
/**
* JDBC thin driver demo: new security features in 11gR1.
*
* This program attempts to connect to the database using the JDBC thin
* driver and requires the connection to be encrypted with either AES256 or AES192
* and the data integrity to be verified with SHA1.
*
* In order to activate encryption and checksumming in the database you need to
* modify the sqlnet.ora file. For example:
*
*   SQLNET.ENCRYPTION_TYPES_SERVER = (AES256,AES192,AES128)
*   SQLNET.ENCRYPTION_SERVER = accepted
*   SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER= (SHA1)
*   SQLNET.CRYPTO_CHECKSUM_SERVER = accepted
*
* This output of this program is:
*   Connection created! Encryption algorithm is: AES256, data integrity algorithm
*   is: SHA1
*
*/
public class DemoAESAndSHA1
{
static final String USERNAME= "hr";
static final String PASSWORD= "hr";
static final String URL =
"jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=somehost.us.example.com)(PORT=5561))"  +"(CONNECT_DATA=(SERVICE_NAME=itydemo.regress.rdbms.dev.us.example.com)))";

public static final void main(String[] argv)
{
DemoAESAndSHA1 demo = new DemoAESAndSHA1();
try
{
demo.run();
}catch(SQLException ex)
{
ex.printStackTrace();
}
}
void run() throws SQLException
{
OracleDriver dr = new OracleDriver();
Properties prop = new Properties();
// We require the connection to be encrypted with either AES256 or AES192.
// If the database doesn't accept such a security level, then the connection
// attempt will fail.
prop.setProperty(

OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL,AnoServices.ANO_REQUIRED);
prop.setProperty(
OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES,      "( " + AnoServices.ENCRYPTION_AES256 + "," +AnoServices.ENCRYPTION_AES192 + ")");
// We also require the use of the SHA1 algorithm for data integrity checking.
prop.setProperty(

OracleConnection.CONNECTION_PROPERTY_THIN_NET_CHECKSUM_LEVEL,AnoServices.ANO_REQUIRED);
prop.setProperty(
OracleConnection.CONNECTION_PROPERTY_THIN_NET_CHECKSUM_TYPES,      "( " + AnoServices.CHECKSUM_SHA1 + " )");

prop.setProperty("user",DemoAESAndSHA1.USERNAME);
prop.setProperty("password",DemoAESAndSHA1.PASSWORD);
OracleConnection oraConn =
(OracleConnection)dr.connect(DemoAESAndSHA1.URL,prop);

System.out.println("Connection created! Encryption algorithm is: "+oraConn.getEncryptionAlgorithmName()    +", data integrity algorithm is: "+oraConn.getDataIntegrityAlgorithmName());

oraConn.close();
}

}

第IV部

Oracle Advanced Securityの厳密認証

ここでは、Oracleネットワークで厳密認証方式を構成する方法について説明します。

第III部は、次の章で構成されています。

- 第11章「RADIUS認証の構成」

- 第12章「Kerberos認証の構成」

- 第13章「Secure Sockets Layer認証の構成」

- 第14章「Oracle Wallet Managerの使用方法」

- 第15章「複数の認証方式の構成およびOracle Advanced Securityの無効化」

11 RADIUS認証の構成

この章では、RADIUS (Remote Authentication Dial-In User Service)とともに使用するOracle Databaseサーバーの構成方法について説明します。内容は次のとおりです。

- RADIUSについて

- RADIUS認証モード

- RADIUS認証、認可およびアカウンティングの有効化

- RADIUSを使用したデータベースへのログイン

- RSA ACE/Server構成チェックリスト

注意:
RSA Security社の認証製品であるSecurIDは、Oracle Advanced Securityで直接的にはサポートされていませんが、RADIUS準拠として認定されています。したがって、RADIUSのもとでSecurIDを実行できます。
詳細は、RSA Security社のSecurIDのドキュメントを参照してください。

11.1 RADIUSについて

RADIUSは、リモート認証およびアクセスを実現するために広く使用されているクライアント/サーバー・セキュリティ・プロトコルです。Oracle Advanced Securityは、クライアント/サーバー・ネットワーク環境でこの業界標準を使用しています。

RADIUSプロトコルをインストールして構成することで、トークン・カードやスマートカードなど、RADIUS規格をサポートする任意の認証方式がネットワークで使用可能になります。さらに、RADIUSを使用すると、OracleクライアントまたはOracleデータベース・サーバーを変更することなく、認証方式を変更できます。

ユーザーから見ると、認証手続き全体は透過的です。ユーザーがOracleデータベース・サーバーにアクセスしようとすると、RADIUSクライアントとして機能するOracleデータベース・サーバーはRADIUSサーバーに通知します。RADIUSサーバーは次の処理を行います。

- ユーザーのセキュリティ情報を検索します。

- 適切な認証サーバー(複数可)とOracleデータベース・サーバーの間で認証および認可情報の受渡しを行います。

- Oracleデータベース・サーバーへのユーザー・アクセスを許可します。

- ユーザーがいつ、どのくらいの頻度で、どのくらいの時間、Oracleデータベース・サーバーに接続していたかなどのセッション情報をログに記録します。

注意:
Oracle Advanced Securityでは、データベース・リンクを介したRADIUS認証はサポートされません。

Oracle/RADIUS環境を図11-1に示します。

図11-1 Oracle環境でのRADIUS

Oracleデータベース・サーバーはRADIUSクライアントとして機能し、OracleクライアントとRADIUSサーバーの間で情報の受渡しを行います。同様に、RADIUSサーバーはOracleデータベース・サーバーと適切な認証サーバーの間で情報の受渡しを行います。表11-1に、認証の構成要素を示します。

表11-1 RADIUS認証の構成要素

構成要素

格納される情報

Oracleクライアント

RADIUSによる通信のための構成設定

Oracleデータベース・サーバー/RADIUSクライアント

OracleクライアントとRADIUSサーバーの間で情報の受渡しを行うための構成設定

秘密鍵ファイル

RADIUSサーバー

すべてのユーザーの認証および認可情報

各クライアントの名前またはIPアドレス

各クライアントの共有シークレット

すでに認証されているユーザーが再接続しなくても別のログイン・オプションを選択できるようにする無制限の数のメニュー・ファイル

認証サーバー(複数可)

パス・コードやPINなどのユーザー認証情報(使用中の認証方式によって異なる)

注意: RADIUSサーバーは認証サーバーになることもできます。

RADIUSサーバーのベンダーが認証サーバーのベンダーでもある場合も多くあります。この場合、RADIUSサーバーで認証を処理できます。たとえば、RSA ACE/Serverは、RADIUSサーバーであり認証サーバーでもあります。したがって、ユーザーのパス・コードが認証されます。

関連項目:
sqlnet.oraファイルの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

11.2 RADIUS認証モード

ユーザー認証は次の方法で実行されます。

- 同期認証モード

- チャレンジ・レスポンス(非同期)認証モード

11.2.1 同期認証モード

同期モードでは、RADIUSでパスワードやSecurIDトークン・カードなどの様々な認証方式を使用できます。図11-2に、同期認証が行われる順序を示します。

図11-2 同期認証の順序

次の手順は、同期認証の順序を示しています。

1. ユーザーが、接続文字列、パス・コードまたはその他の値を入力してログインします。クライアント・システムは、このデータをOracleデータベース・サーバーに渡します。

2. RADIUSクライアントとして機能するOracleデータベース・サーバーは、OracleクライアントからのデータをRADIUSサーバーに渡します。

3. RADIUSサーバーは、検証のためにデータをスマートカードやSecurID ACEなどの適切な認証サーバーに渡します。

4. 認証サーバーは、アクセス受入れまたはアクセス拒否メッセージをRADIUSサーバーに返します。

5. RADIUSサーバーは、このレスポンスをOracleデータベース・サーバー/RADIUSクライアントに渡します。

6. Oracleデータベース・サーバー/RADIUSクライアントは、レスポンスをOracleクライアントに返します。

例: SecurIDトークン・カードによる同期認証

SecurID認証では、各ユーザーにトークン・カードあり、60秒ごとに変わる動的番号が表示されます。Oracleデータベース・サーバー/RADIUSクライアントにアクセスするために、ユーザーは個人識別番号(PIN)とユーザーのSecurIDカード上に現在表示されている動的番号の両方を含む有効なパス・コードを入力します。Oracleデータベース・サーバーは、Oracleクライアントからのこの認証情報をRADIUSサーバー(この場合は、検証のための認証サーバー)に渡します。認証サーバー(RSA ACE/Server)によってユーザーが検証されると、受入れパケットがOracleデータベース・サーバーに送られ、次に、Oracleクライアントに渡されます。これでユーザーは認証され、適切な表やアプリケーションにアクセスできます。

関連項目:

- 第1章「Oracle Advanced Securityの概要」

- 「トークン・カード」

- RSA Security社から提供されるドキュメント

11.2.2 チャレンジ・レスポンス(非同期)認証モード

システムで非同期モードが使用されている場合、ユーザーは、SQL*Plus CONNECT文字列でユーザー名とパスワードを入力する必要はありません。かわりに、ユーザーは後からグラフィカル・ユーザー・インタフェースでこの情報を要求されます。

図11-3に、チャレンジ・レスポンス(非同期)認証が行われる順序を示します。

注意:
RADIUSサーバーが認証サーバーである場合、図11-3の手順3、4、5および手順9、10、11は結合されます。

図11-3 非同期認証の順序

次の手順は、非同期認証の順序を示しています。

1. ユーザーが、Oracleデータベース・サーバーへの接続を開始します。クライアント・システムは、データをOracleデータベース・サーバーに渡します。

2. RADIUSクライアントとして機能するOracleデータベース・サーバーは、OracleクライアントからのデータをRADIUSサーバーに渡します。

3. RADIUSサーバーは、データをスマートカード、SecurID ACE、トークン・カード・サーバーなどの適切な認証サーバーに渡します。

4. 認証サーバーは、ランダム番号などのチャレンジをRADIUSサーバーに送信します。

5. RADIUSサーバーは、チャレンジをOracleデータベース・サーバー/RADIUSクライアントに渡します。

6. Oracleデータベース・サーバー/RADIUSクライアントは、それをOracleクライアントに渡します。グラフィカル・ユーザー・インタフェースで、ユーザーにチャレンジが表示されます。

7. ユーザーは、チャレンジに対するレスポンスを入力します。レスポンスを作成するために、ユーザーは、たとえば、受け取ったチャレンジをトークン・カードに入力できます。トークン・カードによって、グラフィカル・ユーザー・インタフェースに入力する動的なパスワードが提供されます。Oracleクライアントは、ユーザーのレスポンスをOracleデータベース・サーバー/RADIUSクライアントに渡します。

8. Oracleデータベース・サーバー/RADIUSクライアントは、ユーザーのレスポンスをRADIUSサーバーに送信します。

9. RADIUSサーバーは、検証のためにユーザーのレスポンスを適切な認証サーバーに渡します。

10. 認証サーバーは、アクセス受入れまたはアクセス拒否メッセージをRADIUSサーバーに返します。

11. RADIUSサーバーは、レスポンスをOracleデータベース・サーバー/RADIUSクライアントに渡します。

12. Oracleデータベース・サーバー/RADIUSクライアントは、レスポンスをOracleクライアントに渡します。

例: スマートカードによる非同期認証

スマートカード認証では、ユーザーは、スマートカードを読み取るスマートカード・リーダーにスマートカードを挿入することによってログインします。スマートカードは、情報を格納するための集積回路が埋め込まれた、クレジット・カードのようなプラスチック・カードです。

Oracleクライアントは、Oracleデータベース・サーバー/RADIUSクライアントおよびRADIUSサーバーを経由して、スマートカードに含まれるログイン情報を認証サーバーに送信します。認証サーバーは、RADIUSサーバーおよびOracleデータベース・サーバーを経由してOracleクライアントにチャレンジを戻し、認証情報をユーザーに要求します。この情報は、PINやスマートカードに含まれている他の認証情報などです。

Oracleクライアントは、Oracleデータベース・サーバーおよびRADIUSサーバーを経由して、ユーザーのレスポンスを認証サーバーに送信します。ユーザーが有効な番号を入力した場合、認証サーバーはRADIUSサーバーおよびOracleデータベース・サーバーを経由して、受入れパケットをOracleクライアントに戻します。これでユーザーは認証され、適切な表やアプリケーションへのアクセスが認可されます。ユーザーが誤った情報を入力した場合、認証サーバーはユーザーのアクセスを拒否するメッセージを戻します。

例: ActivCardトークンによる非同期認証

ActivCardトークンの1つに、キーパッドを備えた、動的パスワードを表示するハンドヘルド・デバイスがあります。ユーザーがパスワードを入力してOracleデータベース・サーバーにアクセスしようとすると、情報はOracleデータベース・サーバー/RADIUSクライアントおよびRADIUSサーバーを経由して、適切な認証サーバーに渡されます。認証サーバーは、RADIUSサーバーおよびOracleデータベース・サーバーを経由して、クライアントにチャレンジを戻します。ユーザーがそのチャレンジをトークンに入力すると、ユーザーがレスポンスで送信する番号がトークンに表示されます。

次に、Oracleクライアントは、Oracleデータベース・サーバーおよびRADIUSサーバーを経由して、ユーザーのレスポンスを認証サーバーに送信します。ユーザーが有効な番号を入力した場合、認証サーバーはRADIUSサーバーおよびOracleデータベース・サーバーを経由して、受入れパケットをOracleクライアントに戻します。これでユーザーは認証され、適切な表やアプリケーションへのアクセスが認可されます。ユーザーが誤ったレスポンスを入力した場合、認証サーバーはユーザーのアクセスを拒否するメッセージを戻します。

11.3 RADIUS認証、認可およびアカウンティングの有効化

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

- 手順1: Oracleデータベース・サーバーとOracleクライアントでのRADIUSのインストール

- 手順2: RADIUS認証の構成

- 手順3: ユーザーの作成とアクセス権の付与

- 手順4: 外部RADIUS認可の構成(オプション)

- 手順5: RADIUSアカウンティングの構成

- 手順6: RADIUSクライアント名のRADIUSサーバー・データベースへの追加

- 手順7: RADIUSとともに使用する認証サーバーの構成

- 手順8: 認証サーバーとともに使用するRADIUSサーバーの構成

- 手順9: マッピング・ロールの構成

11.3.1 手順1: Oracleデータベース・サーバーとOracleクライアントでのRADIUSのインストール

RADIUSは、Oracle Databaseの標準インストール時に、Oracle Advanced Securityとともにインストールされます。

関連項目:
Oracle Advanced SecurityとRADIUSアダプタのインストールの詳細は、Oracle Databaseのオペレーティング・システム固有のインストール関連ドキュメントを参照してください。

11.3.2 手順2: RADIUS認証の構成

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

- 手順2A: OracleクライアントでのRADIUSの構成

- 手順2B: Oracleデータベース・サーバーでのRADIUSの構成

- 手順2C: その他のRADIUS機能の構成

11.3.2.1 手順2A: OracleクライアントでのRADIUSの構成

1. Oracle Net Managerを起動します。

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

netmgr

- (Windows)「スタート」→「プログラム」→「Oracle - HOME_NAME」→「Configuration and Migration Tools」→「Net Manager」を選択します。

2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。

3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。
ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

4. 「認証」タブを選択します。(デフォルトで選択されています。)

5. 「使用可能なメソッド」リストから、RADIUSを選択します。

6. 右矢印(>)を選択して、RADIUSを「選択メソッド」リストに移動します。使用するその他のメソッドを同じ方法で移動します。

7. 「選択メソッド」リストでメソッドを選択し、「上へ」または「下へ」をクリックしてリスト内での位置を指定して、選択したメソッドを使用に必要な順序に並べます。
たとえば、RADIUSをリストの最も上に置いて、使用される最初のサービスにします。

8. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルが次のエントリで更新されます。

SQLNET.AUTHENTICATION_SERVICES=(RADIUS)

11.3.2.2 手順2B: Oracleデータベース・サーバーでのRADIUSの構成

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

- 手順2B(1): Oracleデータベース・サーバーでのRADIUS秘密鍵ファイルの作成

- 手順2B(2): サーバー(sqlnet.oraファイル)でのRADIUSパラメータの構成

- 手順2B(3): Oracleデータベース・サーバー初期化パラメータの設定

手順2B(1): Oracleデータベース・サーバーでのRADIUS秘密鍵ファイルの作成

1. RADIUSサーバーからRADIUS秘密鍵を取得します。
RADIUSクライアントごとに、RADIUSサーバーの管理者が共有秘密鍵を作成します。長さは16文字以下である必要があります。

2. Oracleデータベース・サーバーで、次のディレクトリを作成します。

- (UNIX) $ORACLE_HOME/network/security

- (Windows) ORACLE_BASE\ORACLE_HOME\network\security

3. RADIUSサーバーからコピーした共有シークレットを格納するために、ファイルradius.keyを作成します。このファイルを手順2で作成したディレクトリに配置します。

4. 共有秘密鍵をコピーし、この鍵のみを、Oracleデータベース・サーバーに作成したradius.keyファイルに貼り付けます。

5. セキュリティのために、radius.keyのファイル権限を読取り専用に変更し、Oracle所有者のみがアクセスできるようにします。
Oracleは、ファイル・システムに依存してこのファイルを秘密にします。

関連項目:
秘密鍵の取得の詳細は、RADIUSサーバーの管理ドキュメントを参照してください。

手順2B(2): サーバー(sqlnet.oraファイル)でのRADIUSパラメータの構成

1. Oracle Net Managerを起動します。

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

netmgr

- (Windows)「スタート」→「プログラム」→「Oracle - HOME_NAME」→「Configuration and Migration Tools」→「Net Manager」を選択します。

2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。

3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。
ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

4. 「認証」タブを選択します。

5. 「使用可能なメソッド」リストから、RADIUSを選択します。

6. 右矢印(>)を選択して、RADIUSを「選択メソッド」リストに移動します。

7. 選択したメソッドを使用に必要な順序に並べるには、「選択メソッド」リストでメソッドを選択し、「上へ」または「下へ」を選択してリスト内での位置を指定します。
たとえば、RADIUSを使用される最初のサービスにする場合は、リストの最も上に置きます。

8. 「その他のパラメータ」タブを選択します。

9. 「認証サービス」リストから、RADIUSを選択します。

10. 「ホスト名」フィールドで、デフォルトのプライマリRADIUSサーバーとしてlocalhostを受け入れるか、または別のホスト名を入力します。

11. 「シークレット・ファイル」フィールドのデフォルト値が有効であることを確認します。

12. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルは次のエントリで更新されます。

SQLNET.AUTHENTICATION_SERVICES=RADIUS
SQLNET.RADIUS_AUTHENTICATION=RADIUS_server_{hostname|IP_address}

注意:
IP_addressは、インターネット・プロトコル・バージョン4 (IPv4)またはインターネット・プロトコル・バージョン6 (IPv6)のアドレスです。RADIUSアダプタでは、IPv4ベースとIPv6ベースの両方のサーバーがサポートされています。

手順2B(3): Oracleデータベース・サーバー初期化パラメータの設定

1. 次の設定をinit.ora初期化ファイルに追加します。

OS_AUTHENT_PREFIX=""

デフォルトでは、init.oraファイルは、LinuxおよびUNIXシステムの場合はORACLE_HOME/dbsディレクトリ(または同じデータ・ファイルの場所)、Windowsの場合はORACLE_HOME\databaseディレクトリにあります。

2. データベースを再起動します。
例:

SQL> SHUTDOWN
SQL> STARTUP

関連項目:
Oracle Databaseサーバーでの初期化パラメータの設定の詳細は、『Oracle Databaseリファレンス』および『Oracle Database管理者ガイド』を参照してください。

11.3.2.3 手順2C: その他のRADIUS機能の構成

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

- 手順2C(1): デフォルト設定の変更

- 手順2C(2): チャレンジ・レスポンスの構成

- 手順2C(3): 代替RADIUSサーバーのパラメータの設定

手順2C(1): デフォルト設定の変更

1. Oracle Net Managerを起動します。

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

netmgr

- (Windows)「スタート」→「プログラム」→「Oracle - HOME_NAME」→「Configuration and Migration Tools」→「Net Manager」を選択します。

2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。

3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。
ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

4. 「その他のパラメータ」タブをクリックします。

5. 「認証サービス」リストから、RADIUSを選択します。

6. 次のフィールドについてデフォルト設定を変更します。

- ポート番号: プライマリRADIUSサーバーのリスニング・ポートを指定します。デフォルト値は1645です。

- タイムアウト(秒): Oracleデータベース・サーバーがプライマリRADIUSサーバーからの応答を待機する時間を指定します。デフォルトは15秒です。

- 再試行回数: Oracleデータベース・サーバーがプライマリRADIUSサーバーにメッセージを再送する回数を指定します。デフォルトは3回の再試行です。RADIUSアカウンティングの構成の詳細は、「手順5: RADIUSアカウンティングの構成」を参照してください。

- シークレット・ファイル: Oracleデータベース・サーバー上の秘密鍵の場所を指定します。このフィールドは、秘密鍵自体ではなく、秘密鍵ファイルの場所を指定します。秘密鍵の指定の詳細は、「手順2B(1): Oracleデータベース・サーバーでのRADIUS秘密鍵ファイルの作成」を参照してください。

7. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルは次のエントリで更新されます。

SQLNET.RADIUS_AUTHENTICATION_PORT=(PORT)
SQLNET.RADIUS_AUTHENTICATION_TIMEOUT=
(NUMBER OF SECONDS TO WAIT FOR response)
SQLNET.RADIUS_AUTHENTICATION_RETRIES=
(NUMBER OF TIMES TO RE-SEND TO RADIUS server)
SQLNET.RADIUS_SECRET=(path/radius.key)

手順2C(2): チャレンジ・レスポンスの構成

チャレンジ・レスポンス(非同期)モードでは、グラフィカル・インタフェースがユーザーに表示され、最初にパスワードが要求されて、次にユーザーがトークン・カードから取得する動的パスワードなどの追加情報が要求されます。RADIUSアダプタでは、このインタフェースはJavaベースであり、最適なプラットフォーム独立性を提供します。

注意:
認証デバイスのサード・パーティ・ベンダーは、その独自のデバイスに合わせてこのグラフィカル・ユーザー・インタフェースをカスタマイズする必要があります。たとえば、スマートカード・ベンダーはJavaインタフェースをカスタマイズして、Oracleクライアントがスマートカードから動的パスワードなどのデータを読み取るようにします。スマートカードは、チャレンジを受け取ると、PINなどの追加情報をユーザーに要求することで応答します。

関連項目:
チャレンジ・レスポンス・ユーザー・インタフェースをカスタマイズする方法の詳細は、付録C「RADIUSを使用した認証デバイスの統合」を参照してください。

チャレンジ・レスポンスを構成するには、次の手順を実行します。

1. JDK 1.1.7またはJRE 1.1.7を使用する場合は、JAVA_HOME環境変数を、Oracleクライアントが実行されるシステム上のJREまたはJDKの場所に設定します。

- UNIXでは、プロンプトで次のコマンドを入力します。

% setenv JAVA_HOME /usr/local/packages/jre1.1.7B

- Windowsでは、「スタート」→「設定」→「コントロール パネル」→「システム」→「環境」の順に選択し、JAVA_HOME変数を次のように設定します。

c:\java\jre1.1.7B

この手順は、他のJDK/JREバージョンでは必要ありません。

2. Oracle Net Managerを起動します。

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

netmgr

- (Windows)「スタート」→「プログラム」→「Oracle - HOME_NAME」→「Configuration and Migration Tools」→「Net Manager」を選択します。

3. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。

4. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。
ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

5. 「認証サービス」リストから、RADIUSを選択します。

6. 「チャレンジ・レスポンス」フィールドで、ONと入力してチャレンジ・レスポンスを有効にします。

7. 「デフォルト・キーワード」フィールドで、チャレンジのデフォルト値を受け入れるか、RADIUSサーバーからチャレンジを要求するためのキーワードを入力します。
キーワード機能は、Oracleから提供されており、一部のRADIUSサーバーでサポートされています(すべてではありません)。この機能は、RADIUSサーバーでサポートされている場合にのみ使用できます。

キーワードを設定することで、ユーザーはパスワードを使用しなくても識別情報を証明できます。ユーザーがパスワードを入力しない場合、ここで設定するキーワードがRADIUSサーバーに渡され、RADIUSサーバーは運転免許証の番号や生年月日などを要求するチャレンジで応答します。ユーザーがパスワードを入力する場合、RADIUSサーバーの構成に応じて、RADIUSサーバーはチャレンジで応答する場合と応答しない場合があります。

8. 「インタフェース・クラス名」フィールドで、デフォルト値DefaultRadiusInterfaceを受け入れるか、チャレンジ・レスポンス対話を処理するために作成したクラスの名前を入力します。
デフォルトのRADIUSインタフェース以外を使用する場合は、sqlnet.oraファイルを編集してSQLNET.RADIUS_CLASSPATH=(location)を入力する必要もあります(locationは、jarファイルの完全なパス名です)。これは、デフォルトでは
$ORACLE_HOME/network/jlib/netradius.jar: $ORACLE_HOME/JRE/lib/vt.jarです。

9. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルは次のエントリで更新されます。

SQLNET.RADIUS_CHALLENGE_RESPONSE=([ON | OFF])
SQLNET.RADIUS_CHALLENGE_KEYWORD=(KEYWORD)
SQLNET.RADIUS_AUTHENTICATION_INTERFACE=(name of interface including the package name delimited by "/" for ".")

手順2C(3): 代替RADIUSサーバーのパラメータの設定

代替RADIUSサーバーを使用する場合は、テキスト・エディタを使用してsqlnet.oraファイルで次のパラメータを設定します。

SQLNET.RADIUS_ALTERNATE=(hostname or ip address of alternate radius server)
SQLNET.RADIUS_ALTERNATE_PORT=(1812)
SQLNET.RADIUS_ALTERNATE_TIMEOUT=(number of seconds to wait for response)
SQLNET.RADIUS_ALTERNATE_RETRIES=(number of times to re-send to radius server)

11.3.3 手順3: ユーザーの作成とアクセス権の付与

1. SQL*Plusを起動し、次のコマンドを実行して、Oracleデータベース・サーバーで外部で識別されるユーザーを作成してアクセス権を付与します。

SQL> CONNECT system@database_name;
SQL> Enter password:
SQL> CREATE USER username IDENTIFIED EXTERNALLY;
SQL> GRANT CREATE SESSION TO USER username;
SQL> EXIT

Windowsを使用する場合は、Oracle Enterprise ManagerのSecurity Managerツールを使用できます。

2. 同じusernameをRADIUSサーバーのusersファイルに入力します。

関連項目:

- 『Oracle Database管理者ガイド』

- 『Oracle Database Heterogeneous Connectivityユーザーズ・ガイド』

- RADIUSサーバーの管理ドキュメント

11.3.4 手順4: 外部RADIUS認可の構成(オプション)

Oracleデータベースに接続するRADIUSユーザーに対して外部RADIUS認可が必要な場合は、次の手順を実行してOracleサーバー、OracleクライアントおよびRADIUSサーバーを構成する必要があります。

- 手順4A:Oracle Server (RADIUSクライアント)の構成

- 手順4B: ユーザーがログインするOracleクライアントの構成

- 手順4C: RADIUSサーバーの構成

11.3.4.1 手順4A: Oracleサーバー(RADIUSクライアント)の構成

1. OS_ROLEパラメータをinit.oraファイルに追加し、このパラメータを次のようにTRUEに設定します。

OS_ROLE=TRUE

2. init.oraファイルに対する変更がシステムに反映されるように、データベースを再起動します。
例:

SQL> SHUTDOWN
SQL> STARTUP

3. 「手順2C(2): チャレンジ・レスポンスの構成」に記載されている手順に従って、サーバーのRADIUSチャレンジ・レスポンス・モードをONに設定していない場合は設定します。

4. 外部で識別されるユーザーおよびロールを追加します。

11.3.4.2 手順4B: ユーザーがログインするOracleクライアントの構成

「手順2C(2): チャレンジ・レスポンスの構成」に記載されている手順に従って、クライアントのRADIUSチャレンジ・レスポンス・モードをONに設定していない場合は設定します。

11.3.4.3 手順4C: RADIUSサーバーの構成

1. 次の属性をRADIUSサーバー属性構成ファイルに追加します。

属性名

コード

型

VENDOR_SPECIFIC

26

整数

ORACLE_ROLE

1

文字列

2. SMIネットワーク管理プライベート・エンタープライズ・コード111が含まれているRADIUSサーバー属性構成ファイルで、OracleのベンダーIDを割り当てます。
たとえば、RADIUSサーバー属性構成ファイルに次のように入力します。

VALUE VENDOR_SPECIFIC ORACLE 111

3. 次の構文を使用して、ORACLE_ROLE属性を外部RADIUS認可を使用するユーザーのユーザー・プロファイルに追加します。
ORA_databaseSID_rolename[_[A]|[D]]

説明:

- ORAは、このロールをOracle用に使用することを指定します。

- databaseSIDは、データベース・サーバーのinit.oraファイル内で構成されているOracleシステム識別子です。

- rolenameは、データ・ディクショナリで定義されているロール名です。

- Aは、ユーザーがこのロールの管理者の権限を持つことを示すオプションの文字です。

- Dは、このロールをデフォルトで有効にすることを示すオプションの文字です。

OracleロールにマップされるRADIUSグループが、ORACLE_ROLEの構文に準拠していることを確認します。

例:

USERNAME     USERPASSWD="user_password",
SERVICE_TYPE=login_user,
VENDOR_SPECIFIC=ORACLE,
ORACLE_ROLE=ORA_ora920_sysdba

関連項目:
サーバーの構成の詳細は、RADIUSサーバーの管理ドキュメントを参照してください。

11.3.5 手順5: RADIUSアカウンティングの構成

RADIUSアカウンティングは、Oracleデータベース・サーバーへのアクセスに関する情報をログに記録し、RADIUSアカウンティング・サーバー上のファイルに格納します。この機能は、RADIUSサーバーと認証サーバーの両方でサポートされている場合にのみ使用します。

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

- 手順5A: Oracleデータベース・サーバーでのRADIUSアカウンティングの設定

- Step 5B: RADIUSアカウンティング・サーバーの構成

11.3.5.1 手順5A: Oracleデータベース・サーバーでのRADIUSアカウンティングの設定

1. Oracle Net Managerを起動します。

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

netmgr

- (Windows)「スタート」→「プログラム」→「Oracle - HOME_NAME」→「Configuration and Migration Tools」→「Net Manager」を選択します。

2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。

3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。
ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

4. 「その他のパラメータ」タブを選択します。

5. 「認証サービス」リストから、RADIUSを選択します。

6. 「アカウンティングの送信」フィールドで、アカウンティングを有効にするにはONと入力し、無効にするにはOFFと入力します。

7. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルが次のエントリで更新されます。

SQLNET.RADIUS_SEND_ACCOUNTING= ON

11.3.5.2 手順5B: RADIUSアカウンティング・サーバーの構成

RADIUSアカウンティング・サーバーは、RADIUS認証サーバーと同じホストまたは別のホストにあるアカウンティング・サーバーで構成されます。

関連項目:
RADIUSアカウンティングの構成の詳細は、RADIUSサーバーの管理ドキュメントを参照してください。

11.3.6 手順6: RADIUSクライアント名のRADIUSサーバー・データベースへの追加

Internet Engineering Task Force (IETF) RFC #2138 Remote Authentication Dial In User Service (RADIUS)およびRFC #2139 RADIUS Accountingの規格に準拠するRADIUSサーバーは、実質的にすべて使用できます。RADIUSサーバーには様々なものがあるため、固有の相互運用性要件について、使用するRADIUSサーバーのドキュメントで確認してください。

RADIUSクライアント名をLivingston RADIUSサーバーに追加する手順:

1. /etc/raddb/clientsにあるclientsファイルを開きます。次のテキストと表が表示されます。

@ (#) clients 1.1 2/21/96 Copyright 1991 Livingston Enterprises Inc
This file contains a list of clients which are allowed to make authentication requests and their encryption key. The first field is a valid hostname. The second field (separated by blanks or tabs) is the encryption key.
Client Name                     Key

2. CLIENT NAME列に、Oracleデータベース・サーバーが実行されているホストのホスト名またはIPアドレスを入力します。KEY列に、共有シークレットを入力します。
CLIENT NAME列に入力する値は、クライアントの名前かIPアドレスかにかかわらず、RADIUSサーバーによって異なります。

3. clientsファイルを保存して閉じます。

関連項目:
RADIUSサーバーの管理ドキュメント

11.3.7 手順7: RADIUSとともに使用する認証サーバーの構成

認証サーバーの構成の詳細は、認証サーバーのドキュメントを参照してください。

関連項目:
使用可能なリソースのリストを含む「関連ドキュメント」。

11.3.8 手順8: 認証サーバーとともに使用するRADIUSサーバーの構成

認証サーバーとともに使用するRADIUSサーバーの構成の詳細は、RADIUSサーバーのドキュメントを参照してください。

11.3.9 手順9: マッピング・ロールの構成

RADIUSサーバーでベンダー・タイプ属性がサポートされている場合は、ロールをRADIUSサーバーに格納して管理できます。RADIUSを使用したCONNECT要求があると、Oracleデータベース・サーバーはロールをダウンロードします。

この機能を使用するには、Oracleデータベース・サーバーとRADIUSサーバーの両方でロールを構成します。

Oracleデータベース・サーバーでロールを構成する手順:

1. テキスト・エディタを使用して、Oracleデータベース・サーバーの初期化パラメータ・ファイルでOS_ROLESパラメータを設定します。
デフォルトでは、init.oraファイルは、LinuxおよびUNIXシステムの場合はORACLE_HOME/dbsディレクトリ(または同じデータ・ファイルの場所)、Windowsの場合はORACLE_HOME\databaseディレクトリにあります。

2. Oracleデータベース・サーバーを停止して再起動します。
例:

SQL> SHUTDOWN
SQL> STARTUP

3. RADIUSサーバーがOracleデータベース・サーバー上で管理する各ロールを、値IDENTIFIED EXTERNALLYを使用して作成します。
RADIUSサーバーでロールを構成するには、次の構文を使用します。

ORA_DatabaseName.DatabaseDomainName_RoleName

次のように指定します。

- DatabaseNameは、ロールが作成されているOracleデータベース・サーバーの名前です。これは、DB_NAME初期化パラメータの値と同じです。

- DatabaseDomainNameは、Oracleデータベース・サーバーが属するドメインの名前です。この値は、DB_DOMAIN初期化パラメータの値と同じです。

- RoleNameは、Oracleデータベース・サーバーで作成されたロールの名前です。

例:

ORA_USERDB.US.EXAMPLE.COM_MANAGER

4. RADIUSチャレンジ・レスポンス・モードを構成します。

関連項目:

- チャレンジ・レスポンス(非同期)認証モード

- 手順2C(2): チャレンジ・レスポンスの構成

11.4 RADIUSを使用したデータベースへのログイン

同期認証モードを使用している場合は、SQL*Plusを起動して、プロンプトで次のコマンドを入力します。

CONNECT username@database_alias
Enter password: password

注意:
このコマンドでログインできるのは、チャレンジ・レスポンスがONになっていない場合のみです。

チャレンジ・レスポンス・モードを使用している場合は、SQL*Plusを起動して、プロンプトで次のコマンドを入力します。

CONNECT /@database_alias

注意:

- このコマンドでログインできるのは、チャレンジ・レスポンスがONになっている場合のみです。

- チャレンジ・レスポンス・モードは、ログインのすべてのケースについて構成できます。

11.5 RSA ACE/Server構成チェックリスト

RSA ACE/ServerをRADIUSサーバーとして使用している場合は、最初の接続の前に次の項目をチェックしてください。

- ノード・シークレットを送信するようにRSA ACE/Serverのホスト・エージェントが設定されていることを確認します。バージョン5.0では、これを行うには「SENT Node secret」ボックスの選択を解除したままにします。RSA ACE/Serverがエージェントへのノード・シークレットの送信に失敗した場合は、ノード検証失敗メッセージがRSA ACE/Serverのログに書き込まれます。

- RSA SecurIDトークンを使用している場合は、トークンがRSA ACE/Serverと同期されていることを確認します。

関連項目:
トラブルシューティングの詳細は、RSA ACE/Serverのドキュメントを参照してください。

12 Kerberos認証の構成

この章では、Kerberos認証を使用できるようにOracle Advanced Security for Oracle Databaseを構成する方法、およびOracleデータベース・ユーザーを認証するようにKerberosを構成する方法について説明します。この章には、次の項が含まれています。

- Kerberos認証の有効化

- Kerberos認証アダプタのユーティリティ

- Windows 2000ドメイン・コントローラKDCとの相互運用性の構成

- Kerberos認証フォールバック動作の構成

- Oracle Kerberos認証の構成のトラブルシューティング

関連項目:
KerberosユーザーをKerberos認証のエンタープライズ・ユーザーに移行する方法の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

12.1 Kerberos認証の有効化

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

- 手順1: Kerberosのインストール

- 手順2: Oracleデータベース・サーバーに対するサービス・プリンシパルの構成

- 手順3: Kerberosからのサービス・キー表の抽出

- 手順4: Oracleデータベース・サーバーとOracleクライアントのインストール

- 手順5: Oracle Net ServicesとOracle Advanced Securityのインストール

- 手順6: Oracle Net ServicesとOracle Databaseの構成

- 手順7: Kerberos認証の構成

- 手順8: Kerberosユーザーの作成

- 手順9: 外部認証されたOracleユーザーの作成

- 手順10: Kerberos/Oracleユーザーの初期チケットの取得

12.1.1 手順1: Kerberosのインストール

認証サーバーとして動作するシステムにKerberosをインストールします。

関連項目:
Kerberosの構築とインストールに関する注意事項は、Kerberosバージョン5ソース配布に同梱されています。

注意:
32ビット・バージョンのOracle Databaseからアップグレードした後に初めてKerberos認証アダプタを使用すると、エラー・メッセージ「ORA-01637: パケット受信に失敗しました。」が表示されます。
回避策: 64ビット・バージョンのデータベースにアップグレードした後、Kerberos外部認証方式を使用する前に、コンピュータ上の/usr/tmp/oracle_service_name.RCという名前のファイルを確認して削除します。

12.1.2 手順2: Oracleデータベース・サーバーに対するサービス・プリンシパルの構成

Kerberosを使用して自己を認証するクライアントの識別情報をOracleデータベース・サーバーで検証できるようにするには、Oracle Databaseのサービス・プリンシパルを作成する必要があります。

プリンシパルの名前は、次の形式にする必要があります。

kservice/kinstance@REALM

サービス・プリンシパル内の各フィールドで次の値を指定します。

サービス・プリンシパル・フィールド

説明

kservice

Oracleサービスを表す、大/小文字を区別する文字列。データベース・サービス名と同じでもかまいません。

kinstance

通常は、Oracle Databaseが実行されているシステムの完全修飾DNS名。

REALM

サービス・プリンシパルが登録されているKerberosレルムの名前。REALMは常に大文字である必要があり、通常はDNSドメイン名です。

注意:
この項のユーティリティ名は実行可能プログラムです。ただし、Kerberosユーザー名krbuserおよびレルムEXAMPLE.COMは単なる例です。

たとえば、kserviceがoracle、Oracle Databaseが実行されているシステムの完全修飾名をdbserver.example.com、レルムをEXAMPLE.COMとします。この場合、プリンシパル名は次のようになります。

oracle/dbserver.example.com@EXAMPLE.COM

通常、DNSドメイン名をレルムの名前として使用します。service principalを作成するには、kadmin.localを実行します。UNIXでは、次の構文を使用して、rootユーザーとしてこのコマンドを実行します。

# cd /kerberos-install-directory/sbin
# ./kadmin.local

oracle/dbserver.example.com@EXAMPLE.COMという名前のプリンシパルを、Kerberosが認識するサーバー・プリンシパルのリストに追加するには、次のように入力します。

kadmin.local:addprinc -randkey oracle/dbserver.example.com@EXAMPLE.COM

12.1.3 手順3: Kerberosからのサービス・キー表の抽出

Kerberosからサービス・キー表を抽出し、Oracleデータベース・サーバー/Kerberosクライアント・システムにコピーします。

たとえば、次の手順を使用してdbserver.example.comのサービス・キー表を抽出します。

1. 次のように入力してサービス・キー表を抽出します。

kadmin.local:  ktadd -k /tmp/keytab oracle/dbserver.example.com

Entry for principal oracle/dbserver.example.com with kvno 2, encryption DES-CBC-CRC added to the keytab WRFILE: 'WRFILE:/tmp/keytab

kadmin.local:  exit

oklist -k -t /tmp/keytab

2. サービス・キー表を抽出した後、古いエントリに加えて新しいエントリが表にあることを確認します。新しいエントリがない場合、またはさらに追加する必要がある場合は、kadmin.localを使用して追加します。
ktaddを使用するときにレルムを入力しない場合、Kerberosサーバーのデフォルトのレルムが使用されます。kadmin.localは、localhostで実行されているKerberosサーバーに接続されます。

3. Kerberosサービス・キー表がKerberosクライアントと同じシステム上にある場合は、移動できます。Kerberosサービス・キー表がKerberosクライアントと異なるシステム上にある場合は、FTPなどのプログラムを使用してファイルを転送する必要があります。FTPを使用する場合は、ファイルをバイナリ・モードで転送します。
次の例は、UNIXプラットフォームでサービス・キー表を移動する方法を示しています。

# mv /tmp/keytab /etc/v5srvtab

サービス・ファイルのデフォルト名は、/etc/v5srvtabです。

4. Oracleデータベース・サーバー実行可能ファイルの所有者がサービス・キー表(前の例の/etc/v5srvtab)を読み取ることができることを確認します。そのためには、ファイル所有者をOracleユーザーに設定するか、またはファイルをOracleが属するグループに対して読取り可能にします。

注意:

ファイルをすべてのユーザーに対して読取り可能にしないでください。そのことによってセキュリティ侵害が発生する場合があります。

12.1.4 手順4: Oracleデータベース・サーバーとOracleクライアントのインストール

Oracleデータベース・サーバーとクライアント・ソフトウェアをインストールします。

関連項目:
オペレーティング・システム固有のOracle Databaseインストール関連ドキュメント

12.1.5 手順5: Oracle Net ServicesとOracle Advanced Securityのインストール

Oracleデータベース・サーバーとOracleクライアント・システムにOracle Net ServicesとOracle Advanced Securityをインストールします。

関連項目:
オペレーティング・システム固有のOracle Databaseインストール関連ドキュメント

12.1.6 手順6: Oracle Net ServicesとOracle Databaseの構成

Oracleデータベース・サーバーとクライアントでOracle Net Servicesを構成します。

関連項目:

- オペレーティング・システム固有のOracle Databaseインストール関連ドキュメント

- 『Oracle Database Net Services管理者ガイド』

12.1.7手順7: Kerberos認証の構成

次の手順を実行して、Oracleデータベース・サーバーおよびクライアントのsqlnet.oraファイルで必須パラメータを設定します。

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

- 手順7A: クライアントとデータベース・サーバーでのKerberosの構成

- 手順7B: 初期化パラメータの設定

- 手順7C: sqlnet.oraパラメータの設定(オプション)

12.1.7.1 手順7A: クライアントとデータベース・サーバーでのKerberosの構成

クライアントとデータベース・サーバーでKerberos認証サービス・パラメータを構成する手順:

1. Oracle Net Managerを起動します。

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

netmgr

- (Windows)「スタート」→「プログラム」→「Oracle - HOME_NAME」→「Configuration and Migration Tools」→「Net Manager」を選択します。

2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。

3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。
ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

4. 「認証」タブを選択します。

5. 「使用可能なメソッド」リストから、「KERBEROS5」を選択します。

6. 右矢印(>)をクリックして、「KERBEROS5」を「選択メソッド」に移動します。

7. 選択したメソッドを使用する順に並べます。そのためには、「選択メソッド」リストでメソッドを選択し、「上へ」または「下へ」をクリックしてリスト内に配置します。たとえば、最初に使用するサービスをKERBEROS5にするには、リストの先頭に移動します。

8. 「その他のパラメータ」タブを選択します。

9. 「認証サービス」リストから「KERBEROS(V5)」を選択します。

Serviceフィールドでは、Kerberosのサービス・チケットを取得するためにOracle Databaseが使用するサービスの名前を定義します。このフィールドに値を入力すると、他のフィールドに入力できるようになります。

10. オプションで、次のフィールドの値を入力します。

- 「資格証明キャッシュ・ファイル」

- 「構成ファイル」

- 「レルム変換ファイル」

- 「キー表」

- 「時間誤差」

構成するフィールドとパラメータの詳細は、Oracle Net Managerオンライン・ヘルプおよび「手順7C: sqlnet.oraパラメータの設定(オプション)」を参照してください。

11. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルは次のエントリで更新されます。

SQLNET.AUTHENTICATION_SERVICES=(KERBEROS5)
SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=kservice

12.1.7.2 手順7B: 初期化パラメータの設定

Kerberosユーザー名には長いものにできますが、Oracleユーザー名は30文字に制限されているため、初期化パラメータ・ファイルのOS_AUTHENT_PREFIXの値をnullに設定することをお薦めします。

OS_AUTHENT_PREFIX=""

このパラメータをnullに設定すると、OPS$のデフォルト値が上書きされます。

注意:
Oracle Database 11g リリース2 (11.2)では、30文字を超えるKerberosユーザー名を持つ外部データベース・ユーザーを作成できます。詳細は、「手順9: 外部認証されたOracleユーザーの作成」を参照してください。

12.1.7.3 手順7C: sqlnet.oraパラメータの設定(オプション)

必須パラメータ以外に、オプションで、クライアントおよびOracleデータベース・サーバーでsqlnet.oraファイルの次のパラメータを設定できます。

属性

説明

パラメータ:

SQLNET.KERBEROS5_CC_NAME=pathname_to_credentials_cache_file

説明:

Kerberos資格証明キャッシュ(CC)ファイルへの完全パス名を指定します。デフォルト値は、オペレーティング・システムによって異なります。UNIXでは、/tmp/krb5cc_useridです。
SQLNET.KERBEROS5_CC_NAMEの値は、次の形式を使用して指定できます。

- SQLNET.KERBEROS5_CC_NAME=complete_path_to_cc_file
例:

SQLNET.KERBEROS5_CC_NAME=/tmp/kcache

SQLNET.KERBEROS5_CC_NAME=D:\tmp\kcache

- SQLNET.KERBEROS5_CC_NAME=FILE:complete_path_to_cc_file
例:

SQLNET.KERBEROS5_CC_NAME=FILE:/tmp/kcache

- SQLNET.KERBEROS5_CC_NAME=OSMSFT:
Windowsを実行し、Microsoft KDCを使用している場合は、この値を使用します。

このパラメータはKRB5CCNAME環境変数を使用して設定することもできますが、sqlnet.oraファイルで設定する値は、KRB5CCNAMEで設定する値よりも優先されます。

例:

SQLNET.KERBEROS5_CC_NAME=/usr/tmp/krbcache

パラメータ:

SQLNET.KERBEROS5_CLOCKSKEW=number_of_seconds_accepted_as_network_delay

説明:

このパラメータは、Kerberos資格証明を期限切れとみなすまでの秒数を指定します。これは、資格証明がクライアントまたはデータベース・サーバーによって実際に受け取られるときに使用されます。また、再生攻撃を受けないように資格証明を格納する必要があるかどうかをOracleデータベース・サーバーが判断するときにも、使用されます。デフォルトは300秒です。

例:

SQLNET.KERBEROS5_CLOCKSKEW=1200

パラメータ:

SQLNET.KERBEROS5_CONF=pathname_to_Kerberos_
configuration_file

説明:

このパラメータは、Kerberos構成ファイルへの完全パス名を指定します。構成ファイルには、デフォルトのKDC (key distribution center)のレルムが含まれており、レルムをKDCホストにマッピングします。デフォルトは、オペレーティング・システムによって異なります。UNIXでは、/krb5/krb.confです。

例:

SQLNET.KERBEROS5_CONF=/krb/krb.conf

パラメータ:

SQLNET.KERBEROS5_CONF_MIT=[TRUE|FALSE]

説明:

このパラメータは、新しいMIT Kerberos構成形式を使用するかどうかを指定します。値をTRUEに設定すると、新しい構成形式ルールに従ってファイルが解析されます。値をFALSEに設定すると、デフォルト(非MIT)構成が使用されます。デフォルトはFALSEです。

例:

SQLNET.KERBEROS5_CONF_MIT=False

パラメータ:

SQLNET.KERBEROS5_KEYTAB=
pathname_to_Kerberos_principal/key_table

説明:

このパラメータは、Kerberosプリンシパル/秘密鍵マッピング・ファイルへの完全パス名を指定します。これは、Oracleデータベース・サーバーが鍵を抽出し、クライアントから受信する認証情報を複号化するために使用されます。デフォルトは、オペレーティング・システムによって異なります。UNIXでは、/etc/v5srvtabです。

例:

SQLNET.KERBEROS5_KEYTAB=/etc/v5srvtab

パラメータ:

SQLNET.KERBEROS5_REALMS=
pathname_to_Kerberos_realm_translation_file

説明:

このパラメータは、Kerberosレルム変換ファイルへの完全パス名を指定します。変換ファイルを使用して、ホスト名またはドメイン名をレルムにマッピングします。デフォルトは、オペレーティング・システムによって異なります。UNIXでは、/etc/krb.realmsです。

例:

SQLNET.KERBEROS5_REALMS=/krb5/krb.realms

資格証明キャッシュ・タイプ4形式のサポート

Oracle Databaseは、資格証明キャッシュ・タイプ4形式をサポートおよび認識するようになりました。この機能は、新しいバージョンのMIT Kerberos 5 (1.3.x以上)ユーティリティを使用する環境で役立ちます。

この機能を使用するには、sqlnet.oraファイルで次のパラメータを設定する必要があります。

SQLNET.KERBEROS5_CONF_MIT = TRUE

Kerberos構成ファイル(krb5.conf)は、次のように設定する必要があります。

...
[libdefaults]
...
kdc_timesync = 1
ccache_type = 4

12.1.8 手順8: Kerberosユーザーの作成

Kerberosで認証できるOracleユーザーを作成するには、管理ツールがインストールされているKerberos認証サーバーで次のタスクを実行します。レルムはすでに存在している必要があります。

注意:
この項のユーティリティ名は実行可能プログラムです。ただし、Kerberosユーザー名krbuserおよびレルムEXAMPLE.COMは単なる例です。システムによって異なる場合があります。

/krb5/admin/kadmin.localをrootとして実行して、krbuserなどの新しいKerberosユーザーを作成します。

次の例は、UNIXの場合です。

# ./kadmin.local
kadmin.local: addprinc krbuser
Enter password for principal: "krbuser@EXAMPLE.COM": (password does not display)
Re-enter password for principal: "krbuser@EXAMPLE.COM": (password does not display)
kadmin.local: exit

12.1.9 手順9: 外部認証されたOracleユーザーの作成

Oracleデータベース・サーバー上でSQL*Plusを実行して、Kerberosユーザーに対応するOracleユーザーを作成します。次の例で、OS_AUTHENT_PREFIXはnull ("")に設定されます。次の例に示すように、Oracleユーザー名は大文字とし、二重引用符で囲みます。

SQL> CONNECT / AS SYSDBA;
SQL> CREATE USER "KRBUSER@EXAMPLE.COM" IDENTIFIED EXTERNALLY;
SQL> GRANT CREATE SESSION TO "KRBUSER@EXAMPLE.COM";

ユーザーのKerberosプリンシパル名が30文字を超え、最大1024文字の場合は、次のようにユーザーを作成します。

SQL> CREATE USER db_user_name IDENTIFIED EXTERNALLY AS 'kerberos_principal_name'

例:

SQL> CREATE USER KRBUSER IDENTIFIED EXTERNALLY AS 'KerberosUser@EXAMPLE.COM';

注意:
データベース管理者は、2つのデータベース・ユーザーが同じKerberosプリンシパル名で外部から識別されないことを確認する必要があります。

12.1.10 手順10: Kerberos/Oracleユーザーの初期チケットの取得

データベースに接続するには、Key Distribution Center (KDC)に初期チケットを要求する必要があります。そのためには、クライアントで次を実行します。

% okinit username

データベースに接続するときに、データベース・リンクの後に次のような参照が続く場合は、転送可能フラグ(-f)オプションを使用する必要があります。

sqlplus /@oracle

okinit -fを実行すると、データベース・リンクをまたいで使用できる資格証明が有効になります。Oracleクライアントで次のコマンドを実行します。

% okinit -f
Password for krbuser@EXAMPLE.COM:password

12.2 Kerberos認証アダプタのユーティリティ

Oracle Kerberos認証アダプタとともに3つのユーティリティが提供されています。これらのユーティリティは、Oracle Kerberos認証サポートがインストールされたOracleクライアントでの使用を意図したものです。特定のタスクで、次のユーティリティを使用します。

- okinitユーティリティを使用した初期チケットの取得

- oklistユーティリティを使用した資格証明の表示

- okdstryユーティリティを使用したキャッシュ・ファイルからの資格証明の削除

12.2.1 okinitユーティリティを使用した初期チケットの取得

okinitユーティリティでは、Kerberosチケットを取得し、キャッシュします。通常は、このユーティリティを使用してチケット認可チケットを取得し、ユーザーが入力したパスワードを使用してkey distribution center (KDC)からの資格証明を復号化します。チケット認可チケットは、ユーザーの資格証明キャッシュに格納されます。

okinitで使用可能なオプションを表12-1に示します。

表12-1 okinitユーティリティのオプション

オプション

説明

-f

転送可能なチケット認可チケットを要求します。データベース・リンクをたどる場合は、このオプションが必要です。

-l

チケット認可チケットおよびすべての後続チケットの存続期間を指定します。デフォルトで、チケット認可チケットは8時間有効ですが、存続期間がより短いまたは長い資格証明を指定することもできます。KDCはこのオプションを無視したり、各サイトで指定できる時間を制限したりできます。次の例に示すように、存続期間の値は、w (週)、d (日)、h (時間)、m (分)またはs (秒)で修飾された数字で構成される文字列です。

okinit -l 2wld6h20m30s

この例では、存続期間が2週間と1日6時間20分30秒のチケット認可チケットが要求されます。

-c

代替資格証明キャッシュを指定します。UNIXでは、デフォルトは/tmp/krb5cc_uidです。代替資格証明キャッシュは、sqlnet.oraファイルでSQLNET.KERBEROS5_CC_NAMEパラメータを使用して指定することもできます。

-e

使用するKerberos暗号化タイプを表す数字を指定します。

このオプションは、セッションに対して特定のKerberos暗号化タイプの鍵を要求する場合に使用できます。複数の暗号化タイプを指定すると、KDCでは一般的で最も強力な暗号化タイプがリストから選択されます。

許容される値は次のとおりです。

- 16: DES3-CBC-SHA1

- 18: AES256-CTS

次の例では、DES-CBC-CRCおよびDES3-CBC-SHA1暗号化タイプを要求します。

okinit -e 1 -e 16 krbuser@REALM

複数の暗号化タイプを要求するには、このオプションを繰り返します。

-?

コマンドライン・オプションのリストを表示します。

12.2.2 oklistユーティリティを使用した資格証明の表示

oklistユーティリティを実行して、保持しているチケットのリストを表示します。表12-2に、使用できるoklistオプションを示します。

表12-2 oklistユーティリティのオプション

オプション

説明

-f

資格証明のフラグを表示します。関連するフラグは次のとおりです。

- I: 資格証明がチケット認可チケットです。

- F: 資格証明が転送可能です。

- f: 資格証明が転送済です。

-c

代替資格証明キャッシュを指定します。UNIXでは、デフォルトは/tmp/krb5cc_uidです。代替資格証明キャッシュは、sqlnet.oraファイルでSQLNET.KERBEROS5_CC_NAMEパラメータを使用して指定することもできます。

-k

UNIX上のサービス表のエントリ(デフォルト/etc/v5srvtab)をリストします。代替サービス表は、sqlnet.oraファイルでSQLNET.KERBEROS5_KEYTABパラメータを使用して指定することもできます。

フラグ表示オプション(-f)によって、次のような追加情報が表示されます。

% oklist -f
27-Jul-1999 21:57:51   28-Jul-1999 05:58:14
krbtgt/EXAMPLE.COM@EXAMPLE.COM
Flags: FI

12.2.3 okdstryユーティリティを使用したキャッシュ・ファイルからの資格証明の削除

okdstryユーティリティを使用して、資格証明キャッシュ・ファイルから資格証明を削除します。

$ okdstry -f

-fコマンド・オプションによって、代替資格証明キャッシュを指定できます。UNIXでは、デフォルトは/tmp/krb5cc_uidです。代替資格証明キャッシュは、sqlnet.oraファイルでSQLNET.KRB5_CC_NAMEパラメータを使用して指定することもできます。

12.2.4 Kerberosによって認証されたOracle Databaseサーバーへの接続

ユーザー名やパスワードを使用しないでOracleデータベース・サーバーに接続できるようになりました。次のようにコマンドを入力します。

$ sqlplus /@net_service_name

net_service_nameは、Oracle Net Servicesのサービス名です。例:

$ sqlplus /@oracle_dbname

関連項目:
外部認証の詳細は、第1章「Oracle Advanced Securityの概要」およびOracle Database Heterogeneous Connectivityユーザーズ・ガイドを参照してください。

12.3 Windows 2000ドメイン・コントローラKDCとの相互運用性の構成

Oracle Advanced SecurityはMIT Kerberosに準拠しており、OracleデータベースでのKerberos認証を可能にするために、Windows 2000ドメイン・コントローラ上で、Kerberos Key Distribution Center (KDC)によって発行されたチケットを相互運用できます。Windows 2000ドメイン・コントローラKDCを使用するKerberosを構成するには、次のタスクを実行します。

- 手順1: Windows 2000ドメイン・コントローラKDCのためのOracle Kerberosクライアントの構成

- 手順2: OracleクライアントのためのWindows 2000ドメイン・コントローラKDCの構成

- 手順3: Windows 2000ドメイン・コントローラKDCのためのOracleデータベースの構成

- 手順4: Kerberos/Oracleユーザーの初期チケットの取得

12.3.1 手順1: Windows 2000ドメイン・コントローラKDCのためのOracle Kerberosクライアントの構成

Oracle Kerberosクライアントで次の手順を実行する必要があります。

12.3.1.1 手順1A: クライアントKerberos構成ファイルの作成

Windows 2000ドメイン・コントローラをKerberos KDCとして参照する次のKerberosクライアント構成ファイルを作成します。次の例で、Windows 2000ドメイン・コントローラはsales3854.us.example.comという名前のノード上で実行されています。

- krb.confファイル
例:

SALES3854.US.EXAMPLE.COM
SALES3854.US.EXAMPLE.COM sales3854.us.example.com admin server

- krb5.confファイル
例:

[libdefaults]
default_realm=SALES.US.EXAMPLE.COM
[realms]
SALES.US.EXAMPLE.COM= {

kdc=sales3854.us.example.com:88
}

[domain_realm]
.us.example.com=SALES.US.EXAMPLE.COM

- krb5.realmsファイル
例:

us.example.com SALES.US.EXAMPLE.COM

12.3.1.2 手順2A: sqlnet.oraファイルでのOracle構成パラメータの指定

Windows 2000ドメイン・コントローラKDCと相互運用するようにOracleクライアントを構成するには、「手順7A: クライアントとデータベース・サーバーでのKerberosの構成」で示したものと同じsqlnet.oraファイルのパラメータを使用します。

クライアントのsqlnet.oraファイルで次のパラメータを設定します。

SQLNET.KERBEROS5_CONF=pathname_to_Kerberos_configuration_file
SQLNET.KERBEROS5_CONF_MIT=TRUE
SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=Kerberos_service_name
SQLNET.AUTHENTICATION_SERVICES=(BEQ,KERBEROS5)

注意:
Windows 2000オペレーティング・システムはMIT Kerberosバージョン5に基づくセキュリティ・サービスとのみ相互運用するように設計されているため、SQLNET.KERBEROS5_CONF_MITパラメータがTRUEに設定されていることを確認してください。

12.3.1.3 手順3A: リスニング・ポート番号の指定

Windows 2000ドメイン・コントローラKDCは、UDP/TCPポート88でリスニングします。kerberos5のシステム・ファイル・エントリが、次のようにUDP/TCPポート88に設定されていることを確認してください。

UNIX環境では、/etc/servicesファイルの最初のkerberos5エントリが88に設定されていることを確認してください。

12.3.2 手順2: OracleクライアントのためのWindows 2000ドメイン・コントローラKDCの構成

Windows 2000ドメイン・コントローラで、次の手順を実行する必要があります。

関連項目:
Active Directoryでユーザーを作成する方法の詳細は、Microsoft社のドキュメントを参照してください。

12.3.2.1 手順2A: ユーザーの作成

Microsoft Active DirectoryでOracleクライアントの新規ユーザーを作成します。

12.3.2.2 手順2B: Oracle Databaseプリンシパルの作成

1. Microsoft Active DirectoryでOracleデータベースの新規ユーザーを作成します。
たとえば、Oracleデータベースがホストsales3854.us.example.comで実行されている場合は、Active Directoryを使用してユーザー名sales3854.us.example.comとパスワードoracleでユーザーを作成します。

Active Directoryでは、ユーザーをhost/hostname.dns.com (oracle/sales3854.us.example.comなど)として作成しないでください。Microsoft社のKDCは、MIT KDCのようにマルチパートの名前をサポートしていません。MIT KDCは、すべてのプリンシパルをユーザー名として扱うため、マルチパートの名前をサービス・プリンシパルに使用できます。ただし、Microsoft社のKDCでは使用できません。

2. Ktpassコマンドライン・ユーティリティを使用して、次の構文によってキー表ファイルを抽出します。

Ktpass -princ service/hostname@NT-DNS-REALM-NAME -mapuser account -pass password -out keytab.file

次に、前の手順で作成したデータベース・ユーザーを使用したKtpassの使用例を示します。

C:> Ktpass -princ oracle/sales3854.us.example.com@SALES.US.COM -mapuser sales3854 -pass oracle -out C:\temp\v5srvtab

このユーティリティはWindows 2000サポート・ツールの一部であり、\support\reskit\netmgmt\securityフォルダのWindows 2000配布媒体にあります。

3. 抽出したキー表ファイルをOracleデータベースがインストールされているホスト・コンピュータにコピーします。
たとえば、前の手順で作成したキー表を/krb5/v5svrtabにコピーできます。

関連項目:
Windows 2000とKerberos 5の相互運用の詳細は、次のURLを参照してください。

http://technet.microsoft.com/hi-in/windowsserver/2000/bb735396(en-us).aspx

12.3.3 手順3: Windows 2000ドメイン・コントローラKDCのためのOracleデータベースの構成

Oracleデータベースがインストールされているホスト・コンピュータで、次の手順を実行する必要があります。

12.3.3.1 手順3A: sqlnet.oraファイルでの構成パラメータの設定

データベース・サーバーのsqlnet.oraファイルで、次のパラメータの値を指定します。

SQLNET.KERBEROS5_CONF=pathname_to_Kerberos_configuration_file
SQLNET.KERBEROS5_KEYTAB=pathname_to_Kerberos_principal/key_table
SQLNET.KERBEROS5_CONF_MIT=TRUE
SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=Kerberos_service_name
SQLNET.AUTHENTICATION_SERVICES=(BEQ,KERBEROS5)

注意:
Windows 2000オペレーティング・システムはMIT Kerberosバージョン5に基づくセキュリティ・サービスとのみ相互運用するように設計されているため、SQLNET.KERBEROS5_CONF_MITパラメータがTRUEに設定されていることを確認してください。

12.3.3.2 手順3B: 外部認証されたOracleユーザーの作成

「手順9: 外部認証されたOracleユーザーの作成」のタスク情報に従って、外部認証されたOracleユーザーを作成します。ユーザー名はすべて大文字で作成します。たとえば、ORAKRB@SALES.US.EXAMPLE.COMのようにします。

関連項目:
Oracle Net Managerを使用してsqlnet.oraファイルのパラメータを設定する方法の詳細は、「手順7: Kerberos認証の構成」を参照してください。

12.3.4 手順4: Kerberos/Oracleユーザーの初期チケットの取得

クライアントがデータベースに接続するには、初期チケットを要求する必要があります。初期チケットを要求するには、「手順10: Kerberos/Oracleユーザーの初期チケットの取得」のタスク情報に従います。

注意:
ユーザーは、Windows固有のキャッシュを使用する場合、okinitコマンドを使用して初期チケットを明示的に要求する必要はありません。
OracleクライアントがWindows 2000以上で実行されている場合、KerberosチケットはユーザーがWindowsにログインしたときに自動的に取得されます。

関連項目:
システムのKerberosチケット情報を表示するために使用できるKerbtray.exeユーティリティの詳細は、Microsoft社のドキュメントを参照してください。

12.4 Kerberos認証フォールバック動作の構成

OracleクライアントでKerberos認証を構成してOracleデータベースを認証した後に、パスワード・ベースの認証にフォールバックする必要が発生する場合があります。たとえば、ユーザー・データベースのリンクをOracleデータベースに固定している場合などです。

Kerberos認証からパスワード・ベースの認証へのフォールバックを有効にするには、クライアントとサーバーの両方でsqlnet.ora内のSQLNET.FALLBACK_AUTHENTICATIONパラメータをTRUEに設定します。このパラメータのデフォルトはFALSEです。つまり、デフォルトではKerberos認証に失敗すると接続は失敗します。

関連項目:
『Oracle Database Net Servicesリファレンス』

12.5 Oracle Kerberos認証の構成のトラブルシューティング

この項では、一般的な構成の問題を示し、その解決方法について説明します。

- okinitを使用してチケット認証チケットを取得できない場合:

- krb.confファイルを調べて、デフォルトのレルムが正しいことを確認します。

- レルムに対して指定されているホスト上でKDCが実行されていることを確認します。

- KDCにユーザー・プリンシパルのエントリがあること、およびパスワードが一致していることを確認します。

- krb.confファイルおよびkrb.realmsファイルがOracleによって読取り可能であることを確認します。

- TNS_ADMIN環境変数が、sqlnet.ora構成ファイルを含むディレクトリを指していることを確認します。

- 初期チケットはあるが接続できない場合:

- 接続を試みた後で、サービス・チケットを確認します。

- データベース・サーバー側のsqlnet.oraファイルに、Kerberosによって認識されるサービスに対応するサービス名があることを確認します。

- 関連するすべてのシステムでクロックのずれが数分以内に設定されていることを確認するか、sqlnet.oraファイルでSQLNET.KERBEROS5_CLOCKSKEWパラメータを変更します。

- サービス・チケットはあるが接続できない場合:

- クライアントおよびデータベース・サーバー上でクロックを確認します。

- v5srvtabファイルが正しい場所にあり、Oracleによって読取り可能であることを確認します。sqlnet.oraパラメータを忘れずに設定してください。

- データベース・サーバー側のsqlnet.oraファイルで指定されているサービスに対してv5srvtabファイルが生成されていることを確認します。

- 問題がないと考えられるにもかかわらず、発行した問合せが失敗する場合:

- 初期チケットが転送可能であることを確認します。okinitユーティリティを実行して初期チケットを取得している必要があります。

- 資格証明の有効期限を確認します。資格証明の有効期限が切れている場合は、接続をクローズし、okinitを実行して新しい初期チケットを取得します。

13 Secure Sockets Layer認証の構成

この章では、Oracle Advanced SecurityによってサポートされているSecure Sockets Layer (SSL)プロトコルとTransport Layer Security (TLS)プロトコルを構成して使用する方法について説明します。内容は次のとおりです。

- Secure Sockets LayerおよびTransport Layer Security

- Oracle環境における公開鍵インフラストラクチャ

- Secure Sockets Layerと他の認証方式の併用

- Secure Sockets Layerとファイアウォール

- Secure Sockets Layer使用時の問題

- Secure Sockets Layerの有効化

- Secure Sockets Layerのトラブルシューティング

- 証明書失効リストによる証明書の検証

- ハードウェア・セキュリティ・モジュールを使用するためのシステムの構成

- Oracle Real Application Clusters環境でのSSLの構成

13.1 Secure Sockets LayerおよびTransport Layer Security

Secure Sockets Layer (SSL)は、ネットワーク接続のセキュリティのために最初にNetscape社によって設計された業界標準プロトコルです。SSLでは、RSA公開鍵暗号化および対称鍵暗号化を組み合せて使用して、認証、暗号化およびデータ整合性を提供します。

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

- Secure Sockets LayerとTransport Layer Securityの違い

- Oracle DatabaseでのSecure Sockets Layerを使用した認証

- Oracle環境におけるSecure Sockets Layerの機能: SSLハンドシェイク

13.1.1 Secure Sockets LayerとTransport Layer Securityの違い

SSLは最初にNetscape社によって開発されましたが、Internet Engineering Task Force (IETF)がその開発を引き継ぎ、名前をTransport Layer Security (TLS)に変更しました。基本的には、TLSはSSLバージョン3.0に段階的改善を加えるものです。

TLSバージョン1.1または1.2を使用する場合、次のいずれかのパッチをMy Oracle Supportからダウンロードします。

- Linuxシステム: パッチ19207156: MES BUNDLE ON TOP OF RDBMS 11.2.0.4.2 DBPSU (April 2014 PSUが必要

- Microsoft Windowsシステム: パッチ19651773: WINDOWS DB BUNDLE PATCH 11.2.0.4.10

関連項目:

- https://support.oracle.com

- IETF Webサイトの次の場所にあるTLSプロトコル・バージョン1.0(RFC 2246)

http://www.ietf.org

注意:
SSLが最も広く認識されている用語であるため、SSLでもTLSでも適切な場合、この章では説明を簡単にするためにSSLという用語を使用します。ただし、これらのプロトコルの使用方法または構成方法に違いがある場合、この章では、記述内容がSSLに該当するか、TLSに該当するかを明記します。

13.1.2 Oracle DatabaseでのSecure Sockets Layerを使用した認証

Oracle Advanced Securityでは、これらのプロトコルのネイティブ暗号化およびデータ整合性機能だけでなく、SSL上でデジタル証明書を使用する認証をサポートします。

Oracle Advanced SecurityのSSL機能を使用してクライアントとサーバー間の通信を保護すると、次の操作を実行できます。

- SSLを使用したクライアントとサーバー間の接続の暗号化

- SSL通信用に構成されたOracleデータベース・サーバーに対するクライアントまたはサーバー(Oracle Application Server 10gなど)の認証

SSL機能は、単独で使用するか、Oracle Advanced Securityでサポートされている他の認証方式と組み合せて使用できます。たとえば、SSLから提供されている暗号化をKerberosから提供されている認証と組み合せて使用できます。SSLでは、次の認証モードがサポートされます。

- サーバーのみ、クライアントに対して自己認証を行います。

- クライアントとサーバーは、互いに自己認証を行います。

- クライアントもサーバーも、互いに自己認証を行わず、SSL暗号化機能を単独で使用します。

関連項目:

- SSLの詳細は、Internet Engineering Task Forceが公開しているSSLプロトコルのバージョン3.0を参照してください。

- 認証方式の詳細は、第1章「Oracle Advanced Securityの概要」を参照してください。

13.1.3 Oracle環境におけるSecure Sockets Layerの機能: SSLハンドシェイク

SSLを介したネットワーク接続が開始されると、クライアントとサーバーでは次のようなステップを含むSSLハンドシェイクが実行されます。

- クライアントとサーバーは、どの暗号スイートを使用するかを設定します。これには、データ転送に使用する暗号化アルゴリズムも含まれます。

- サーバーは証明書をクライアントに送信し、クライアントは、サーバーの証明書が信頼できるCAによって署名されていることを検証します。このステップにより、サーバーの身元が検証されます。

- 同様に、クライアント認証が必要な場合は、クライアントが自分自身の証明書をサーバーに送信し、サーバーは、クライアントの証明書が信頼できるCAによって署名されているかどうかを検証します。

- クライアントとサーバーが、公開鍵暗号化を使用して鍵情報を交換します。この情報に基づき、双方でセッション鍵が生成されます。クライアントとサーバーとの間の以降の通信はすべて、このセッション鍵と、ネゴシエーションにより決定した暗号スイートを使用して、暗号化または復号化されます。

認証プロセスは次のステップで構成されています。

1. クライアントで、ユーザーがSSLを使用してサーバーへのOracle Net接続を開始します。

2. SSLは、クライアントとサーバー間のハンドシェイクを実行します。

3. ハンドシェイクが成功すると、サーバーは、そのデータベースにアクセスするために必要な認可をユーザーが所有していることを検証します。

13.2 Oracle環境における公開鍵インフラストラクチャ

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

- Oracle環境における公開鍵インフラストラクチャについて

- 公開鍵の暗号化について

- Oracle環境における公開鍵インフラストラクチャ・コンポーネント

13.2.1 Oracle環境における公開鍵インフラストラクチャについて

公開鍵インフラストラクチャ(PKI)は、組織全体のセキュリティ基盤を提供するネットワーク・コンポーネントの基質であり、信頼アサーションに基づいています。PKIが存在するのは、異なるネットワーク・エンティティが必要に応じて公開鍵暗号化を使用するセキュリティ・サービスにアクセスできるようにするためです。Oracleでは、RSA Security社の公開鍵暗号規格に基づき、Oracleサーバーおよびクライアントと相互運用する完全なPKIを提供しています。

13.2.2 公開鍵の暗号化について

従来の秘密鍵または対称鍵の暗号化では、通信を保護する目的で2者以上が共有する1つの秘密鍵が必要です。この鍵は、ユーザー間で送信される保護メッセージの暗号化および復号化に使用されるため、各ユーザーへは事前に安全な方法で鍵を配布する必要があります。この方法における問題点は、鍵を安全に転送し、格納することが困難なことです。

公開鍵の暗号化による公開鍵/秘密鍵のペアおよび鍵配布のための安全な方法を採用することで、この問題は解決します。対応する秘密鍵の所有者のみが復号化できるメッセージは、自由に使用できる公開鍵によって暗号化できます。秘密鍵は、その他のセキュリティ資格証明とともに、ウォレットと呼ばれる暗号化されたコンテナに、安全に格納されます。

公開鍵のアルゴリズムでは、メッセージの秘密は保証されますが、安全な通信は必ずしも保証されません。その理由は、通信者間の識別が検証されないためです。安全な通信を確立するには、メッセージの暗号化に使用される公開鍵が相手の受信者に実際に属していることを確認することが重要です。そうしないと、第三者が通信を傍受し、公開鍵のリクエストに割り込み、正当な鍵を独自の公開鍵に置き換えることが可能になります(介在者攻撃)。

この攻撃を回避するには、公開鍵の所有者の確認(認証と呼ばれるプロセス)が必要です。認証は、通信する双方の委託するサード・パーティの認証局(CA)によって行われます。

CAは、エンティティの名前、公開鍵および他のセキュリティ資格証明を含む公開鍵証明書を発行します。通常、このような資格証明には、CA名、CAの署名および証明書の有効日(開始日、終了日)が含まれています。

CAでは独自の秘密鍵を使用してメッセージを暗号化します。一方、そのメッセージの復号化には公開鍵が使用されるため、メッセージがCAによって暗号化されたものであるかどうかが確認されます。CA公開鍵は広く一般に知られているため、アクセスするたびに認証する必要はありません。このようなCA公開鍵はウォレットに格納されます。

13.2.3 Oracle環境における公開鍵インフラストラクチャ・コンポーネント

Oracle環境の公開鍵インフラストラクチャ(PKI)コンポーネントは、次のとおりです。

- 認証局

- 証明書

- 証明書失効リスト

- ウォレット

- ハードウェア・セキュリティ・モジュール

13.2.3.1 認証局

認証局(CA)は、ユーザー、データベース、管理者、クライアント、サーバーなどのエンティティの識別情報を証明する、信頼できるサード・パーティです。エンティティが証明書を要求すると、CAはその識別情報を検証し、CAの秘密鍵を使用して署名した証明書を発行します。

CAごとに、証明書の発行時の識別情報要件が異なる可能性があります。CAの中には、要求者の識別情報をドライバのライセンスを使用して確認したり、要求者の指紋で識別情報を確認したり、証明書リクエスト・フォームが認証されていることを必要とするものがあります。

CAは、公開鍵が含まれている独自の証明書を発行します。各ネットワーク・エンティティには、信頼できるCA証明書のリストがあります。通信する前に、ネットワーク・エンティティは証明書を交換し、相互の証明書がそれぞれの信頼できるCA証明書リストのいずれかのCAによって署名されていることを確認します。

ネットワーク・エンティティは、同じCAから、または異なるCAから証明書を取得できます。デフォルトでは、Oracle Advanced Securityは、新規ウォレットの作成時にVeriSign社、RSA社、Entrust社およびGTE CyberTrust社から信頼できる証明書を自動的にインストールします。

Oracle Identity Managementインフラストラクチャの一部であるOracle Application Server Certificate Authorityは、Oracle Application Server 10g (9.0.4)で利用できる新しいOracle PKIコンポーネントです。

関連項目:
「ウォレット」

13.2.3.2 証明書

証明書は、エンティティの公開鍵が、信頼できる認証局(CA)によって署名されたときに作成されます。この証明書は、そのエンティティの識別情報が正しいこと、および公開鍵がそのエンティティに実際に属していることを保証します。

証明書には、エンティティの名前、公開鍵、有効期限、さらにシリアル番号および証明連鎖情報が含まれています。また、証明書に関連付けられた権限に関する情報が含まれている場合もあります。

ネットワーク・エンティティが証明書を受信すると、それが信頼できる証明書、つまり信頼できる認証局によって発行および署名された証明書であるか検証します。証明書は、期限切れになるか失効するまで有効です。

13.2.3.3 証明書失効リスト

通常、公開鍵ペアをユーザーIDにバインドする証明書にCAが署名すると、証明書は指定された期間有効になります。ただし、ユーザー名の変更や秘密鍵の漏えいなどの特定のイベントが発生した場合は、有効期間が終了する前に証明書が無効になることがあります。この場合は、CAによって証明書が失効され、そのシリアル番号が証明書失効リスト(CRL)に追加されます。CAは、特定の公開鍵が、関連付けられているユーザーIDの確認に使用できなくなると、定期的にCRLを発行してユーザーに警告します。

サーバーまたはクライアントはOracle環境でユーザー証明書を受信すると、その有効期限、署名および失効ステータスをチェックして証明書を検証できます。証明書失効ステータスは、発行されたCRLに照らして検証することでチェックされます。証明書失効ステータス・チェックが有効になっている場合、サーバーはこの機能の構成方法に応じて適切なCRLを検索します。サーバーは、次の場所でCRLを検索します。

1. Oracle Internet Directory

2. CRL配布ポイント。証明書が発行されたときの、CRL Distribution Point (CRL DP)X.509バージョン3の証明書拡張で指定されている場所。

関連項目:
このPKIコンポーネントの構成および管理の詳細は、「証明書失効リストによる証明書の検証」を参照してください。

注意:
他のOracle製品でCRLを使用するには、その製品のドキュメントを参照してください。CRLによる証明書の検証の実装は、Oracle Database 11g リリース2 (11.2)のSSLアダプタでのみ使用できます。

13.2.3.4 ウォレット

ウォレットは、認証および署名資格証明(SSLで必要な秘密鍵、証明書、信頼できる証明書など)の格納に使用されるコンテナです。Oracle環境では、SSL通信を行うどのエンティティにも、X.509バージョン3の証明書、秘密鍵および信頼できる証明書のリストが必要です。ただし、Diffie-Hellmanは例外です。

セキュリティ管理者は、サーバーのセキュリティ資格証明の管理にOracle Wallet Managerを使用します。ウォレットの所有者は、クライアントのセキュリティ資格証明の管理に使用します。具体的には、Oracle Wallet Managerは次のことを行うために使用します。

- 公開鍵と秘密鍵のペアの生成および証明書リクエストの作成

- 秘密鍵と一致するユーザー証明書の格納

- 信頼できる証明書の構成

注意:
Oracle Advanced Security 11g リリース2 (11.2)をインストールすると、Oracle Wallet Managerリリース10.1もインストールされます。

関連項目:

- 第14章「Oracle Wallet Managerの使用方法」

- 「ウォレットの新規作成」

- 「信頼できる証明書の管理」

13.2.3.5 ハードウェア・セキュリティ・モジュール

Oracle Advanced Securityでは、これらのデバイスを次の機能に使用します。

- 秘密鍵などの暗号情報の格納

- 他のトランザクションに応答できるようにCPUを解放して、サーバーにおけるRSA操作の負荷を軽減する暗号操作の実行

暗号情報は、次の2つのタイプのハードウェア・デバイスに格納できます。

- (サーバー側)鍵がボックスに格納され、トークンを使用して管理されるハードウェア・ボックス。

- (クライアント側)トークンへの秘密鍵の格納をサポートするスマートカード・リーダー

Oracle環境では、RSA Security社の公開鍵暗号規格(PKCS)#11仕様に準拠しているAPIを使用したハードウェア・デバイスがサポートされています。

注意:
現在、SafeNETおよびnCipherデバイスがOracle Advanced Securityで認定されています。

関連項目:
構成の詳細は、「ハードウェア・セキュリティ・モジュールを使用するためのシステムの構成」を参照してください。

13.3 Secure Sockets Layerと他の認証方式の併用

SSLを次の各項で説明するデータベースのユーザー名とパスワード、RADIUSおよびKerberosと同時に使用するようにOracle Advanced Securityを構成できます。

- アーキテクチャ: Oracle Advanced SecurityとSecure Sockets Layer

- Secure Sockets Layerと他の認証方式の併用

関連項目:
複数の認証方式が指定されたsqlnet.oraファイルなど、他のサポートされている認証方式によるSSLの構成方法の詳細は、付録A「データ暗号化および整合性パラメータ」を参照してください。

13.3.1 アーキテクチャ: Oracle Advanced SecurityとSecure Sockets Layer

Oracle Advanced Securityの実装アーキテクチャを示す図1-4では、Oracle Advanced SecurityがSSLの上位のセッション・レイヤーで動作し、トランスポート・レイヤーでTCP/IPを使用しています。このように機能が分離されているため、SSLを他のサポートされているプロトコルと同時に利用できます。

関連項目:
Oracleネットワーキング環境におけるスタック通信の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

13.3.2 Secure Sockets Layerと他の認証方式の併用

図13-1は、SSLがOracle Advanced Securityによってサポートされている別の認証方式と併用されている構成を示しています。

図13-1 SSLと他の認証方式との関係

この例では、最初のハンドシェイク(サーバー認証)を確立するためにSSLが使用され、クライアントの認証に別の認証方式が使用されています。

1. クライアントがOracleデータベース・サーバーに接続しようとします。

2. SSLによってハンドシェイクが実行され、その間にサーバーがクライアントに対して自己認証を行い、クライアントとサーバーの両方が使用する暗号スイートを設定します。

3. SSLハンドシェイクが正常に完了すると、ユーザーはデータベースにアクセスしようとします。

4. Oracleデータベース・サーバーは、KerberosやRADIUSなどの非SSL認証方式を使用して、認証サーバーでユーザーを認証します。

5. 認証サーバーによる検証が完了すると、Oracleデータベース・サーバーによってアクセス権と認可がユーザーに付与され、ユーザーはSSLを使用してデータベースに安全にアクセスできるようになります。

関連項目:
「Oracle環境におけるSecure Sockets Layerの機能: SSLハンドシェイク」

13.4 Secure Sockets Layerとファイアウォール

Oracle Advanced Securityでは、2つのタイプのファイアウォールがサポートされています。

- Network Associates GauntletやAxent Raptorなどのアプリケーション・プロキシベースのファイアウォール

- Check Point Firewall-1やPIX Firewallなどのステートフル・パケット・インスペクション・ファイアウォール

SSLを有効にした場合、ステートフル・インスペクション・ファイアウォールは暗号化されたパケットを復号化しないため、アプリケーション・プロキシ・ファイアウォールと同じように動作します。

ファイアウォールは暗号化されたトラフィックを検査しません。ファイアウォールは、イントラネット・サーバーのSSLポート宛てのデータを検出すると、アクセス・ルールに基づいてターゲットIPアドレスを確認し、許可されたSSLポートに対してはSSLパケットを通過させ、他のすべてのパケットは拒否します。

いくつかのファイアウォール・ベンダーが提供しているOracle Net Firewall Proxyキットを使用すると、ファイアウォール・アプリケーションでデータベース・ネットワーク・トラフィックがサポートされます。プロキシ・キットをファイアウォールに実装すると、次の処理が実行されます。

- Net Proxy (Oracle Net Firewall Proxyキットのコンポーネント)によってトラフィックのルーティング先が決定されます。

- データベース・リスナーは、SSLハンドシェイクに参加するために、証明書へのアクセスを要求します。リスナーはSSLパケットを検査し、ターゲット・データベースを識別して、ターゲット・データベースがクライアントのリスニングに使用しているポートを戻します。このポートは、SSLポートとして指定されている必要があります。

- クライアントは、以降のすべての接続でこのサーバー指定ポートを使用して通信します。

13.5 Secure Sockets Layer使用時の問題

SSLを使用する場合は、次のことを考慮してください。

- SSLを使用すると、Oracle Internet Directoryなどの他のOracle製品との安全な通信が可能になります。

- SSLでは認証と暗号化の両方がサポートされているため、クライアント/サーバー接続が標準のOracle Net TCP/IPトランスポート(ネイティブ暗号化を使用)より多少遅くなります。

- 各SSL認証モードには、構成設定が必要となります。

- マルチスレッド・クライアントでは、現在SSLを使用できません。

注意:
SSL暗号化を構成する場合は、非SSL暗号化を無効にする必要があります。このような暗号化を無効にするには、「Oracle Advanced Security認証の無効化」を参照してください。

関連項目:

- ハードウェア・アクセラレータでSSLパフォーマンスを改善する方法の詳細は、「ハードウェア・セキュリティ・モジュールを使用するためのシステムの構成」を参照してください。

- 「Secure Sockets Layerの有効化」

13.6 Secure Sockets Layerの有効化

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

- 手順1: Oracle Advanced Securityと関連製品のインストール

- 手順2: サーバーでのSecure Sockets Layerの構成

- 手順3: クライアントでのSecure Sockets Layerの構成

- 手順4: データベース・インスタンスへのログオン

13.6.1 手順1: Oracle Advanced Securityと関連製品のインストール

Oracle Advanced Securityをクライアントとサーバーの両方にインストールします。このとき、Oracle Universal Installerによって、SSLライブラリとOracle Wallet Managerがコンピュータに自動的にインストールされます。

関連項目:
Oracle Databaseプラットフォーム固有のインストール関連ドキュメント

13.6.2 手順2: サーバーでのSecure Sockets Layerの構成

インストール中、Oracleデータベース・サーバーとOracleクライアントの両方に、Oracleウォレットの場所を除くすべてのSSLパラメータのデフォルトが設定されます。サーバーでSSLを構成するには、次の手順を実行します。

- 手順2A: サーバーでのウォレット作成の確認

- 手順2B: サーバーでのデータベース・ウォレット・ロケーションの指定

- 手順2C: サーバーでのSecure Sockets Layer暗号スイートの設定(オプション)

- 手順2D: サーバーでの必要なSSLバージョンの設定(オプション)

- 手順2E: サーバーでのSSLクライアント認証の設定(オプション)

- 手順2F: サーバーでの認証サービスとしてのSSLの設定(オプション)

- 手順2G: SSL付きTCP/IPを使用するリスニング・エンドポイントのサーバーでの作成

関連項目:
動的パラメータ名については、付録B「認証パラメータ」を参照してください。

13.6.2.1 手順2A: サーバーでのウォレット作成の確認

次の手順に進む前に、ウォレットが作成されていることを確認する必要があります。ウォレットの準備が完了していることを確認するには、Oracle Wallet Managerを使用してウォレットを開きます。ウォレットにステータスがReadyの証明書が含まれ、自動ログインがオンになっている必要があります。自動ログインがオンになっていない場合は、「ウォレット」メニューから選択し、ウォレットを再度保存します。自動ログインがオンになります。

関連項目:

- 「既存のウォレットのオープン」

- 「ウォレットの新規作成」

- 「自動ログインの使用」

13.6.2.2 手順2B: サーバーでのデータベース・ウォレット・ロケーションの指定

1. Oracle Net Managerを起動します。

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

netmgr

- (Windows)「スタート」→「プログラム」→「Oracle - HOME_NAME」→「Configuration and Migration Tools」→「Net Manager」を選択します。

2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。

3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。
ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

4. 「SSL」タブをクリックし、「SSL構成: サーバー」を選択します。

5. 「ウォレット・ディレクトリ」ボックスで、Oracleウォレットが配置されているディレクトリを入力するか、「参照」をクリックし、ファイル・システムを検索してディレクトリを探します。
エンタープライズ・ユーザー・セキュリティ用にデータベースとディレクトリ間のSSL接続を構成する場合は、Database Configuration Assistantによって自動的にデータベース・ウォレットが作成され、データベースがディレクトリに登録されます。そのウォレットを使用して、SSLで認証されたエンタープライズ・ユーザー・セキュリティのデータベースPKI資格証明を格納する必要があります。

重要:

- Oracle Wallet Managerを使用してウォレットを作成します。「ウォレットの新規作成」を参照してください。

- Oracle Net Managerを使用して、sqlnet.oraファイルにウォレット・ロケーションを設定します。

ウォレットを作成したとき、およびsqlnet.oraファイルに場所を設定したときと同じ場所を入力してください。

6. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルとlistener.oraファイルが次のエントリで更新されます。

wallet_location =
(SOURCE=
(METHOD=File)
(METHOD_DATA=
(DIRECTORY=wallet_location)))

注意:
リスナーでは、listener.oraファイルに定義されているウォレットを使用します。任意のデータベース・ウォレットを使用できます。Net Managerを使用してサーバーのSSLが構成されている場合、ウォレット・ロケーションはlistener.oraファイルとsqlnet.oraファイルに入力されています。listener.oraファイルは、Oracleクライアントには関係ありません。
リスナーが独自のウォレットを所有するようにリスナーのウォレット・ロケーションを変更するには、listener.oraを編集して新しい場所を入力します。

13.6.2.3 手順2C: サーバーでのSecure Sockets Layer暗号スイートの設定(オプション)

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

- Secure Sockets Layer暗号スイートについて

- サポートされているSecure Sockets Layer暗号スイート

- データベース・サーバーのSecure Sockets暗号スイートの指定

Secure Sockets Layer暗号スイートについて

暗号スイートは、ネットワーク・エンティティ間のメッセージ交換に使用される認証、暗号化およびデータ整合性アルゴリズムのセットです。SSLハンドシェイク時に、2つのエンティティがネゴシエートし、メッセージを送受信するときに使用する暗号スイートを確認します。

Oracle Advanced Securityをインストールすると、表13-1のSSL暗号スイートがデフォルトで設定され、リスト順にネゴシエートされます。デフォルトの順序は、SSL_CIPHER_SUITESパラメータを設定して上書きできます。たとえば、Oracle Net Managerを使用して暗号スイートSSL_RSA_WITH_3DES_EDE_CBC_SHAを追加する場合、デフォルト設定の他のすべての暗号スイートは無視されます。

暗号スイートの優先順位を設定できます。クライアントが使用する暗号スイートに関してサーバーとネゴシエートする場合、設定されている優先順位に従います。暗号スイートの優先順位を設定する場合は、次の点を考慮してください。

- 互換性。正常に接続するには、互換性のある暗号スイートを使用するようにサーバーとクライアントを構成する必要があります。

- 暗号の優先順位と強度。最高レベルのセキュリティを確保するために、最も強力なものから最も弱いものの順に暗号スイートの優先順位を設定します。

- 使用するセキュリティ・レベル。たとえば、Triple-DES暗号化は、DESよりも強力です。

- パフォーマンスへの影響。たとえば、Triple-DES暗号化は、DESよりも低速です。

注意:
Diffie-Hellman 匿名認証について:

1. この暗号スイートを使用するようにサーバーを設定する場合は、同じ暗号スイートをクライアントにも設定する必要があります。設定しない場合、接続に失敗します。

2. Diffie-Hellman匿名を使用する暗号スイートを使用する場合、SSL_CLIENT_AUTHENTICATIONパラメータをFALSEに設定する必要があります。詳細は、「手順2E: サーバーでのSSLクライアント認証の設定(オプション)」を参照してください。

サポートされているSecure Sockets Layer暗号スイート

表13-1に、現行リリースのOracle Advanced SecurityでサポートされているSSL暗号スイートを示します。これらの暗号スイートは、Oracle Advanced Securityをインストールするとデフォルトで設定されます。次の表では、各暗号スイートで使用される認証、暗号化およびデータ整合性のタイプも示します。

表13-1 SSL暗号スイート

暗号スイート

認証

暗号化

データ整合性

SSL_RSA_WITH_3DES_EDE_CBC_SHA

RSA

3DES EDE CBC

SHA-1

SSL_RSA_WITH_AES_128_CBC_SHA脚注 1

RSA

AES 128 CBC

SHA-1

SSL_RSA_WITH_AES_256_CBC_SHA脚注 1

RSA

AES 256 CBC

SHA-1

脚注 1 AES暗号は、Transport Layer Security (TLS 1.0)でのみ使用できます。

データベース・サーバーのSecure Sockets暗号スイートの指定

1. Oracle Net Managerを起動します。

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

netmgr

- (Windows)「スタート」→「プログラム」→「Oracle - HOME_NAME」→「Configuration and Migration Tools」→「Net Manager」を選択します。

2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。

3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。
ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

4. 「SSL」タブを選択し、「SSL構成: サーバー」を選択します。

5. 「暗号スイートの構成」領域で、「追加」をクリックします。
使用可能な暗号スイートがダイアログ・ボックスに表示されます。米国内用の暗号スイートを表示するには、米国内用の暗号スイートの表示チェック・ボックスをクリックします。

6. スイートを選択し、「OK」をクリックします。
「暗号スイートの構成」リストが更新されます。

7. 上矢印と下矢印を使用して、暗号スイートの優先順位を設定します。

8. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルが次のエントリで更新されます。

SSL_CIPHER_SUITES= (SSL_cipher_suite1 [,SSL_cipher_suite2])

13.6.2.4 手順2D: サーバーでの必要なSSLバージョンの設定(オプション)

sqlnet.oraファイルまたはlistener.oraファイルでSSL_VERSIONパラメータを設定できます。このパラメータでは、サーバーが通信するシステムで実行する必要があるSSLのバージョンを定義します。これらのシステムで有効なバージョンを使用するように設定できます。sqlnet.oraにおけるこのパラメータのデフォルト設定はundeterminedです。これは、「Oracle Advanced Security」ウィンドウの「SSL」タブのリストから「任意」を選択すると設定されます。

サーバーのSSLバージョンを設定するには、次の手順を実行します。

1. 「必要なSSLバージョン」リストのデフォルトは「任意」です。このデフォルトを受け入れるか、使用するSSLバージョンを選択します。

2. 「ファイル」→「ネットワーク構成の保存」を選択します。
「任意」を選択した場合は、sqlnet.oraファイルが次のエントリで更新されます。

SSL_VERSION=UNDETERMINED

注意:
SSL 2.0はサーバー側でサポートされていません。

関連項目:
SSL_VERSION値の完全なリストについては、『Oracle Database Net Servicesリファレンス』を参照してください

13.6.2.5 手順2E: サーバーでのSSLクライアント認証の設定(オプション)

sqlnet.oraファイルのSSL_CLIENT_AUTHENTICATIONパラメータでは、SSLを使用してクライアントを認証するかどうかを制御します。デフォルト値はTRUEです。

Diffie-Hellman匿名認証(DH_anon)を含む暗号スイートを使用する場合は、このパラメータをFALSEに設定する必要があります。また、KerberosやRADIUSなどのOracle Advanced Securityでサポートされている非SSL認証方式を使用してクライアントがサーバーに対して自己認証を行うようにする場合も、このパラメータをFALSEに設定できます。

注意:
既知の不具合があり、クライアントを認証しないDH_ANONを含む暗号スイートを使用する場合でも、OCIクライアントでウォレットが必要です。

サーバーでSSL_CLIENT_AUTHENTICATIONをFALSEに設定する手順:

1. Oracle Net Managerの「SSL」ページで、「クライアントの認証が必要」の選択を解除します。

2. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルが次のエントリで更新されます。

SSL_CLIENT_AUTHENTICATION=FALSE

関連項目:
SSL_CLIENT_AUTHENTICATION値の完全なリストについては、『Oracle Database Net Servicesリファレンス』を参照してください

13.6.2.6 手順2F: サーバーでの認証サービスとしてのSSLの設定(オプション)

sqlnet.oraファイルのSQLNET.AUTHENTICATION_SERVICESパラメータでは、SSL認証サービスを設定します。

このパラメータは、SSL認証とOracle Advanced Securityでサポートされている別の認証方式を組み合せて使用する場合に設定します。たとえば、サーバーがSSLを使用してクライアントに対して自己認証を行い、クライアントがKerberosを使用してサーバーに対して自己認証を行う場合に、このパラメータを使用します。

サーバーにSQLNET.AUTHENTICATION_SERVICESパラメータを設定するには、テキスト・エディタを使用してsqlnet.oraファイルでこのパラメータにSSL付きTCP/IP(TCPS)を追加します。たとえば、SSL認証とRADIUS認証を組み合せて使用する場合は、このパラメータを次のように設定します。

SQLNET.AUTHENTICATION_SERVICES = (TCPS, radius)

SSL認証と別の認証方式を組み合せて使用しない場合は、このパラメータを設定しません。

関連項目:
AUTHENTICATION_SERVICES値の完全なリストについては、『Oracle Database Net Servicesリファレンス』を参照してください

13.6.2.7 手順2G: SSL付きTCP/IPを使用するリスニング・エンドポイントのサーバーでの作成

listener.oraファイルで、リスナーにSSL付きTCP/IPリスニング・エンドポイントを構成します。一般的なOracle Netクライアントには、ポート番号2484を使用することをお薦めします

関連項目:

- listener.oraファイルの構成方法の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

- 証明書失効リストで証明書を検証するようにシステムを構成する方法の詳細は、「証明書失効リストによる証明書の検証」を参照してください。

13.6.3 手順3: クライアントでのSecure Sockets Layerの構成

クライアントでSSLを構成するには、次の手順を実行します。

- 手順3A: クライアント・ウォレット作成の確認

- 手順3B: サーバーDNの構成とクライアントのSSL付きTCP/IPの使用

- 手順3C: 必要なクライアントSSL構成の指定(ウォレット・ロケーション)

- 手順3D: クライアントのSecure Sockets Layer暗号スイートの設定(オプション)

- 手順3E: 必要なSSLバージョンのクライアントでの設定(オプション)

- 手順3F: クライアントにおける認証サービスとしてのSSLの設定(オプション)
手順3G: クライアントでの認証に使用する証明書の指定(オプション)

関連項目:
動的パラメータ名については、付録B「認証パラメータ」を参照してください。

13.6.3.1 手順3A: クライアント・ウォレット作成の確認

次の手順に進む前に、クライアントでウォレットが作成されていることと、クライアントに有効な証明書があることを確認する必要があります。

注意:
Oracle Wallet Managerを使用して、各認証局に関連付けられたOracleウォレット内の使用していない信頼できる証明書を削除することをお薦めします。

関連項目:

- ウォレットに関する一般的な情報については、第14章「Oracle Wallet Managerの使用方法」を参照してください。

- 既存のウォレットを開く方法の詳細は、「既存のウォレットのオープン」を参照してください。

- ウォレットの新規作成の詳細は、「ウォレットの新規作成」を参照してください。

13.6.3.2 手順3B: サーバーDNの構成とクライアントのSSL付きTCP/IPの使用

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

- サーバーDNSの構成とクライアントのSSL付きTCP/IPの使用について

- サーバーDNSの構成とクライアントのSSL付きTCP/IPの使用について

サーバーDNSの構成とクライアントのSSL付きTCP/IPの使用について

次に、サーバーDNを含み、クライアントでSSL付きのTCP/IPを使用するようにOracle Net Service名を構成できます。クライアント・ネットワーク構成ファイルで、サーバーDNマッチングおよびTCP/IPをSSL接続できるように、プロトコルとしてサーバーの識別名(DN)とTCPSを指定する必要があります。サーバーDNマッチングでは、サーバー証明書からDNに対してサーバーのグローバル・データベース名をマッチングすることで、データベース・サーバーが接続時にクライアントに対するIDの偽装が防止されます。

クライアント・ネットワーク構成ファイルのtnsnames.oraおよびlistener.oraを手動で編集して、サーバーのDNとTCP/IPをSSLプロトコルに指定する必要があります。tnsnames.oraファイルは、クライアントまたはLDAPディレクトリに配置できます。クライアントに配置される場合は、通常、listener.oraファイルと同じディレクトリに存在します。オペレーティング・システムに応じて、これらのファイルは次のディレクトリにあります。

- (UNIXの場合) $ORACLE_HOME/network/admin/

- (Windowsの場合) ORACLE_BASE\ORACLE_HOME\network\admin\

サーバーDNSの構成とクライアントのSSL付きTCP/IPの使用について

1. クライアントのtnsnames.oraファイルにSSL_SERVER_CERT_DNパラメータを追加して、データベース・サーバーのDNを次のように指定します。

(SECURITY=
(SSL_SERVER_CERT_DN="cn=finance,cn=OracleContext,c=us,o=acme"))

クライアントは、この情報を使用して、各サーバーに予定しているDNのリストを取得して、サーバーのDNとそのサービス名が確実に一致するようにします。例13-1に、tnsnames.oraファイルのFinanceデータベースのエントリを示します。

または、管理者はサーバーのDNの共通名(CN)部分がサービス名と一致していることを確認できます。

2. クライアントのtnsnames.oraファイルに、ADDRESSパラメータのPROTOCOLとしてtcpsと入力します。この指定により、クライアントはSSL付きTCP/IPを使用して、SERVICE_NAMEパラメータに指定されたデータベースに接続します。例13-1は、tnsnames.oraファイル内の接続プロトコルとしてSSL付きTCP/IPを指定するエントリも示しています。

3. listener.oraファイルに、ADDRESSパラメータのPROTOCOLとしてtcpsと入力します。例13-2に、プロトコルとしてSSL付きTCP/IPを指定するエントリを示します。

例13-1 サーバー証明書のDNとSSL付きTCP/IPを指定するサンプルのtnsnames.oraファイル

finance=
(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS= (PROTOCOL = tcps) (HOST = finance_server) (PORT = 1575)))

(CONNECT_DATA=

(SERVICE_NAME= Finance.us.example.com))

(SECURITY=

(SSL_SERVER_CERT_DN="cn=finance,cn=OracleContext,c=us,o=acme"))

例13-2 プロトコルとしてSSL付きTCP/IPを指定するサンプルのlistener.oraファイル

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS= (PROTOCOL = tcps) (HOST = finance_server) (PORT = 1575))))

13.6.3.3 手順3C: 必要なクライアントSSL構成の指定(ウォレット・ロケーション)

1. Oracle Net Managerを起動します。

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

netmgr

- (Windows)「スタート」→「プログラム」→「Oracle - HOME_NAME」→「Configuration and Migration Tools」→「Net Manager」を選択します。

2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。

3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。
ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

4. 「SSL」タブを選択します。

5. 「SSL構成: クライアント」を選択します。

6. 「ウォレット・ディレクトリ」ボックスで、Oracleウォレットが配置されているディレクトリを入力するか、「参照」をクリックし、ファイル・システムを検索してディレクトリを探します。

7. 「サーバーX.509の名前に一致」リストから、次のいずれかのオプションを選択します。

- 「はい」: サーバーの識別名(DN)がそのサービス名と一致している必要があります。SSLによって証明書がサーバーからのものであることが確認され、一致した場合は接続が成功します。
このチェックは、デフォルト設定であるRSA暗号が選択されている場合にのみ実行できます。

- 「いいえ」(デフォルト): SSLによってDNとサービス名が一致するかどうかが確認されますが、強制はされません。結果に関係なく接続は成功しますが、一致しない場合はエラーが記録されます。

- 「クライアントで決定」: デフォルトを有効にします。
「いいえ」を選択すると、次のアラートが表示されます。

Security Alert
Not enforcing the server X.509 name match allows a server to potentially fake its identity. Oracle recommends selecting YES for this option so that connections are refused when there is a mismatch.

8. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。
クライアントのsqlnet.oraファイルが次のエントリで更新されます。

SSL_CLIENT_AUTHENTICATION =TRUE
wallet_location =
(SOURCE=
(METHOD=File)
(METHOD_DATA=
(DIRECTORY=wallet_location)))

SSL_SERVER_DN_MATCH=(ON/OFF)

関連項目:

サーバー照合パラメータの詳細は、次を参照してください。

- 「SSL X.509サーバー照合パラメータ」

Oracle Net Managerを使用してSSL付きTCP/IPを構成する方法の詳細は、次を参照してください。

- 『Oracle Database Net Services管理者ガイド』

- 『Oracle Database Net Servicesリファレンス』

13.6.3.4 手順3D: クライアントのSecure Sockets Layer暗号スイートの設定(オプション)

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

- クライアントのSecure Sockets Layer暗号スイートの設定について

- クライアントのSecure Sockets Layer暗号スイートの設定

クライアントのSecure Sockets Layer暗号スイートの設定について

暗号スイートは、ネットワーク・エンティティ間のメッセージ交換に使用される認証、暗号化およびデータ整合性アルゴリズムのセットです。SSLハンドシェイク時に、2つのエンティティがネゴシエートし、メッセージを送受信するときに使用する暗号スイートを確認します。

Oracle Advanced Securityをインストールすると、表13-1のSSL暗号スイートがデフォルトで設定されます。2つのエンティティが接続をネゴシエートするときに、この表のリスト順で暗号スイートが試行されます。デフォルトは、SSL_CIPHER_SUITESパラメータを設定して上書きできます。たとえば、Oracle Net Managerを使用して暗号スイートSSL_RSA_WITH_3DES_EDE_CBC_SHAを追加する場合、デフォルト設定の他のすべての暗号スイートは無視されます。

暗号スイートの優先順位を設定できます。クライアントが使用する暗号スイートに関してサーバーとネゴシエートする場合、設定されている優先順位に従います。暗号スイートの優先順位を設定する場合は、次の点を考慮してください。

- 使用するセキュリティ・レベル。たとえば、Triple-DES暗号化は、DESよりも強力です。

- パフォーマンスへの影響。たとえば、Triple-DES暗号化は、DESよりも低速です。Oracle Advanced SecurityでSSLハードウェア・アクセラレータを使用する方法の詳細は、「ハードウェア・セキュリティ・モジュールを使用するためのシステムの構成」を参照してください。

- 管理要件。クライアントに対して選択された暗号スイートは、サーバーに必要な暗号スイートと互換性がある必要があります。たとえば、Oracle Call Interface (OCI)ユーザーの場合、サーバーはクライアントに自己認証を求めます。この場合、証明書の交換を許可しないDiffie-Hellman匿名認証を利用する暗号スイートは使用できません。

通常、暗号スイートは最も強力なものから弱いものの順に優先順位を設定します。

表13-1に、現行リリースのOracle Advanced SecurityでサポートされているSSL暗号スイートを示します。これらの暗号スイートは、Oracle Advanced Securityをインストールするとデフォルトで設定されます。表では、各暗号スイートで使用される認証、暗号化およびデータ整合性のタイプも示されています。

注意:
sqlnet.oraファイルでSSL_CLIENT_AUTHENTICATIONパラメータをtrueに設定する場合は、Diffie-Hellman匿名認証を使用するすべての暗号スイートを無効にします。設定しない場合、接続に失敗します。

クライアントのSecure Sockets Layer暗号スイートの設定

1. Oracle Net Managerを起動します。

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

netmgr

- (Windows)「スタート」→「プログラム」→「Oracle - HOME_NAME」→「Configuration and Migration Tools」→「Net Manager」を選択します。

2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。

3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。
ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

4. 「SSL」タブを選択します。

5. 「暗号スイートの構成」領域で、「追加」をクリックします。
使用可能な暗号スイートがダイアログ・ボックスに表示されます。

6. スイートを選択し、「OK」をクリックします。
次のように、「暗号スイートの構成」リストが更新されます。

7. 上矢印と下矢印を使用して、暗号スイートの優先順位を設定します。

8. 「ファイル」→「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルが次のエントリで更新されます。

SSL_CIPHER_SUITES= (SSL_cipher_suite1 [,SSL_cipher_suite2])

13.6.3.5 手順3E: 必要なSSLバージョンのクライアントでの設定(オプション)

sqlnet.oraファイルでSSL_VERSIONパラメータを設定できます。このパラメータでは、クライアントが通信するシステムで実行する必要があるSSLのバージョンを定義します。これらのシステムで有効なバージョンを使用するように設定できます。sqlnet.oraにおけるこのパラメータのデフォルト設定はundeterminedです。これは、「Oracle Advanced Security」ウィンドウの「SSL」タブのリストから「任意」を選択すると設定されます。「任意」を選択すると、TLS 1.0が最初に試行され、その後、SSL 3.0、SSL 2.0の順に試行されます。クライアントのSSLバージョンがサーバーで使用されているバージョンと互換性があることを確認します。

クライアントに必要なSSLバージョンを設定するには、次の手順を実行します。

1. 「必要なSSLバージョン」リストのデフォルト設定は「任意」です。このデフォルトを受け入れるか、構成するSSLバージョンを選択します。

2. 「ファイル」→「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルが更新されます。「任意」を選択した場合は、次のエントリで更新されます。

SSL_VERSION=UNDETERMINED

関連項目:
SSL_VERSION値の完全なリストについては、『Oracle Database Net Servicesリファレンス』を参照してください

13.6.3.6 手順3F: クライアントにおける認証サービスとしてのSSLの設定(オプション)

sqlnet.oraファイルのSQLNET.AUTHENTICATION_SERVICESパラメータでは、SSL認証サービスを設定します。通常、sqlnet.oraファイルは、他のネットワーク構成ファイルと同じディレクトリにあります。プラットフォームに応じて、sqlnet.oraファイルは次のディレクトリにあります。

- (UNIXの場合) $ORACLE_HOME/network/admin

- (Windowsの場合) ORACLE_BASE\ORACLE_HOME\network\admin\

SQLNET.AUTHENTICATION_SERVICESパラメータは、SSL認証とOracle Databaseでサポートされている別の認証方式を組み合せて使用する場合に設定します。たとえば、サーバーがSSLを使用してクライアントに対して自己認証を行い、クライアントがRADIUSを使用してサーバーに対して自己認証を行う場合に、このパラメータを使用します。

クライアントのSQLNET.AUTHENTICATION_SERVICESパラメータを設定するには、テキスト・エディタを使用してsqlnet.oraファイルでこのパラメータにSSL付きTCP/IP(TCPS)を追加します。たとえば、SSL認証とRADIUS認証を組み合せて使用する場合は、このパラメータを次のように設定します。

SQLNET.AUTHENTICATION_SERVICES = (TCPS, radius)

SSL認証と別の認証方式を組み合せて使用しない場合は、このパラメータを設定しません。

関連項目:
AUTHENTICATION_SERVICES値の完全なリストについては、『Oracle Database Net Servicesリファレンス』を参照してください

13.6.3.7 手順3G: クライアントでの認証に使用する証明書の指定(オプション)

sqlnet.oraファイルのSQLNET.SSL_EXTENDED_KEY_USAGEパラメータは、データベース・サーバー認証時に使用する証明書を指定します。通常、sqlnet.oraファイルは、他のネットワーク構成ファイルと同じディレクトリにあります。プラットフォームに応じて、sqlnet.oraファイルは次のいずれかのディレクトリにあります。

- (UNIXの場合) $ORACLE_HOME/network/admin

- (Windowsの場合) ORACLE_BASE\ORACLE_HOME\network\admin\

セキュリティ・モジュールに複数の証明書があるが、1つの証明書のみにclient authenticationの拡張鍵使用方法フィールドがあり、その証明書がまさに、データベースの認証に使用する証明書である場合、SQLNET.SSL_EXTENDED_KEY_USAGEパラメータを設定します。たとえば、スマートカードに複数の証明書があり、そのうちの1つのみにclient authenticationの拡張鍵使用方法フィールドがあり、その証明書Cをデータベースの認証に使用する場合、このパラメータを設定します。Windowsクライアントでこのパラメータをclient authenticationに設定すると、MSCAPI証明書の選択ボックスが表示され、証明書Cが自動的に、サーバーへのクライアントのSSL認証に使用されます。

クライアントのSQLNET.SSL_EXTENDED_KEY_USAGEパラメータを設定するには、sqlnet.oraファイルを編集し、次の行を含めます。

SQLNET.SSL_EXTENDED_KEY_USAGE = "client authentication"

証明書のフィルタ処理を使用しない場合は、sqlnet.oraファイルからSQLNET.SSL_EXTENDED_KEY_USAGEパラメータ設定を削除します。

関連項目:
SSL_EXTENDED_KEY_USAGE値の完全なリストについては、『Oracle Database Net Servicesリファレンス』を参照してください

13.6.4 手順4: データベース・インスタンスへのログオン

クライアントにSSL認証を使用する場合は(sqlnet.oraファイルでSSL_CLIENT_AUTHENTICATION=trueを設定)、SQL*Plusを起動し、次のように入力します。

CONNECT/@net_service_name

クライアントにSSL認証を使用しない場合は(sqlnet.oraファイルでSSL_CLIENT_AUTHENTICATION=falseを設定)、SQL*Plusを起動し、次のように入力します。

CONNECT username@net_service_name
Enter password: password

関連項目:
証明書失効リストで証明書を検証するようにクライアントを構成する方法の詳細は、「証明書失効リストによる証明書の検証」を参照してください。

13.7 Secure Sockets Layerのトラブルシューティング

次の項では、Oracle Advanced SecurityのSSLアダプタの使用中に表示される可能性がある最も一般的なエラーについて説明します。

Oracle Netトレースを有効にして、エラーの原因を特定することが必要になる場合があります。トレース・パラメータを設定してOracle Netトレースを有効にする方法の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

ORA-28759: ファイルのオープンに失敗しました

原因: 指定されたファイルをオープンできませんでした。通常、このエラーはウォレットが見つからないために発生します。

処置: 次の点を確認します。

- sqlnet.oraファイルに正しいウォレット・ロケーションが指定されていることを確認します。これは、ウォレットを保存したディレクトリと同じにする必要があります。

- Oracle Netトレースを有効にして、開くことができないファイルの名前とその原因を調べます。

- ウォレットを保存したときに自動ログインが有効になっていたことを確認します。「自動ログインの使用」を参照してください。

ORA-28786: 暗号化された秘密鍵の復号化に失敗しました

原因: 暗号化された秘密鍵の復号化に不正なパスワードが使用されました。このことは、多くの場合、自動ログイン・ウォレットが使用されていないために発生します。

処置: Oracle Wallet Managerを使用して、ウォレットの自動ログイン機能をオンにします。次に、ウォレットを再度保存します。「自動ログインの使用」を参照してください。
自動ログイン機能が使用されていない場合は、正しいパスワードを入力します。

ORA-28858: SSLプロトコル・エラーが発生しました

原因: これは、2つのプロセス間のSSLハンドシェイク・ネゴシエーション中に発生する可能性がある一般的なエラーです。

処置: Oracle Netトレースを使用可能にし、再接続してトレース出力を生成します。トレース出力をOracleカスタマ・サポートに連絡してください。

ORA-28859 SSLでネゴシエーションに失敗しました

原因: SSLプロトコルの一部である2つのプロセス間のネゴシエーション中にエラーが発生しました。このエラーは、両プロセスの接続で同じ暗号スイートがサポートされていない場合に発生する可能性があります。

処置: 次の点を確認します。

- Oracle Net Managerを使用して、クライアントとサーバーの両方のSSLバージョンが一致しているか、互換性があることを確認します。たとえば、サーバーでSSL 3.0のみを受け入れ、クライアントでTLS 1.0のみを受け入れる場合、SSL接続は失敗します。

- Oracle Net Managerを使用して、クライアントとサーバーの両方で構成されている暗号スイートをチェックし、両方に互換性のある暗号スイートが設定されていることを確認します。
エラーが繰り返される場合は、Oracle Netトレースを有効にし、再接続してください。トレース出力をOracleカスタマ・サポートに連絡してください。

関連項目:
クライアントとサーバーに互換性のある暗号スイートを設定する方法の詳細は、「手順3D: クライアントのSecure Sockets Layer暗号スイートの設定(オプション)」を参照してください。

注意:
暗号スイートを構成しない場合は、使用可能なすべての暗号スイートが有効になります。

ORA-28862: SSL接続に失敗しました。

原因: このエラーは、ピアが接続をクローズしたために発生しました。

処置: 次の点を確認します。

- ウォレットが検出されるように、sqlnet.oraファイルに正しいウォレット・ロケーションが指定されていることを確認します。

- Oracle Net Managerを使用して、sqlnet.oraファイルに暗号スイートが正しく設定されていることを確認します。このエラーは、sqlnet.oraが手動で編集され、暗号スイート名の綴りが誤っている場合に発生することがあります。暗号スイート名で大/小文字が区別される文字列照合が使用されていることを確認します。

- Oracle Net Managerを使用して、クライアントとサーバーの両方のSSLバージョンが一致しているか、互換性があることを確認します。このエラーは、サーバーとクライアントに指定されているSSLバージョンが一致しないために発生することがあります。たとえば、サーバーでSSL 3.0のみを受け入れ、クライアントでTLS 1.0のみを受け入れる場合、SSL接続は失敗します。

- 診断情報の詳細を確認するために、ピアでOracle Netトレースを有効にします。

ORA-28865: SSL接続はクローズしました。

原因: 基礎となるトランスポート層でエラーが発生したか、ピア・プロセスが突然停止したため、SSL接続がクローズしました。

処置: 次の点を確認します。

- Oracle Net Managerを使用して、クライアントとサーバーの両方のSSLバージョンが一致しているか、互換性があることを確認します。このエラーは、サーバーとクライアントに指定されているSSLバージョンが一致しないために発生することがあります。たとえば、サーバーでSSL 3.0のみを受け入れ、クライアントでTLS 1.0のみを受け入れる場合、SSL接続は失敗します。

- Diffie-Hellman匿名暗号スイートを使用し、サーバーのlistener.oraファイルでSSL_CLIENT_AUTHENTICATIONパラメータがtrueに設定されている場合、クライアントは証明書をサーバーに渡しません。サーバーがクライアントの証明書を受信しない場合、クライアントを認証できないため接続がクローズされます。これを解決するには、別の暗号スイートを使用するか、このlistener.oraパラメータをfalseに設定します。

- Oracle Netトレースを有効にし、トレース出力にネットワーク・エラーがないか確認します。

- 詳細は、「ORA-28862: SSL接続に失敗しました。」の「処置」を参照してください。

ORA-28868: ピア証明連鎖のチェックに失敗しました。

原因: ピアが証明連鎖を提示したときに、その証明連鎖のチェックに失敗しました。この失敗の原因として、いくつかの問題が考えられます。

- 連鎖内のいずれかの証明書が期限切れになっています。

- 連鎖内のいずれかの証明書の認証局がトラスト・ポイントとして認識されていません。

- いずれかの証明書の署名を検証できません。

処置: 「既存のウォレットのオープン」を参照して、Oracle Wallet Managerでウォレットを開き、次のことを確認します。

- ウォレットにインストールされているすべての証明書が使用可能である(期限切れでない)こと。

- ピア証明連鎖からの認証局の証明書が、ウォレットに信頼できる証明書として追加されています。Oracle Wallet Managerを使用して信頼できる証明書をインポートするには、「信頼できる証明書のインポート」を参照してください。

ORA-28885: 必須の鍵使用方法のある証明書が見つかりません。

原因: 証明書は、適切なX.509バージョン3の鍵使用方法の拡張機能を使用して作成されていません。

処置: Oracle Wallet Managerを使用して、証明書の鍵使用方法をチェックします。表14-1「KeyUsageの値」を参照してください。

ORA-29024: 証明書の検証に失敗しました

原因: 反対側から送信された証明書の妥当性チェックに失敗しました。このエラーは、証明書が期限切れか、失効済か、または他の理由で無効になっている場合に発生する可能性があります。

処置: 次の点を確認します。

- 証明書をチェックして、有効かどうかを確認します。必要に応じて、新規の証明書を取得するか、送信者に証明書にエラーがあることを警告するか、または再送します。

- サーバーのウォレットに、クライアントの証明書を検証検証するための適切なトラスト・ポイントがあることを確認します。トラスト・ポイントがない場合は、Oracle Wallet Managerを使用して、適切なトラスト・ポイントをウォレットにインポートします。詳細は、「信頼できる証明書のインポート」を参照してください。

- 証明書が失効していないこと、および証明書失効リスト(CRL)チェックがオンになっていることを確認します。詳細は、「証明書失効リストによる証明書検証の構成」を参照してください。

ORA-29223: 証明連鎖を作成できませんでした

原因: インストールする証明書の既存のトラスト・ポイントを使用して証明連鎖を作成できません。通常、このエラーは、ピアによって完全な連鎖が提供されず、連鎖を完了するのに適切なトラスト・ポイントがない場合に戻されます。

処置: Oracle Wallet Managerを使用して、連鎖の完了に必要なトラスト・ポイントをインストールします。「信頼できる証明書のインポート」を参照してください。

13.8 証明書失効リストによる証明書の検証

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

- 証明書失効リストによる証明書検証について

- 使用するCRLの選択方法

- CRLチェックの動作の仕組み

- 証明書失効リストによる証明書検証の構成

- 証明書失効リストの管理

- 証明書検証のトラブルシューティング

13.8.1 証明書失効リストによる証明書検証について

指定の証明書を指定のコンテキストで使用できるかどうかを判定するプロセスは、証明書の検証と呼ばれます。証明書の検証には、次の項目の判定が含まれます。

- 信頼できる認証局(CA)にデジタル署名された証明書があるかどうか。

- 証明書のデジタル署名が、証明書自体の別個に計算されたハッシュ値および証明書の署名者の(CAの)公開鍵に対応しているかどうか。

- 証明書が期限切れになっていないかどうか。

- 証明書が失効していないかどうか。

SSLネットワーク・レイヤーは、自動的に最初の3つの検証チェックを実行しますが、証明書が失効していないことを確認するには、証明書失効リスト(CRL)のチェックを構成する必要があります。CRLは、失効した証明書のリストを含む署名付きデータ構造体です。これは通常、元の証明書を発行したエンティティと同じエンティティによって発行され署名されます。(「証明書失効リスト」を参照してください。)

13.8.2 使用するCRLの選択方法

使用するトラスト・ポイントすべてについてCRLが必要です。トラスト・ポイントは、一定の信頼レベルで資格を与えられたサード・パーティ・アイデンティティからの信頼できる証明書です。通常、信頼する認証局はトラスト・ポイントと呼ばれます。

13.8.3 CRLチェックの動作の仕組み

証明書失効ステータスは、ファイル・システム・ディレクトリ(Oracle Internet Directory)にあるCRL、または証明書のCRL配布ポイント(CRL DP)拡張で指定された場所からダウンロードしたCRLに対してチェックされます。通常、CRL定義は数日間有効です。CRLをローカル・ファイル・システムまたはディレクトリに格納する場合、CRLを定期的に更新する必要があります。CRL DPを使用する場合、証明書が使用されるたびにCRLがダウンロードされるため、CRLを定期的に更新する必要はありません。

サーバーは、次の場所で(ここに示されている順番で)CRLを検索します。システムは、証明書のCAのDNと一致するCRLを検出すると、検索を停止します。

1. ローカル・ファイル・システム
システムは、まずsqlnet.oraファイルのSSL_CRL_FILEパラメータを確認し、それからSSL_CRL_PATHパラメータを確認します。システムは、これらの2つのパラメータが指定されていない場合、ウォレット・ロケーションで任意のCRLをチェックします。

注意:
注意: CRLをローカル・ファイル・システムに格納する場合、orapkiユーティリティを使用してCRLを定期的に更新する必要があります。詳細は、「証明書検証用ハッシュ値によるCRLの名前変更」を参照してください。

2. Oracle Internet Directory
サーバーは、ローカル・ファイル・システムでCRLを検出できず、ldap.oraファイルでディレクトリ接続情報が構成されている場合、このディレクトリを検索します。これは、CAの識別名(DN)およびCRLサブツリーのDNを使用してCRLサブツリーを検索します。

ディレクトリでCRLを検索するためには、サーバーに、適切に構成されたldap.oraファイルが存在している必要があります。Oracle Internet Directoryのドメイン・ネーム・システム(DNS)検出機能は使用できません。また、CRLをディレクトリに格納する場合、orapkiユーティリティを使用してCRLを定期的に更新する必要があることに注意してください。詳細は、「Oracle Internet DirectoryへのCRLのアップロード」を参照してください。

3. CRL DP
CAが、証明書が発行されたときのCRL DP X.509、バージョン3、証明書拡張子内の位置を指定すると、その証明書用の失効情報を含む適切なCRLがダウンロードされます。現在、Oracle Advanced Securityは、HTTPおよびLDAPを介したCRLのダウンロードをサポートしています。

注意:

- パフォーマンス上の理由から、ユーザー証明書のみがチェックされます。

- CRLをローカル・ファイル・システムではなくディレクトリに格納することをお薦めします。

13.8.4 証明書失効リストによる証明書検証の構成

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

- 証明書失効リストによる証明書検証の構成について

- クライアントまたはサーバーの証明書失効ステータス・チェックの有効化

- 証明書失効ステータス・チェックの無効化

関連項目:
証明書の検証のエラーの解決方法については、「証明書検証のトラブルシューティング」を参照してください。

13.8.4.1 証明書失効リストによる証明書検証の構成について

証明書失効ステータス・チェックを有効にするには、sqlnet.oraファイルでSSL_CERT_REVOCATIONパラメータをREQUIREDまたはREQUESTEDに設定する必要があります。デフォルトでは、このパラメータはNONEに設定され、証明書失効ステータス・チェックはオフになっています。

注意:
CRLをローカル・ファイル・システムまたはOracle Internet Directoryに格納する場合は、コマンドライン・ユーティリティorapkiを使用して、ファイル・システム内のCRLの名前を変更するか、CRLをディレクトリにアップロードします。orapkiの使用方法の詳細は、「証明書失効リストの管理」を参照してください。

13.8.4.2 クライアントまたはサーバーの証明書失効ステータス・チェックの有効化

1. Oracle Net Managerを起動します。

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

netmgr

- (Windows)「スタート」→「プログラム」→「Oracle - HOME_NAME」→「Configuration and Migration Tools」→「Net Manager」を選択します。

2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。

3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。
ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

4. 「SSL」タブを選択します。

5. 「失効チェック」リストから次のいずれかのオプションを選択します。

- 必須
証明書失効ステータス・チェックが必須です。証明書が失効しているかCRLが見つからない場合、SSL接続は拒否されます。証明書がまだ失効していないことが確認された場合にのみ、SSL接続は許可されます。

- リクエスト済
CRLが使用可能な場合に、証明書失効ステータス・チェックを実行します。証明書が失効している場合、SSL接続は拒否されます。CRLが見つからない場合や、証明書がまだ失効していない場合、SSL接続は許可されます。

パフォーマンス上の理由から、ユーザー証明書の失効のみがチェックされます。

6. (オプション)CRLがローカル・ファイル・システムに格納されている場合は、次のフィールドのいずれか、または両方を設定して、格納場所を指定します。これらのフィールドは、「失効チェック」が「必須」または「リクエスト済」に設定されている場合にのみ使用できます。

- 「証明書失効リスト・パス」:
CRLが格納されているディレクトリへのパスを入力するか、または「参照」をクリックし、ファイル・システムを検索して指定します。このパスを指定すると、sqlnet.oraファイルのSSL_CRL_PATHパラメータが設定されます。このパラメータでパスを指定しない場合、デフォルトはウォレット・ディレクトリです。DERエンコードされた(バイナリ形式)CRLおよびPEMエンコードされた(BASE64)CRLの両方がサポートされています。

- 「証明書失効リスト・ファイル」:
包括的CRLファイル(PEMエンコードされた(BASE64)CRLが優先度の順に1つのファイルに連結されたもの)へのパスを入力するか、または「参照」をクリックし、ファイル・システムを検索して指定します。このファイルを指定すると、sqlnet.oraファイルのSSL_CRL_FILEパラメータが設定されます。このパラメータを設定した場合、ファイルが指定された場所に存在する必要があります。存在しない場合、アプリケーションは起動中にエラーになります。

「証明書失効リスト・パス」を設定してCRLをローカル・ファイル・システム・ディレクトリに格納する場合は、orapkiユーティリティを使用して、システムが特定できるようにCRLの名前を変更する要があります。詳細は、「証明書検証用ハッシュ値によるCRLの名前変更」を参照してください。

7. (オプション)CRLをOracle Internet Directoryからフェッチする場合は、ディレクトリ・サーバーとポート情報をldap.oraファイルで指定する必要があります。
ldap.oraファイルを構成する場合は、ディレクトリに非SSLポートのみを指定する必要があります。CRLダウンロードはSSLプロトコルの一部として実行され、SSL接続内でのSSL接続の確立はサポートされません。

Oracle Internet Directoryの非SSLポートが無効になっている場合、Oracle Advanced SecurityのCRL機能は動作しません。

8. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルが更新されます。

13.8.4.3 証明書失効ステータス・チェックの無効化

1. Oracle Net Managerを起動します。

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

netmgr

- (Windows)「スタート」→「プログラム」→「Oracle - HOME_NAME」→「Configuration and Migration Tools」→「Net Manager」を選択します。

2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。

3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。
ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

4. 「SSL」タブを選択します。

5. 「失効チェック」リストから「なし」を選択します。

6. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルが次のエントリで更新されます。

SSL_CERT_REVOCATION=NONE

13.8.5 証明書失効リストの管理

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

- 証明書失効管理について

- CRLを管理するコマンドのorapkiヘルプの表示

- 証明書検証用ハッシュ値によるCRLの名前変更

- Oracle Internet DirectoryへのCRLのアップロード

- Oracle Internet Directoryに格納されているCRLの一覧表示

- Oracle Internet DirectoryでのCRLの表示

- Oracle Internet DirectoryからのCRLの削除

13.8.5.1 証明書失効管理について

証明書失効ステータス・チェックを有効にするには、まず、使用するCAから受信したCRLがコンピュータで使用できるフォームである(ハッシュ値で名前変更されている)こと、またはコンピュータで使用できる場所にある(ディレクトリにアップロードされている)ことを確認してください。Oracle Advanced Securityには、この項で説明するタスクを実行するために使用できるコマンドライン・ユーティリティ(orapki)があります。

LDAPコマンドライン・ツールを使用して、Oracle Internet DirectoryでCRLを管理することもできます。

注意:
CRLは、正常な検証を行うために、(期限切れになる前に)定期的に更新する必要があります。このタスクは、スクリプトでorapkiコマンドを使用して自動化できます。

13.8.5.2 CRLを管理するコマンドのorapkiヘルプの表示

コマンドラインで次のコマンドを入力することにより、CRLの管理に使用可能なorapkiコマンドをすべて表示できます。

orapki crl help

このコマンドにより、使用可能なすべてのCRL管理コマンドとそのオプションが表示されます。

注意:
-summary、-completeまたは-walletコマンド・オプションの使用は、常にオプションです。これらのコマンド・オプションが指定されていなくても、コマンドは実行されます。

13.8.5.3 証明書検証用ハッシュ値によるCRLの名前変更

システムは、証明書を検証するとき、証明書を作成したCAが発行するCRLを見つける必要があります。システムは、証明書の発行者名とCRLにある発行者名を照合して適切なCRLを検出します。

Oracle Net Managerの「証明書失効リスト・パス」フィールドにCRL格納場所を指定する(sqlnet.oraファイルのSSL_CRL_PATHパラメータを設定する)場合、orapkiユーティリティを使用して発行者名を表すハッシュ値を使用してCRLを名前変更します。ハッシュ値を作成すると、サーバーでCRLをロードできます。

UNIXオペレーティング・システムでは、orapkiによってCRLへのシンボリック・リンクが作成されます。Windowsオペレーティング・システムでは、CRLファイルのコピーが作成されます。どちらの場合も、orapkiによって作成されたシンボリック・リンクまたはコピーは、発行者名のハッシュ値を使用して名前が付けられます。その後、システムが証明書を検証するとき、同じハッシュ関数が使用されて、適切なCRLをロードできるようにリンク(またはコピー)の名前が計算されます。

オペレーティング・システムに応じて、次のコマンドのいずれかを入力して、ファイル・システムに格納されているCRLの名前を変更します。

UNIXファイル・システムに格納されているCRLの名前を変更するには:

orapki crl hash -crl crl_filename [-wallet wallet_location] -symlink crl_directory [-summary]

Windowsファイル・システムに格納されているCRLの名前を変更するには:

orapki crl hash -crl crl_filename [-wallet wallet_location] -copy crl_directory [-summary]

この指定では、crl_filenameはCRLファイルの名前、wallet_locationはCRLを発行したCAの証明書を含むウォレットの場所、crl_directoryはCRLがあるディレクトリです。

-walletおよび-summaryの使用はオプションです。-walletを指定すると、CRLの名前を変更する前に、ツールによってCAの証明書に対するCRLの有効性が確認されます。-summaryオプションを指定すると、ツールによってCRL発行者名が表示されます。

13.8.5.4 Oracle Internet DirectoryへのCRLのアップロード

ディレクトリでCRLを発行すると、企業全体でのCRL検証が可能になり、個々のアプリケーションに固有のCRLを構成する必要がなくなります。すべてのアプリケーションで、一元的に管理可能なディレクトリに格納されたCRLを使用できるので、CRL管理および使用の管理オーバーヘッドが大幅に減ります。

orapkiを使用してディレクトリにCRLをアップロードするユーザーは、ディレクトリ・グループCRLAdmins(cn=CRLAdmins,cn=groups,%s_OracleContextDN%)のメンバーである必要があります。これらのCRLには企業全体でアクセスできるため、これは特権操作です。この管理ディレクトリ・グループに追加するには、ディレクトリ管理者に連絡してください。

CRLをディレクトリにアップロードするには:

orapki crl upload -crl crl_location -ldap hostname:ssl_port -user username [-wallet wallet_location] [-summary]

この指定では、crl_locationはCRLがあるファイル名またはURL、hostnameおよびssl_port(認証なしのSSLポート)はディレクトリがインストールされているシステムに対するもの、usernameはCRLをCRLサブツリーに追加する権限があるディレクトリ・ユーザー、wallet_locationはCRLを発行したCAの証明書を含むウォレットの場所です。

-walletおよび-summaryの使用はオプションです。-walletを指定すると、CRLをディレクトリにアップロードする前に、ツールによってCAの証明書に対するCRLの有効性が確認されます。-summaryオプションを指定すると、CRL発行者名、およびCRLがディレクトリに格納されているLDAPエントリがツールによって出力されます。

次の例では、orapkiユーティリティを使用してCRLをアップロードする方法を示しています。

orapki crl upload -crl /home/user1/wallet/crldir/crl.txt -ldap host1.example.com:3533 -user cn=orcladmin

注意:

- orapkiユーティリティを使用すると、この操作の実行時にディレクトリ・パスワードの入力を求めるプロンプトが表示されます。

- Diffie-HellmanベースのSSLサーバーが実行されているディレクトリのSSLポートを指定していることを確認してください。これは、認証を実行しないSSLポートです。サーバー認証も相互認証SSLポートも、orapkiユーティリティではサポートされていません。

13.8.5.5 Oracle Internet Directoryに格納されているCRLの一覧表示

orapkiを使用してディレクトリに格納されているすべてのCRLのリストを表示できます。特定のCRLを検出してローカル・コンピュータで表示またはダウンロードする際に、このリストを参照すると便利です。このコマンドを使用すると、CRLを発行したCA(発行者)およびディレクトリのCRLサブツリー内の場所(DN)が表示されます。

Oracle Internet DirectoryでCRLを一覧表示するには:

orapki crl list -ldap hostname:ssl_port

hostnameおよびssl_portは、ディレクトリがインストールされているシステムに対するものです。これは、前の項で説明した認証なしのディレクトリのSSLポートであることに注意してください。

13.8.5.6 Oracle Internet DirectoryでのCRLの表示

Oracle Internet Directoryに格納されている特定のCRLを要約された形式で表示するか、特定のCRLについて失効した証明書の完全なリストを要求できます。サマリー・リストには、CRL発行者名およびその有効期間が記載されています。完全なリストには、そのCRLに含まれるすべての失効した証明書のリストが記載されています。

Oracle Internet DirectoryでCRLのサマリー・リストを表示するには:

orapki crl display -crl crl_location [-wallet wallet_location] -summary

crl_locationはディレクトリ内のCRLの場所です。orapki crl listコマンドを使用すると表示されるリストからCRLの位置を貼り付けると便利です。「Oracle Internet Directoryに格納されているCRLの一覧表示」を参照してください。

Oracle Internet Directoryに格納されている指定したCRLに含まれているすべての失効した証明書のリストを表示するには:

orapki crl display -crl crl_location [-wallet wallet_location] -complete

たとえば、orapkiコマンドを次のように入力します。

orapki crl display -crl $T_WORK/pki/wlt_crl/nzcrl.txt -wallet $T_WORK/pki/wlt_crl -complete

次の出力が生成されます。これには、CRL発行者のDN、発行日、次の更新日、および含まれる失効した証明書が示されます。

issuer = CN=root,C=us, thisUpdate = Sun Nov 16 10:56:58 PST 2003, nextUpdate = Mon Sep 30 11:56:58 PDT 2013, revokedCertificates = {(serialNo = 153328337133459399575438325845117876415, revocationDate - Sun Nov 16 10:56:58 PST 2003)}
CRL is valid

-walletオプションを使用すると、orapki crl displayコマンドにより、CAの証明書に対してCRLが検証されます。

-completeオプションを選択すると、CRLのサイズによっては、表示に時間がかかる場合があります。

Oracle Directory Manager(Oracle Internet Directoryに付属するグラフィカル・ユーザー・インタフェース)を使用して、ディレクトリ内のCRLを表示することもできます。CRLは、次のディレクトリの場所に格納されます。

cn=CRLValidation,cn=Validation,cn=PKI,cn=Products,cn=OracleContext

13.8.5.7 Oracle Internet DirectoryからのCRLの削除

orapkiを使用してディレクトリからCRLを削除するユーザーは、ディレクトリ・グループCRLAdminsのメンバーである必要があります。このディレクトリ管理グループの詳細は、「Oracle Internet DirectoryへのCRLのアップロード」を参照してください。

CRLをディレクトリから削除するには:

orapki crl delete -issuer issuer_name -ldap host:ssl_port -user username [-summary]

issuer_nameはCRLを発行したCAの名前、hostnameおよびssl_portはディレクトリがインストールされているシステムに対するもの、usernameはCRLをCRLサブツリーから削除する権限があるディレクトリ・ユーザーです。このポートは、認証を使用しないディレクトリのSSLポートであることが必要です。このポートの詳細は、「Oracle Internet DirectoryへのCRLのアップロード」を参照してください。

-summaryオプションを使用すると、削除されたCRL LDAPエントリがツールによって印刷されます。

たとえば、orapkiコマンドを次のように入力します。

orapki crl delete -issuer "CN=root,C=us" -ldap machine1:3500 -user cn=orcladmin -summary

次の出力が生成されます。これには、ディレクトリ内の削除されたCRLの場所が示されます。

Deleted CRL at cn=root cd45860c.rN,cn=CRLValidation,cn=Validation,cn=PKI,cn=Products,cn=OracleContext

13.8.6 証明書検証のトラブルシューティング

CRLに対して証明書を検証するかどうかを判断するには、Oracle Netトレースを有効にできます。CRLを使用して失効した証明書を検証すると、Oracle Netトレース・ファイルに次のエントリが記録され、entryとexitの間にエラー・メッセージは記録されません。

nzcrlVCS_VerifyCRLSignature: entry
nzcrlVCS_VerifyCRLSignature: exit

nzcrlVCD_VerifyCRLDate: entry
nzcrlVCD_VerifyCRLDate: exit

nzcrlCCS_CheckCertStatus: entry
nzcrlCCS_CheckCertStatus: Certificate is listed in CRL
nzcrlCCS_CheckCertStatus: exit

注意:
証明書検証に失敗した場合は、SSLハンドシェイク時にピアに「ORA-29024: 証明書の検証に失敗しました」というメッセージが表示されます。このメッセージが表示された場合は、「ORA-29024: 証明書の検証に失敗しました」でエラーの解決方法を参照してください。

関連項目:
トレース・パラメータを設定してOracle Netトレースを有効にする方法の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

13.8.6.1 証明書検証に関連するOracle Netトレース・ファイルのエラー・メッセージ

Oracle Netトレース・ファイルのentryエントリとexitエントリの間に、証明書検証に関連する次のトレース・メッセージが記録されることがあります。Oracle SSLは複数の場所でCRLを検索するため、トレースに複数のエラーが記録されることがあります。

エラーの解決方法の詳細は、次の表示される可能性があるエラー・メッセージのリストを確認してください。

RSAステータスでCRLの署名検証に失敗しました

原因: CRLの署名を検証できません。

処置: ダウンロードしたCRLがピアのCAによって発行されたものであることと、ダウンロード時に破損しなかったことを確認します。CRLは、orapkiユーティリティによって検証されてから、ハッシュ値で名前が変更されるかディレクトリにアップロードされます。

関連項目:
CRL管理にorapkiを使用する方法の詳細は、「証明書失効リストの管理」を参照してください。

RSAステータスでCRLの日付検証に失敗しました

原因: 現在の時刻が次の更新フィールド内の時刻より後になっています。このエラーは、CRL DPを使用している場合には表示されません。CRLは次の順番で検索されます。

1. ファイル・システム

2. Oracle Internet Directory

3. CRL DP

この検索で最初に見つかったCRLが最新であるとはかぎりません。

処置: CRLを最新のコピーで更新します。

CRLが見つかりませんでした

原因: 構成されている場所にCRLがありませんでした。構成で証明書検証が必須に指定されている場合、エラーORA-29024が戻されます。

処置: 次の手順を実行して、構成で指定されているCRLの場所が正しいことを確認します。

1. Oracle Net Managerを使用して、正しいCRLの場所が構成されているかどうかを確認します。「証明書失効リストによる証明書検証の構成」を参照してください。

2. 必要に応じて、orapkiユーティリティを使用してシステムで使用するCRLを次のように構成します。

- ローカル・ファイル・システムに格納されているCRLの場合は、「証明書検証用ハッシュ値によるCRLの名前変更」を参照してください。

- ディレクトリに格納されているCRLの場合は、「Oracle Internet DirectoryへのCRLのアップロード」を参照してください。

Oracle Internet Directoryのホスト名またはポート番号が設定されていません

原因: Oracle Internet Directoryの接続情報が設定されていません。これは致命的エラーではありません。続いてCRL DPが検索されます。

処置: CRLをOracle Internet Directoryに格納する場合は、Oracle Net Configuration Assistantを使用して、Oracleホームのldap.oraファイルを作成し、構成します。

CRL DPからのCRLのフェッチ: CRLが見つかりません

原因: CRL配布ポイント(CRL DP)を使用してCRLをフェッチできませんでした。このことは、証明書にCRL DP拡張で指定された場所がないか、CRL DP拡張で指定されたURLが正しくない場合に発生します。

処置: 認証局が証明書のCRL DP拡張で指定されたURLにCRLを発行することを確認します。
CRLを手動でダウンロードします。次に、それをローカル・ファイル・システムに格納するか、Oracle Internet Directoryに格納するかに応じて、次の手順を実行します。

CRLをローカル・ファイル・システムに格納する場合:

1. Oracle Net Managerを使用して、CRLディレクトリまたはファイルへのパスを指定します。「証明書失効リストによる証明書検証の構成」を参照してください。

2. orapkiユーティリティを使用して、システムで使用するCRLを構成します。「証明書検証用ハッシュ値によるCRLの名前変更」を参照してください。

CRLをOracle Internet Directoryに格納する場合:

1. Oracle Net Configuration Assistantを使用して、ディレクトリ接続情報を含むldap.oraファイルを作成し、構成します。

2. orapkiユーティリティを使用して、CRLをディレクトリにアップロードします。「Oracle Internet DirectoryへのCRLのアップロード」を参照してください。

13.9 ハードウェア・セキュリティ・モジュールを使用するためのシステムの構成

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

- ハードウェア・セキュリティ・モジュールを使用するためのシステムの構成について

- Oracle Advanced Securityでハードウェア・セキュリティ・モジュールを使用するためのガイドライン

- nCipherハードウェア・セキュリティ・モジュールを使用するためのシステムの構成

- SafeNETハードウェア・セキュリティ・モジュールを使用するためのシステムの構成

- ハードウェア・セキュリティ・モジュールの使用時のトラブルシューティング

13.9.1 ハードウェア・セキュリティ・モジュールを使用するためのシステムの構成について

Oracle Advanced Securityでは、RSA Security社のPKCS #11仕様に準拠したAPIを使用するハードウェア・セキュリティ・モジュールがサポートされています。通常、これらのハードウェア・デバイスは、トークンまたはスマートカードの秘密鍵を安全に格納および管理するため、または暗号処理を.高速化するために使用されます。

13.9.2 Oracle Advanced Securityでハードウェア・セキュリティ・モジュールを使用するためのガイドライン

次の一般的なガイドラインは、Oracle Advanced Securityでハードウェア・セキュリティ・モジュールを使用する場合に適用されます。

1. 必要なハードウェア、ソフトウェアおよびPKCS #11ライブラリを取得するには、ハードウェア・デバイス・ベンダーにお問い合せください。

2. 使用しているハードウェア・セキュリティ・モジュールに適したハードウェア、ソフトウェアおよびライブラリをインストールします。

3. ハードウェア・セキュリティ・モジュールのインストールをテストして、正常に動作することを確認します。詳細は、使用するデバイスのドキュメントを参照してください。

4. 秘密鍵をトークンに格納する場合は、Oracle Wallet Managerを使用してPKCS11タイプのウォレットを作成し、PKCS #11ライブラリへの絶対パス(ライブラリ名を含む)を指定します。Oracle PKCS11ウォレットには、秘密鍵にアクセスするためのトークンを指す情報が格納されます。

PKCS #11情報が格納されたウォレットは、任意のOracleウォレットを使用する場合と同様に使用できます。ただし、秘密鍵をハードウェア・デバイスに格納し、暗号操作もそのデバイスで実行する場合を除きます。

関連項目:
「ハードウェア・セキュリティ・モジュール資格証明を格納するためのウォレットの作成」

13.9.3 nCipherハードウェア・セキュリティ・モジュールを使用するためのシステムの構成

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

- nCipherハードウェア・セキュリティ・モジュールを使用するためのシステムの構成について

- nCipherハードウェア・セキュリティ・モジュールに必要なOracleコンポーネント

- nCipherハードウェア・セキュリティ・モジュールのインストールについて

13.9.3.1 nCipherハードウェア・セキュリティ・モジュールを使用するためのシステムの構成について

nCipher社製のハードウェア・セキュリティ・モジュールは、Oracle Advanced Securityで動作することが証明されています。これらのモジュールでは、鍵を安全に格納し、暗号処理の負荷を軽減できます。これらのデバイスには、主に次の利点があります。

- 暗号処理の負荷が軽減され、サーバーが他の要求に応答できるようになります。

- デバイス上の秘密鍵の記憶領域が保護されます。

- スマートカードを使用して鍵を管理できます。

注意:
Oracle Advanced Securityで使用する認定済のハードウェアおよびソフトウェアを入手するには、nCipherの代理店にお問い合せください。

13.9.3.2 nCipherハードウェア・セキュリティ・モジュールを使用するために必要なOracleコンポーネント

nCipherハードウェア・セキュリティ・モジュールを使用するには、次のコンポーネントが必要です。

- nCipherハードウェア・セキュリティ・モジュール

- サポートしているnCipher PKCS #11ライブラリ
次のプラットフォーム固有のPKCS#11ライブラリが必要です。

- libcknfast.soライブラリ(UNIX 32ビットの場合)

- libcknfast-64.soライブラリ(UNIX 64ビットの場合)

- cknfast.dllライブラリ(Windowsの場合)

注意:
ハードウェア・セキュリティ・モジュールまたはセキュア・アクセラレータをインストールし、必要なライブラリを入手するには、nCipherの代理店にお問い合せください。
これらの作業は、Oracle Advanced SecurityでnCipherハードウェア・セキュリティ・モジュールを使用する前に実施する必要があります。

13.9.3.3 nCipherハードウェア・セキュリティ・モジュールのインストールについて

セキュア・アクセラレータを使用するには、Oracle Wallet Managerを使用してウォレットを作成するときに、nCipher PKCS #11ライブラリが格納されているディレクトリへの絶対パス(ライブラリ名を含む)を指定する必要があります。これにより、実行時にライブラリをロードできます。通常、nCipherカードは次の場所にインストールされます。

- /opt/nfast (UNIXの場合)

- C:\nfast (Windowsの場合)

nCipher PKCS #11ライブラリは、通常のインストールでは次の場所に配置されます。

- /opt/nfast/toolkits/pkcs11/libcknfast.so(UNIX 32ビットの場合)

- /opt/nfast/toolkits/pkcs11/libcknfast-64.so(UNIX 64ビットの場合)

- C:\nfast\toolkits\pkcs11\cknfast.dll (Windowsの場合)

注意:
Oracle Databaseの32ビット・リリースを使用する場合は32ビット・ライブラリ・バージョンを使用し、Oracle Databaseの64ビット・リリースを使用する場合は64ビット・ライブラリ・バージョンを使用します。たとえば、Oracle Database for Solaris Operating System (SPARC 64ビット)には、64ビットnCipher PKCS #11ライブラリを使用します。

13.9.4 SafeNETハードウェア・セキュリティ・モジュールを使用するためのシステムの構成

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

- SafeNetハードウェア・セキュリティ・モジュールを使用するためのシステムの構成について

- SafeNET Luna SAハードウェア・セキュリティ・モジュールのOracleコンポーネント

- SafeNETハードウェア・セキュリティ・モジュールのインストールについて

13.9.4.1 SafeNetハードウェア・セキュリティ・モジュールを使用するためのシステムの構成について

SafeNET社製のハードウェア・セキュリティ・モジュールは、Oracle Advanced Securityで動作することが証明されています。これらのモジュールでは、鍵を安全に格納し、暗号処理の負荷を軽減できます。これらのデバイスには、主に次の利点があります。

- 暗号処理の負荷が軽減され、サーバーが他の要求に応答できるようになります。

- デバイス上の秘密鍵の記憶領域が保護されます。

注意:
Oracle Advanced Securityで使用する認定済のハードウェアおよびソフトウェアを入手するには、SafeNETの代理店にお問い合せください。

13.9.4.2 SafeNET Luna SAハードウェア・セキュリティ・モジュールのOracleコンポーネント

SafeNET Luna SAハードウェア・セキュリティ・モジュールを使用するには、次のコンポーネントが必要です。

- SafeNET Luna SAハードウェア・セキュリティ・モジュール

- サポートしているSafeNET Luna SA PKCS #11ライブラリ
次のプラットフォーム固有のPKCS#11ライブラリが必要です。

- libCryptoki2.soライブラリ(UNIXの場合)

- cryptoki.dllライブラリ(Windowsの場合)

注意:
ハードウェア・セキュリティ・モジュールまたはセキュア・アクセラレータをインストールし、必要なライブラリを入手するには、SafeNETの代理店にお問い合せください。
これらの作業は、Oracle Advanced SecurityでSafeNETハードウェア・セキュリティ・モジュールを使用する前に実施する必要があります。

13.9.4.3 SafeNETハードウェア・セキュリティ・モジュールのインストールについて

セキュア・アクセラレータを使用するには、Oracle Wallet Managerを使用してウォレットを作成するときに、SafeNET PKCS #11ライブラリが格納されているディレクトリへの絶対パス(ライブラリ名を含む)を指定する必要があります。これにより、実行時にライブラリをロードできます。通常、SafeNET Luna SAクライアントは次の場所にインストールされます。

- /usr/lunasa (UNIXの場合)

- C:\Program Files\LunaSA (Windowsの場合)

SafeNET Luna SA PKCS #11ライブラリは、通常のインストールでは次の場所に配置されます。

- /usr/lunasa/lib/libCryptoki2.so (UNIXの場合)

- C:\Program Files\LunaSA\cryptoki2.dll (Windowsの場合)

13.9.5 ハードウェア・セキュリティ・モジュールの使用時のトラブルシューティング

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

- Oracle Netトレース・ファイルのエラー

- ハードウェア・セキュリティ・モジュールの使用に関連するエラー・メッセージ

13.9.5.1 Oracle Netトレース・ファイルのエラー

使用されているモジュールを検出するには、Oracle Netトレースをオンにします。ウォレットにPKCS #11情報が含まれ、モジュールの秘密鍵が使用されている場合は、Oracle Netトレースに次のエントリが記録され、entryとexitの間にエラー・メッセージは記録されません。

nzpkcs11_Init: entry
nzpkcs11CP_ChangeProviders: entry
nzpkcs11CP_ChangeProviders: exit
nzpkcs11GPK_GetPrivateKey: entry
nzpkcs11GPK_GetPrivateKey: exit
nzpkcs11_Init: exit
...
nzpkcs11_Decrypt: entry
nzpkcs11_Decrypt: exit

nzpkcs11_Sign: entry
nzpkcs11_Sign: exit

関連項目:
トレース・パラメータを設定してOracle Netトレースを有効にする方法の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

13.9.5.2 ハードウェア・セキュリティ・モジュールの使用に関連するエラー・メッセージ

次のエラーは、PKCS #11ハードウェア・セキュリティ・モジュールの使用に関連します。

ORA-43000: PKCS11ライブラリが見つかりません

原因: ウォレットの作成時に指定された場所にPKCS #11ライブラリが見つかりません。これは、ウォレットの作成後にライブラリが移動された場合にのみ発生します。

処置: PKCS #11ライブラリをウォレットが作成されたときの場所にコピーします。

ORA-43001: PKCS11トークンが見つかりません

原因: ウォレットの作成に使用されたスマートカードがハードウェア・セキュリティ・モジュールのスロットにありません。

処置: ウォレットの作成時に使用されたスマートカードがハードウェア・セキュリティ・モジュールのスロットにあることを確認します。

ORA-43002: PKCS11パスワードが無効です

原因: これは、ウォレットの作成時に指定されたパスワードが正しくない場合、またはウォレットの作成後にPKCS #11デバイス・パスワードを変更し、Oracle Wallet Managerを使用してウォレットで更新しなかった場合に発生する可能性があります。

処置: 原因に応じて、次のいずれかの処置を行います。
ウォレットの作成時にこのエラーが表示された場合は、パスワードが正しいことを確認し、再入力します。

ウォレットの作成後にパスワードを変更した場合は、Oracle Wallet Managerを使用してウォレットを開き、新しいパスワードを入力します。

関連項目:
「ハードウェア・セキュリティ・モジュール資格証明を格納するためのウォレットの作成」

注意:
nCipherログ・ファイルは、モジュールがインストールされているディレクトリの次の場所にあります。
/log/logfile

関連項目:
nCipherデバイスとSafeNETデバイスのトラブルシューティングの詳細は、nCipherとSafeNETのドキュメントを参照してください。

13.10 Oracle Real Application Clusters環境でのSSLの構成

Oracle Real Application Clusters (Oracle RAC)環境で使用するSecure Sockets Layerを構成できます。

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

- 手順1: TCPSプロトコル・エンドポイントの構成

- 手順2: 各Oracle RACノードでのローカル・リスナー・パラメータの更新

- 手順3: クラスタおよびクライアントのSSL証明書およびウォレットの作成

- 手順4: 各クラスタ・ノードへのウォレットのコピーおよび不明瞭化されたウォレットの作成

- 手順5: listener.oraおよびsqlnet.oraファイルへのウォレット・ロケーションの定義

- 手順6: データベース・インスタンスおよびリスナーの再起動

- 手順7: クラスタ・ノードからの構成のテスト

- 手順8: リモート・クライアントからの構成のテスト

13.10.1 手順1: TCPSプロトコル・エンドポイントの構成

Oracle RAC環境では、クライアントは3つのSCANリスナーのいずれかにアクセスし、それからデータベース・リスナーにルーティングされます。Secure Sockets Layerをサポートするには、すべてのリスナーにTCPSプロトコル・エンドポイントが必要です。次の手順により、データベース・ノード・リスナーおよびSCANリスナーにTCPSエンドポイントを追加します。

1. リスナー・リソースでTCPエンドポイントがサポートされていることを確認します。
例:

crsctl stat res -p |grep ENDPOINTS

次のような出力が表示されます。

ENDPOINTS=TCP:1521 <= database listener
ENDPOINTS=TCP:1521 <= listener_scan1
ENDPOINTS=TCP:1521 <= listener_scan2
ENDPOINTS=TCP:1521 <= listener_scan3

2. データベース・リスナーにTCPSエンドポイントを追加します。
TCPポート番号と異なり、現在使用されていないポート番号をTCPS値に指定します。例:

srvctl modify listener -p "TCP:1521/TCPS:1523";

3. リスナーを再起動します。

srvctl stop listener
srvctl start listener

4. リスナー構成を確認します。

srvctl config listener

次のような出力が表示されます。

Name: LISTENER
Network: 1, Owner: oracle
Home: CRS_home
End points: TCP:1521/TCPS:1523

5. リスナー・ステータスを確認します。

lsnrctl status

Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=10.141.155.188)(PORT=1523)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.141.155.183)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.141.155.188)(PORT=1521)))

6. リスナー・リソースを再確認します。

crsctl stat res -p |grep ENDPOINTS

ENDPOINTS=TCP:1521 TCPS:1523 <= database listener
ENDPOINTS=TCP:1521 <= listener_scan1
ENDPOINTS=TCP:1521 <= listener_scan2
ENDPOINTS=TCP:1521 <= listener_scan3

ENDPOINTSの最初の行にTCPSフラグが含まれ、正しく構成されていることが示されています。次の手順で、このTCPSをSCANリスナーに追加します。

7. SCANリスナーにTCPSエンドポイントを追加します。

srvctl stop scan_listener
srvctl stop scan

srvctl modify scan_listener -p TCP:1521/TCPS:1523

または、次のようなコマンドを使用することもできます。

srvctl remove scan_listener -f
srvctl add scan_listener -l LISTENER -p TCP:1521/TCPS:1523
srvctl start scan
srvctl start scan_listener

8. SCANリスナーの構成を確認します。
まず、これまでに構成したすべてのリスナーを検索します。

srvctl config scan_listener

SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521/TCPS:1523
SCAN Listener LISTENER_SCAN2 exists. Port: TCP:1521/TCPS:1523
SCAN Listener LISTENER_SCAN3 exists. Port: TCP:1521/TCPS:1523

次に個別のリスナーを確認します。次のコマンドは、SCANリスナー3を確認しています。

lsnrctl status listener_scan3

Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN3)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.141.155.186)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=10.141.155.186)(PORT=1523)))

9. すべてのリスナー・リソースが構成されていることを確認します。

crsctl stat res -p |grep ENDPOINTS

次の出力は、各行にTCPSフラグがあるため、すべて構成されていることを示しています。

ENDPOINTS=TCP:1521 TCPS:1523 <= database listener
ENDPOINTS=TCP:1521 TCPS:1523 <= listener_scan1
ENDPOINTS=TCP:1521 TCPS:1523 <= listener_scan2
ENDPOINTS=TCP:1521 TCPS:1523 <= listener_scan3

13.10.2 手順2: 各Oracle RACノードでのローカル・リスナー・パラメータの更新

PMONは、ローカル・リスナーに格納されているエンドポイント値をSCANリスナーに送信し、適切なサービス・ハンドラが作成されるようにする必要があります。この手順では、手順1: TCPSプロトコル・エンドポイントの構成で作成したデータベース・ノード・リスナーのTCPSエンドポイントを、各Oracle RACノードのローカル・リスナー起動パラメータに追加します。ローカル・リスナーのIPアドレスは、各ノードで一意です。ALTER SYSTEM文を発行する場合は、ローカル・インスタンスSID値を宣言する必要があります。(例: sid = 'instance')。

1. ノードを選択してローカル・リスナー・エンドポイントを指定します。

lsnrctl status |grep PORT

次のような出力結果が表示されます。PROTOCOL値によってTCPSプロトコル・エンドポイントを指定できます。

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=10.141.155.188)(PORT=1523))) <= new TCPS endpoint
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.141.155.183)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.141.155.188)(PORT=1521)))

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

sqlplus / as sysdba

3. ローカル・リスナーの値を確認します。

SHOW PARAMETER LOCAL_LISTENER

次のような出力が表示されます。

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.141.155.188)(PORT=1521))))

4. 手順1で指定したTCPSエンドポイントをlocal_listener値に追加します。また、SIDをローカル・ノード・インスタンス名に設定します。SPFILEの更新前に変更を検証できるよう、メモリーにスコープを設定します。
例:

ALTER SYSTEM SET local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.141.155.188)(PORT=1521))(ADDRESS=(PROTOCOL=TCPS)(HOST=10.141.155.188)(PORT=1523))))' scope=memory sid='NETRAC1';

5. ローカル・リスナーの値を再確認します。

SHOW PARAMETER LOCAL_LISTENER

次のような出力が表示されます。

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.141.155.188)(PORT=1521))(ADDRESS=(PROTOCOL=TCPS)(HOST=10.141.155.188)(PORT=1523))))

Oracle RACクラスタでインスタンス登録を制限するためにCOSTが使用されている場合、すべてのローカル・リスナーおよびノード・リスナーのCOST値のリストにTCPSを含める必要があります。TCPS規則がない場合、SCANリスナーのTCPSハンドラがブロック状態になります。詳細は、次の場所で、My Oracle Support(以前のOracleMetaLink)のDoc ID: 1537743.1「SSLクラスタにCOSTを実装した後、SCANリスナーのTCPSサービス・ハンドラがブロックされる」を参照してください。

https://support.oracle.com

6. 次のようなALTER SYSTEM文を実行して、変更をSPFILEに書き込みます。

ALTER SYSTEM SET LOCAL_LISTENER='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.141.155.188)(PORT=1521))(ADDRESS=(PROTOCOL=TCPS)(HOST=10.141.155.188)(PORT=1523))))' scope=both sid='NETRAC1';

7. これらの手順を繰り返して残りのノードを更新し、すべてのノードでTCPSエンドポイントをSCANリスナーに正しく登録します。

13.10.3 手順3: クラスタおよびクライアントのSSL証明書およびウォレットの作成

証明書署名用の認証局(CA)の選択および使用方法は、サイトのポリシーに応じて異なります。正常なSSL接続を行うために、サーバーおよび接続先クライアントには、同一の信頼できる認証局によって署名された一意のSSL証明書が必要です。クラスタ用およびSSL経由でデータベースに接続するテスト・クライアント用に証明書リクエストを作成する必要があります。これらのリクエストに認証局の署名を得た後、署名付きユーザー証明書および信頼できるルート証明書を使用してウォレットを作成します。クラスタ・ウォレットおよびクライアント・ウォレットには一意のアイデンティティがありますが、同一の信頼できる証明書を共有します。これがSSL接続用の正しいウォレット設定です。

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

- 各クラスタ用およびテスト・クライアント用SSL証明書の作成

- 各ユーザー証明書の署名

13.10.3.1 各クラスタ用およびテスト・クライアント用SSL証明書の作成

1. CAホームとして使用するディレクトリを作成します。CAホームのアクセスを、デジタル証明書の認可および署名可能なユーザーまたはユーザー・グループに制限します。
例:

cd $ORACLE_BASE
mkdir CA; chmod 700 CA; cd CA;
pwd
/home/app/oracle/CA

export CA_HOME=/home/app/oracle/CA

2. CAホームで、orapkiを使用して認証局ウォレットを作成します。

orapki wallet create -wallet $CA_HOME

Enter password: CA_password
Enter password again: CA_password

orapkiユーティリティにより、既知の信頼できる証明書が複数移入されたデフォルト・ウォレットが作成されます。これらの証明書はこの手順では使用しないため、次のコマンドで削除できます。

orapki wallet remove -trusted_cert_all -wallet $CA_HOME -pwd [CA_password]

3. CAウォレット用自己署名(ルート)証明書を作成します。
例:

orapki wallet add -wallet $CA_HOME -self_signed -dn "CN=Oracle test CA,O=Oracle,C=US" -keysize 1024 -validity 3650 -pwd [CA_password]

次のように指定します。

- dnは識別名を指し、X509で書式設定された任意の有効な名前を使用できます(例: -dn CN=Widget Corp.,C=US)。

- keysizeで鍵のビット・サイズを設定します。次の値が有効です: 512、1024または2048。

- validityは必須で、現在の日付から数えてこの証明書が有効である日数を指定します。

4. ウォレットからルートCA証明書を抽出します。
このルート証明書はユーザー・ウォレットまたはアプリケーション・ウォレットで信頼できるCA証明書として使用され、PKCS12ウォレットを作成するユーザーに対し配布または公開できます。

例:

orapki wallet export -wallet $CA_HOME -dn "CN=Oracle test CA,O=Oracle,C=US" -cert testCAroot.cer -pwd [CA_password]

この段階で、$CA_HOMEにはewallet.p12 (PKCS12ウォレット)およびtestCAroot.cer base64証明書が含まれます。

ls -al

total 16
drwx------  2 psmith psmith 4096 Aug 23 15:15 .
drwxrwxr-x 11 psmith psmith 4096 Aug 23 13:54 ..
-rw-------  1 psmith psmith 2560 Aug 23 15:13 ewallet.p12
-rw-------  1 psmith psmith  706 Aug 23 15:15 testCAroot.cer

5. ウォレットが正常に作成されたことを確認します。
例:

orapki wallet display -wallet $CA_HOME -summary
Enter wallet password: CA_password

Requested Certificates:
User Certificates:
Subject:        CN=Oracle test CA,O=Oracle,C=US
Trusted Certificates:
Subject:        CN=Oracle test CA,O=Oracle,C=US

6. ウォレットおよびパスワードをバックアップします。

13.10.3.2 各ユーザー証明書の署名

CAウォレットを使用すると、orapkiユーティリティを使用して、テスト環境内の様々なエンティティやプロセスからのデジタル証明書リクエストに署名し、認可されたデジタル・ユーザー証明書を発行できます。テスト環境内でPKI機能に関与している各エンティティに対してこの手順を繰り返します。有効なウォレットは、ルートCA証明書および署名付きユーザー証明書で構成されます。

1. CAホームの外のディレクトリまたは場所でユーザー・ウォレットを作成します。
例:

cd ~
mkdir user_wallet; cd user_wallet
pwd

/home/user_wallet

export MY_WALLET=/home/user_wallet
orapki wallet create -wallet $MY_WALLET

Enter password: user_password
Enter password again: user_password

orapkiユーティリティにより、既知の信頼できる証明書を複数インストール済のウォレットが作成されます。これらの証明書はこの手順では使用しないため、次のコマンドで削除できます。

orapki wallet remove -trusted_cert_all -wallet $MY_WALLET -pwd [user_password]

2. ユーザー・アイデンティティ(ユーザーDN)および証明書リクエストを作成します。
例:

orapki wallet add -wallet $USER_WALLET -dn "CN=testuser" -keysize 1024 -pwd [user_password]
orapki wallet export -wallet $USER_WALLET -dn "CN=testuser" -request $USER_WALLET/testuser.req -pwd [user_password]
ls
ewallet.p12 testuser.req

この段階で、testuserリクエストはCAにより署名できます。この手順には、CAホーム・ウォレットへのアクセスおよびCAウォレットのパスワードが必要です。testuser.reqへの署名後、出力ファイルtestuser.cerが作成されます。

3. 署名付き証明書を作成します。
例:

orapki cert create -wallet $CA_HOME -request $MY_WALLET/testuser.req -cert $USER_WALLET/testuser.cer -validity 3650 -pwd [CA_password]

ls
ewallet.p12  testuser.cer  testuser.req

4. ルート証明書(testCAroot.cer)および署名付きユーザー証明書(testuser.cer)をユーザー・ウォレットにインポートします。
次の例では、$CA_HOMEからルート証明書を取得しています。または、ユーザーのウォレット・ディレクトリに証明書をコピーした後、ローカルにインポートすることもできます。

orapki wallet add -wallet $USER_WALLET -trusted_cert -cert $CA_HOME/testCAroot.cer -pwd [user_password]

orapki wallet add -wallet $USER_WALLET -user_cert -cert $USER_WALLET/testuser.cer -pwd [user_password]

5. 完了したウォレットを確認します。
例:

orapki wallet display -wallet $MY_WALLET -summary -pwd [user_password]

Requested Certificates:
User Certificates:
Subject:        CN=testuser
Trusted Certificates:
Subject:        CN=Oracle test CA,O=Oracle,C=US

13.10.4 手順4: 各クラスタ・ノードへのウォレットのコピーおよび不明瞭化されたウォレットの作成

1. 手順3: クラスタおよびクライアントのSSL証明書およびウォレットの作成でクラスタ・ウォレットを作成した後、クラスタの各ノードにこのウォレットをコピーします。
データベース(PMON)から、および通常Grid Infrastructureホーム外で実行されているSCANリスナーとローカル・リスナーからアクセス可能な場所に配置する必要があることを除けば、ウォレットの配置に特定のルールはありません。

この手順では、ウォレットを次のディレクトリにコピーしたと想定します。

/u01/app/oracle/product/11.2.0.4/db_1/network/admin/wallet

2. cwallet.ssoファイルを作成します。
例:

orapki wallet create -wallet /u01/app/oracle/product/11.2.0.4/db_1/network/admin/wallet -auto_login

Enter password: password

cwallet.ssoは、ewallet.p12の不明瞭化されたミラー・コピーであり、PMONおよびリスナーからアクセスされるファイルです。クラスタにcwallet.ssoを作成する場合は、これをewallet.p12ファイルとともに各ノードのウォレット・ディレクトリにコピーできます。また、ewallet.p12がすでに配置されている場合は、cwallet.ssoウォレットを各ノードに別々に作成できます。

3. 2つのウォレットが配置されていることを確認します。
例:

ls -al

drwxr-xr-x. 2 oracle oracle 4096 Feb 7 11:12 .
drwxr-xr-x. 5 oracle oracle 4096 Feb 15 11:00 ..
-rw-------. 1 oracle oracle 2549 Feb 15 16:13 cwallet.sso
-rw-------. 1 oracle oracle 2472 Feb 7 11:11 ewallet.p12

13.10.5 手順5: listener.oraおよびsqlnet.oraファイルへのウォレット・ロケーションの定義

各ノードのPMONおよびリスナー・プロセスの両方からウォレットにアクセスできる必要があります。各ノードのsqlnet.oraおよびlistener.oraファイルに、ウォレット・ロケーションが定義されている必要があります。

1. $GRID_HOME/network/admin/listener.oraファイルを編集して次の設定を追加します。

SSL_CLIENT_AUTHENTICATION = FALSE

WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /u01/app/oracle/product/11.2.0.4/db_1/network/admin/wallet)
)
)

この例では、「手順4: 各クラスタ・ノードへのウォレットのコピーおよび不明瞭化されたウォレットの作成」に記載したウォレット・ディレクトリを使用します。通常、クラスタのリスナーはGrid Infrastructureのホーム・ディレクトリの外部で実行されています。

2. データベースの$ORACLE_HOME/network/admin/sqlnet.oraファイルを編集して、次の設定を追加します。

SQLNET.AUTHENTICATION_SERVICES= (BEQ, TCPS)

SSL_VERSION = 0

SSL_CLIENT_AUTHENTICATION = FALSE

WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /u01/app/oracle/product/11.2.0.4/db_1/network/admin/wallet)
)
)

この例では、「手順4: 各クラスタ・ノードへのウォレットのコピーおよび不明瞭化されたウォレットの作成」に記載したウォレット・ディレクトリを使用します。通常、クラスタのインスタンスはデータベースのホーム・ディレクトリの外部で実行されています。

3. 各ノードに対してこの手順を繰り返します。

13.10.6 手順6: データベース・インスタンスおよびリスナーの再起動

ウォレットを配置して.oraファイルを編集した後、PMONプロセスおよびリスナー・プロセスを再起動して新しいウォレット設定を認識させる必要があります。また、再起動に伴い、インスタンスによって「手順2: 各Oracle RACノードでのローカル・リスナー・パラメータの更新」で追加したローカル・リスナー値が使用されます。SCANリスナーに適切なTCPSハンドラがあることを確認し、必要に応じて不一致を修正します。

再起動のコマンドは次のとおりです。

srvctl stop listener
srvctl start listener

srvctl stop scan_listener
srvctl start scan_listener

srvctl stop database -d netrac
srvctl start database -d netrac

13.10.7 手順7: クラスタ・ノードからの構成のテスト

SSL用に構成されたクラスタ環境における最も簡単なテスト方法は、クラスタ・ノードの1つでSSL接続を確立することです。

1. クラスタ・ノードの1つが存在しているコンピュータにログインします。

2. このノードのtnsnames.oraファイルにおいて、SCANリスナーのTCPSエンドポイントを使用する接続記述子を作成します。
例:

NETRACSSL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCPS)(HOST = net-scan)(PORT = 1523))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = NETRAC.us.example.com)
)
)

3. このTCPS接続記述子を使用して、SQL*Plusでこのデータベース・インスタンスに接続します。
例:

sqlplus psmith@netracssl
Enter password: password

13.10.8 手順8: リモート・クライアントからの構成のテスト

1. リモート・クライアントに使用しているコンピュータで、ウォレット・ディレクトリ位置を作成します。

2. この位置情報を、リモート・クライアントのsqlnet.oraファイルに追加します。
例:

WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = C:\app\oracle\product\11.2.0.4\dbhome_1\NETWORK\ADMIN\wallet)
)
)

3. 「手順3: クラスタおよびクライアントのSSL証明書およびウォレットの作成」で作成したウォレットを、リモート・クライアントのウォレット・ディレクトリに移動します。

4. リモート・クライアント上にcwallet.ssoを作成します。
例:

orapki wallet create -wallet . -auto_login
Enter wallet password: password

5. これら2つのファイルがウォレット・ディレクトリに存在していることを確認します。
例:

cd $ORACLE_HOME/network/admin/wallet
ls

cwallet.sso
ewallet.p12

6. listener.oraファイルにおいて、SCANリスナーのTCPSエンドポイントを使用する接続記述子を作成します。
例:

NETRACSSL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCPS)(HOST = net-scan)(PORT = 1523))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = NETRAC.us.example.com)
)
)

7. このTCPS接続記述子を使用して、SQL*Plusでこのデータベース・インスタンスに接続します。
例:

sqlplus psmith@netracssl
Enter password: password

14 Oracle Wallet Managerの使用方法

セキュリティ管理者は、Oracle Wallet Managerを使用してOracleクライアントおよびサーバーの公開鍵セキュリティ資格証明を管理します。作成したウォレットは、Oracle Database、Oracle Application Server 10gおよびOracle Identity Managementインフラストラクチャから読み取ることができます。

この章では、Oracle Wallet Managerについて、次のトピックで説明します。

- Oracle Wallet Managerの概要

- Oracle Wallet Managerの起動

- 完全なウォレットの作成方法: プロセス概要

- ウォレットの管理

- 証明書の管理

関連項目:

- すべてのOracle PKIコンポーネントの詳細は、「Oracle環境における公開鍵インフラストラクチャ」を参照してください。

- orapkiコマンドライン・ユーティリティの詳細は、付録E「orapkiユーティリティ」を参照してください。このユーティリティでは、テスト目的でウォレットを作成し、証明書を発行できます。

14.1 Oracle Wallet Managerの概要

Oracle Wallet Managerは、ウォレットの所有者がOracleウォレットでセキュリティ資格証明を管理および編集するために使用するアプリケーションです。ウォレットは、認証および署名資格証明(秘密鍵、証明書、SSLで必要な信頼できる証明書など)の格納に使用されるパスワード保護されたコンテナです。Oracle Wallet Managerを使用して次のタスクを実行できます。

- ウォレットの作成

- 証明書リクエストの生成

- PKIベースのサービスにアクセスするためのウォレットのオープン

- 公開鍵暗号規格#11 (PKCS #11)仕様に準拠するAPIを使用した、ハードウェア・セキュリティ・モジュールへの資格証明の保存

- ウォレットのLDAPディレクトリへのアップロード(およびLDAPディレクトリからのダウンロード)

- サード・パーティのPKCS #12形式のウォレットのインポート

- Oracleウォレットのサード・パーティ環境へのエクスポート

Oracle Wallet Managerには、次の機能が備えられています。

- ウォレット・パスワード管理

- 強力なウォレット暗号化

- Microsoft Windowsレジストリ・ウォレット・ストレージ

- 下位互換性

- 公開鍵暗号規格(PKCS)サポート

- 複数証明書サポート

- LDAPディレクトリのサポート

関連項目:
「Oracle環境における公開鍵インフラストラクチャ」

14.1.1 ウォレット・パスワード管理

Oracleウォレットはパスワードで保護されています。Oracle Wallet Managerには、高度なウォレット・パスワード管理モジュールが含まれており、このモジュールによって、次のようなパスワード管理ポリシーのガイドラインが適用されます。

- パスワードの最小長は8文字。

- パスワードの最大長は無制限。

- 英数字を組み合せて指定する。

14.1.2 強力なウォレット暗号化

Oracle Wallet Managerでは、X.509証明書に関連付けられた秘密鍵を格納し、Triple-DES暗号化を使用します。

14.1.3 Microsoft Windowsレジストリ・ウォレット・ストレージ

Oracle Wallet Managerにより、複数のOracleウォレットをWindowsファイル管理システムまたはMicrosoft Windowsシステム・レジストリのユーザー・プロファイル領域に格納できます。レジストリにウォレットを格納すると、次のメリットがあります。

- アクセス制御の向上: レジストリのユーザー・プロファイル領域に格納されたウォレットには、対応するユーザーのみがアクセスできます。そのため、システムのユーザー・アクセス制御がそのままウォレットのアクセス制御になります。また、ユーザーがシステムからログアウトすると、そのユーザーのウォレットには実質的にアクセスできなくなります。

- 容易な管理: ウォレットが特定のユーザー・プロファイルに関連付けられているため、ファイル権限を管理する必要がありません。また、ユーザー・プロファイルを削除すると、プロファイルに格納されているウォレットも自動的に削除されます。レジストリ内のウォレットは、Oracle Wallet Managerを使用して作成および管理できます。

14.1.3.1 サポートされているオプション

- レジストリからのウォレットのオープン

- レジストリへのウォレットの保存

- 異なるレジストリ位置に保存する

- レジストリからのウォレットの削除

- ファイル・システムからのウォレットのオープンとレジストリへの保存

- レジストリからのウォレットのオープンとファイル・システムへの保存

関連項目:
『Oracle Databaseプラットフォーム・ガイド』

14.1.4 下位互換性

Oracle Wallet Managerは、リリース8.1.7に対する下位互換性があります。

14.1.5 公開鍵暗号規格(PKCS)サポート

公開鍵暗号規格(略称PKCS)と呼ばれる基本的な暗号規格ファミリは、RSA Security社の一部門であるRSA Laboratoriesと業界、学会および政府の代表者により共同開発されました。これらの標準によって、イントラネットおよびインターネット上のデータを保護するために、公開鍵テクノロジを使用するコンピュータ・システム間の相互運用性を確立します。

Oracle Wallet Managerでは、PKCS #12形式でX.509証明書と秘密鍵を格納し、PKCS #10仕様に従って証明書リクエストを生成します。これらの機能により、Oracleウォレットがサポート対象のサード・パーティ製PKIアプリケーションと相互運用可能な構造になり、オペレーティング・システム間でのウォレットの移植も可能になります。

Oracle Wallet Managerウォレットでは、PKCS #11仕様に準拠するAPIを使用するハードウェア・セキュリティ・モジュールに資格証明を格納できます。ウォレット作成時にPKCS11がウォレット・タイプとして選択されている場合、そのウォレットに格納されているすべての鍵がハードウェア・セキュリティ・モジュールまたはトークンに保管されます。このようなハードウェア・デバイスの例には、秘密鍵の格納または暗号処理の実行(あるいはその両方)を行うスマートカード、PCMCIAカード、スマート・ディスケットなどのポータブル・ハードウェア・デバイスがあります。

注意:
64ビットのSolaris Operating SystemでOracle Wallet ManagerをPKCS #11統合とともに使用するには、コマンドラインでowm -pkcs11と入力します。

関連項目:

- 「サード・パーティ・ツールで作成されたユーザー証明書のインポート」

- 「サード・パーティ環境へのOracleウォレットのエクスポート」

- 「ハードウェア・セキュリティ・モジュール資格証明を格納するためのウォレットの作成」

- PKCS標準に関するドキュメントを参照するには、次のURLにナビゲートしてください。

http://www.rsasecurity.com/rsalabs/

14.1.6 複数証明書サポート

Oracle Wallet Managerにより、複数の証明書を各ウォレットに格納でき、次のいずれかのOracle PKI証明書使用方法がサポートされます。

- SSL認証

- S/MIME署名

- S/MIME暗号化

- コード署名

- CA証明書署名

作成した各証明書リクエストによって、一意の秘密鍵と公開鍵のペアが生成されます。秘密鍵はウォレット内に残り、公開鍵は証明書リクエストとともに認証局に送信されます。認証局が証明書を生成して署名すると、対応する秘密鍵のあるウォレットにのみこの証明書をインポートできるようになります。

このウォレットに別の証明書リクエストも含まれている場合、そのリクエストに対応する秘密鍵と公開鍵のペアは、最初の証明書リクエストのペアとは異なります。この異なる証明書リクエストを認証局に送信すると、別の署名済証明書が提供されます。この証明書は同じウォレットにインポートできます。

単一の証明書リクエストを認証局に複数回送信して、複数の証明書を取得できます。ただし、ウォレットにインストールできるのは、その証明書リクエストに対応する1つの証明書のみです。

Oracle Wallet Managerでは、X.509バージョン3 KeyUsage拡張を使用して、Oracle PKI証明書使用方法を定義しています(表14-1)。単一の証明書をすべての証明書使用方法に適用することはできません。表14-2および表14-3に、有効な使用方法の組合せを示します。

表14-1 KeyUsageの値

値

使用方法

0

digitalSignature

1

nonRepudiation

2

keyEncipherment

3

dataEncipherment

4

keyAgreement

5

keyCertSign

6

cRLSign

7

encipherOnly

8

decipherOnly

Oracle Wallet Managerで証明書をインストールする際、表14-2および表14-3に指定されているように、KeyUsage拡張の値がOracle PKI証明書使用方法にマップされます。

表14-2 Oracle Wallet ManagerによるOracleウォレットへのユーザー証明書のインポート

KeyUsageの値

重要性脚注1

使用方法

なし

NA

証明書は、SSLまたはS/MIME暗号化用にインポート可能

0のみ、または0と任意の値(5および2を除く)

NA

S/MIME署名用またはコード署名用証明書の許可

1のみ

選択

インポート不可

1のみ

選択なし

S/MIME署名用またはコード署名用証明書の許可

2のみ、または2と任意の値の組合せ(5を除く)

NA

SSL用またはS/MIME暗号化用証明書の許可

5のみ、または5と任意の他の値

NA

CA証明書署名用証明書の許可

その他の任意の設定

選択

インポート不可

その他の任意の設定

選択なし

証明書は、SSLまたはS/MIME暗号化用にインポート可能

脚注1 KeyUsage拡張が重要である場合、証明書は他の目的では使用できません。

表14-3 Oracle Wallet ManagerによるOracleウォレットへの信頼できる証明書のインポート

KeyUsageの値

重要性脚注1

使用方法

なし

NA

インポート可能

5を除く任意の組合せ

選択

インポート不可

5を除く任意の組合せ

選択なし

インポート可能

5のみ、または5と任意の他の値

NA

インポート可能

脚注1 KeyUsage拡張が重要である場合、証明書は他の目的では使用できません。

必要なOracle PKI証明書使用方法に対応する正しいKeyUsage値を使用して、認証局から証明書を取得します。1つのウォレットには、同じ使用方法で使用する複数の鍵のペアを含めることができます。証明書ごとに、表14-2および表14-3に示されている複数のOracle PKI証明書使用方法をサポートできます。Oracle PKIアプリケーションでは、必要なPKI証明書使用方法が含まれる最初の証明書が使用されます。

たとえば、使用方法がSSLの場合は、SSL Oracle PKI証明書使用方法が含まれる最初の証明書が使用されます。

SSLの使用方法を含む証明書がない場合、ORA-28885エラー(必須の鍵使用方法のある証明書が見つかりません。)が戻されます。

14.1.7 LDAPディレクトリのサポート

Oracle Wallet Managerは、LDAP準拠のディレクトリに対するウォレットのアップロードおよび検索が可能です。集中化されたLDAP準拠のディレクトリにウォレットを格納すると、ユーザーは複数の場所やデバイスからウォレットにアクセスできるため、信頼性の高い一貫したユーザー認証が保証されます。また、ウォレットのライフ・サイクル全体を通じてウォレットを集中管理できます。ユーザーが有効なウォレットを誤って上書きしないようにするために、インストールされた証明書を含むウォレット以外はアップロードできません。

ユーザーがOracle Wallet Managerを使用してウォレットをアップロードまたはダウンロードできるようにするには、ディレクトリ・ユーザー・エントリをLDAPディレクトリで定義および構成する必要があります。ディレクトリにOracle8i (またはそれ以前の)ユーザーが登録されている場合、それらのユーザーは、ウォレットのアップロードおよびダウンロード機能を初めて使用する際に自動的にアップグレードされます。

Oracle Wallet Managerでは、LDAPディレクトリへの単一パスワード・ベースの接続を使用して、ユーザー・ウォレットをダウンロードします。ただし、開かれているウォレットに、SSLのOracle PKI証明書の使用が指定されている証明書が含まれている場合は、SSL接続でアップロードします。SSLの証明書がウォレットにない場合、パスワード・ベースの認証が使用されます。

注意:
ディレクトリのパスワードとウォレットのパスワードは互いに独立しており、異なる値を設定できます。これらのパスワードは、常に異なったものに維持し、かつ一方から他方を論理的に導出できないようにすることをお薦めします。

関連項目:

- LDAPディレクトリへのウォレットのアップロード

- LDAPディレクトリからのウォレットのダウンロード

- Oracle PKI証明書使用方法の詳細は、「複数証明書サポート」を参照してください。

14.2 Oracle Wallet Managerの起動

Oracle Wallet Managerを起動する手順は、次のとおりです。

- (Windowsの場合)「スタート」→「プログラム」→「Oracle-HOME_NAME」→「Integrated Management Tools」→「Wallet Manager」の順に選択します。

- (UNIX)コマンドラインにowmと入力します。

14.3 完全なウォレットの作成方法: プロセス概要

ウォレットは、ユーザー証明書および接続先の証明書を検証するのに必要なトラスト・ポイントを安全に格納できるリポジトリを提供します。

次の手順は、完全なウォレット作成プロセスの概要を示しています。

1. Oracle Wallet Managerを使用して、新しいウォレットを作成します。

2. 証明書リクエストを生成します。新しいウォレットをOracle Wallet Managerで作成する場合、ツールにより自動的に証明書リクエストの作成を求めるプロンプトが表示されます。

3. 利用するCAに証明書リクエストを送信します。電子メール・メッセージに証明書リクエストのテキストをコピーして貼り付けるか、証明書リクエストをファイルにエクスポートできます。証明書リクエストはウォレットの一部になります。これは、その関連する証明書を削除するまで、ウォレットに残しておく必要があります。

4. CAから署名済のユーザー証明書とそれに関連する信頼できる証明書を受け取ったら、これらの証明書を次の順序でインポートできます。PKCS #7形式のユーザー証明書と信頼できる証明書は、同時にインポートできます。

- 最初にCAの信頼できる証明書をウォレットにインポートします。CAの1つが新しいユーザー証明書を発行し、そのCAの信頼できる証明書がデフォルトでOracle Wallet Managerに存在する場合、この手順はオプションになります。

- 信頼できる証明書を正しくインポートしてから、CAから受け取ったユーザー証明書をウォレットにインポートします。

5. (オプション)ウォレットに自動ログイン機能を設定します。
この機能はパスワードを使用せずにPKIベースでサービスにアクセスできるようにするためのものであり、一般的に、ほとんどのウォレットで必要になります。データベース・サーバーとクライアントのウォレットには必要です。起動時にウォレット・パスワードを取得する製品では、オプションです。

前述のプロセスが完了すると、ユーザー証明書とそれに関連するトラスト・ポイントが含まれるウォレットが設定されます。

関連項目:
これらの手順の詳細は、「証明書の管理」を参照してください。

14.4 ウォレットの管理

ここでは、新規ウォレットを作成する方法、および、証明書リクエストの生成、証明書リクエストのエクスポート、証明書のウォレットへのインポートなどの関連するウォレット管理タスクの実行方法について、次の各項で説明します。

- ウォレット・パスワードの作成に関する必須ガイドライン

- ウォレットの新規作成

- 既存のウォレットのオープン

- ウォレットのクローズ

- サード・パーティ環境へのOracleウォレットのエクスポート

- PKCS #12をサポートしないツールへのOracleウォレットのエクスポート

- LDAPディレクトリへのウォレットのアップロード

- LDAPディレクトリからのウォレットのダウンロード

- 変更の保存

- 開いているウォレットの新しい場所への保存

- システムのデフォルトへの保存

- ウォレットの削除

- パスワードの変更

- 自動ログインの使用

14.4.1 ウォレット・パスワードの作成に関する必須ガイドライン

Oracleウォレットには、複数のデータベースに対してユーザーを認証するために使用されるユーザーの資格証明が含まれているため、ウォレットに対して強力なパスワードを選択することが特に重要となります。悪意のあるユーザーがウォレットのパスワードを知った場合、ウォレットの所有者がアクセス権を持つすべてのデータベースにアクセスする可能性があるためです。

パスワードは、英字と数字または特殊文字を組み合せて8文字以上で指定する必要があります。

注意:
admin0、oracle1、2135551212Aなど、ユーザー名、電話番号または公的機関の識別番号に基づく推測しやすいパスワードは指定しないことをお薦めします。これにより、潜在的な攻撃者が個人情報を使用してユーザーのパスワードを割り出すことを予防できます。また、セキュリティ上の措置として、月に1回または四半期に1回など、定期的にパスワードを変更することをお薦めします。
パスワードを変更する場合は、自動ログイン・ウォレットを再生成する必要があります。

関連項目:

- ウォレット・パスワード管理

- 「自動ログインの使用」

14.4.2 ウォレットの新規作成

Oracle Wallet Managerを使用して、ファイル・システム上のディレクトリに資格証明を格納するPKCS #12ウォレット(標準のデフォルトのウォレット・タイプ)を作成できます。また、これを使用して、PKCS #11ウォレットを作成し、サーバー用のハードウェア・セキュリティ・モジュールに資格証明を格納したり、クライアント用のトークンに秘密鍵を格納することもできます。次の各項では、Oracle Wallet Managerを使用して両タイプのウォレットを作成する方法について説明します。

14.4.2.1 標準ウォレットの作成

ハードウェア・セキュリティ・モジュール(PKCS #11デバイス)がない場合は、ファイル・システムのディレクトリに資格証明を格納する標準ウォレットを使用する必要があります。

標準ウォレットを作成するには、次の手順を実行します。

1. メニュー・バーから「ウォレット」→「新規」を選択します。「新規ウォレット」ダイアログ・ボックスが表示されます。

2. 「ウォレット・パスワードの作成に関する必須ガイドライン」に従って、「ウォレット・パスワード」フィールドにパスワードを入力します。このパスワードにより、資格証明の不正使用を防止します。

3. 「パスワードの確認」フィールドにそのパスワードを再入力します。

4. 「Walletタイプ」リストから「標準」を選択します。

5. 「OK」をクリックして操作を続行します。入力したパスワードが必須ガイドラインに準拠していない場合は、次のメッセージが表示されます。

Password must have a minimum length of eight characters, and contain alphabetic characters combined with numbers or special characters. Do you want to try again?

6. 警告が表示され、空のウォレットが新規に作成されたことが通知されます。証明書リクエストを追加するかどうかが確認されます。「証明書リクエストの追加」を参照してください。
「いいえ」を選択すると、Oracle Wallet Managerのメイン・ウィンドウに戻ります。新規に作成したウォレットがウィンドウの左ペインに表示されます。証明書は「空」の状態で、ウォレットによって、デフォルトの信頼できる証明書が表示されます。

7. 「ウォレット」→「システム・デフォルトに保存」を選択して、新しいウォレットを保存します。
システム・デフォルトにウォレットを保存する権限がない場合は、別の場所に保存できます。この場所は、クライアントとサーバーのSSL構成で使用してください。

ウォレットが正常に保存されたことを確認するメッセージが、ウィンドウの下部に表示されます。

14.4.2.2 ハードウェア・セキュリティ・モジュール資格証明を格納するためのウォレットの作成

PKCS #11に準拠するハードウェア・セキュリティ・モジュールに資格証明を格納するウォレットを作成するには、次の手順を実行します。

1. メニュー・バーから「ウォレット」→「新規」を選択します。「新規ウォレット」ダイアログ・ボックスが表示されます。

2. 「ウォレット・パスワードの作成に関する必須ガイドライン」に従って、「ウォレット・パスワード」フィールドにパスワードを入力します。

3. 「パスワードの確認」フィールドにそのパスワードを再入力します。

4. 「Walletタイプ」リストから「PKCS11」を選択し、「OK」をクリックして続行します。「新しいPKCS11ウォレット」ウィンドウが表示されます。

5. 「ハードウェア・ベンダーの選択」リストからベンダー名を選択します。

注意:
Oracle Wallet Managerの現在のリリースでは、SafeNETおよびnCipherのハードウェアでOracleウォレットとの相互運用が証明されています。

6. 「PKCS11ライブラリのファイル名」フィールドで、PKCS11ライブラリが格納されているディレクトリへのパスを入力するか、「参照」をクリックしてファイル・システムを検索してそのパスを探します。

7. 「スマートカードのパスワード」フィールドにパスワードを入力して「OK」をクリックします。
スマートカードのパスワードはWalletのパスワードとは異なります。このパスワードは、Walletに格納されます。

8. 警告が表示され、空のウォレットが新規に作成されたことが通知されます。証明書リクエストを追加するかどうかが確認されます。詳細は、「証明書リクエストの追加」を参照してください。
「いいえ」を選択すると、Oracle Wallet Managerのメイン・ウィンドウに戻ります。新規に作成したウォレットがウィンドウの左ペインに表示されます。証明書は「空」の状態で、ウォレットによって、デフォルトの信頼できる証明書が表示されます。

9. 「ウォレット」→「システム・デフォルトに保存」を選択して、新しいウォレットを保存します。
システム・デフォルトにウォレットを保存する権限がない場合は、別の場所に保存できます。

ウォレットが正常に保存されたことを確認するメッセージが、ウィンドウの下部に表示されます。

注意:
スマートカード・パスワードを変更したり、PKCS #11ライブラリを移動してから、ウォレットを開こうとすると、エラー・メッセージが表示されます。その後、新規のスマートカード・パスワードまたはライブラリへの新規パスの入力を求めるプロンプトが表示されます。

14.4.3 既存のウォレットのオープン

ファイル・システム・ディレクトリ上にすでに存在しているウォレットを開くには、次の手順を実行します。

1. メニュー・バーから「ウォレット」→「開く」を選択します。「ディレクトリの選択」ダイアログ・ボックスが表示されます。

2. ウォレットが保存されているディレクトリ位置に移動し、そのディレクトリを選択します。

3. 「OK」をクリックします。「ウォレットを開く」ダイアログ・ボックスが表示されます。

4. 「ウォレット・パスワード」フィールドにウォレットのパスワードを入力します。

5. 「OK」をクリックします。
メイン・ウィンドウに戻り、ウォレットが正常に開いたことを示すメッセージがウィンドウの下部に表示されます。Walletの証明書およびその信頼できる証明書が、ウィンドウの左ペインに表示されます。

14.4.4 ウォレットのクローズ

現在選択しているディレクトリで開いているウォレットを閉じるには、次の手順を実行します。

「ウォレット」→「閉じる」を選択します。

ウォレットが閉じたことを示すメッセージがウィンドウの下部に表示されます。

14.4.5 サード・パーティ環境へのOracleウォレットのエクスポート

Oracle Wallet Managerでは、自身のウォレットをサード・パーティの環境にエクスポートできます。

ウォレットをサード・パーティ環境にエクスポートするには、次の手順を実行します。

1. Oracle Wallet Managerを使用して、ウォレット・ファイルを保存します。

2. サード・パーティ製品固有の手順に従って、Oracle Wallet Managerにより作成されたオペレーティング・システム用PKCS #12 ウォレット・ファイル(UNIXおよびWindowsプラットフォーム上ではewallet.p12)をインポートします。

注意:

- Oracle Wallet Managerではウォレットごとに複数の証明書がサポートされますが、現在のブラウザでは、一般的に、単一証明書を含むウォレットのインポートのみがサポートされています。したがって、これらのブラウザにインポートする場合は、単一鍵ペアを含むOracleウォレットをエクスポートする必要があります。

- Oracle Wallet Managerでは、Netscape Communicator 4.7.2以上、OpenSSLおよびMicrosoft Internet Explorer 5.0以上へのウォレット・エクスポートのみがサポートされます。

14.4.6 PKCS #12をサポートしないツールへのOracleウォレットのエクスポート

PKCS #12がサポートされないツールにウォレットを置く必要がある場合は、そのウォレットをテキストベースのPKI形式でエクスポートします。各コンポーネントは、表14-4に示す規格に従ってフォーマットされます。ウォレット内でSSL鍵を使用する証明書のみがウォレットとともにエクスポートされます。

テキストベースのPKI形式でウォレットをエクスポートするには、次の手順を実行します。

1. 「操作」→「ウォレットのエクスポート」を選択します。「ウォレットのエクスポート」ダイアログ・ボックスが表示されます。

2. ウォレット用の宛先ファイル・システム・ディレクトリを入力するか、または「フォルダ」の下のディレクトリ構造に移動します。

3. ウォレットの宛先ファイル名を入力します。

4. 「OK」をクリックしてメイン・ウィンドウに戻ります。

表14-4 PKIウォレットのエンコーディング規格

構成要素

エンコーディング規格

証明連鎖

X509v3

信頼できる証明書

X509v3

秘密鍵

PKCS #8

14.4.7 LDAPディレクトリへのウォレットのアップロード

Oracle Wallet Managerでは、SSL証明書を含むウォレットをLDAPディレクトリにアップロードする場合、SSLが使用されます。それ以外の場合は、ユーザーがディレクトリのパスワードを入力します。

ウォレットを誤って壊してしまうことがないように、Oracle Wallet Managerでは、ターゲットのウォレットが現在開いており、かつ、少なくとも1つのユーザー証明書が含まれている場合を除いて、アップロード・オプションを実行できないようになっています。

ウォレットをアップロードするには、次の手順を実行します。

1. 「ウォレット」→「ディレクトリ・サービス内へのアップロード」を選択します。現在開いているウォレットが保存されていない場合は、次のメッセージを含むダイアログ・ボックスが表示されます。
アップロードする前に、ウォレットを保存する必要があります。

次に進むには、「はい」をクリックします。

2. ウォレットの証明書に、SSLの鍵使用方法が含まれているかどうかがチェックされます。SSLの鍵使用方法を含む証明書がウォレットに見つかるかどうかにより、結果は次のいずれかになります。

- 少なくとも1つの証明書にSSLの鍵使用方法がある場合: LDAPディレクトリ・サーバー・ホスト名とポート情報の入力が要求されたらそれを入力し、「OK」をクリックします。Oracle Wallet Managerにより、SSLを使用してLDAPディレクトリ・サーバーへの接続が試行されます。ウォレットが正常にアップロードされたか、失敗したかを示すメッセージが表示されます。

- どの証明書にもSSLの鍵使用方法がない場合: ユーザーの識別名(DN)、LDAPサーバー・ホスト名およびポート情報の入力が要求されたらそれらを入力し、「OK」をクリックします。Oracle Wallet Managerにより、ウォレットのパスワードがディレクトリ・パスワードと同じであると仮定して、簡易パスワード認証モードを使用してLDAPディレクトリ・サーバーへの接続が試行されます。
接続が失敗すると、指定したDNのディレクトリ・パスワードの入力を求めるダイアログ・ボックスが表示されます。Oracle Wallet Managerにより、このパスワードを使用してLDAPディレクトリ・サーバーへの接続が試行され、失敗すると警告メッセージが表示されます。それ以外の場合、Oracle Wallet Managerは、ウィンドウの下部にアップロードの正常終了を示すメッセージを表示します。

注意:

- 使用する識別名が、LDAPディレクトリのオブジェクト・クラスinetOrgPersonの対応するユーザー・エントリと一致していることを確認する必要があります。

- SSL証明書が含まれるウォレットをアップロードする場合は、SSLポートを使用してください。SSL証明書が含まれないウォレットをアップロードする場合は、非SSLポートを使用してください。

14.4.8 LDAPディレクトリからのウォレットのダウンロード

LDAPディレクトリからダウンロードされたウォレットは作業メモリー内に格納されます。次の項で説明する保存オプションを使用して明示的に保存しないかぎり、ファイル・システムには保存されません。

関連項目:

- 「変更の保存」

- 「開いているウォレットの新しい場所への保存」

- 「システム・デフォルトへの保存」

次の手順で、LDAPディレクトリからウォレットをダウンロードします。

1. 「ウォレット」→「ディレクトリ・サービスからのダウンロード」を選択します。

2. ユーザーの識別名(DN)、LDAPディレクトリ・パスワード、ホスト名およびポート情報の入力を求めるダイアログ・ボックスが表示されます。Oracle Wallet Managerは、簡易パスワード認証を使用してLDAPディレクトリに接続します。
ダウンロード操作が成功したかどうかにより、結果は次のいずれかになります。

- ダウンロードが失敗した場合: ユーザーのDN、LDAPサーバー・ホスト名およびポート情報を正しく入力したかどうかを確認します。使用するポートは、非SSLポートである必要があります。

- ダウンロードが成功した場合: 「OK」をクリックして、ダウンロードしたウォレットを開きます。Oracle Wallet Managerは、ディレクトリのパスワードを使用してウォレットを開こうとします。ディレクトリのパスワードを使用して操作に失敗した場合、ウォレットのパスワードの入力を求めるダイアログ・ボックスが表示されます。
Oracle Wallet Managerでウォレットのパスワードを使用してターゲット・ウォレットを開くことができない場合は、正しいパスワードを入力したかどうかが確認されます。成功すると、ウィンドウの下部にウォレットが正常にダウンロードされたことを示すメッセージが表示されます。

14.4.9 変更の保存

現在開いているウォレットに対する変更を保存するには、次の手順を実行します。

「ウォレット」→「保存」を選択します。

選択したディレクトリ位置のウォレットに、ウォレットの変更が正しく保存されたことを確認するメッセージが、ウィンドウの下部に表示されます。

14.4.10 開いているウォレットの新しい場所への保存

開いているウォレットを新しい場所に保存するには、「別名保存」メニュー・オプションを使用します。

1. 「ウォレット」→「別名保存」を選択します。「ディレクトリの選択」ダイアログ・ボックスが表示されます。

2. ウォレットを保存するディレクトリの場所を選択します。

3. 「OK」をクリックします。
選択した場所にウォレットがすでに存在している場合は、次のメッセージが表示されます。

A wallet already exists in the selected path. Do you want to overwrite it?

既存のウォレットを上書きする場合は「はい」を選択し、ウォレットを別の場所に保存する場合は「いいえ」を選択します。

ウィンドウの下部に、選択したディレクトリの場所にウォレットが正常に保存されたことを示すメッセージが表示されます。

14.4.11 システム・デフォルトへの保存

デフォルトのディレクトリの場所にウォレットを保存するには、「システム・デフォルトに保存」メニュー・オプションを使用します。

「ウォレット」→「システム・デフォルトに保存」を選択します。

ウォレットがシステム・デフォルトのウォレット位置に正常に保存されたことを確認するメッセージが、ウィンドウの下部に表示されます。UNIXおよびWindowsプラットフォームでは、この位置は次のとおりです。

- (UNIX) $ORACLE_HOME/owm/wallets/username - ORACLE_HOME環境変数が設定されている場合
./owm/wallets/username - ORACLE_HOME環境変数が設定されていない場合

- (WINDOWS) ORACLE_HOME\owm\wallets\username - ORACLE_HOME環境変数が設定されている場合
.\owm\wallets\username - ORACLE_HOME環境変数が設定されていない場合

注意:

- SSLでは、システム・デフォルトのディレクトリの場所に保存されているウォレットが使用されます。

- Oracleアプリケーションの中には、システム・デフォルト以外の場所にあるウォレットを使用できないものがあります。使用するアプリケーションのOracleマニュアルを参照し、ウォレットをデフォルトのウォレット・ディレクトリ位置に置く必要があるかどうかを判断してください。

14.4.12 ウォレットの削除

次の手順で、現在開かれているウォレットを削除します。

1. 「ウォレット」→「削除」を選択します。「ウォレットの削除」ダイアログ・ボックスが表示されます。

2. 表示されたウォレット・ロケーションをチェックして、削除しようとしているウォレットが正しいことを確認します。

3. ウォレットのパスワードを入力します。

4. 「OK」をクリックします。ウォレットが正常に削除されたことを通知するダイアログ・パネルが表示されます。

注意:
アプリケーション・メモリー内で開いているウォレットはすべて、アプリケーションを終了するまでメモリー内に残ります。したがって、使用中のウォレットを削除しても、システム・オペレーションに直接影響することはありません。

14.4.13 パスワードの変更

パスワードの変更は、すぐに有効になります。ウォレットは、現在選択されているディレクトリにパスワードで暗号化されて保存されます。

注意:
自動ログインを有効化したウォレットを使用している場合は、パスワードの変更後に自動ログイン・ウォレットを再生成する必要があります。「自動ログインの使用」を参照してください。

現在開いているウォレットのパスワードを変更するには、次の手順を実行します。

1. 「ウォレット」→「パスワードの変更」を選択します。「ウォレット・パスワードの変更」ダイアログ・ボックスが表示されます。

2. 既存のウォレット・パスワードを入力します。

3. 新しいパスワードを入力します。

4. 新しいパスワードを再度入力します。

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

パスワードが正常に変更されたことを確認するメッセージが、ウィンドウの下部に表示されます。

関連項目:

- 「ウォレット・パスワードの作成に関する必須ガイドライン」

- パスワード・ポリシー制限の詳細は、「ウォレット・パスワード管理」を参照してください。

14.4.14 自動ログインの使用

ユーザーが必要なパスワードを手動で入力しなくても済むよう、サービスに対するPKIベースのアクセスを有効化できます。この機能は自動ログインと呼ばれます。自動ログインを有効化すると、ウォレットの不明瞭化されたコピーが作成されます。これは、ウォレットの自動ログイン機能を無効化するまで自動的に使用されます。

自動ログイン・ウォレットは、ファイル・システム権限によって保護されます。ウォレットの自動ログインを有効化すると、そのウォレットを作成したオペレーティング・システム・ユーザーのみがOracle Wallet Managerでウォレットを管理できるようになります。

複数のOracleデータベースに対するシングル・サインオン・アクセスを希望する場合は、自動ログインを有効化する必要があります。通常、このようなアクセスはデフォルトで無効化されています。不明瞭化された自動ログイン・ウォレットは、シングル・サインオン機能をサポートするため、SSOウォレットと呼ばれることもあります。

14.4.14.1 自動ログインの有効化

自動ログインを有効化するには、次の手順を実行します。

1. メニュー・バーから「ウォレット」を選択します。

2. 「自動ログイン」を選択します。ウィンドウの下部に、自動ログインが有効化されたことを示すメッセージが表示されます。

14.4.14.2 自動ログインの無効化

自動ログインを無効化するには、次の手順を実行します。

1. メニュー・バーから「ウォレット」を選択します。

2. 自動ログインの選択を解除します。ウィンドウの下部に、自動ログインが無効化されたことを示すメッセージが表示されます。

14.5 証明書の管理

すべての証明書は、ネットワーク・アイデンティティを対応する公開鍵とバインドする署名付きのデータ構造体です。表14-5に、この章で区別される2つのタイプの証明書を示します。

表14-5 証明書のタイプ

証明書のタイプ

例

ユーザー証明書

公開鍵/秘密鍵交換でエンド・エンティティの識別情報を証明するためにサーバーまたはユーザーに対して発行される証明書

信頼できる証明書

ユーザー証明書を発行して署名する認証局など、信頼できるエンティティを表す証明書

次の各項では、両方のタイプの証明書を管理する方法について説明します。

- ユーザー証明書の管理

- 信頼できる証明書の管理

注意:
ユーザー証明書をインストールするには、そのユーザー証明書を発行した認証局を表す信頼できる証明書がウォレットに含まれている必要があります。ただし、新しいウォレットを作成するたびに、公的に信頼できて、広く使用されている証明書がいくつか自動的にインストールされます。必要な認証局が表示されない場合、最初にその証明書をインストールする必要があります。
また、PKCS#7証明連鎖形式を使用してインポートすることもできます。この形式では、ユーザー証明書とCA証明書が同時に提供されます。

14.5.1 ユーザー証明書の管理

ユーザー証明書(サーバー証明書を含む)は、エンド・ユーザー、スマートカード、Webサーバーのようなアプリケーションによって使用されます。たとえば、CAがWebサーバーの識別名(DN)を「サブジェクト」フィールドに入力して証明書を発行すると、Webサーバーが証明書所有者となり、このユーザー証明書のユーザーとなります。

ユーザー証明書の管理には、次のタスクがあります。

- 証明書リクエストの追加

- ウォレットへのユーザー証明書のインポート

- サード・パーティによって作成された証明書およびウォレットのインポート

- ウォレットからのユーザー証明書の削除

- 証明書リクエストの削除

- ユーザー証明書のエクスポート

- ユーザー証明書リクエストのエクスポート

14.5.1.1 証明書リクエストの追加

Oracle Wallet Managerを使用すると、複数の証明書リクエストを追加できます。Oracle Wallet Managerでは、複数のリクエストを追加すると、以降のリクエスト・ダイアログ・ボックスに初期リクエストの内容が自動的に表示されます。ユーザーはこの内容を編集できます。

実際の証明書リクエストがウォレットの一部になります。証明書リクエストのいずれかを再利用して、新規証明書を取得できます。ただし、既存の証明書リクエストは編集できません。適切な情報を入力した証明書リクエストのみをウォレットに格納してください。

PKCS #10証明書リクエストを作成するには、次の手順を実行します。

1. 「操作」→「証明書リクエストの追加」を選択します。「証明書リクエストの追加」ダイアログ・ボックスが表示されます。

注意:
証明書リクエスト情報を入力するダイアログ・ボックスなどのモーダル・ダイアログ・ボックスが表示されているとき、Oracle Wallet Managerオンライン・ヘルプは応答しません。モーダル・ダイアログ・ボックスを閉じると、オンライン・ヘルプが応答するようになります。

2. 表14-6で指定されている情報を入力します。

3. 「OK」をクリックします。証明書リクエストが正常に作成されたことを示すメッセージが表示されます。このダイアログ・パネルの本文から証明書リクエストのテキストをコピーして、それを認証局に送信する電子メール・メッセージに貼り付けるか、またはその証明書リクエストをファイルにエクスポートできます。この時点で、Oracle Wallet Managerにより秘密鍵と公開鍵のペアが作成され、ウォレットに格納されます。認証局が証明書を発行すると、この証明書もウォレットに格納され、対応する秘密鍵に関連付けられます。

4. 「OK」をクリックして、Oracle Wallet Managerのメイン・ウィンドウに戻ります。証明書の状態が「リクエスト済」に変わります。

関連項目:
「ユーザー証明書リクエストのエクスポート」

表14-6 証明書リクエスト: フィールドと説明

フィールド名

説明

共通名

必須です。ユーザーの識別情報またはサービスの識別情報の名前を入力します。名/姓の形式でユーザー名を入力します。

例: Eileen.Sanger

組織単位

オプションです。識別情報の組織単位の名前を入力します。例: 財務

組織

オプションです。識別情報の組織の名前を入力します。例: XYZ Corp.

市町村

オプションです。識別情報が常駐する地方または市の名前を入力します。

都道府県

オプションです。識別情報が常駐する都道府県の完全名を入力します。

2文字からなる省略形を受け入れない認証局もあるため、都道府県は完全名で入力してください。

国

必須です。「国」を選択して、国の略称のリストを表示します。その組織がある国名を選択します。

鍵サイズ

必須です。「鍵のサイズ」を選択して、公開鍵と秘密鍵のペアを作成するときに使用する鍵サイズのリストを表示します。鍵サイズの値は、表14-7を参照してください。

詳細

オプションです。「詳細」を選択して、「証明書リクエストの詳細」ダイアログ・パネルを表示します。このフィールドを使用して、識別情報の識別名(DN)を編集またはカスタマイズします。たとえば、都道府県名や地域名を編集できます。

表14-7に、使用可能な鍵サイズと各サイズで提供される関連セキュリティを示します。一般的に、CAは1024または2048の鍵サイズを使用します。証明書所有者が鍵の長期保有を希望する場合は、3072または4096ビットの鍵を選択します。

表14-7 使用可能な鍵サイズ

鍵サイズ

関連セキュリティ・レベル

512または768

セキュアとはみなされない。

1024または2048

安全である。

3072または4096

きわめて安全である。

14.5.1.2 ウォレットへのユーザー証明書のインポート

認証局から証明書が付与される場合、テキスト(BASE64)形式の証明書を含む電子メールか、証明書がバイナリ・ファイルとして添付された電子メールが届きます。

注意:
認証局は、証明書をPKCS #7証明連鎖または個別のX.509証明書として送信します。Oracle Wallet Managerではどちらのタイプもインポートできます。
PKCS #7証明連鎖は証明書の集合体です。ユーザーの証明書以外に、それを裏付ける信頼できるCA証明書およびサブCA証明書がすべて含まれます。

一方、X.509証明書ファイルには、個々の証明書が含まれ、裏付け用の証明連鎖は含まれません。

ただし、このような個々の証明書をインポートするには、署名者の証明書がウォレット内の信頼できる証明書である必要があります。

14.5.1.2.1 認証局の電子メールのテキストからユーザー証明書をインポートする手順

電子メール・メッセージからテキスト(BASE64)形式の証明書をコピーします。Begin CertificateからEnd Certificateまでをコピーしてください。

1. 「操作」→「ユーザー証明書のインポート」を選択します。「証明書のインポート」ダイアログ・ボックスが表示されます。

2. 「証明書の貼付け」を選択し、「OK」をクリックします。別の「証明書のインポート」ダイアログ・ボックスに次のメッセージが表示されます。

Please provide a base64 format certificate and paste it below.

3. ダイアログ・ボックスに証明書を貼り付けて、「OK」をクリックします。

1. PKCS#7形式の証明書を受信した場合、この証明書はインストールされます。このPKCS#7データと一緒に含まれていた他の証明書はすべて、信頼できる証明書のリストに追加されます。

2. PKCS#7形式以外の証明書を受信した場合、そのCAの証明書が信頼できる証明書のリストにまだなければ、追加手順が必要になります。Oracle Wallet Managerにより、証明書を発行したCAの証明書をインポートするよう求められます。このCA証明書は、信頼できる証明書のリストに追加されます。(CA証明書がすでに信頼できる証明書のリストに存在している場合、追加手順なしで証明書がインポートされます。)

(a)または(b)が成功した場合は、ウィンドウの下部に証明書が正常にインストールされたことを示すメッセージが表示されます。Oracle Wallet Managerのメイン・パネルに戻り、左パネルのサブツリー内にある対応するエントリの状態が「待機中」に変わります。

注意:
標準X.509証明書には、次の開始テキストと終了テキストが含まれます。

- -----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

一般的なPKCS#7証明書には、前述のようにさらに多くの情報が含まれています。開始テキストと終了テキストは次のとおりです。

- -----BEGIN PKCS7-----
-----END PKCS7-----

コピーするには、ダッシュを含めてすべて選択し、[Ctrl]キーを押しながら[C]キーを押し、貼り付けるには、[Ctrl]キーを押しながら[V]キーを押します。

14.5.1.2.2 ファイルから証明書をインポートする手順

ファイル内のユーザー証明書は、テキスト(BASE64)形式またはバイナリ(der)形式になります。

1. 「操作」→「ユーザー証明書のインポート」を選択します。「証明書のインポート」ダイアログ・ボックスが表示されます。

2. 「証明書を含むファイルを選択」を選択し、「OK」をクリックします。別の「証明書のインポート」ダイアログ・ボックスが表示されます。

3. 証明書ファイルがあるパス名またはフォルダ名を入力します。

4. 証明書ファイルの名前(cert.txt、cert.derなど)を選択します。

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

1. PKCS#7形式の証明書を受信した場合、この証明書はインストールされます。このPKCS#7データと一緒に含まれていた他の証明書はすべて、信頼できる証明書のリストに追加されます。

2. PKCS#7形式以外の証明書を受信した場合、そのCAの証明書が信頼できる証明書のリストにまだなければ、追加手順が必要になります。Oracle Wallet Managerにより、証明書を発行したCAの証明書をインポートするよう求められます。このCA証明書は、信頼できる証明書のリストに追加されます。(CA証明書がすでに信頼できる証明書のリストに存在している場合、追加手順なしで証明書がインポートされます。)

(a)または(b)が成功した場合は、ウィンドウの下部に証明書が正常にインストールされたことを示すメッセージが表示されます。Oracle Wallet Managerのメイン・パネルに戻り、左パネルのサブツリー内にある対応するエントリの状態が「待機中」に変わります。

14.5.1.3 サード・パーティによって作成された証明書およびウォレットのインポート

サード・パーティ証明書とは、Oracle Wallet Managerを使用して生成されなかった証明書リクエストから作成された証明書のことです。このようなサード・パーティ証明書には、ユーザー証明書の他にその証明書の秘密鍵も含まれるため、実際にはウォレットです。さらに、サード・パーティ証明書には、証明書が信頼できるエンティティによって作成されたことを示す信頼できる証明書の連鎖が含まれます。

これらのウォレットは、Oracle Wallet ManagerによりPKCS#12形式でインポートすることにより、1回の手順で使用可能になります。この形式には、前述の3つの要素(ユーザー証明書、秘密鍵および信頼できる証明書)がすべて含まれます。次のPKCS #12形式の証明書がサポートされています。

- Netscape Communicator 4.x以上

- Microsoft Internet Explorer 5.x以上

Oracle Wallet ManagerはPKCS#12標準に準拠しているため、PKCS#12準拠ツールによってエクスポートされた証明書はOracle Wallet Managerで使用できます。

こうしたサード・パーティ証明書は、秘密鍵と信頼できる認証局の連鎖がないため、既存のOracleウォレットに格納することはできません。かわりに、こうした証明書はそれぞれ、独立したPKCS#12ファイルとして、つまり独自のウォレットとしてエクスポートおよび取得されます。

14.5.1.3.1 サード・パーティ・ツールで作成されたユーザー証明書のインポート

サード・パーティによって作成されたウォレットを利用するには、この項で説明するように、そのウォレットをインポートする必要があります。

サード・パーティ・ツールを使用して作成された証明書をインポートするには、次の手順を実行します。

1. 特定の製品固有の手順に従って、証明書をエクスポートします。エクスポート元製品の指示に従って秘密鍵をエクスポートに含め、エクスポートされた証明書を保護するための新しいパスワードを指定します。関連するトラスト・ポイントもすべて含めます。(PKCS #12では、ブラウザは必ずしも署名者自身の証明書以外に信頼できる証明書をエクスポートするとはかぎりません。接続先に対する認証のために、別の証明書を追加する必要がある場合があります。Oracle Wallet Managerを使用して、信頼できる証明書をインポートできます。)
証明書、秘密鍵およびトラスト・ポイントが含まれたエクスポート・ファイルは、サード・パーティ証明書を使用可能にする新しいウォレットになります。

2. ウォレットを特定のアプリケーションまたはサーバー(WebサーバーやLDAPサーバーなど)で使用できるようにするには、ウォレットを正確に配置する必要があります。必要なウォレットが含まれていると想定されるディレクトリは、アプリケーションごとに異なります。ウォレットを正しいシステムおよびディレクトリにコピーして、適切に検索されるようにする必要があります。

3. UNIXまたはWindowsアプリケーションまたはサーバーで使用する場合、ウォレットにewallet.p12という名前を付ける必要があります。
その他のオペレーティング・システムについては、該当するオペレーティング・システム固有のOracleマニュアルを参照してください。

サード・パーティ証明書がewallet.p12として格納されると、Oracle Wallet Managerで開いて管理できるようになります。このウォレットをエクスポートする場合、作成したパスワードを入力する必要があります。

注意:
このパスワードは、関連するアプリケーションを起動するたびに、または証明書が必要になるたびに要求されます。このようなアクセスを自動化するには、「自動ログインの使用」を参照してください。
ただし、必要な証明書の秘密鍵が別のハードウェア・セキュリティ・モジュールで保持されている場合、その証明書をインポートすることはできません。

14.5.1.4 ウォレットからのユーザー証明書の削除

次の手順で、ウォレットからユーザー証明書を削除します。

1. 左パネルのサブツリーで、削除する証明書を選択します。

2. 「操作」→「ユーザー証明書の削除」を選択します。ダイアログ・パネルが表示され、ウォレットからそのユーザー証明書を削除するかどうか確認を求められます。

3. 「はい」を選択して、Oracle Wallet Managerのメイン・パネルに戻ります。証明書の状態として「要求済」が表示されます。

14.5.1.5 証明書リクエストの削除

リクエストを削除するには、該当する証明書を事前に削除する必要があります。

証明書リクエストを削除するには、次の手順を実行します。

1. 左パネルのサブツリーで、削除する証明書リクエストを選択します。

2. 「操作」→「証明書リクエストの削除」を選択します。

3. 「はい」をクリックします。証明書の状態として「空」が表示されます。

14.5.1.6 ユーザー証明書のエクスポート

ファイル・システム・ディレクトリに証明書を保存するには、次の手順を使用して証明書をエクスポートします。

1. 左パネルのサブツリーで、エクスポートする証明書を選択します。

2. メニュー・バーから「操作」→「ユーザー証明書のエクスポート」を選択します。証明書のエクスポート・ダイアログ・ボックスが表示されます。

3. 証明書を保存するファイル・システムのディレクトリ位置を入力するか、または「フォルダ」の下のディレクトリ構造に移動します。

4. 「ファイル名」フィールドに、証明書のファイル名を入力します。

5. 「OK」をクリックします。証明書が正しくファイルにエクスポートされたことを確認するメッセージが、ウィンドウの下部に表示されます。Oracle Wallet Managerのメイン・ウィンドウに戻ります。

関連項目:
ウォレットのエクスポートの詳細は、「サード・パーティ環境へのOracleウォレットのエクスポート」を参照してください。Oracle Wallet Managerは単一のウォレットへの複数の証明書の格納をサポートしていますが、現在のブラウザの多くは、単一証明書を含むウォレットのみをサポートすることに注意してください。したがって、このようなブラウザを使用している場合は、単一鍵ペアを含むOracleウォレットをエクスポートする必要があります。

14.5.1.7 ユーザー証明書リクエストのエクスポート

ファイル・システム・ディレクトリに証明書リクエストを保存するには、次の手順を使用して証明書リクエストをエクスポートします。

1. 左パネルのサブツリーで、エクスポートする証明書リクエストを選択します。

2. 「操作」→「証明書リクエストのエクスポート」を選択します。「証明書リクエストのエクスポート」ダイアログ・ボックスが表示されます。

3. 証明書リクエストを保存するファイル・システムのディレクトリ位置を入力するか、または「フォルダ」の下のディレクトリ構造に移動します。

4. 「ファイル名」フィールドに、証明書リクエストのファイル名を入力します。

5. 「OK」を選択します。証明書リクエストが正しくファイルにエクスポートされたことを確認するメッセージが、ウィンドウの下部に表示されます。Oracle Wallet Managerのメイン・ウィンドウに戻ります。

14.5.2 信頼できる証明書の管理

信頼できる証明書の管理には、次のタスクがあります。

- 信頼できる証明書のインポート

- 信頼できる証明書の削除

- 信頼できる証明書のエクスポート

- すべての信頼できる証明書のエクスポート

14.5.2.1 信頼できる証明書のインポート

認証局から受信する電子メールから貼り付けるか、ファイルからインポートするかのいずれかの方法で、信頼できる証明書をウォレットにインポートできます。

Oracle Wallet Managerでは、新規ウォレットの作成時に、VeriSign社、RSA社、Entrust社およびGTE CyberTrust社の信頼できる証明書が自動的にインストールされます。

14.5.2.1.1 テキスト(BASE64)形式の信頼できる証明書をコピーして貼り付ける手順

ユーザー証明書が含まれている電子メール・メッセージが届いたら、本文から信頼できる証明書をコピーします。Begin CertificateからEnd Certificateまでをコピーしてください。

1. メニュー・バーから「操作」→「信頼できる証明書のインポート」を選択します。「信頼できる証明書のインポート」ダイアログ・パネルが表示されます。

2. 「証明書の貼付け」を選択し、「OK」をクリックします。別の「信頼できる証明書のインポート」ダイアログ・パネルに次のメッセージが表示されます。

Please provide a base64 format certificate and paste it below.

3. ウィンドウに証明書を貼り付けて、「OK」をクリックします。ウィンドウの下部に、信頼できる証明書が正常にインストールされたことを示すメッセージが表示されます。

4. 「OK」をクリックします。Oracle Wallet Managerのメイン・パネルに戻り、信頼できる証明書が「信頼できる証明書」ツリーの下部に表示されます。

証明書のコピーと貼付けに使用するキーボード・ショートカットは、次のとおりです。

コピーするには[Ctrl]キーを押しながら[C]キーを押し、貼り付けるには[Ctrl]キーを押しながら[V]キーを押します。

14.5.2.1.2 信頼できる証明書を含むファイルをインポートする手順

信頼できる証明書を含むファイルはテキスト(BASE64)またはバイナリ(der)形式で保存されている必要があります。

1. 「操作」→「信頼できる証明書のインポート」を選択します。「信頼できる証明書のインポート」ダイアログ・パネルが表示されます。

2. 信頼できる証明書があるパス名またはフォルダ名を入力します。

3. 信頼できる証明書ファイルの名前(cert.txtなど)を選択します。

4. 「OK」をクリックします。ウィンドウの下部に、信頼できる証明書がウォレットに正常にインポートされたことを示すメッセージが表示されます。

5. 「OK」をクリックしてダイアログ・パネルを終了します。Oracle Wallet Managerのメイン・パネルに戻り、信頼できる証明書が「信頼できる証明書」ツリーの下部に表示されます。

14.5.2.2 信頼できる証明書の削除

信頼できる証明書は、ウォレットに存在するユーザー証明書の署名に使用されている場合は削除できません。このような信頼できる証明書を削除するには、それによって署名された証明書を事前に削除する必要があります。また、信頼できる証明書がウォレットから削除された後は、関連する証明書を検証できません。

次の手順で、信頼できる証明書をウォレットから削除します。

1. 「信頼できる証明書」ツリーのリストから信頼できる証明書を選択します。

2. メニュー・バーから「操作」→「信頼できる証明書の削除」を選択します。
ダイアログ・パネルに警告が表示され、署名に使用した信頼できる証明書を削除すると、受信者側でユーザー証明書を検証できなくなることが通知されます。

3. 「はい」を選択します。選択した信頼できる証明書が、「信頼できる証明書」ツリーから削除されます。

14.5.2.3 信頼できる証明書のエクスポート

次の手順で、別のファイル・システム位置に信頼できる証明書をエクスポートします。

1. 左パネルのサブツリーで、エクスポート対象の信頼できる証明書を選択します。

2. 「操作」→「信頼できる証明書のエクスポート」を選択します。「信頼できる証明書のエクスポート」ダイアログ・ボックスが表示されます。

3. 信頼できる証明書を保存するファイル・システムのディレクトリを入力するか、または「フォルダ」の下のディレクトリ構造に移動します。

4. 信頼できる証明書の保存先のファイル名を入力します。

5. 「OK」をクリックします。Oracle Wallet Managerのメイン・ウィンドウに戻ります。

14.5.2.4 すべての信頼できる証明書のエクスポート

信頼できるすべての証明書を別のファイル・システムにエクスポートするには、次の手順を実行します。

1. 「操作」→「すべての信頼できる証明書のエクスポート」を選択します。「信頼できる証明書のエクスポート」ダイアログ・ボックスが表示されます。

2. 信頼できる証明書を保存するファイル・システムのディレクトリ位置を入力するか、または「フォルダ」の下のディレクトリ構造に移動します。

3. 信頼できる証明書の保存先のファイル名を入力します。

4. 「OK」をクリックします。Oracle Wallet Managerのメイン・ウィンドウに戻ります。

15 複数の認証方式の構成およびOracle Advanced Securityの無効化

この章では、Oracle Advanced Securityで複数の認証方式を構成する方法、および別の認証方式を構成している場合においても従来のユーザー名とパスワードによる認証を使用する方法について説明します。また、この章では、Oracleクライアントが特定の認証方式を使用できるように、および、指定された任意の方式をOracleサーバーが受け入れることができるように、ネットワークを構成する方法について説明します。

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

- ユーザー名とパスワードによる接続

- Oracle Advanced Security認証の無効化

- 複数の認証方式の構成

- 外部認証のためのOracle Databaseの構成

15.1 ユーザー名とパスワードによる接続

Oracle Advanced Security認証方式が構成されている場合に、ユーザー名とパスワードを使用してOracleデータベース・サーバーに接続するには、外部認証を無効化します(「Oracle Advanced Security認証の無効化」を参照)。

外部認証を無効化すると、ユーザーは次の形式を使用してデータベースに接続できます。

% sqlplus username@net_service_name
Enter password: password

例:

% sqlplus hr@emp
Enter password: password

注意:
単一データベースに、外部認証ユーザーとパスワード認証ユーザーの両方を含む複数の認証方式を構成できます。

15.2 Oracle Advanced Security認証の無効化

認証方式を無効化するには、Oracle Net Managerを使用します(「Oracle Net Managerの起動」を参照)。

1. Oracle Advanced Securityプロファイルにナビゲートします。「Oracle Advanced Securityプロファイルへのナビゲート」を参照してください。図15-1に示すように、「Oracle Advanced Security」タブ・ウィンドウが表示されます。

図15-1 Oracle Advanced Securityの「認証」ウィンドウ

1. 「認証」タブをクリックします。

2. 「選択メソッド」リスト内の認証方式を順番に選択して左矢印[<]をクリックすることによって「使用可能なメソッド」リストにすべて移動します。

3. 「ファイル」→「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルが次のエントリで更新されます。

SQLNET.AUTHENTICATION_SERVICES = (NONE)

15.3 複数の認証方式の構成

多くのネットワークにおいて、単一のセキュリティ・サーバーで複数の認証方式が使用されています。そのため、Oracle Advanced Securityでは、Oracleクライアントが特定の認証方式を使用できるように、および、Oracleデータベース・サーバーが指定された任意の方式を受け入れることができるように、ネットワークを構成できます。

Oracle Net Managerを使用するか、または任意のテキスト・エディタを使用してsqlnet.oraファイルを変更することによって、クライアント・システムとサーバー・システムの両方で複数の認証方式を設定できます。

クライアントとサーバーの両方に認証方式を追加するには、Oracle Net Managerを使用します(「Oracle Net Managerの起動」を参照)。

複数の認証方式を構成する手順は、次のとおりです。

1. Oracle Advanced Securityプロファイルにナビゲートします。「Oracle Advanced Securityプロファイルへのナビゲート」を参照してください。図15-1に示すように、「Oracle Advanced Security」タブ・ウィンドウが表示されます。

2. 「認証」タブをクリックします。

3. 「使用可能なメソッド」リストに一覧表示されている方式を選択します。

4. 右矢印(>)をクリックして、選択した方式を順番に「選択メソッド」リストに移動します。

5. 選択した方式を目的の利用順に並べます。そのためには、「選択メソッド」リストで方式を選択し、「上へ」または「下へ」を選択してリスト内での位置を変更します。

6. 「ファイル」→「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルが次のエントリで更新され、選択した認証方式が一覧表示されます。

SQLNET.AUTHENTICATION_SERVICES = (KERBEROS5, RADIUS)

注意:
SecurID機能はRADIUSによって提供されます。RADIUSサポートはRSA ACE/Serverに組み込まれています。

関連項目:
詳細は、第11章「RADIUS認証の構成」を参照してください。

15.4 外部認証のためのOracle Databaseの構成

この項では、次のタスクを使用してネットワーク認証用にOracle Databaseを構成する際に設定するパラメータについて説明します。

- sqlnet.oraでのSQLNET.AUTHENTICATION_SERVICESパラメータの設定

- OS_AUTHENT_PREFIXのNull値への設定

関連項目:

- 特定の認証方式を構成する方法の詳細は、このガイドの該当する章を参照してください。

- 付録B「認証パラメータ」

15.4.1 sqlnet.oraでのSQLNET.AUTHENTICATION_SERVICESパラメータの設定

サポートされている認証方式をすべてのクライアントおよびサーバーで使用できるようにするには、sqlnet.oraファイルで次のパラメータを設定する必要があります。

SQLNET.AUTHENTICATION_SERVICES=(oracle_authentication_method)

たとえば、すべてのクライアントおよびサーバーでKerberos認証を使用する場合、sqlnet.oraパラメータを次のように設定する必要があります。

SQLNET.AUTHENTICATION_SERVICES=(KERBEROS5)

15.4.2 OS_AUTHENT_PREFIXのNull値への設定

認証サービス・ベースのユーザー名は長くてもかまいませんが、Oracleユーザー名は30文字までに制限されています。データベース・インスタンス用の初期化ファイルにあるOS_AUTHENT_PREFIXパラメータには、次のようにnull値を指定することをお薦めします。

OS_AUTHENT_PREFIX=""

注意:
OS_AUTHENT_PREFIXのデフォルト値はOPS$ですが、任意の文字列に設定できます。

注意:
データベースでOS_AUTHENT_PREFIXの値がすでにNULL (" ")以外に設定されている場合は、変更しないでください。変更すると、以前に作成され、外部で識別されたユーザーがOracleサーバーに接続できなくなる可能性があります。

ユーザーを作成するには、SQL*Plusを起動し、次のように入力します。

SQL> CREATE USER os_authent_prefix username IDENTIFIED EXTERNALLY;

OS_AUTHENT_PREFIXがnull値(" ")に設定されている場合は、次のように入力してユーザーkingを作成します。

SQL> CREATE USER king IDENTIFIED EXTERNALLY;

このようにユーザーを作成すると、外部で識別されたユーザーの様々なユーザー名の管理が不要になり、管理者の手間が省けるという利点があります。これは、サポートされているすべての認証方式に当てはまります。

関連項目:

- 『Oracle Database管理者ガイド』

- 『Oracle Database Heterogeneous Connectivityユーザーズ・ガイド』

第V部

付録

第IV部は、次の参照用の付録で構成されています。

- 付録A「データ暗号化および整合性パラメータ」

- 付録B「認証パラメータ」

- 付録C「RADIUSを使用した認証デバイスの統合」

- 付録D「Oracle Advanced Security FIPS 140の設定」

- 付録E「orapkiユーティリティ」

- 付録F「Entrust対応のSecure Sockets Layer認証」

A データ暗号化および整合性パラメータ

この付録では、Oracle Advanced Securityでサポートされている暗号化とデータ整合性のパラメータについて説明します。また、第9章「Oracleサーバーとクライアントに対するネットワーク・データの暗号化および整合性の構成」と第13章「Secure Sockets Layer認証の構成」で説明されているネットワーク構成の実行によって生成されるsqlnet.oraファイルの例も示します。

この付録のトピックは次のとおりです。

- サンプルsqlnet.oraファイル

- データ暗号化および整合性パラメータ

A.1 サンプルsqlnet.oraファイル

この項では、似た特性を持つ一連のクラインと似た特性を持つ一連のサーバーのsqlnet.ora構成ファイルのサンプルを示します。このファイルには、Oracle Advanced Securityの暗号化とデータ整合性のパラメータの例が含まれています。

トレース・ファイル設定

#Trace file setup
trace_level_server=16
trace_level_client=16
trace_directory_server=/orant/network/trace
trace_directory_client=/orant/network/trace
trace_file_client=cli
trace_file_server=srv
trace_unique_client=true

Oracle Advanced Securityの透過的データ暗号化設定

ENCRYPTION_WALLET_LOCATION = (SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY =
/etc/ORACLE/WALLETS/oracle)))

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

#ASO Encryption
sqlnet.encryption_server=accepted
sqlnet.encryption_client=requested
sqlnet.encryption_types_server=(AES_256)
sqlnet.encryption_types_client=(AES_256)

Oracle Advanced Securityのネットワーク・データ整合性設定

#ASO Checksum
sqlnet.crypto_checksum_server=requested
sqlnet.crypto_checksum_client=requested
sqlnet.crypto_checksum_types_server = (SHA1)
sqlnet.crypto_checksum_types_client = (SHA1)

Secure Sockets Layer設定

#SSL
WALLET_LOCATION = (SOURCE=
(METHOD = FILE)
(METHOD_DATA =
DIRECTORY=/wallet)

SSL_CIPHER_SUITES=(SSL_RSA_WITH_3DES_EDE_CBC_SHA)
SSL_VERSION= 3
SSL_CLIENT_AUTHENTICATION=FALSE

共通設定

#Common
automatic_ipc = off
sqlnet.authentication_services = (beq)
names.directory_path = (TNSNAMES)

Kerberos設定

#Kerberos
sqlnet.authentication_services = (beq, kerberos5)
sqlnet.authentication_kerberos5_service = oracle
sqlnet.kerberos5_conf= /krb5/krb.conf
sqlnet.kerberos5_keytab= /krb5/v5srvtab
sqlnet.kerberos5_realms= /krb5/krb.realm
sqlnet.kerberos5_cc_name = /krb5/krb5.cc
sqlnet.kerberos5_clockskew=900
sqlnet.kerberos5_conf_mit=false

RADIUS設定

#Radius
sqlnet.authentication_services = (beq, RADIUS )
sqlnet.radius_authentication_timeout = (10)
sqlnet.radius_authentication_retries = (2)
sqlnet.radius_authentication_port = (1645)
sqlnet.radius_send_accounting = OFF
sqlnet.radius_secret = /orant/network/admin/radius.key
sqlnet.radius_authentication = radius.us.example.com
sqlnet.radius_challenge_response = OFF
sqlnet.radius_challenge_keyword = challenge
sqlnet.radius_challenge_interface =
oracle/net/radius/DefaultRadiusInterface
sqlnet.radius_classpath = /jre1.1/

A.2 データ暗号化および整合性パラメータ

サーバー暗号化、クライアント暗号化、サーバー・チェックサムまたはクライアント・チェックサムの値を指定しない場合、対応する構成パラメータはsqlnet.oraファイルに含まれません。ただし、Oracle Advanced SecurityによってデフォルトでACCEPTEDに設定されます。

データ暗号化と整合性の両方のアルゴリズムでは、サーバーは、そのサーバーのsqlnet.oraファイル内のアルゴリズムのうち、クライアントのsqlnet.oraファイル、またはクライアントのsqlnet.oraファイルにアルゴリズムがリストされていない場合はクライアントのインストール済リストにリストされているアルゴリズムに、最初に一致するものを選択します。サーバーのsqlnet.oraファイルにエントリがない場合、サーバーはそのインストール済リストを順に検索して、クライアント側(クライアントのsqlnet.oraファイルまたはクライアントのインストール済リスト)の項目と照合します。一致するアルゴリズムが見つからず、接続の一方でアルゴリズムのタイプ(データ暗号化または整合性)がREQUIREDである場合、接続は失敗します。それ以外の場合、接続はアルゴリズムのタイプinactiveで成功します。

データ暗号化と整合性のアルゴリズムは、互いに独立して選択されます。表A-1に示すように、暗号化は整合性なしでアクティブにでき、整合性は暗号化なしでアクティブにできます。

表A-1 アルゴリズムのタイプの選択

暗号化の選択

整合性の選択

選択

選択なし

選択

選択

選択なし

選択

選択なし

選択なし

関連項目:

- 第9章「Oracleサーバーとクライアントに対するネットワーク・データの暗号化および整合性の構成」

- 「暗号化および整合性のアクティブ化について」

次の各項では、データ暗号化および整合性パラメータについて説明します。

- SQLNET.ENCRYPTION_SERVERパラメータ

- SQLNET.ENCRYPTION_CLIENTパラメータ

- SQLNET.SSL_EXTENDED_KEY_USAGEパラメータ

- SQLNET.CRYPTO_CHECKSUM_SERVERパラメータ

- SQLNET.CRYPTO_CHECKSUM_CLIENTパラメータ

- SQLNET.ENCRYPTION_TYPES_SERVERパラメータ

- SQLNET.ENCRYPTION_TYPES_CLIENTパラメータ

- SQLNET.CRYPTO_CHECKSUM_TYPES_SERVERパラメータ

- SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENTパラメータ

A.2.1 SQLNET.ENCRYPTION_SERVERパラメータ

このパラメータでは、クライアントまたはクライアントとして機能しているサーバーがこのサーバーに接続する際の暗号化動作を指定します。サーバーの動作は、接続の相手側のSQLNET.ENCRYPTION_CLIENTの設定に部分的に依存します。

表A-2 SQLNET.ENCRYPTION_SERVERパラメータの属性

属性

説明

構文

SQLNET.ENCRYPTION_SERVER = valid_value

有効な値

ACCEPTED、REJECTED、REQUESTED、REQUIRED

デフォルト設定

ACCEPTED

A.2.2 SQLNET.ENCRYPTION_CLIENTパラメータ

このパラメータでは、このクライアントまたはクライアントとして機能しているサーバーがサーバーに接続する際の暗号化動作を指定します。クライアントの動作は、接続の相手側のSQLNET.ENCRYPTION_SERVERの設定値に部分的に依存します。

表A-3 SQLNET.ENCRYPTION_CLIENTパラメータの属性

属性

説明

構文

SQLNET.ENCRYPTION_CLIENT = valid_value

有効な値

ACCEPTED、REJECTED、REQUESTED、REQUIRED

デフォルト設定

ACCEPTED

A.2.3 SQLNET.SSL_EXTENDED_KEY_USAGEパラメータ

このパラメータでは、拡張鍵使用方法を使用して常にクライアント認証を使用するSecure Sockets Layer証明書を設定します。

表A-4 SQLNET.EXTENDED_KEY_USAGEパラメータの属性

属性

説明

構文

SQLNET.SSL_EXTENDED_KEY_USAGE = valid_value

有効な値

client authentication

デフォルト設定

client authentication

A.2.4 SQLNET.CRYPTO_CHECKSUM_SERVERパラメータ

このパラメータでは、クライアントまたはクライアントとして機能している別のサーバーがこのサーバーに接続する際のデータ整合性動作を指定します。動作は、接続の相手側のSQLNET.CRYPTO_CHECKSUM_CLIENTの設定に部分的に依存します。

表A-5 SQLNET.CRYPTO_CHECKSUM_SERVERパラメータの属性

属性

説明

構文

SQLNET.CRYPTO_CHECKSUM_SERVER = valid_value

有効な値

ACCEPTED、REJECTED、REQUESTED、REQUIRED

デフォルト設定

ACCEPTED

A.2.5 SQLNET.CRYPTO_CHECKSUM_CLIENTパラメータ

このパラメータでは、このクライアントまたはクライアントとして機能しているサーバーがサーバーに接続する際のデータ整合性動作を指定します。動作は、接続の相手側のSQLNET.CRYPTO_CHECKSUM_SERVERの設定に部分的に依存します。

表A-6 SQLNET.CRYPTO_CHECKSUM_CLIENTパラメータの属性

属性

説明

構文

SQLNET.CRYPTO_CHECKSUM_CLIENT = valid_value

有効な値

ACCEPTED、REJECTED、REQUESTED、REQUIRED

デフォルト設定

ACCEPTED

A.2.6 SQLNET.ENCRYPTION_TYPES_SERVERパラメータ

このパラメータでは、このサーバーで使用する暗号化アルゴリズムのリストをアルゴリズムの使用順に指定します。このリストは、相互に使用可能なアルゴリズムを接続のクライアント側とネゴシエートする際に使用されます。各アルゴリズムは、一致するものが見つかるまで、使用可能なクライアント・アルゴリズムのタイプのリストに対してチェックされます。インストールされていないアルゴリズムをサーバー側で指定した場合、接続はエラー・メッセージORA-12650で終了します。

表A-7 SQLNET.ENCRYPTION_TYPES_SERVERパラメータの属性

属性

説明

構文

SQLNET.ENCRYPTION_TYPES_SERVER = (valid_encryption_algorithm [,valid_encryption_algorithm])

有効な値

- AES256: AES (256ビット鍵サイズ)

- AES192: AES (192ビット鍵サイズ)

- 3DES168: 3つの鍵を使用するTriple-DES (有効な鍵サイズは168ビット)

- AES128: AES (128ビット鍵サイズ)

- 3DES112: 2つの鍵を使用するTriple-DES (有効な鍵サイズは112ビット)

デフォルト設定

ローカルのsqlnet.oraファイルでアルゴリズムが定義されていない場合、インストールされているすべてのアルゴリズムが前述の順でネゴシエーションに使用されます。

使用上の注意

複数の暗号化アルゴリズムを指定できます。単一値またはアルゴリズム名のリストを指定できます。たとえば、次の暗号化パラメータはいずれも使用できます。

SQLNET.ENCRYPTION_TYPES_SERVER=(AES_256)

SQLNET.ENCRYPTION_TYPES_SERVER=(3DES112,3DES168)

A.2.7 SQLNET.ENCRYPTION_TYPES_CLIENTパラメータ

このパラメータでは、このクライアントまたはクライアントとして機能しているサーバーで使用する暗号化アルゴリズムのリストを指定します。このリストは、相互に使用可能なアルゴリズムを接続の相手側とネゴシエートする際に使用されます。インストールされていないアルゴリズムをクライアント側で指定した場合、接続はORA-12650エラー・メッセージで終了します。

表A-8 SQLNET.ENCRYPTION_TYPES_CLIENTパラメータの属性

属性

説明

構文

SQLNET.ENCRYPTION_TYPES_CLIENT = (valid_encryption_algorithm [,valid_encryption_algorithm])

有効な値

- AES256: AES (256ビット鍵サイズ)

- AES192: AES (192ビット鍵サイズ)

- 3DES168: 3つの鍵を使用するTriple-DES (有効な鍵サイズは168ビット)

- AES128: AES (128ビット鍵サイズ)

- 3DES112: 2つの鍵を使用するTriple-DES (有効な鍵サイズは112ビット)

デフォルト設定

ローカルのsqlnet.oraファイルでアルゴリズムが定義されていない場合、インストールされているすべてのアルゴリズムがネゴシエーションに使用されます。

使用上の注意

複数の暗号化アルゴリズムを指定できます。

A.2.8 SQLNET.CRYPTO_CHECKSUM_TYPES_SERVERパラメータ

このパラメータでは、このサーバーまたは別のサーバーのクライアントで使用するデータ整合性アルゴリズムのリストをアルゴリズムの使用順に指定します。このリストは、相互に使用可能なアルゴリズムを接続の相手側とネゴシエートする際に使用されます。各アルゴリズムは、一致するものが見つかるまで、使用可能なクライアント・アルゴリズムのタイプのリストに対してチェックされます。インストールされていないアルゴリズムをサーバー側で指定した場合、接続はORA-12650エラー・メッセージで終了します。

表A-9 SQLNET.CRYPTO_CHECKSUM_TYPES_SERVERパラメータの属性

属性

説明

構文

SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (valid_crypto_checksum_algorithm [,valid_crypto_checksum_algorithm])

有効な値

SHA1: Secure Hash Algorithm

デフォルト設定

ローカルのsqlnet.oraファイルでアルゴリズムが定義されていない場合、インストールされているすべてのアルゴリズムが前述の順でネゴシエーションに使用されます。

A.2.9 SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENTパラメータ

このパラメータでは、このクライアントまたはクライアントとして機能しているサーバーで使用するデータ整合性アルゴリズムのリストを指定します。このリストは、相互に使用可能なアルゴリズムを接続の相手側とネゴシエートする際に使用されます。クライアント側にインストールされていないアルゴリズムを指定した場合、接続はORA-12650エラー・メッセージで終了します。

表A-10 SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENTパラメータの属性

属性

説明

構文

SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT = (valid_crypto_checksum_algorithm [,valid_crypto_checksum_algorithm])

有効な値

SHA1: Secure Hash Algorithm

デフォルト設定

ローカルのsqlnet.oraファイルでアルゴリズムが定義されていない場合、インストールされているすべてのアルゴリズムがネゴシエーションに使用されます。

B 認証パラメータ

この付録では、Kerberos、RADIUSまたはSSL認証を使用する場合のプロファイル・ファイル(sqlnet.ora)とデータベース初期化ファイルの認証パラメータによるサンプル構成ファイルについて説明します。

この付録のトピックは次のとおりです。

- Kerberos認証を使用するクライアントとサーバーのパラメータ

- RADIUS認証を使用するクライアントとサーバーのパラメータ

- Secure Sockets Layerを使用するクライアントとサーバーのパラメータ

B.1 Kerberos認証を使用するクライアントとサーバーのパラメータ

Kerberosを使用するクライアントとサーバーの構成ファイルに挿入するパラメータのリストを次に示します。

表B-1 Kerberos認証パラメータ

ファイル名

構成パラメータ

sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES=(KERBEROS5)
SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=oracle
SQLNET.KERBEROS5_CC_NAME=/usr/tmp/DCE-CC
SQLNET.KERBEROS5_CLOCKSKEW=1200
SQLNET.KERBEROS5_CONF=/krb5/krb.conf
SQLNET.KERBEROS5_CONF_MIT=(FALSE)
SQLNET.KERBEROS5_REALMS=/krb5/krb.realms
SQLNET.KERBEROS5_KEYTAB=/krb5/v5sLrvtab
SQLNET.FALLBACK_AUTHENTICATION=FALSE

初期化パラメータ・ファイル

OS_AUTHENT_PREFIX=""

B.2 RADIUS認証を使用するクライアントとサーバーのパラメータ

次の各項では、RADIUS認証のパラメータについて説明します。

- sqlnet.oraファイルのパラメータ

- 最小限のRADIUSパラメータ

- 初期化ファイル・パラメータ

B.2.1 sqlnet.oraファイルのパラメータ

次の各項では、RADIUS認証の指定に使用するsqlnet.oraパラメータについて説明します。

B.2.1.1 SQLNET.AUTHENTICATION_SERVICESパラメータ

このパラメータでは、RADIUSアダプタを使用するようにクライアントまたはサーバーを構成します。表B-2に、このパラメータの属性を示します。

表B-2 SQLNET.AUTHENTICATION_SERVICESパラメータの属性

属性

説明

構文

SQLNET.AUTHENTICATION_SERVICES=(radius)

デフォルト設定

なし

B.2.1.2 SQLNET.RADIUS_AUTHENTICATIONパラメータ

このパラメータでは、プライマリRADIUSサーバーの場所(ホスト名またはドット区切りの10進形式)を構成します。RADIUSサーバーがOracleサーバーとは異なるコンピュータ上にある場合は、そのコンピュータのホスト名またはIPアドレスを指定する必要があります。表B-3に、このパラメータの属性を示します。

表B-3 SQLNET.RADIUS_AUTHENTICATIONパラメータの属性

属性

説明

構文

SQLNET.RADIUS_AUTHENTICATION=RADIUS_server_IP_address

デフォルト設定

localhost

B.2.1.3 SQLNET.RADIUS_AUTHENTICATION_PORTパラメータ

このパラメータでは、プライマリRADIUSサーバーのリスニング・ポートを設定します。表B-4に、このパラメータの属性を示します。

表B-4 SQLNET.RADIUS_AUTHENTICATION_PORTパラメータの属性

属性

説明

構文

SQLNET.RADIUS_AUTHENTICATION_PORT=port_number

デフォルト設定

1645

B.2.1.4 SQLNET.RADIUS_AUTHENTICATION_TIMEOUTパラメータ

このパラメータでは、応答を待機する時間を設定します。表B-5に、このパラメータの属性を示します。

表B-5 SQLNET.RADIUS_AUTHENTICATION_TIMEOUTパラメータの属性

属性

説明

構文

SQLNET.RADIUS_AUTHENTICATION_TIMEOUT=time_in_seconds

デフォルト設定

5

B.2.1.5 SQLNET.RADIUS_AUTHENTICATION_RETRIESパラメータ

このパラメータでは、認証情報を再送信する回数を設定します。表B-6に、このパラメータの属性を示します。

表B-6 SQLNET.RADIUS_AUTHENTICATION_RETRIESパラメータの属性

属性

説明

構文

SQLNET.RADIUS_AUTHENTICATION_RETRIES=n_times_to_resend

デフォルト設定

3

B.2.1.6 SQLNET.RADIUS_SEND_ACCOUNTINGパラメータ

このパラメータでは、アカウンティングのオンとオフを切り替えます。アカウンティングを有効にした場合、パケットは、1を加えたリスニング・ポートでアクティブなRADIUSサーバーに送信されます。デフォルトでは、パケットはポート1646に送信されます。この機能は、RADIUSサーバーでアカウンティングがサポートされ、ユーザーがシステムにログオンする回数を追跡する場合にのみオンにする必要があります。表B-7に、このパラメータの属性を示します。

表B-7 SQLNET.RADIUS_SEND_ACCOUNTINGパラメータの属性

属性

説明

構文

SQLNET.RADIUS_SEND_ACCOUNTING=on

デフォルト設定

off

B.2.1.7 SQLNET.RADIUS_SECRETパラメータ

このパラメータでは、RADIUS秘密鍵のファイル名と場所を指定します。表B-8に、このパラメータの属性を示します。

表B-8 SQLNET.RADIUS_SECRETパラメータの属性

属性

説明

構文

SQLNET.RADIUS_SECRET=path_to_RADIUS_secret_key

デフォルト設定

$ORACLE_HOME/network/security/radius.key

B.2.1.8 SQLNET.RADIUS_ALTERNATEパラメータ

このパラメータでは、プライマリ・サーバーをフォルト・トレランスに使用できなくなった場合に使用する代替RADIUSサーバーの場所を設定します。表B-9に、このパラメータの属性を示します。

表B-9 SQLNET.RADIUS_ALTERNATEパラメータの属性

属性

説明

構文

SQLNET.RADIUS_ALTERNATE=alternate_RADIUS_server_hostname_or_IP_address

デフォルト設定

off

B.2.1.9 SQLNET.RADIUS_ALTERNATE_PORTパラメータ

このパラメータでは、代替RADIUSサーバーのリスニング・ポートを設定します。表B-10に、このパラメータの属性を示します。

表B-10 SQLNET.RADIUS_ALTERNATE_PORTパラメータの属性

属性

説明

構文

SQLNET.RADIUS_ALTERNATE_PORT=alternate_RADIUS_server_listening_port_number

デフォルト設定

1645

B.2.1.10 SQLNET.RADIUS_ALTERNATE_TIMEOUTパラメータ

このパラメータでは、代替RADIUSサーバーの応答を待機する時間を設定します。表B-11に、このパラメータの属性を示します。

表B-11 SQLNET.RADIUS_ALTERNATE_TIMEOUTパラメータの属性

属性

説明

構文

SQLNET.RADIUS_ALTERNATE_TIMEOUT=time_in_seconds

デフォルト設定

5

B.2.1.11 SQLNET.RADIUS_ALTERNATE_RETRIESパラメータ

このパラメータでは、代替RADIUSサーバーでメッセージを再送信する回数を設定します。表B-12に、このパラメータの属性を示します。

表B-12 SQLNET.RADIUS_ALTERNATE_RETRIESパラメータの属性

属性

説明

構文

SQLNET.RADIUS_ALTERNATE_RETRIES=n_times_to_resend

デフォルト設定

3

B.2.1.12 SQLNET.RADIUS_CHALLENGE_RESPONSEパラメータ

このパラメータでは、チャレンジ・レスポンス(非同期)モードのオンとオフを切り替えます。表B-13に、このパラメータの属性を示します。

表B-13 SQLNET.RADIUS_CHALLENGE_RESPONSEパラメータの属性

属性

説明

構文

SQLNET.RADIUS_CHALLENGE_RESPONSE=on

デフォルト設定

off

B.2.1.13 SQLNET.RADIUS_CHALLENGE_KEYWORDパラメータ

このパラメータでは、RADIUSサーバーからのチャレンジを要求するためのキーワードを設定します。ユーザーはクライアントでパスワードを入力しません。表B-14に、このパラメータの属性を示します。

表B-14 SQLNET.RADIUS_CHALLENGE_KEYWORDパラメータの属性

属性

説明

構文

SQLNET.RADIUS_CHALLENGE_KEYWORD=keyword

デフォルト設定

challenge

B.2.1.14 SQLNET.RADIUS_AUTHENTICATION_INTERFACEパラメータ

このパラメータでは、RADIUSがチャレンジ・レスポンス(非同期)モードの場合に、グラフィカル・ユーザー・インタフェースを含むJavaクラスの名前を設定します。表B-15に、このパラメータの属性を示します。

表B-15 SQLNET.RADIUS_AUTHENTICATION_INTERFACEパラメータの属性

属性

説明

構文

SQLNET.RADIUS_AUTHENTICATION_INTERFACE=Java_class_name

デフォルト設定

DefaultRadiusInterface (oracle/net/radius/DefaultRadiusInterface)

B.2.1.15 SQLNET.RADIUS_CLASSPATHパラメータ

チャレンジ・レスポンス認証モードを使用する場合、RADIUSは、最初にパスワード、続いて追加情報(トークン・カードから取得する動的パスワードなど)を要求するJavaベースのグラフィカル・ユーザー・インタフェースをユーザーに表示します。sqlnet.oraファイルにSQLNET.RADIUS_CLASSPATHパラメータを追加して、そのグラフィカル・インタフェースのJavaクラスを設定し、JDK Javaライブラリへのパスを設定します。表B-16に、このパラメータの属性を示します。

表B-16 SQLNET.RADIUS_CLASSPATHパラメータの属性

属性

説明

構文

SQLNET.RADIUS_CLASSPATH=path_to_GUI_Java_classes

デフォルト設定

$ORACLE_HOME/jlib/netradius.jar:$ORACLE_HOME/JRE/lib/sparc/native_threads

B.2.2 最小限のRADIUSパラメータ

sqlnet.authentication_services = (radius)
sqlnet.radius.authentication = IP-address-of-RADIUS-server

B.2.3 初期化ファイル・パラメータ

OS_AUTHENT_PREFIX=""

B.3 Secure Sockets Layerを使用するクライアントとサーバーのパラメータ

パラメータの構成方法は2つあります。

- 静的: sqlnet.oraファイルに存在するパラメータの名前。SSL_CIPHER_SUITESやSSL_VERSIONなどのパラメータは、listener.oraファイルを使用して構成することもできます。

- 動的: Oracle Netアドレスのセキュリティ・サブセクションで使用されるパラメータの名前。

B.3.1 Secure Sockets Layer認証パラメータ

この項では、サーバーでSSLを構成するための静的パラメータと動的パラメータについて説明します。

属性

説明

パラメータ名(静的)

SQLNET.AUTHENTICATION_SERVICES

パラメータ名(動的)

AUTHENTICATION

パラメータ・タイプ

文字列LIST

パラメータ・クラス

静的

設定できる値

使用可能な認証サービスのリストにTCPSを追加します。

デフォルト値

デフォルト値はありません。

説明

ユーザーが使用する認証サービスを制御します。
注意: 動的バージョンでは、1つのタイプの設定のみがサポートされます。

既存/新規パラメータ

既存

構文(静的)

SQLNET.AUTHENTICATION_SERVICES = (TCPS, selected_method_1, selected_method_2)

例(静的)

SQLNET.AUTHENTICATION_SERVICES = (TCPS, radius)

構文(動的)

AUTHENTICATION = string

例(動的)

AUTHENTICATION = (TCPS)

B.3.2 暗号スイート・パラメータ

この項では、暗号スイートを構成するための静的パラメータと動的パラメータについて説明します。

属性

説明

パラメータ名(静的)

SSL_CIPHER_SUITES

パラメータ名(動的)

SSL_CIPHER_SUITES

パラメータ・タイプ

文字列LIST

パラメータ・クラス

静的

設定できる値

既知のSSL暗号スイート

デフォルト値

デフォルトなし

説明

SSLで使用する暗号化とデータ整合性の組合せを制御します。

既存/新規パラメータ

既存

構文(静的)

SSL_CIPHER_SUITES=(SSL_cipher_suite1[, SSL_cipher_suite2, ... SSL_cipher_suiteN])

例(静的)

SSL_CIPHER_SUITES=(SSL_DH_DSS_WITH_DES_CBC_SHA)

構文(動的)

SSL_CIPHER_SUITES=(SSL_cipher_suite1
[, SSL_cipher_suite2, ...SSL_cipher_suiteN])

例(動的)

SSL_CIPHER_SUITES=(SSL_DH_DSS_WITH_DES_CBC_SHA)

B.3.2.1 サポートされているSSL暗号スイート

Oracle Advanced Securityでは、次の暗号スイートをサポートしています。

- SSL_RSA_WITH_3DES_EDE_CBC_SHA

- SSL_DH_anon_WITH_3DES_EDE_CBC_SHA

- SSL_RSA_WITH_AES_128_CBC_SHA

- SSL_RSA_WITH_AES_256_CBC_SHA

Advanced Encryption Standard (AES)を使用する暗号スイートは、Transport Layer Security (TLS 1.0)でのみ使用できます。

B.3.3 Secure Sockets Layerバージョン・パラメータ

この項では、使用するSSLのバージョンを構成するための静的パラメータと動的パラメータについて説明します。

属性

説明

パラメータ名(静的)

SSL_VERSION

パラメータ名(動的)

SSL_VERSION

パラメータ・タイプ

文字列

パラメータ・クラス

静的

設定できる値

SSLで有効なバージョン。値は次のとおりです。
undetermined | 3.0 | 1.0 | 1.1 | 1.2

あるバージョンまたは別のバージョンを指定する場合は、"or"を使用します。次の値を使用できます。

1.0 or 3.0 | 1.2 or 3.0 | 1.1 or 1.0 | 1.2 or 1.0 | 1.2 or 1.1 | 1.1 or 1.0 or 3.0 | 1.2 or 1.0 or 3.0 | 1.2 or 1.1 or 1.0 | 1.2 or 1.1 or 3.0 | 1.2 or 1.1 or 1.0 or 3.0

デフォルト値

"0"

説明

SSL接続のバージョンを強制します。

既存/新規パラメータ

新規

構文(静的)

SSL_VERSION=version

例(静的)

SSL_VERSION=1.0 or 3.0

構文(動的)

SSL_VERSION=version

例(動的)

SSL_VERSION=3.0

B.3.4 Secure Sockets Layerクライアント認証パラメータ

この項では、クライアントでSSLを構成するための静的パラメータと動的パラメータについて説明します。

属性

説明

パラメータ名(静的)

SSL_CLIENT_AUTHENTICATION

パラメータ名(動的)

SSL_CLIENT_AUTHENTICATION

パラメータ・タイプ

ブール

パラメータ・クラス

静的

設定できる値

TRUE/FALSE

デフォルト値

TRUE

説明

クライアント(サーバーに加えて)をSSLを使用して認証するかどうかを制御します。

既存/新規パラメータ

新規

構文(静的)

SSL_CLIENT_AUTHENTICATION={TRUE | FALSE}

例(静的)

SSL_CLIENT_AUTHENTICATION=FALSE

構文(動的)

SSL_CLIENT_AUTHENTICATION={TRUE | FALSE}

例(動的)

SSL_CLIENT_AUTHENTICATION=FALSE

B.3.4.1 SSL X.509サーバー照合パラメータ

この項では、クライアントの接続先サーバーの識別情報を検証するために使用されるパラメータについて説明します。

B.3.4.1.1 SSL_SERVER_DN_MATCH

属性

説明

パラメータ名

SSL_SERVER_DN_MATCH

格納場所

sqlnet.ora

用途

このパラメータを使用して、サーバーの識別名(DN)とそのサービス名の一致を強制します。一致確認を強制する場合は、SSLによって証明書がサーバーからのものであることが保証されます。一致確認を強制しない場合、SSLによるチェックは実行されるものの、一致しているかどうかに関係なく接続は許可されます。一致を強制しないと、サーバーの識別情報の偽装が可能になります。

値

yes|on|true。一致を強制します。DNとサービス名が一致した場合、接続は正しく行われ、それ以外の場合、接続は失敗します。
no|off|false。一致を強制しません。DNがサービス名と一致していない場合、接続は成功しますが、エラーがsqlnet.logファイルに記録されます。

デフォルト

Oracle8i以上: FALSE。SSLクライアントは(常に)サーバーDNをチェックします。サービス名と一致していない場合、接続は成功しますが、エラーがsqlnet.logファイルに記録されます。

使用上の注意

さらに、tnsnames.oraのパラメータSSL_SERVER_CERT_DNもサーバーDNの一致を有効にするように構成します。

B.3.4.1.2 SSL_SERVER_CERT_DN

属性

説明

パラメータ名

SSL_SERVER_CERT_DN

格納場所

tnsnames.ora。接続先のサーバーごとにクライアントに格納するか、接続先のサーバーごとにLDAPディレクトリに格納し、一元的に更新できます。

用途

このパラメータでは、サーバーの識別名(DN)を指定します。クライアントは、サーバーのDNとそのサービス名が確実に一致するように、この情報を使用して、各サーバーに予定しているDNのリストを取得します。

値

サーバーの識別名(DN)と等しい値を指定します。

デフォルト

n/a

使用上の注意

さらに、sqlnet.oraのパラメータSSL_SERVER_DN_MATCHもサーバーDNの一致を有効にするように構成します。

例

dbalias=(description=address_list=(address=(protocol=tcps)(host=hostname)(port=portnum)))(connect_data=(sid=Finance))(security=(SSL_SERVER_CERT_DN="CN=Finance,CN=OracleContext,C=US,O=Acme"))

B.3.5 ウォレット・ロケーション

セキュリティ資格証明をプロセス領域にロードするためにウォレットにアクセスする必要があるアプリケーションでは、次の各構成ファイルで表B-17に示すウォレット・ロケーション・パラメータを指定する必要があります。

- sqlnet.ora

- listener.ora

表B-17 ウォレット・ロケーション・パラメータ

静的構成

動的構成

WALLET_LOCATION =

(SOURCE=

(METHOD=File)

(METHOD_DATA=

(DIRECTORY=your wallet location)

)

)

MY_WALLET_DIRECTORY

= your_wallet_dir

デフォルトのウォレット・ロケーションはORACLE_HOMEディレクトリです。

C RADIUSを使用した認証デバイスの統合

この付録では、サード・パーティ認証ベンダーがRADIUSチャレンジ・レスポンス・ユーザー・インタフェースを独自のデバイスに合わせてカスタマイズする方法について説明します。

この付録のトピックは次のとおりです。

- RADIUSチャレンジ・レスポンス・ユーザー・インタフェースについて

- RADIUSチャレンジ・レスポンス・ユーザー・インタフェースのカスタマイズ

関連項目:
第11章「RADIUS認証の構成」

C.1 RADIUSチャレンジ・レスポンス・ユーザー・インタフェースについて

RADIUS規格をサポートする任意の認証デバイスを、Oracleユーザーが認証されるように設定できます。認証デバイスでチャレンジ・レスポンス・モードを使用する場合、グラフィカル・インタフェースでユーザーはまずパスワードの入力、次に追加情報の入力を求められます。たとえば、ユーザーがトークン・カードから取得する動的パスワードがあります。このインタフェースはJavaベースで、最適なプラットフォーム独立性を提供します。

認証デバイスのサード・パーティ・ベンダーは、その独自のデバイスに合わせてこのグラフィカル・ユーザー・インタフェースをカスタマイズする必要があります。たとえば、スマートカード・ベンダーは、チャレンジをスマートカード・リーダーに発行するようにOracleクライアントをカスタマイズします。スマートカードはチャレンジを受け取ると、ユーザーにPINなどの追加情報の入力を求めることで応答します。

C.2 RADIUSチャレンジ・レスポンス・ユーザー・インタフェースのカスタマイズ

このインタフェースは、表C-1に示す機能をサポートする独自のクラスを作成することでカスタマイズできます。次にsqlnet.oraファイルを開き、SQLNET.RADIUS_AUTHENTICATION_INTERFACEパラメータを探して、そこにリストされているクラスの名前(DefaultRadiusInterface)を作成した新しいクラスの名前に置き換えます。この変更をsqlnet.oraファイルで行うと、クラスは認証プロセスを処理するためにOracleクライアントにロードされます。

サード・パーティは、ORACLE.NET.RADIUSパッケージにあるOracle RADIUSインタフェースを実装する必要があります。

public interface OracleRadiusInterface {
public void radiusRequest();
public void radiusChallenge(String challenge);
public String getUserName();
public String getPassword();
}

表C-1 サーバー暗号化レベルの設定

パラメータ

説明

radiusRequest

通常は、ユーザーにユーザー名とパスワードの入力を求めます。これらは後でgetUserNameとgetPasswordを使用して取得されます。

getUserName

ユーザーが入力したユーザー名を抽出します。空の文字列が戻された場合、ユーザーが操作をキャンセルするとみなされます。その後、ユーザーは認証に失敗したことを示すメッセージを受信します。

getPassword

ユーザーが入力したパスワードを抽出します。getUserNameが有効な文字列を戻し、getPasswordが空の文字列を戻した場合、データベースによってチャレンジ・キーワードがパスワードとして使用されます。ユーザーが有効なパスワードを入力した場合、チャレンジがRADIUSサーバーから戻される場合と戻されない場合がります。

radiusChallenge

ユーザーがサーバーのチャレンジに応答できるように、RADIUSサーバーから送信された要求を表示します。

getResponse

ユーザーが入力した応答を抽出します。有効な応答が戻された場合、その情報が新しいAccess-RequestパケットのUser-Password属性に移入されます。空の文字列が戻された場合、操作は対応する値を戻すことによって両側から中断されます。

D Oracle Advanced Security FIPS 140の設定

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

- FIPS 140の設定について

- FIPS 140-2用のOracle Databaseの構成

- FIPS 140-1用のOracle Databaseの構成

D.1 FIPS 140の設定について

この付録では、米国連邦情報処理標準(FIPS)の現在の標準である140-2および140-1用にOracle Databaseを構成する方法について説明します。現在の動作保証のステータスの情報は、米国標準技術局(National Institute of Standards and Technology)のコンピュータ・セキュリティ・リソース・センター(Computer Security Resource Center: CSRC)のWebサイトの次のアドレスで確認できます。

http://csrc.nist.gov/

FIPS固有の情報は、Validated FIPS 140 Cryptographic Modulesを検索してください。このサイトで証明書の検証に成功すると使用できるようになるセキュリティ・ポリシーには、ホスト・オペレーティング・システムのセキュアな構成に関する要件が含まれています。

D.2 FIPS 140-2用のOracle Databaseの構成

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

- FIPS 140-2の設定について

- SSLFIPS_140パラメータの構成

- 暗号スイートの選択

- インストール後のチェック

- FIPS接続の検証

D.2.1 FIPS 140-2の設定について

Oracle Database 10gに含まれるSSLの暗号ライブラリは、FIPS 140-2 Level 2の証明書に準拠するように設計されています。Oracle Advanced Securityでは、SSL認証にこれらの暗号ライブラリが使用されます。

この付録に示す手順は、Oracle Databaseリリース11.2.0.4以降に適用されます。リリース11.2.0.4へのアップグレードの詳細は、Oracle Technology Networkのサイトを参照してください。

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index-092322.html

D.2.2 SSLFIPS_140パラメータの構成

Oracle Advanced SecurityのSSLアダプタは、fips.oraファイルのSSLFIPS_140パラメータをTRUEに設定することによって、FIPSモードで実行するように構成できます。

SSLFIPS_140=TRUE

このパラメータは、デフォルトでFALSEに設定されています。FIPSモードで操作するには、クライアントとサーバーの両方でTRUEに設定する必要があります。

fips.oraファイルが$ORACLE_HOME/ldap/adminディレクトリにあるか、またはFIPS_HOME環境変数によって指定されていることを確認します。この手順は、任意のデータベース・サーバーまたはクライアントの任意のOracleホームで繰り返すことができます。

注意:
Oracle Database 10g リリース2 (10.2)で使用されたSQLNET.SSLFIPS_140パラメータは、SSLFIPS_140パラメータに置換されます。このパラメータは、sqlnet.oraファイルではなくfips.oraファイルで設定する必要があります。

D.2.3 暗号スイートの選択

暗号スイートは、ネットワーク・ノード間でメッセージを交換するために使用される認証、暗号化およびデータ整合性のアルゴリズムのセットです。たとえば、SSLハンドシェイク時に、メッセージを送受信するときに使用する暗号スイートを確認するために2つのノード間でネゴシエーションが行われます。

FIPS検証では、次の暗号スイートのみが承認されます。

- SSL_DH_anon_WITH_3DES_EDE_CBC_SHA

- SSL_RSA_WITH_AES_256_CBC_SHA

- SSL_RSA_WITH_AES_128_CBC_SHA

- SSL_RSA_WITH_3DES_EDE_CBC_SHA

Oracle Advanced SecurityのSSL暗号スイートは、FIPS認定の暗号スイートに自動的に設定されます。特定の暗号スイートを設定する場合は、sqlnet.oraまたはlistener.oraファイルでSSL_CIPHER_SUITESパラメータを編集します。

SSL_CIPHER_SUITES=(SSL_cipher_suite1[,SSL_cipher_suite2[,..]])

このパラメータは、Oracle Net Managerを使用してサーバーおよびクライアントで設定することもできます。

関連項目:
暗号スイートの設定の詳細は、「手順2C: サーバーでのSecure Sockets Layer暗号スイートの設定(オプション)」および「手順3D: クライアントのSecure Sockets Layer暗号スイートの設定(オプション)」を参照してください。

D.2.4 インストール後のチェック

インストール後に、オペレーティング・システムで次の権限を確認する必要があります。

- システムのセキュリティ・ポリシーに従って、権限のないユーザーがOracle Cryptographic Librariesを実行できないようにするには、すべてのOracle実行可能ファイルに対して実行権限を設定する必要があります。

- ユーザーが誤ってまたは故意にOracle Cryptographic Librariesのファイルを読み取ったり変更しないようにするには、すべてのOracle実行可能ファイルに対して読取りおよび書込み権限を設定する必要があります。

FIPS 140-2 Level 2要件に準拠するには、権限のないユーザーが、オペレーティング・システムで使用しているOracle Cryptographic Librariesのプロセスおよびメモリーの読取り、変更または実行を行えないようにする手順をセキュリティ・ポリシーに含める必要があります。

D.2.5 FIPS接続の検証

FIPSモードが有効かどうかを確認するために、sqlnet.oraファイルにトレースを追加できます。FIPSの自己テスト・メッセージはトレース・ファイルにあります。トレースを有効にするには、sqlnet.oraに次の行を追加します。

trace_directory_server=trace_dir
trace_file_server=trace_file
trace_level_server=trace_level

例:

trace_directory=/private/oracle/owm
trace_file_server=fips_trace.trc
trace_level_server=6

トレース・レベル6は、FIPSの自己テストの結果を確認するために必要な最低限のトレース・レベルです。

D.3 FIPS 140-1用のOracle Databaseの構成

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

- FIPS 140-1の設定について

- sqlnet.ora FIPS 140-1構成パラメータ

- インストール後のチェック

- ステータス情報物理的なセキュリティ

注意:
この項に記載されている情報は、付録A「データ暗号化および整合性パラメータ」で提供される情報とともに使用してください。

D.3.1 FIPS 140-1の設定について

Oracle Database FIP 140-1実装は、米国連邦情報処理標準(FIPS) 140-1 Level 2セキュリティ・レベルで検証されています。この付録では、FIPS 140-1標準に準拠するために必要となる正式な構成について説明します。次のWebサイトで、NIST Cryptographic Modules Validationのリストを参照してください。

http://csrc.nist.gov/cryptval/140-1/1401val.htm

D.3.2 sqlnet.oraのFIPS 140-1構成パラメータ

この付録には、クライアントとサーバー間で作成されるすべての接続をサーバーの制御下で暗号化するために、sqlnet.oraファイル内に指定する必要があるOracle Advanced Securityパラメータに関する情報が含まれています。

構成パラメータは、クライアントおよびサーバーのプロセスごとにローカルに保持されるsqlnet.oraファイルに格納されています。これらのファイルは、DBAのレベルと同等のレベルで保護する必要があります。

この付録では、次の構成パラメータについて説明します。

- ENCRYPTION_SERVER

- ENCRYPTION_CLIENT

- ENCRYPTION_TYPES_SERVER

- ENCRYPTION_TYPES_CLIENT

- FIPS_140

D.3.2.1 サーバー暗号化レベルの設定

サーバー側のネゴシエーションにより、概念上、接続の設定が制御されます。サーバー・ファイル内の次のパラメータは必須です。

SQLNET.ENCRYPTION_SERVER=REQUIRED

接続のサーバー側で暗号化をREQUIREDに設定すると、クライアントのパラメータ値に関係なく、暗号化が使用される場合にのみ接続が許可されます。

D.3.2.2 クライアント暗号化レベルの設定

ENCRYPTION_CLIENTパラメータは、クライアントの接続動作を指定します。クライアント・ファイル内の次のパラメータ設定のいずれかが必須です。

SQLNET.ENCRYPTION_CLIENT=(ACCEPTED|REQUESTED|REQUIRED)

サーバーへの接続は、接続の暗号化についてクライアントとサーバー間に合意がある場合にのみ可能です。サーバーで値がREQUIREDに設定されているため、有効な接続を確立するためにはクライアントは暗号化を拒否できません。これらの値のいずれかを指定しないと、FIPS 140-1準拠のサーバーに接続するときにエラーが発生します。

D.3.2.3 サーバー暗号化選択リスト

ENCRYPTION_TYPES_SERVERパラメータは、サーバーが、サーバーとして動作するときに使用できる暗号化アルゴリズムのリストを、必要な使用順序で指定します。指定したアルゴリズムがインストールされていないと、接続が終了します。FIPS 140-1に準拠するためには、DES暗号化のみが許可されることから、次のパラメータ設定が必須となります。

SQLNET.ENCRYPTION_TYPES_SERVER=(DES,DES40)

D.3.2.4 クライアント暗号化選択リスト

ENCRYPTION_TYPES_CLIENTパラメータでは、クライアントがサーバーとの接続に使用する準備ができている暗号化アルゴリズムのリストを指定します。正常に接続するには、まずアルゴリズムがインストールされている必要があり、暗号化タイプがサーバーに対して相互に使用可能である必要があります。

FIPS 140-1用に構成されたサーバーとの接続を作成するには、次のパラメータ設定が必須です。

SQLNET.ENCRYPTION_TYPES_CLIENT=(DES,DES40)

D.3.2.5 FIPSパラメータ

FIPS_140パラメータのデフォルト設定はFALSEです。Oracle Advanced SecurityがFIPS 140-1で規定されている標準に確実に準拠するためには、次のようにクライアントとサーバーの両方でこのパラメータをTRUEに設定することが必須です。

SQLNET.FIPS_140=TRUE

注意:
sqlnet.oraファイルでFIPS_140パラメータを設定するには、テキスト・エディタを使用します。このパラメータの設定には、Oracle Net Managerは使用できません。

D.3.3 インストール後のチェック

インストール後に、オペレーティング・システムで次の権限を確認する必要があります。

- システムのセキュリティ・ポリシーに従って、権限のないユーザーがOracle Advanced Securityを実行できないようにするには、すべてのOracle Advanced Security実行可能ファイルに対して実行権限を設定する必要があります。

- ユーザーが誤ってまたは故意にOracle Advanced Securityのファイルを読み取ったり変更しないようにするには、すべての実行可能ファイルに対して読取りおよび書込み権限を設定する必要があります。

FIPS 140-1 Level 2要件に準拠するには、権限のないユーザーが、オペレーティング・システムで使用しているOracle Advanced Securityのプロセスおよびメモリーの読取りや変更を行えないようにする手順をセキュリティ・ポリシーに含める必要があります。

D.3.4 ステータス情報

Oracle Advanced Securityのステータス情報は、接続の確立後に使用できます。この情報は、RDBMS仮想表v$session_connect_infoに格納されています。

問合せSELECT * from V$SESSION_CONNECT_INFOを実行すると、アクティブな接続のすべての製品バナー情報が表示されます。表D-1に、DES暗号化データ整合性が定義された接続構成の例を示します。

表D-1 v$session_connect_infoからの出力例

SID

AUTHENTICATION

OSUSER

NETWORK_SERVICE_BANNER

7

DATABASE

oracle

Oracle Bequeath operating system adapter for Solaris, v8.1.6.0.0

7

DATABASE

oracle

Oracle Advanced Security: encryption service for Solaris

7

DATABASE

oracle

Oracle Advanced Security: DES encryption service adapter

7

DATABASE

oracle

Oracle Advanced Security: crypto-checksumming service

7

DATABASE

oracle

Oracle Advanced Security: SHA-1 crypto-checksumming service adapter

D.3.5 物理的なセキュリティ

FIPS 140-1 Level 2要件に準拠するには、カバーが外されたことを発見できるように、各コンピュータのカバーに不正開封防止シールを貼る必要があります。

E orapkiユーティリティ

orapkiユーティリティは、公開鍵インフラストラクチャ(PKI)要素(ウォレットや証明書失効リストなど)をコマンドラインから管理するために提供されています。これにより、スクリプトを使用してこれらのタスクを自動化できます。PKI要素の管理をスクリプトに組み込む方法を提供することにより、PKIを管理するための数多くのルーチン・タスクを自動化できるようになります。

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

- orapkiユーティリティの概要

- テスト用の署名付き証明書の作成

- orapkiユーティリティを使用したOracleウォレットの管理

- orapkiユーティリティを使用した証明書失効リスト(CRL)の管理

- orapkiの使用例

- orapkiユーティリティ・コマンドのサマリー

E.1 orapkiユーティリティの概要

このコマンドライン・ユーティリティを使用して、次のタスクを実行できます。

- テスト用の署名付き証明書の作成および表示

- Oracleウォレットの管理:

- Oracleウォレットの作成および表示

- 証明書リクエストの追加および削除

- 証明書の追加および削除

- 信頼できる証明書の追加および削除

- 証明書失効リスト(CRL)の管理:

- 証明書検証用ハッシュ値によるCRLの名前変更

- Oracle Internet DirectoryでのCRLのアップロード、一覧表示、表示および削除

E.1.1 orapkiユーティリティの構文

orapkiコマンドライン・ユーティリティの基本的な構文を次に示します。

orapki module command -parameter value

moduleは、wallet(Oracleウォレット)、crl(証明書失効リスト)またはcert(PKIデジタル証明書)にできます。使用可能なコマンドは、使用するmoduleによって異なります。たとえば、walletを使用している場合、addコマンドを使用して証明書またはキーをウォレットに追加できます。次の例では、/private/lhale/cert.txtにあるユーザー証明書が、$ORACLE_HOME/wallet/ewallet.p12にあるウォレットに追加されます。

orapki wallet add -wallet $ORACLE_HOME/wallet/ewallet.p12 -user_cert -cert /private/lhale/cert.txt

E.2 テスト用の署名付き証明書の作成

orapkiユーティリティは、テスト用の署名付き証明書を作成する便利で手軽な方法を提供します。

テスト用の署名付き証明書を作成するには、次のコマンドを使用します。

orapki cert create [-wallet wallet_location] -request certificate_request_location -cert certificate_location -validity number_of_days [-summary]

このコマンドにより、証明書リクエストから署名付き証明書が作成されます。-walletパラメータは、証明書リクエストへの署名に使用されるユーザー証明書と秘密鍵を含むウォレットを指定します。-validityパラメータは、現在の日付から数えてこの証明書が有効である日数を指定します。証明書と証明書リクエストの指定は、このコマンドでは必須です。

証明書を表示するには、次のコマンドを使用します。

orapki cert display -cert certificate_location [-summary | -complete]

このコマンドを使用すると、orapkiを使用して作成したテスト証明書を表示できます。-summaryまたは-completeのいずれかを選択できます。これによりコマンドが表示するデータの詳細さが決まります。-summaryを選択すると、証明書とその有効期限が表示されます。-completeを選択すると、シリアル番号、公開鍵などの追加の証明書情報が表示されます。

E.3 orapkiユーティリティを使用したOracleウォレットの管理

次の各項では、orapkiコマンドライン・ユーティリティを使用してOracleウォレットの作成および管理を行うために使用される構文について説明します。これらのorapkiユーティリティのwalletモジュール・コマンドをスクリプトで使用して、ウォレット作成プロセスを自動化できます。

- orapkiを使用したウォレットの作成、表示および変更

- orapkiを使用した証明書と証明書リクエストのOracleウォレットへの追加

- orapkiを使用した証明書と証明書リクエストのOracleウォレットからのエクスポート

注意:
-walletパラメータは、すべてのwalletモジュール・コマンドで必須です。

E.3.1 orapkiを使用したウォレットの作成、表示および変更

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

- PKCS#12ウォレットの作成

- 自動ログイン・ウォレットの作成

- ウォレットの表示

- ウォレットのパスワードの変更

E.3.1.1 PKCS#12ウォレットの作成

Oracle PKCS#12ウォレット(ewallet.p12)を作成するには、次のコマンドを使用します。

orapki wallet create -wallet wallet_location [-pwd password]

コマンドラインでパスワードを指定していない場合、このコマンドではウォレットのパスワードの入力と再入力を求められます。-walletで指定された場所にウォレットが作成されます。

注意:
セキュリティ上の理由から、コマンドラインにパスワードを指定しないことをお薦めします。パスワードの入力は、求められたときに行ってください。

E.3.1.2 自動ログイン・ウォレットの作成

パスワードを必要としない自動ログイン・ウォレット(cwallet.sso)を作成するには、次のコマンドを使用します。

orapki wallet create -wallet wallet_location -auto_login_only

このコマンドでは、開くためにパスワードを必要としない自動ログイン・ウォレット(cwallet.sso)が作成されます。パスワードを使用しないでウォレットを変更または削除することもできます。ファイル・システム権限によって、このような自動ログイン・ウォレットに必要なセキュリティが提供されます。

PKCS#12ウォレットに関連付けられた自動ログイン・ウォレットを作成することもできます。自動ログイン・ウォレットを開くのにパスワードは必要ありません。ただし、ウォレットを変更または削除するには、関連付けられたPKCS#12ウォレットのパスワードを入力する必要があります。PKCS#12ウォレットを更新した場合、関連付けられた自動ログイン・ウォレットも更新されます。

PKCS#12ウォレット(ewallet.p12)に関連付けられた自動ログイン・ウォレット(cwallet.sso)を作成するには、次のコマンドを使用します。

orapki wallet create -wallet wallet_location -auto_login [-pwd password]

このコマンドでは、自動ログインが有効なウォレット(cwallet.sso)が作成され、PKCS#12ウォレット(ewallet.p12)に関連付けられます。コマンドラインでパスワードを指定していない場合、このコマンドではPKCS#12ウォレットのパスワードの入力を求められます。

注意:
セキュリティ上の理由から、コマンドラインにパスワードを指定しないことをお薦めします。パスワードの入力は、求められたときに行ってください。

wallet_locationがPKCS#12ウォレットにすでに含まれている場合は、その自動ログインが有効になります。既存のPKCS#12ウォレットの自動ログインを有効にするには、そのパスワードを入力する必要があります。

wallet_locationがPKCS#12ウォレットに含まれていない場合は、新しいPKCS#12ウォレットが作成されます。新しいPKCS#12ウォレットのパスワードを指定する必要があります。

PKCS#12ウォレットの自動ログイン機能をオフにする場合は、Oracle Wallet Managerを使用します。

関連項目:
詳細は、「自動ログインの使用」を参照してください。

ローカルの自動ログイン・ウォレットを作成することもできます。ローカルの自動ログイン・ウォレットを別のコンピュータに移動することはできません。それらは作成されたホストで使用する必要があります。

ローカルの自動ログイン・ウォレットを開くのにパスワードは必要ありません。ただし、ウォレットを変更または削除するには、関連付けられたPKCS#12ウォレットのパスワードを入力する必要があります。PKCS#12ウォレットを更新した場合、関連付けられた自動ログイン・ウォレットも更新されます。

ローカルの自動ログイン・ウォレットを作成するには、次のコマンドを使用します。

orapki wallet create -wallet wallet_location -auto_login_local [-pwd password]

このコマンドでは、自動ログイン・ウォレット(cwallet.sso)が作成されます(自動ログイン・ウォレットが作成されるコンピュータおよび自動ログイン・ウォレットを作成したユーザーの両方にローカル)。これは、PKCS#12ウォレット(ewallet.p12)に関連付けられます。コマンドラインでパスワードを指定していない場合、このコマンドではPKCS#12ウォレットのパスワードの入力を求められます。

注意:
セキュリティ上の理由から、コマンドラインにパスワードを指定しないことをお薦めします。パスワードの入力は、求められたときに行ってください。

E.3.1.3 ウォレットの表示

Oracleウォレットを表示するには、次のコマンドを使用します。

orapki wallet display -wallet wallet_location

このコマンドを使用すると、ウォレットに含まれている証明書リクエスト、ユーザー証明書および信頼できる証明書が表示されます(これらは拡張子.p12のバイナリPKCS12ファイルであることが必要です)。他のファイルでは失敗します。

E.3.1.4 ウォレットのパスワードの変更

ウォレットのパスワードを変更するには、次のコマンドを使用します。

orapki wallet change_pwd -wallet wallet_location [-oldpwd password ] [-newpwd password]

このコマンドでは、現在のウォレットのパスワードが新しいパスワードに変更されます。コマンドラインでパスワードを指定していない場合、このコマンドでは新旧のパスワードを求められます。

注意:
セキュリティ上の理由から、コマンドラインでパスワード・オプションを指定しないことをお薦めします。パスワードの入力は、求められたときに行ってください。

E.3.2 orapkiを使用した証明書と証明書リクエストのOracleウォレットへの追加

Oracleウォレットに証明書リクエストを追加するには、次のコマンドを使用します。

orapki wallet add -wallet wallet_location -dn user_dn -keySize 512|1024|2048

このコマンドを使用すると、指定した識別名(user_dn)を持つユーザーのウォレットに証明書リクエストが追加されます。このリクエストでは、リクエストされた証明書のキー・サイズ(512、1024または2048ビット)も指定します。リクエストに署名するには、エクスポート・オプションを使用してそのリクエストをエクスポートします。

関連項目:
詳細は、「orapkiを使用した証明書と証明書リクエストのOracleウォレットからのエクスポート」を参照してください。

Oracleウォレットに信頼できる証明書を追加するには、次のコマンドを使用します。

orapki wallet add -wallet wallet_location -trusted_cert -cert
certificate_location

このコマンドでは、指定した場所(-cert certificate_location)にある信頼できる証明書がウォレットに追加されます。ユーザー証明書を追加する前に、ユーザー証明書の証明連鎖にあるすべての信頼できる証明書を追加する必要があります。そうしないと、ユーザー証明書を追加するコマンドは失敗します。

Oracleウォレットにルート証明書を追加するには、次のコマンドを使用します。

orapki wallet add -wallet wallet_location -dn certificate_dn -keySize 512|1024|2048 -self_signed -validity number_of_days

このコマンドを使用すると、新しい自己署名(ルート)証明書が作成され、ウォレットに追加されます。-validityパラメータ(必須)は、現在の日付から数えてこの証明書が有効である日数を指定します。このルート証明書の鍵サイズ(-keySize)は、512、1024または2048ビットに指定できます。

Oracleウォレットにユーザー証明書を追加するには、次のコマンドを使用します。

orapki wallet add -wallet wallet_location -user_cert -cert certificate_location

このコマンドでは、-certパラメータで指定された場所にあるユーザー証明書が、wallet_locationにあるOracleウォレットに追加されます。ユーザー証明書をウォレットに追加する前に、証明連鎖を構成するすべての信頼できる証明書を追加する必要があります。ユーザー証明書を追加する前に、すべての信頼できる証明書がウォレットに追加されていない場合、ユーザー証明書の追加は失敗します。

ウォレットにPKCS#11情報を追加するには

他のOracleウォレットと同様に、PKCS#11情報を含むウォレットを使用できます。秘密鍵はハードウェア・デバイスに格納されます。暗号化処理もデバイスで実行されます。

ウォレットにPKCS#11情報を追加するには、次のコマンドを使用します。

orapki wallet p11_add -wallet wallet_location -p11_lib pkcs11Lib
[-p11_tokenlabel tokenLabel] [-p11_tokenpw tokenPassphrase]
[-p11_certlabel certLabel] [-pwd password]

各パラメータの意味は、次のとおりです。

- -walletでは、ウォレット・ロケーションを指定します。

- -p11_libでは、PKCS#11ライブラリへのパスを指定します。これにはライブラリのファイル名が含まれます。

- -p11_tokenlabelでは、デバイスで使用されるトークンまたはスマートカードを指定します。これはデバイスに複数のトークンがある場合に使用します。トークンのラベルは、ベンダー・ツールを使用して設定します。

- -p11_tokenpwでは、トークンへのアクセスに使用されるパスワードを指定します。トークンのパスワードは、ベンダー・ツールを使用して設定します。

- -p11_certlabelは、トークン上の証明書ラベルを指定するために使用します。これはトークンに複数の証明書がある場合に使用します。証明書ラベルはベンダー・ツールを使用して設定します。

- -pwdは、ウォレットのパスワードを指定するために使用します。

注意:
セキュリティ上の理由から、コマンドラインにパスワードを指定しないことをお薦めします。パスワードの入力は、求められたときに行ってください。

PKCS#11ウォレットを使用して、ハードウェア・デバイス上の資格証明を検証できます。そのためには、次のコマンドを使用します。

orapki wallet p11_verify -wallet wallet_location [-pwd password]

注意:
セキュリティ上の理由から、コマンドラインにパスワードを指定しないことをお薦めします。パスワードの入力は、求められたときに行ってください。

E.3.3 orapkiを使用した証明書と証明書リクエストのOracleウォレットからのエクスポート

Oracleウォレットから証明書をエクスポートするには、次のコマンドを使用します。

orapki wallet export -wallet wallet_location -dn certificate_dn -cert certificate_filename

このコマンドを使用すると、サブジェクトの識別名(-dn)を持つ証明書が、ウォレットから-certで指定されたファイルにエクスポートされます。

Oracleウォレットから証明書リクエストをエクスポートするには、次のコマンドを使用します。

orapki wallet export -wallet wallet_location -dn certificate_request_dn -request certificate_request_filename

このコマンドを使用すると、サブジェクトの識別名(-dn)を持つ証明書リクエストが、ウォレットから-requestで指定されたファイルにエクスポートされます。

E.4 orapkiユーティリティを使用した証明書失効リスト(CRL)の管理

CRLは、orapkiを使用して管理する必要があります。このユーティリティは、CRL発行者名のハッシュ値を作成して、システム内でCRLの場所を特定します。orapkiを使用しないと、Oracleサーバーは、CRLを探してPKIデジタル証明書を検証することができません。orapkiを使用したCRLの管理の詳細は、「証明書失効リストの管理」を参照してください。

E.5 orapkiの使用例

この項では、前の項で説明したorapkiコマンドの例を示します。

例E-1では、自己署名証明書を含むウォレットを作成し、証明書をファイルにエクスポートする手順を示します。

例E-1 自己署名証明書を含むウォレットの作成と証明書のエクスポート

次に、ウォレットの作成、自己署名証明書の追加、ウォレットの表示および証明書のエクスポートの手順を示します。

1. ウォレットの作成

orapki wallet create -wallet /private/user/orapki_use/root

ウォレットは、/private/user/orapki_use/rootに作成されます。

2. 自己署名証明書をウォレットに追加します。

orapki wallet add -wallet /private/user/orapki_use/root -dn
'CN=root_test,C=US' -keysize 2048 -self_signed -validity 3650

この結果、3650日の有効期限を持つ自己署名された証明書が作成されます。サブジェクトの識別名はCN=root_test,C=USです。証明書のキー・サイズは2048ビットです。

3. ウォレットの表示

orapki wallet display -wallet /private/user/orapki_use/root

これはウォレットに含まれる証明書を表示するために使用します。

4. 証明書のエクスポート

orapki wallet export -wallet /private/user/orapki_use/root -dn
'CN=root_test,C=US' -cert /private/user/orapki_use/root/b64certificate.txt

これにより、自己署名証明書がファイルb64certificate.txtにエクスポートされます。使用される識別名はステップ2と同じであることに注意してください。

例E-2では、ユーザー証明書の作成に関連する様々な作業について説明します。

例E-2 ウォレットおよびユーザー証明書の作成

次に、ウォレットの作成、証明書リクエストの作成、証明書リクエストのエクスポート、テスト用のリクエストからの署名付き証明書の作成、証明書の表示、ウォレットへの信頼できる証明書の追加、およびウォレットへのユーザー証明書の追加の手順を示します。

1. 自動ログインを有効にしたウォレットの作成

orapki wallet create -wallet /private/user/orapki_use/server -auto_login

これにより、自動ログインを有効にしたウォレットが/private/user/orapki_use/serverに作成されます。

2. ウォレットへの証明書リクエストの追加

orapki wallet add -wallet /private/user/orapki_use/server -dn 'CN=server_test,C=US' -keysize 2048

これにより、作成されたウォレットに証明書リクエストが追加されます。サブジェクトの識別名はCN=server_test,C=USです。指定された鍵サイズは2048ビットです。

3. ファイルへの証明書リクエストのエクスポート

orapki wallet export -wallet /private/user/orapki_use/server -dn 'CN=server_test,C=US' -request /private/user/orapki_use/server/creq.txt

これにより、指定されたファイル(この場合はcreq.txt)に証明書リクエストがエクスポートされます。

4. テスト用のリクエストからの署名付き証明書の作成

orapki cert create -wallet /private/user/orapki_use/root -request /private/user/orapki_use/server/creq.txt -cert /private/user/orapki_use/server/cert.txt -validity 3650

これにより、3650日の有効期限を持つ証明書cert.txtが作成されます。証明書は前のステップで生成された証明書リクエストから作成されます。

5. 証明書の表示

orapki cert display -cert /private/user/orapki_use/server/cert.txt -complete

これにより、前の手順で生成された証明書が表示されます。-completeオプションでは、シリアル番号や公開鍵などの追加的な証明書情報を表示できます。

6. ウォレットへの信頼できる証明書の追加

orapki wallet add -wallet /private/user/orapki_use/server -trusted_cert -cert /private/user/orapki_use/root/b64certificate.txt

これにより、信頼できる証明書b64certificate.txtがウォレットに追加されます。ユーザー証明書を追加する前に、ユーザー証明書の証明連鎖内のすべての信頼できる証明書を追加する必要があります。

7. ウォレットへのユーザー証明書の追加

orapki wallet add -wallet /private/user/orapki_use/server -user_cert -cert /private/user/orapki_use/server/cert.txt

これにより、ユーザー証明書cert.txtがウォレットに追加されます。

E.6 orapkiユーティリティ・コマンドのサマリー

この項では、次のorapkiコマンドについて説明します。

- orapki cert create

- orapki cert display

- orapki crl delete

- orapki crl display

- orapki crl hash

- orapki crl list

- orapki crl upload

- orapki wallet add

- orapki wallet create

- orapki wallet display

- orapki wallet export

E.6.1 orapki cert create

次の各項では、このコマンドについて説明します。

E.6.1.1 用途

orapki cert createコマンドは、テスト用の署名付き証明書を作成するために使用します。

E.6.1.2 構文

orapki cert create [-wallet wallet_location] -request certificate_request_location -cert certificate_location -validity number_of_days [-summary]

- -walletパラメータは、証明書リクエストへの署名に使用されるユーザー証明書と秘密鍵を含むウォレットを指定します。

- -requestパラメータ(必須)は、作成する証明書の証明書リクエストの場所を指定します。

- -certパラメータ(必須)では、ツールによって新しい署名付き証明書が配置されるディレクトリの場所を指定します。

- -validityパラメータ(必須)は、現在の日付から数えてこの証明書が有効である日数を指定します。

E.6.2 orapki cert display

次の各項では、このコマンドについて説明します。

E.6.2.1 用途

orapki cert displayコマンドは、特定の証明書の詳細を表示するために使用します。

E.6.2.2 構文

orapki cert display -cert certificate_location [-summary|-complete]

- -certパラメータは、表示する証明書の場所を指定します。

- -summaryパラメータまたは-completeパラメータのいずれかを使用して、次の情報を表示できます。

- -summaryを使用すると、証明書およびその有効期限が表示されます。

- -completeを使用すると、シリアル番号、公開鍵などの追加の証明書情報が表示されます。

E.6.3 orapki crl delete

次の各項では、このコマンドについて説明します。

E.6.3.1 用途

orapki crl deleteコマンドは、Oracle Internet DirectoryからCRLを削除するために使用します。orapkiを使用してディレクトリからCRLを削除するユーザーは、CRLAdmins(cn=CRLAdmins,cn=groups,%s_OracleContextDN%)ディレクトリ・グループのメンバーである必要があることに注意してください。

E.6.3.2 前提条件

なし

E.6.3.3 構文

orapki crl delete -issuer issuer_name -ldap hostname:ssl_port -user username [-wallet wallet_location] [-summary]

- -issuerパラメータは、CRLを発行した認証局(CA)の名前を指定します。

- -ldapパラメータは、CRLを削除するディレクトリのホスト名とSSLポートを指定します。このポートは、認証を使用しないディレクトリのSSLポートであることが必要です。

関連項目:
このポートの詳細は、「Oracle Internet DirectoryへのCRLのアップロード」を参照してください。

- -userパラメータは、ディレクトリのCRLサブツリーからCRLを削除する権限のあるディレクトリ・ユーザーのユーザー名を指定します。

- -walletパラメータ(オプション)は、CRLを発行した認証局(CA)の証明書を含むウォレットの場所を指定します。これを使用すると、CRLをディレクトリから削除する前に、ツールによってCAの証明書に対するCRLの有効性が検証されます。

- -summaryパラメータはオプションです。これを使用すると、削除されたCRL LDAPエントリがツールによって印刷されます。

E.6.4 orapki crl display

次の各項では、このコマンドについて説明します。

E.6.4.1 用途

orapki crl displayコマンドは、Oracle Internet Directoryに格納されている特定のCRLを表示するために使用します。

E.6.4.2 構文

orapki crl display -crl crl_location [-wallet wallet_location] [-summary|-complete]

- -crlパラメータは、ディレクトリ内のCRLの場所を指定します。orapki crl listコマンドを使用すると表示されるリストからCRLの位置を貼り付けると便利です。「orapki crl list」を参照してください。

- -walletパラメータ(オプション)は、CRLを発行した認証局(CA)の証明書を含むウォレットの場所を指定します。これを使用すると、CRLを表示する前に、ツールによってCAの証明書に対するCRLの有効性が確認されます。

- -summaryパラメータまたは-completeパラメータのいずれかを選択すると、次の情報が表示されます。

- -summaryを選択すると、CRL発行者名およびCRLの有効期間を含むリストが表示されます。

- -completeを選択すると、そのCRLに含まれるすべての失効した証明書のリストが表示されます。このオプションを選択すると、CRLのサイズによっては、表示に時間がかかる場合があることに注意してください。

E.6.5 orapki crl hash

次の各項では、このコマンドについて説明します。

E.6.5.1 用途

orapki crl hashコマンドは、証明書失効リスト(CRL)発行者のハッシュ値を生成して、証明書検証用にファイル・システム内のCRLの場所を特定するために使用します。

E.6.5.2 構文

orapki crl hash -crl crl_filename|URL [-wallet wallet_location] [-symlink|-copy] crl_directory [-summary]

- -crlパラメータは、CRLまたはCRLがあるURLを含むファイル名を指定します。

- -walletパラメータ(オプション)は、CRLを発行した認証局(CA)の証明書を含むウォレットの場所を指定します。これを使用すると、CRLをディレクトリにアップロードする前に、ツールによってCAの証明書に対するCRLの有効性が確認されます。

- オペレーティング・システムに応じて、-symlinkパラメータまたは-copyパラメータのいずれかを使用します。

- (UNIX) -symlinkを使用してcrl_directoryにCRLへのシンボリック・リンクを作成します。

- (Windows) -copyを使用してcrl_directoryにCRLのコピーを作成します。

- -summaryパラメータ(オプション)を使用すると、ツールによってCRL発行者名が表示されます。

E.6.6 orapki crl list

次の各項では、このコマンドについて説明します。

E.6.6.1 用途

orapki crl listコマンドは、Oracle Internet Directoryに格納されているCRLのリストを表示するために使用します。特定のCRLを検出してローカル・システムで表示またはダウンロードする際に、このリストを参照すると便利です。

E.6.6.2 構文

orapki crl list -ldap hostname:ssl_port

-ldapパラメータは、CRLリストの作成対象のディレクトリ・サーバーのホスト名およびSSLポートを指定します。このポートは、認証を使用しないディレクトリのSSLポートであることが必要です。

ヒント:
このポートの詳細は、「Oracle Internet DirectoryへのCRLのアップロード」を参照してください。

E.6.7 orapki crl upload

次の各項では、このコマンドについて説明します。

E.6.7.1 用途

orapki crl uploadコマンドは、証明書失効リスト(CRL)をOracle Internet DirectoryのCRLサブツリーにアップロードするために使用します。CRLをディレクトリにアップロードするには、ディレクトリ管理グループCRLAdmins(cn=CRLAdmins,cn=groups,%s_OracleContextDN%)のメンバーである必要があることに注意してください。

E.6.7.2 構文

orapki crl upload -crl crl_location -ldap hostname:ssl_port -user username [-wallet wallet_location] [-summary]

- -crlパラメータは、ディレクトリの場所またはディレクトリにアップロードするCRLが配置されているURLを指定します。

- -ldapパラメータは、CRLのアップロード先のディレクトリのホスト名およびSSLポートを指定します。このポートは、認証を使用しないディレクトリのSSLポートであることが必要です。

関連項目:
このポートの詳細は、「Oracle Internet DirectoryへのCRLのアップロード」を参照してください。

- -userパラメータは、ディレクトリのCRLサブツリーにCRLを追加する権限のあるディレクトリ・ユーザーのユーザー名を指定します。

- -walletパラメータは、CRLを発行した認証局(CA)の証明書を含むウォレットの場所を指定します。これはオプションのパラメータです。これを使用すると、CRLをディレクトリにアップロードする前に、ツールによってCAの証明書に対するCRLの有効性が確認されます。

- -summaryパラメータもオプションです。これを使用すると、CRL発行者名、およびCRLがディレクトリに格納されているLDAPエントリがツールによって表示されます。

E.6.8 orapki wallet add

次の各項では、このコマンドについて説明します。

E.6.8.1 用途

orapki wallet addコマンドは、証明書リクエストおよび証明書をOracleウォレットに追加するために使用します。

E.6.8.2 構文

証明書リクエストを追加するには、次のコマンドを使用します。

orapki wallet add -wallet wallet_location -dn user_dn -keySize 512|1024|2048

- -walletパラメータは、証明書リクエストの追加先のウォレットの場所を指定します。

- -dnパラメータは、証明書の所有者の識別名を指定します。

- -keySizeパラメータは、証明書の鍵サイズを指定します。

- リクエストに署名するには、エクスポート・オプションを使用してそのリクエストをエクスポートします。「orapki wallet export」を参照してください。

信頼できる証明書を追加するには、次のコマンドを使用します。

orapki wallet add -wallet wallet_location -trusted_cert -cert certificate_location

- -trusted_certパラメータを使用すると、ツールによって、-certで指定された場所にある信頼できる証明書がウォレットに追加されます。

ルート証明書を追加するには、次のコマンドを使用します。

orapki wallet add -wallet wallet_location -dn certificate_dn -keySize 512|1024|2048 -self_signed -validity number_of_days

- -self_signedパラメータを使用すると、ツールによってルート証明書が作成されます。

- -validityパラメータは必須です。これを使用して、現在の日付から数えてこのルート証明書が有効である日数を指定します。

ユーザー証明書を追加するには、次のコマンドを使用します。

orapki wallet add -wallet wallet_location -user_cert -cert certificate_location

- -user_certパラメータを使用すると、ツールによって、-certパラメータで指定された場所にあるユーザー証明書がウォレットに追加されます。ユーザー証明書をウォレットに追加する前に、証明連鎖を構成するすべての信頼できる証明書を追加する必要があります。ユーザー証明書を追加する前に、すべての信頼できる証明書がウォレットに追加されていない場合、ユーザー証明書の追加は失敗します。

E.6.9 orapki wallet create

次の各項では、このコマンドについて説明します。

E.6.9.1 用途

orapki wallet createコマンドは、Oracleウォレットの作成またはOracleウォレットの自動ログインの設定に使用します。

E.6.9.2 構文

orapki wallet create -wallet wallet_location [-auto_login|-auto_login_local]

- -walletパラメータは、新しいウォレットの場所または自動ログインを有効にするウォレットの場所を指定します。

- -auto_loginパラメータにより、自動ログイン・ウォレットが作成されます。または、-walletオプションで指定されたウォレットの自動ログインが有効になります。

関連項目:
自動ログイン・ウォレットの詳細は、「自動ログインの使用」を参照してください。

- -auto_login_localパラメータにより、ローカル自動ログイン・ウォレットが作成されます。または、-walletオプションで指定されたウォレットのローカル自動ログインが有効になります。

E.6.10 orapki wallet display

次の各項では、このコマンドについて説明します。

E.6.10.1 用途

orapki wallet displayコマンドは、Oracleウォレット内の証明書リクエスト、ユーザー証明書および信頼できる証明書を表示するために使用します。

E.6.10.2 構文

orapki wallet display -wallet wallet_location

- -walletパラメータは、開くウォレットの場所を指定します(そのウォレットが現在の作業ディレクトリにない場合)。

E.6.11 orapki wallet export

次の各項では、このコマンドについて説明します。

E.6.11.1 用途

orapki wallet exportコマンドは、証明書リクエストおよび証明書をOracleウォレットからエクスポートするために使用します。

E.6.11.2 構文

Oracleウォレットから証明書をエクスポートするには、次のコマンドを使用します。

orapki wallet export -wallet wallet_location -dn certificate_dn -cert certificate_filename

- -walletパラメータは、証明書のエクスポート元のウォレットの場所を指定します。

- -dnパラメータは、証明書の識別名を指定します。

- -certパラメータは、エクスポートされる証明書を含むファイルの名前を指定します。

Oracleウォレットから証明書リクエストをエクスポートするには、次のコマンドを使用します。

orapki wallet export -wallet wallet_location -dn certificate_request_dn -request certificate_request_filename

- -requestパラメータは、エクスポートされる証明書リクエストを含むファイルの名前を指定します。

F Entrust対応のSecure Sockets Layer認証

Entrust Authority (以前のEntrust/PKI)は、Entrust社から提供されるPKI製品スイートであり、証明書の生成、証明書失効、および鍵と証明書の管理を提供します。Oracle Advanced Securityは、EntrustとOracleの両方のユーザーがOracle環境のセキュリティを強化できるように、Entrust Authorityと統合されています。

この付録のトピックは次のとおりです。

- Entrust対応のOracle Advanced Securityの利点

- Entrust対応のOracle Advanced Securityに必要なシステム・コンポーネント

- Entrust認証プロセス

- Entrust認証の有効化

- Entrust対応のSSLに適用される問題および制限事項

- Oracle Advanced SecurityにおけるEntrustのトラブルシューティング

F.1 Entrust対応のOracle Advanced Securityの利点

Entrust対応のOracle Advanced Securityでは、次のものが提供されます。

- 拡張X.509ベースの認証とシングル・サインオン

- Entrust Authorityの鍵管理との統合

- Entrust Authorityの証明書失効との統合

注意:
Oracle Advanced Securityは、リリース8.1.7以降、Entrust社によりEntrust-Readyとして認定されています。

関連項目:
詳細は、http://www.entrust.comを参照してください。

F.1.1 拡張X.509ベースの認証とシングル・サインオン

Entrust対応のOracle Advanced Securityでは、X.509ベースの認証とシングル・サインオンに対して、Entrust資格証明の使用がサポートされています。Oracle Advanced Securityでは、Oracleウォレットを使用してユーザーのPKI資格証明を保持するかわりに、Entrust Authorityによって作成され、Entrustプロファイル(.epfファイル)に格納されているPKI資格証明にアクセスできます。企業内にEntrustソフトウェアがデプロイされているユーザーは、それをOracle Databaseに対する認証およびシングル・サインオンに使用できます。

F.1.2 Entrust Authorityの鍵管理との統合

Entrust対応のOracle Advanced SecurityはEntrust Authorityが提供する広範な鍵管理およびロールオーバー機能を使用していることによって、PKIデプロイメントの複雑さをユーザーに意識させません。たとえば、ユーザーは証明書の有効期限が切れると自動的に通知を受け、管理者が構成できるプリファレンスに従って証明書が再発行されます。

F.1.3 Entrust Authorityの証明書失効との統合

Entrustは、証明書失効ステータスをネイティブにチェックし、証明書失効を可能にする認証局コンポーネントを提供しています。

Oracleに対する認証にEntrust資格証明を使用するユーザーは、証明書失効ステータスがチェックされ、証明書が失効している場合は接続を拒否されます。

F.2 Entrust対応のOracle Advanced Securityに必要なシステム・コンポーネント

Entrust対応のOracle Advanced Securityを実装するには、次のシステム・コンポーネントが必要です。

- Entrust Authority for Oracle

- Entrust Authority Server Login Feature

- Entrust Authority IPSec Negotiator Toolkit

注意:
次の各項で、クライアントという用語はOracleデータベースに接続するクライアントを指し、サーバーという用語はOracleデータベースが存在するホストを指します。

これらのコンポーネントを入手するには、Entrustの代理店にご連絡ください。

注意:
Oracle Advanced Securityは、Entrust Authority Security Manager、Entrust Authority Server Login FeatureおよびEntrust Authority IPSec Negotiator Toolkitバージョン6.0以上をサポートしています。
最新の製品分類とネーミングの詳細は、Entrustの代理店にお問い合せください。

F.2.1 Entrust Authority for Oracle

Entrust Authority for Oracleには、Entrustユーザーとインフラストラクチャに関する情報を格納するためのデータベースと、ユーザー名、公開証明書、証明書失効リストなどの情報用のLightweight Directory Access Protocol (LDAP)準拠のディレクトリが必要です。

Entrust Authority for Oracleは、次のソフトウェア・コンポーネントで構成されています。

- Entrust Authority Security Manager

- Entrust Authority Self-Administration Server

- Entrust Entelligence Desktop Manager

F.2.1.1 Entrust Authority Security Manager

Entrust Authority Security Managerは、EntrustのPKIテクノロジの中心要素です。認証局、証明書およびユーザー管理(例: ユーザーの作成やユーザーの資格証明を含んだユーザー・プロファイルの作成)の中心的な機能を実行します。

注意:
Entrust対応のOracle Advanced Securityの使用は、Oracle Databaseで動作するEntrust Authority Security Managerのバージョンでのみサポートされます。

関連項目:
認証局の詳細は、第13章「Secure Sockets Layer認証の構成」を参照してください。

Entrust Authority Security Managerは、自動ログイン(サーバー・ログインとも呼ばれます)をサポートしています。このログイン方法では、データベース管理者(DBA)は、Entrustプロファイルのパスワードをサーバーで繰返し入力する必要はありません。自動ログインを使用すると、DBAはパスワードを1回入力するのみで、サーバーのEntrustプロファイルをオープンして、複数の着信接続に対して自身を認証できます。

F.2.1.2 Entrust Authority Self-Administration Server

Entrust Authority Self-Administration Serverは、Entrust Authority Security Managerに対する管理者の安全なインタフェースです。

F.2.1.3 Entrust Entelligence Desktop Manager

Entrust Entelligence Desktop Managerは、着信SSL接続に対するOracle Databaseサーバー・プロセスのアクセスを可能にすることで、クライアントとサーバーの両方でユーザーの鍵管理およびシングル・サインオン機能をサポートします。

注意:
Entrust Entelligence Desktop Managerは、拡張子が.ualの自動ログイン資格証明ファイルを使用するため、サーバー・コンピュータにはインストールしないでください
.ualファイルの作成の詳細は、「サーバーにおけるEntrustの構成」を参照してください。

F.2.2 Entrust Authority Server Login Feature

Entrust Authority Server Login Featureは、UNIXプラットフォームで動作するサーバーでのシングル・サインオン機能に必要です。

Entrust Authority Server Login Featureは、着信SSL接続に対するOracle Databaseサーバー・プロセスのアクセスを可能にすることで、シングル・サインオンを提供します。この機能がないと、データベース管理者または他の権限ユーザーは、着信接続ごとにサーバーでEntrustプロファイルのパスワードを入力する必要があります。

Entrust Authority Server Login Featureを入手するには、Entrustの代理店にご連絡ください。

F.2.3 Entrust Authority IPSec Negotiator Toolkit

Entrust Authority IPSec Negotiator Toolkitは、Oracle Advanced SecurityのSSLスタックをEntrust Authorityと統合し、SSL認証でEntrustプロファイルを使用できるようにするために、クライアントとサーバーの両方で必要です。

Entrust Authority IPSec Negotiator Toolkitを入手するには、Entrustの代理店にご連絡ください。

F.3 Entrust認証プロセス

図F-1は、次のEntrust認証プロセスを示しています。

1. OracleクライアントのEntrustユーザーは、SSLとEntrust資格証明を使用してサーバーとの安全な接続を確立します。

2. サーバーのOracle SSLアダプタは、Entrust Authorityと通信して、Entrustユーザーの証明書失効ステータスをチェックします。

注意:
図F-1では、クライアント・プロファイルとサーバー・プロファイルの作成は含まれていません(前提となっています)。

図F-1 Entrust認証プロセス

関連項目:
「Oracle環境におけるSecure Sockets Layerの機能: SSLハンドシェイク」

F.4 Entrust認証の有効化

この項では、Entrust対応のOracle Advanced SecurityのSSL認証の構成に必要な次の作業について説明します。

- Entrustプロファイルの作成

- Oracle Advanced SecurityおよびEntrust対応のSSL関連製品のインストール

- Entrust対応のSSLのためのクライアントおよびサーバーにおけるSSLの構成

- クライアントにおけるEntrustの構成

- サーバーにおけるEntrustの構成

- Entrust対応データベース・ユーザーの作成

- Entrust対応のSSLを使用したデータベースへのログイン

F.4.1 Entrustプロファイルの作成

この項では、管理者またはユーザーが作成できるEntrustプロファイルの作成方法について説明します。UNIXプラットフォームでは、管理者がすべてのクライアントのEntrustプロファイルを作成します。Windowsプラットフォームでは、ユーザーが各自のEntrustプロファイルを作成できます。

F.4.1.1 管理者によるEntrustプロファイルの作成

管理者は、次の手順でEntrustプロファイルを作成します。

1. Entrust管理者は、Entrust Authority Self-Administration Serverを使用してEntrustユーザーを追加します。

関連項目:
Entrustユーザーの作成の詳細は、Entrustの管理マニュアルを参照してください。

2. 管理者は、ユーザーの名前とパスワードを入力します。

3. Entrust Authorityによって、プロファイル(.epfファイル)が作成されます。

4. 管理者は、プロファイルに関連したすべてのファイルをユーザーに安全に送信します。事前に設定したパスワードは、ユーザーが変更できます。

F.4.1.2 ユーザーによるEntrustプロファイルの作成

Entrustユーザーは、次の手順で各自のEntrustプロファイルを作成します。

1. Entrust管理者は、Entrust Authority Self-Administration Serverを使用してEntrustユーザーを追加します。「New User」ダイアログ・ボックスで、「Create Profile」オプションの選択を解除する必要があります。
Entrustプロファイルの作成の詳細は、Entrustの管理マニュアルも参照してください。

2. ユーザーは、参照番号、認可コードおよび有効期限が含まれる、保護された電子メール通知を管理者から受信します。

3. ユーザーは、次のようにEntrust Entelligence Desktop Managerの「Create Entrust Profiles」画面にナビゲートします。
「スタート」→「プログラム」→「Entrust」→「Entrust Profiles」→「Create Entrust Profiles」

4. ユーザーは、電子メール通知で提供された参照番号、認可コードおよび有効期限を入力し、プロファイル(.epfファイル)とEntrust初期化ファイルを作成します。

F.4.2 Oracle Advanced SecurityおよびEntrust対応のSSL関連製品のインストール

Oracle Advanced Security 11g リリース2 (11.2)では、Entrustサポートは標準モードでインストールされます。単一のOracleインストールで、OracleウォレットとEntrustプロファイルの両方の使用がサポートされます。

関連項目:
オペレーティング・システム固有のOracle Databaseインストール関連ドキュメント

F.4.3 Entrust対応のSSLのためのクライアントおよびサーバーにおけるSSLの構成

クライアントおよびサーバーでSSLを構成します。

関連項目:
クライアントおよびサーバーでのSSLの構成の詳細は、第13章「Secure Sockets Layer認証の構成」を参照してください。Oracleウォレット・ロケーションに関する項はスキップしてください。

F.4.4 クライアントにおけるEntrustの構成

クライアントでEntrustを構成する手順は、プラットフォームのタイプによって異なります。

- UNIXクライアントにおけるEntrustの構成

- WindowsクライアントにおけるEntrustの構成

F.4.4.1 UNIXクライアントにおけるEntrustの構成

クライアントがWindows以外のプラットフォームに存在する場合は、次の手順を実行します。

1. JAVA_HOME変数をJDKまたはJREの場所に設定します。
例:

>setenv JAVA_HOME $ORACLE_HOME/JRE

2. sqlnet.oraファイルでWALLET_LOCATIONを設定します。
例:

WALLET_LOCATION=

(SOURCE=

(METHOD=entr)
(METHOD_DATA =
(PROFILE=profile_location)
(INIFILE=initialization_file_location)
)

)

F.4.4.2 WindowsクライアントにおけるEntrustの構成

クライアントがWindowsプラットフォームに存在する場合は、クライアントにEntrust Entelligence Desktop Managerコンポーネントがインストールされていることを確認し、次の手順を実行してEntrust資格証明を設定します。

1. sqlnet.oraファイルでWALLET_LOCATIONパラメータを設定します。
例:

WALLET_LOCATION=
(SOURCE=
(METHOD=entr)
(METHOD_DATA=
(INIFILE=initialization_file_location)
)
)

initialization_file_locationは、.iniファイルへのパスです。

2. システム・トレイで「Entrust」アイコンを選択して、「Entrust_Login」ダイアログ・ボックスを開きます。

3. プロファイル名とパスワードを入力して、Entrustにログオンします。

F.4.5 サーバーにおけるEntrustの構成

サーバーでEntrustを構成する手順は、プラットフォームのタイプによって異なります。

- UNIXサーバーにおけるEntrustの構成

- WindowsサーバーにおけるEntrustの構成

F.4.5.1 UNIXサーバーにおけるEntrustの構成

サーバーがUNIXプラットフォームの場合は、Entrust/Server Login Toolkitコンポーネントがサーバーにインストールされていることを確認し、次の手順を実行します。

関連項目:
Entrust Server Login Toolkitのダウンロードの詳細は、「Entrust対応のOracle Advanced Securityに必要なシステム・コンポーネント」を参照してください。

1. Oracleデータベース・インスタンスを停止します。

2. sqlnet.oraおよびlistener.oraファイルでWALLET_LOCATIONパラメータを設定し、サーバーのプロファイルおよびEntrust初期化ファイルへのパスを指定します。

WALLET_LOCATION =
(SOURCE =
(METHOD = ENTR)
(METHOD_DATA =
(PROFILE = profile_location)
(INIFILE = initialization_file_location)
)
)

3. 次のパスが含まれるようにCLASSPATH環境変数を設定します。

$ORACLE_HOME/JRE/lib/rt.jar
$ORACLE_HOME/JRE/lib/i18n.jar
$ORACLE_HOME/jlib/ewt*.jar
$ORACLE_HOME/jlib/help*.jar
$ORACLE_HOME/jlib/share*.jar
$ORACLE_HOME/jlib/swingall*.jar
$ORACLE_HOME/network/jlib/netentrust.jar

4. 次の手順を使用して、etbinderコマンドを入力し、自動ログイン資格証明(.ualファイル)を作成します。

1. etbinderコマンドへのパスが含まれるようにPATH環境変数を設定します。このコマンドは、Server Login Toolkitがインストールされている/binディレクトリにあります。

2. Entrustライブラリへのパスが含まれるようにLD_LIBRARY_PATHを設定します。

3. Entrust初期化ファイルへのフルパスが含まれるようにSSL_ENTRUST_INI環境変数を設定します。

4. 次のようにコマンドを入力します。

etbinder

5. プロファイル・ファイルの場所の入力を要求された場合は、ファイル名を含むフルパス名を入力します。次に、プロンプトが表示されたら、パスワードを入力します。
資格証明ファイル(filename.ual)が作成されたことを示すメッセージが表示されます。

注意:
リスナーにTCPSリスニング・エンドポイントがあることを確認してから、リスナーを開始します。

5. Oracleデータベース・インスタンスを開始します。

F.4.5.2 WindowsサーバーにおけるEntrustの構成

サーバーがWindowsプラットフォーム上にある場合は、次の手順を実行します。

関連項目:
Entrust Entelligence Desktop Managerのダウンロードの詳細は、「Entrust対応のOracle Advanced Securityに必要なシステム・コンポーネント」を参照してください。

1. Oracleデータベース・インスタンスを停止します。

2. sqlnet.oraおよびlistener.oraファイルでWALLET_LOCATIONパラメータを設定し、サーバーのプロファイルおよびEntrust初期化ファイルへのパスを指定します。

WALLET_LOCATION =
(SOURCE =
(METHOD = ENTR)
(METHOD_DATA =
(PROFILE = profile_location)
(INIFILE = initialization_file_location)
)
)

3. Entrustのbinderコマンドを実行して、自動ログイン資格証明(拡張子が.ualのファイル)を作成します。.ualファイルの所有者が、Oracleサービスの所有者と同じであることを確認します。
binderコマンドを実行するには、次のように選択します。

「スタート」→「プログラム」→「Entrust Toolkit」→「Server Login」→「Entrust Binder」

プロファイルへのパス、パスワード、およびEntrust初期化ファイルへのパスを入力します。資格証明ファイルが正常に作成されたことがメッセージで通知されます。

4. Oracleデータベース・インスタンスを開始します。

注意:
すべてのWindows環境で、サーバー・コンピュータにEntrust Entelligence Desktop Managerをインストールしないことをお薦めします。

F.4.6 Entrust対応データベース・ユーザーの作成

各Entrustユーザーの識別名(DN)に基づいて、データベースにグローバル・ユーザーを作成します。

例:

SQL> create user jdoe identified globally as 'cn=jdoe,o=oracle,c=us';

"cn=jdoe, o=oracle, c=us"は、ユーザーのEntrust識別名です。

F.4.7 Entrust対応のSSLを使用したデータベースへのログイン

1. 次のように、SQL*Plusを使用してOracleインスタンスに接続します。

sqlplus /@net_service_name

net_service_nameは、Oracleインスタンスのサービス名です。

「Entrust_Login」ダイアログ・ボックスが表示されます。

2. プロファイルへのパスとパスワードを入力します。

3. WALLET_LOCATIONパラメータの値を指定しなかった場合は、Entrust初期化ファイルへのパスの入力を要求されます。

注意:
WALLET_LOCATIONパラメータ・ファイルで初期化ファイルを指定することをお薦めします。

F.5 Entrust対応のSSLに適用される問題および制限事項

Entrustを使用するようにアプリケーションを特別に変更する必要があります。製品がEntrust-Readyとして指定されている場合、その製品はEntrustのツールキットを使用してEntrustと統合されています。

たとえば、OracleはそのSSLライブラリを、OracleウォレットではなくEntrustプロファイルにアクセスするように変更しています。

また、次の制限事項が適用されます。

- Oracleをベースとしたアプリケーションで、デジタル署名に対するEntrustコンポーネントの使用はサポートされていません。

- Entrust対応のOracle Advanced Securityとの統合がサポートされているのは、Oracle Databaseで動作するEntrust Authorityリリース6.0以上のバージョンのみです。

- Entrust対応のOracle Advanced Securityでは、以前のリリースのEntrust Authorityの使用はサポートされていません。

- Entrust PKIおよび非Entrust PKI間の相互運用性はサポートされていません。

- リリース8.1.7およびそれ以降のリリース用のOracle Internet Directoryバージョン2.1.1は、Entrustによって認定されています。

F.6 Oracle Advanced SecurityにおけるEntrustのトラブルシューティング

この項では、EntrustからOracle Advanced Securityユーザーに戻されるエラーの診断方法について説明します。

注意:
Entrustは、Oracle Advanced Securityユーザーに次の一般エラー・メッセージを戻します。
ORA-28890「委任ログインに失敗しました。」

このトラブルシューティングの項では、基になるエラーの詳細を取得する方法および問題の診断方法について説明します。

F.6.1 プラットフォームに関係なくEntrust実行時に戻されるエラー・メッセージ

Entrustを実行しているプラットフォームに関係なく、次のエラー・メッセージが表示される場合があります。

ORA-28890「委任ログインに失敗しました。」

原因: Entrust対応のOracleクライアントでSQL*Plusでログインしようとすると、この一般エラー・メッセージでエラーとなります。このエラーは、次の原因などの様々な問題によって発生する可能性があります。

- Entrust Authorityがオンラインでない

- 指定したEntrustプロファイル・パスワードが無効である

- 指定したEntrustプロファイルへのパスが無効である

- 指定したEntrust初期化ファイルが無効である

- Entrustサーバー・ログイン・プログラムがサーバーで実行されていない

処置: Entrustのエラーの詳細を取得するには、SQL*Plusのトレースをオンにして、トレースの出力にEntrustの失敗コードが表示されるようにします。sqlnet.oraファイルで次のパラメータを指定して、トレースを有効にします。
クライアント:

- TRACE_LEVEL_CLIENT=16

- TRACE_DIRECTORY_CLIENT=valid_client_directory_name

- TRACE_FILE_CLIENT=client

- TRACE_UNIQUE_CLIENT=ON

サーバー:

- TRACE_LEVEL_SERVER=16

- TRACE_DIRECTORY_SERVER=valid_server_directory name

- TRACE_FILE_SERVER=server

- TRACE_UNIQUE_SERVER=ON

生成されたトレース・ファイル内で文字列IKMPを検索して見つけます。この文字列の近くに、発生した問題の詳細を示すエラー・メッセージがあります。この詳細なエラー・コード情報は、Entrust APIによって戻されます。

注意:
次に示すのは、sqlnet.oraファイルでTRACE_DIRECTORY_CLIENTまたはTRACE_DIRECTORY_SERVERパラメータを設定する際に有効なクライアント・ディレクトリ名の例です。

- (UNIX) /tmp

- (Windows) C:\TEMP

ORA-28890「委任ログインに失敗しました。」(GUIはクライアントに表示されない)

原因: クライアント側のsqlnet.oraファイルのWALLET_LOCATIONパラメータに、Entrust初期化ファイルの場所が指定されていません。

処置: Entrust初期化ファイルの場所が、クライアントのsqlnet.oraファイルのWALLET_LOCATIONパラメータに指定されていることを確認します。

関連項目:

- 「UNIXクライアントにおけるEntrustの構成」

- 「WindowsクライアントにおけるEntrustの構成」

F.6.2 WindowsプラットフォームでのEntrust実行時に戻されるエラー・メッセージ

WindowsプラットフォームでEntrustを実行している場合、次のエラー・メッセージが表示されることがあります。

The software authentication failed. (エラー・コード - 162)。

原因: 既知のFIPSモードの非互換性により、Entrustへのログインが失敗してこのエラー・メッセージが戻される場合があります。

処置: Entrust社のサポートに連絡して、この問題を解決します。

Algorithm self-test failed. (エラー・コード - 176)。

原因: EntrustライブラリとOracleライブラリ間での既知の記号の競合により、Entrustへのログインが失敗してこのエラー・メッセージが戻される場合があります。

処置: Entrust社のサポートに連絡して、この問題を解決します。

TNS-12560: TNS: プロトコル・アダプタ・エラーTNS-00558>委任ログインに失敗しました。ORACLE SERVER (host_name)

このエラーは、Entrustにログインしようとしたときに、サーバーのlistener.logファイルで発生する場合があります。

原因: 次の推奨される変更を行うことによって、クライアントを構成している場合があります。

- .ualファイルの削除

- サーバー・ログインの削除

- クライアントのsqlnet.oraファイルのSSL_ENTRUST_INI_FILEパラメータへの、Entrust初期化ファイルの場所の指定

この場合、次のコマンドを入力すると、サーバーでクライアントを認証できないことがあります。

sqlplus/@net_service_name

処置: サーバーで、次のタスクを実行してトレースを有効にします。

1. 「コントロール パネル」→「サービス」を選択します。

2. 「サービス」ダイアログ・ボックスで、OracleTNSListenerをダブルクリックし、「ログオン」を「システム アカウント」から現在ログインしているアカウントに変更します。これにより、サーバー・プロセスが.ualファイルを読み取ることができるようになります。「OK」をクリックして変更すると、「サービス」ダイアログ・ボックスに戻ります。
「サービス」ダイアログ・ボックスで、OracleServiceについても同様に変更します。

3. listener.oraファイルを次のように変更します。

- リスナーのADDRESSでPROTOCOLとしてTCPSのみを指定します。たとえば、次のようにすべてのPROTOCOL定義をTCPSに変更します。

listener_name=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCPS) (KEY=extproc0))
(ADDRESS=(PROTOCOL=TCPS) (HOST=sales-pc) (PORT=1521)))

TCPSのみを使用してリスナーを起動することで、トレースをオンにすると、Entrustプロファイルへのアクセスに問題があるかどうかが示されます。

- 次のように、SSL_CLIENT_AUTHENTICATIONパラメータをFALSEに設定します。

SSL_CLIENT_AUTHENTICATION=FALSE

- 次のパラメータを設定して、トレースをオンにします。

TRACE_LEVEL_LISTENER=16
TRACE_DIRECTORY_LISTENER=C:\temp

トレース・ファイルは、C:\tempディレクトリに作成されます。

4. sqlnet.oraファイルを次のように変更して、トレースをオンにします。

TRACE_LEVEL_SERVER=16
TRACE_DIRECTORY_SERVER=C:\temp

トレース・ファイルは、C:\tempディレクトリに作成されます。

5. Entrust Entelligence Desktop Managerがサーバー上にインストールされていないことを確認します。

文字列failまたはntz*の関数コールを検索して見つけます。これらの近くに、発生した問題の詳細を示すエラー・メッセージがあります。

F.6.3 Entrustを実行するための一般的なチェックリスト(すべてのプラットフォームに共通)

次の項目は、すべてのプラットフォームに適用されます。

1. Entrust Authorityがオンラインであることを確認します。

2. .ualファイルが生成されていることを確認します。これらのファイルは、自動ログイン資格証明のために作成されます。

注意:
自動ログイン資格証明ファイル(.ualファイル)は、サーバーに対してのみ作成することをお薦めします。サーバーに対してのみ.ualファイルを生成した場合、ユーザーがログインしようとすると、ユーザーのパスワードとEntrustプロファイル名を要求するGUIが表示されます。この情報をユーザーが入力すると、接続要求がEntrustサーバーに転送され、失効ファイルおよび.ualファイルが検索されて、要求を許可するために権限が判別されます。

3. Entrust初期化ファイルで、Entrust Settingsを指定する最初のセクションに次のエントリがあることを確認します。

IdentityLibrary=location

libidapi.soファイルの場所へのフルパスをIdentityLibraryパラメータに指定する必要があります。このパラメータ設定によって、サーバーで.ualファイルを生成できるようになります。

4. Entrust IPSEC Negotiator ToolkitやServer Login Toolkitなど、Entrustのすべてのツールキットが、互換性を持つように同じバージョンであることを確認します。

5. 次の例に示すように、sqlnet.oraファイルのSQLNET.AUTHENTICATION_SERVICESパラメータに、SSL付きTCP/IPを指定したことを確認します。

SQLNET.AUTHENTICATION_SERVICES=(tcps, authentication_type1, authentication_   type2)

F.6.3.1 WindowsでのEntrustインストールのチェックリスト

次のチェックリストの項目は、WindowsプラットフォームでのEntrustインストールにのみ適用されます。

1. Entrust Entelligence Desktop Managerにログインしていることを確認し、再試行します。

2. 「Windows」→「コントロール パネル」を選択し、「サービス」をクリックして、Entrust Login Interfaceサービスが起動され、実行中であることを確認します。

3. sqlnet.oraファイルのSSL_ENTRUST_INI_FILEパラメータに、Entrust初期化ファイルの場所が指定されていることを確認します。ただし、ここで場所を指定しないことを選択する場合、Entrust初期化ファイルはc:\WINNTに存在している必要があります。

4. データベースがMicrosoft社のプラットフォームで実行されている場合は、Entrust Entelligence Desktop Managerが実行されていないことを確認します。この場合は、自動ログインを有効にする.ualファイルのみが必要となります。

関連項目:
Entrustのbinderコマンドによる.ualファイルの作成の詳細は、「WindowsサーバーにおけるEntrustの構成」の手順4を参照してください。

5. Entrust初期化ファイルで指定されているEntrust Authorityがアクセス可能で、実行されていることを確認します。

6. プロファイルのパスワードが正しく入力されていることを確認します。

7. Oracleデータベース・サーバーがEntrustにログインできない場合は、自動ログイン資格証明ファイル(.ual)が有効なパスワードを使用して生成されていることを確認します。また、Entrust Server Login ToolkitとEntrust IPSEC Negotiator Toolkitのバージョンが一致していることを確認します(つまり、IPSEC Toolkit 6.0はServer Login Toolkit 6.0で動作します)。

8. Entrust初期化ファイルで、最初のセクション(Entrust Settings)に次のエントリがあることを確認します。

IdentityLibrary = location

locationは、libidapi.soの場所(ファイル名を含む)です。

用語集

実際のデータ

Oracle Data Redactionで、保護表または保護ビューにあるデータ。実際のデータには数字123456789などがあり、この数字のリダクションされたデータは、データ・リダクション・ポリシーに従って999996789としてユーザーに表示されます。

アクセス制御

特定のクライアントまたはクライアント・グループに対して特定のデータへのアクセス権を付与または制限するシステム機能。

アクセス制御リスト(ACL)

ユーザーが定義するアクセス指示のグループです。ディレクティブは、特定のクライアント、クライアント・グループまたはその両方に対して特定のデータへのアクセスのレベルを付与します。

Advanced Encryption Standard

Advanced Encryption Standard(AES)は、National Institute of Standards and TechnologyによってDESを置換するものとして承認された新しい暗号アルゴリズムです。AES標準は、Federal Information Processing Standards Publication 197で使用可能です。AESアルゴリズムは、128、192および256ビットの長さの暗号鍵を使用して、128ビットのデータ・ブロックを処理できる対称型ブロック暗号です。

AES

「Advanced Encryption Standard」を参照してください。

属性

LDAPディレクトリ内のエントリの性質を説明する情報項目。1つのエントリは1組の属性から構成され、それぞれがオブジェクト・クラスに所属します。さらに、各属性にはタイプと値があり、タイプは属性の情報の種類を説明し、値には実際のデータが格納されています。

認証

コンピュータ・システムのユーザー、デバイスまたはその他のエンティティの識別情報を検証するプロセスであり、システムのリソースへのアクセス権を付与するための前提条件となることが多いです。認証されたメッセージの受信者は、メッセージの起点(送信者)を信頼できます。認証は、別人が送信者になりすましているという可能性を排除すると考えられます。

認証方式

分散環境のユーザー、クライアントまたはサーバーの識別情報を検証するセキュリティ方式。ネットワーク認証方式では、ユーザーにシングル・サイン・オン(SSO)の利点も提供できます。Oracle Advanced Securityがインストールされている場合は、Oracle Databaseで次の認証方式がサポートされます。

- Kerberos

- RADIUS

- Secure Socket Layer(SSL)

- Windows固有の認証

認可

オブジェクトまたはオブジェクトのセットへのアクセスのためにユーザー、プログラムまたはプロセスに与えられる許可。Oracleでは、認可はロール・メカニズムを通じて行われます。1人のユーザーまたはユーザー・グループに、1つのロールまたはロールのセットを付与できます。ロールはさらに他のロールに付与できます。認証されたエンティティが利用できる権限のセット。

自動ログイン・ウォレット

アクセス時に資格証明を提供せずにサービスへのPKIベースまたはパスワードベースのアクセスを可能にするOracle Wallet Managerの機能。自動ログイン・アクセスは、自動ログイン機能がウォレットに対して無効になるまで有効です。ファイル・システム権限は、自動ログイン・ウォレットに必要なセキュリティを提供します。ウォレットに対して自動ログインが有効になっている場合は、そのウォレットを作成したオペレーティング・システム・ユーザーのみ、そのウォレットを使用できます。これらはシングル・サイン・オン機能を提供するため、SSOウォレットと呼ばれることもあります。

ベース

LDAP準拠ディレクトリでのサブツリー検索のルート。

CA

「認証局」を参照。

証明書

公開鍵に対して識別情報を安全にバインドするITUのx.509 v3標準データ構造。

証明書は、エンティティの公開鍵が、信頼されている機関(認証局)によって署名されたときに作成されます。この証明書は、そのエンティティの情報が正しいこと、および公開鍵がそのエンティティに実際に含まれていることを保証します。

証明書には、エンティティの名前、識別情報および公開鍵が含まれます。シリアル番号、有効期限、ならびにその証明書に関連する権利、使用および権限についての情報が含まれていることもあります。さらに、発行元の認証局についての情報も含まれます。

認証局

他のエンティティ(ユーザー、データベース、管理者、クライアント、サーバーなど)が本物であることを証明する、信頼できるサード・パーティ。ユーザーを証明するとき、認証局は最初にそのユーザーが証明書失効リスト(CRL)に掲載されていないことを確認してからそのユーザーのアイデンティティを検証し、証明書を付与し、認証局の秘密鍵を使用してその証明書に署名します。認証局には自身の証明書と公開鍵があり、公開されています。サーバーおよびクライアントは、これらを使用して認証局の署名を検証します。認証局は、証明書サービスを提供する外部の会社の場合や、企業のMIS部門のような内部の組織の場合があります。

証明連鎖

エンド・ユーザーまたはサブスクライバの証明書とその認証局の証明書を含む、順序付けられた証明書のリスト。

証明書リクエスト

認証リクエスト情報、署名アルゴリズム識別子および認証リクエスト情報に対するデジタル署名の3つの部分から構成される証明書リクエスト。認証リクエスト情報は、対象の識別名、公開鍵およびオプションの属性セットから構成されます。属性では、対象の識別情報に関する郵便番号などの追加情報、または対象エンティティが後で証明書失効を要求するためのチャレンジ・パスワードを提供できます。「PKCS #10」を参照。

証明書失効リスト

(CRL)失効した証明書のリストを含む署名付きデータ構造。CRLの信頼性および整合性は、証明書に添付されているデジタル署名により提供されます。CRL署名者は通常、発行された証明書に署名したエンティティと同一です。

チェックサム

メッセージ・パケットに含まれているデータに基づいてメッセージ・パケットの値を計算し、その値をデータとともに渡して、データが書き換えられていないことを認証するメカニズム。データの受信者は暗号チェックサムを再計算して、それをデータとともに送られた暗号チェックサムと比較します。これらが一致している場合は、データが送信中に書き換えられなかったことの確率的な証明になります。

暗号ブロック連鎖(CBC)

暗号化メソッドの1つ。先行するすべてのブロックに従って暗号ブロックの暗号化を行い、ブロック再生攻撃からデータを保護します。無許可の復号化が段階的に困難になるように設計されています。Oracle Advanced Securityでは、外部暗号ブロック連鎖が使用されています。これは、内部暗号ブロックよりも安全性が高く、実質的なパフォーマンスの低下を伴わないためです。

暗号スイート

ネットワークのノード間でメッセージ交換に使用される認証、暗号化およびデータ整合性アルゴリズムのセット。たとえば、SSLハンドシェイク時に、2つのノードでネゴシエーションを行い、メッセージを交換するときにどの暗号スイートを使用するかを確認します。

暗号スイート名

暗号スイートは、特定のセッションで接続により使用される暗号保護の種類を示します。

暗号文

暗号化されたメッセージ・テキスト。

クリアテキスト

暗号化されていない平文。

クライアント

サービスを利用する側。クライアントはユーザーの場合や、データベース・リンク中にユーザーとして機能するプロセス(プロキシともいう)の場合があります。

機密保護

暗号化の機能。機密保護によって、メッセージを参照(暗号文を復号化する)できるのはメッセージの本来の受信者のみであることが保証されます。

接続記述子

特別にフォーマットされた、ネットワーク接続のための宛先の記述。接続記述子には、接続先のサービスおよびネットワーク・ルート情報が含まれます。接続先サービスは、Oracle9iまたはOracle8iデータベースのサービス名か、Oracleデータベース・バージョン8.0のOracleシステム識別子(SID)を使用して指定されます。ネットワーク・ルートは、少なくとも、ネットワーク・アドレスを使用してリスナーの場所を示します。「接続識別子」を参照。

接続識別子

接続記述子を解決する名前、ネット・サービス名またはサービス名。次のように、ユーザーは、接続するサービスに対して、接続文字列内の接続識別子とともにユーザー名とパスワードを渡して、接続要求を実行します。

例:

CONNECT username@connect_identifier
Enter password: password

接続文字列

ユーザー名、パスワード、ネット・サービス名など、ユーザーが接続先のサービスに渡す情報。例:

CONNECT username@net_service_name
Enter password: password

資格証明

データベースにアクセスするために使用するユーザー名、パスワードまたは証明書。

CRL

「証明書失効リスト」を参照してください。

CRL配布ポイント

(CRL DP) X.509バージョン3証明書標準で指定されるオプションの拡張子であり、証明書の失効情報が格納される区分CRLの位置を示します。通常、この拡張子の値はURLの形式です。CRL DPによって、1つの認証局ドメイン内の失効情報を複数のCRLにポストできます。CRL DPによって、失効情報はより管理しやすい部分に細分化され、CRLが膨大に増加するのが回避されるため、パフォーマンスが向上します。たとえば、CRL DPを証明書に指定し、その証明書の失効情報をダウンロードできる、Webサーバー上のファイルを指すようにできます。

CRL DP

「CRL配布ポイント」を参照してください。

暗号化

データのエンコードとデコードを行い、保護メッセージを生成する作業。

データ・ディクショナリ

データベースの情報を提供する読取り専用の表のセット。

データ・リダクション

様々な値でデータをマスクする機能です。Oracle Data Redactionでは、リアル・タイム、つまりユーザーがデータにアクセスしようとする瞬間にデータをマスクできます。すべてのデータまたは一部のデータをマスクしたり、データのかわりにランダム値を表示できます。

「リダクション」も参照してください。

Data Encryption Standard (DES)

米国連邦情報処理標準の古い暗号化アルゴリズムであり、Advanced Encryption Standard (AES)に置き換えられました。

データベース管理者

(1)Oracleサーバーまたはデータベース・アプリケーションを操作および管理する個人。(2)DBA権限を付与され、データベース管理機能を実行できるOracleユーザー名。通常、これら2つを同時に意味します。多くのサイトでは複数のDBAが配置されます。

データベース別名

「ネット・サービス名」を参照してください。

データベース・インストール管理者

データベース作成者とも呼ばれます。この管理者は、新規データベースの作成を担当します。この作業には、データベース・コンフィギュレーション・アシスタントを使用したディレクトリへの各データベースの登録が含まれます。この管理者は、データベース・サービス・オブジェクトおよび属性の作成および変更アクセス権を持ちます。この管理者は、デフォルトのドメインも変更できます。

データベース・リンク

ローカル・データベースまたはネットワーク定義に格納されるネットワーク・オブジェクトであり、リモート・データベース、そのデータベースへの通信パス、およびオプションでユーザー名とパスワードを識別します。定義された後、データベース・リンクはリモート・データベースへのアクセスに使用されます。

あるデータベースから別のデータベースへのパブリックまたはプライベート・データベース・リンクは、DBAまたはユーザーによってローカル・データベースに作成されます。

グローバル・データベース・リンクは、Oracle Namesで各データベースからネットワーク内の他のすべてのデータベースに自動的に作成されます。グローバル・データベース・リンクはネットワーク定義に格納されます。

データベース・パスワード・ベリファイア

ユーザーのデータベース・パスワードから導出される不可逆的な値。この値は、データベースに対するパスワード認証時に、接続ユーザーの識別情報が正しいことを確認するために使用されます。

データベース・セキュリティ管理者

データベース・エンタープライズ・ユーザー・セキュリティの最上位レベルの管理者。この管理者は、すべてのエンタープライズ・ドメインに対する権限を持ち、次のことに責任を持ちます。

- Oracle DBSecurityAdminsおよびOracleDBCreatorsグループの管理

新規エンタープライズ・ドメインの作成。

- エンタープライズ内のあるドメインから別のドメインへのデータベースの移動

復号化

暗号化されたメッセージ(暗号文)の内容を元の判読可能形式(平文)に変換するプロセス。

DES

「Data Encryption Standard (DES)」を参照してください。

辞書攻撃

パスワードに対する一般的な攻撃。攻撃者は、多数の一般的なパスワードのリストを作成し、それらを暗号化します。次に、攻撃者は暗号化されたパスワードを含むファイルを盗み、暗号化した一般的なパスワードのリストと比較します。暗号化したパスワードの値(ベリファイアと呼ばれる)のいずれかが一致した場合、攻撃者は対応するパスワードを盗むことができます。辞書攻撃は、暗号化の前にパスワードにsaltを使用することで回避できます。

Diffie-Hellman鍵交換アルゴリズム

これは、安全でないチャネルを通じて通信する2つのパーティに、それらのパーティのみが知っているランダムな数字を合意させる方法です。Diffie-Hellman鍵交換アルゴリズムの実行中は、当事者は非保護チャネルで情報を交換しますが、攻撃者がネットワーク通信を分析し、当事者の間で取り決めた乱数を計算によって推定するのはほぼ不可能です。Oracle Advanced Securityでは、セッション鍵の生成にDiffie-Hellman鍵交換アルゴリズムが使用されています。

デジタル署名

デジタル署名は、公開鍵アルゴリズムを使用して送信者の秘密鍵で送信者のメッセージに署名するために使用されます。このデジタル署名によって、文書が信頼できるものであること、別のエンティティで偽造されていないこと、変更されていないこと、送信者によって拒否されないことが保証されます。

ディレクトリ情報ツリー(DIT)

LDAPディレクトリ内のエントリのDNから構成される階層ツリー型構造。「識別名(DN)」を参照してください。

ディレクトリ・ネーミング

中央ディレクトリ・サーバーに格納されているデータベース・サービス、ネット・サービス名またはネット・サービス別名を接続記述子に解決するネーミング・メソッドです。A

ディレクトリ・ネーミング・コンテキスト

ディレクトリ・サーバー内で意味を持つサブツリー。通常は、組織サブツリーの最上位です。あるディレクトリでは、固定のこのようなコンテキストが1個のみ許可されますが、他のディレクトリでは、ディレクトリ管理者によって0個から多数までのコンテキストを構成できます。

識別名(DN)

ディレクトリ・エントリの一意の名前。親エントリからディレクトリ情報ツリーのルート・エントリまでのすべての個々の名前から構成されます。「ディレクトリ情報ツリー(DIT)」を参照してください。

ドメイン

ドメイン・ネーム・システム(DNS)・ネームスペース内の任意のツリーまたはサブツリーです。ドメインは通常、所属するホストの名前が共通の接尾辞、つまりドメイン名を共有しているコンピュータのグループを指します。

ドメイン・ネーム・システム(DNS)

ドメインの階層に編成された、コンピュータおよびネットワーク・サービスのネーミングのためのシステム。DNSは、TCP/IPネットワークで使用され、ユーザー・フレンドリな名前でコンピュータの位置を識別します。DNSは、このわかりやすい名前を、コンピュータが理解できるIPアドレスに変換します。

Oracle Net Servicesでは、DNSはTCP/IPアドレスのホスト名をIPアドレスに変換します。

暗号化テキスト

暗号化アルゴリズムを使用して暗号化されたテキスト。暗号化プロセスの出力ストリーム。テキストは復号化の対象とならないかぎり、そのままでは読取りまたは解読できません。暗号文とも呼ばれます。暗号化テキストは、最終的には平文になります。

暗号化

対象受信者以外には判読不能なものとしてメッセージの形を変えるプロセス。

エンタープライズ・ドメイン

データベースとエンタープライズ・ロールのグループで構成されたディレクトリ構造。1つのデータベースが同時に複数のエンタープライズ・ドメイン内に存在することはありません。エンタープライズ・ドメインは、共通ディレクトリ・データベースを共有するコンピュータの集合であるWindows 2000ドメインとは異なります。

エンタープライズ・ドメイン管理者

新規エンタープライズ・ドメイン管理者を追加する権限を含め、特定のエンタープライズ・ドメインの管理を認可されたユーザー。

エンタープライズ・ロール

エンタープライズ・ユーザーに割り当てられるアクセス権限。エンタープライズ・ドメイン内の1つ以上のデータベースに対する、一連のOracleロールに基づく認可。エンタープライズ・ロールは、ディレクトリに格納され、1つ以上のグローバル・ロールが含まれています。

エンタープライズ・ユーザー

ディレクトリで定義および管理されるユーザー。各エンタープライズ・ユーザーは、企業内で固有の識別情報を保持します。

エントリ

ディレクトリの基本単位で、ディレクトリ・ユーザーに関係のあるオブジェクトに関する情報が含まれています。

外部認証

KerberosやRADIUSなどのサード・パーティ認証サービスによるユーザー識別情報の検証。

米国連邦情報処理標準(FIPS)

暗号化モジュールのセキュリティ要件を定義する米国連邦政府の標準であり、コンピュータおよびテレコミュニケーション・システム内の非機密情報を保護するセキュリティ・システムで使用されます。米国商務省国立標準技術研究所(NIST)によって発行されます。

FIPS

「米国連邦情報処理標準(FIPS)」を参照してください。

フォレスト

相互に信頼する1つ以上のActive Directoryツリーのグループ。フォレスト内のすべてのツリーは、共通のスキーマ、構成およびグローバル・カタログを共有します。フォレストに複数のツリーが含まれる場合、ツリーは連続したネームスペースを形成しません。指定フォレスト内のすべてのツリーは、推移的な双方向の信頼関係を介して相互に信頼します。

転送可能なチケット認可チケット

Kerberosの場合。FORWARDABLEフラグが設定されたサービス・チケット。このフラグにより、ユーザーにパスワードの再入力を要求せずに転送を認証できます。

グローバル・ロール

ディレクトリで管理されるロールですが、その権限は単一のデータベースに含まれています。グローバル・ロールは、次の構文を使用してデータベースに作成されます。

CREATE ROLE role_name IDENTIFIED GLOBALLY;

グリッド・コンピューティング

多くのサーバーと記憶域を調整して単一の大容量コンピュータとして動作させるコンピューティング・アーキテクチャ。Oracle Grid Computingは、柔軟性のあるオンデマンド・コンピューティング・リソースをすべてのエンタープライズ・コンピューティング・ニーズに対して作成します。Oracle10gグリッド・コンピューティング・インフラストラクチャで稼働しているアプリケーションは、フェイルオーバー、ソフトウェア・プロビジョニングおよび管理のための共通インフラストラクチャ・サービスを利用できます。Oracle Grid Computingは、リソースの需要を分析し、それに応じて供給を調整します。

HTTP

Hypertext Transfer Protocol: World Wide Web上でのファイル(テキスト、グラフィック・イメージ、サウンド、ビデオおよびその他のマルチメディア・ファイル)の交換に関するルールのセット。TCP/IPプロトコル・スイート(インターネット上での情報交換の基礎)に関して、HTTPはアプリケーション・プロトコルです。

HTTPS

通常のHTTPアプリケーション・レイヤーの下のサブレイヤーとして、Secure Sockets Layer(SSL)が使用されます。

識別情報

公開鍵と、エンティティに関するその他の任意のパブリック情報の組合せ。パブリック情報には、電子メール・アドレスなどのユーザー識別データを含めることができます。宣言どおりのエンティティとして証明されているユーザー。

アイデンティティ管理

オンライン、すなわちデジタルなエンティティの作成、管理および使用。ID管理には、デジタル識別情報の作成(デジタル識別情報のプロビジョニング)から、メンテナンス(電子リソースへのアクセスに関する組織ポリシーの施行)、さらに最終的な終了までのライフ・サイクル全体の安全な管理が含まれます。

アイデンティティ管理レルム

Oracle Internet Directoryのサブツリーであり、Oracleコンテキストのみでなく、それぞれアクセス制御リストで保護されているユーザーおよびグループの追加サブツリーも含みます。

推論

問合せを繰り返し試行してデータを検出するように設計された問合せ。たとえば、最高額の給与を得ているユーザーを検出する場合、侵入者は次の問合せを使用できます。

SELECT FIRST_NAME, LAST_NAME, SALARY FROM HR.EMPLOYEES WHERE SALARY > 16000 ORDER BY SALARY DESC;

FIRST_NAME           LAST_NAME                     SALARY
-------------------- ------------------------- ----------
Steven               King                           24000
Neena                Kochhar                        17000
Lex                  De Haan                        17000

初期チケット

Kerberos認証では、初期チケットまたはチケット認可チケット(TGT)によって、ユーザーが追加のサービス・チケットを要求する権利を持つものとして識別されます。初期チケットがないと、他のチケットは取得できません。初期チケットは、okinitプログラムを実行し、パスワードを提供することで取得されます。

インスタンス

稼働中のすべてのOracleデータベースは、Oracleインスタンスに関連付けられています。(コンピュータのタイプに関係なく)データベースがデータベース・サーバー上で起動すると、Oracleによってシステム・グローバル領域(SGA)というメモリー領域が割り当てられ、Oracleプロセスが起動します。このSGAとOracleプロセスの組合せをインスタンスと呼びます。インスタンスのメモリーおよびプロセスは、関連付けられているデータベースのデータを効率的に管理し、1人以上のデータベース・ユーザーを処理します。

整合性

受信メッセージの内容が、元の送信メッセージの内容から変更されていないことの保証。

Javaコードの不明瞭化

Javaコードの不明瞭化は、Javaプログラムをリバース・エンジニアリングから保護するために使用されます。特別なプログラム(obfuscator)を使用して、コードに見つかったJavaシンボルをスクランブルします。プロセスは、元のプログラム構造をそのまま保持し、意図した動作を隠すためにクラス、メソッドおよび変数の名前を変更する一方でプログラムを正常に実行します。不明瞭化されていないJavaコードをデコンパイルして読み取ることは可能ですが、不明瞭化されたJavaコードのデコンパイルは、米国政府の輸出規制を満たすのに十分なほど困難になっています。

Java Database Connectivity(JDBC)

Sun Microsystemsによって定義された業界標準のJavaインタフェースで、Javaプログラムからリレーショナル・データベースに接続する場合に使用します。

JDBC

「Java Database Connectivity(JDBC)」を参照してください。

KDC

Key Distribution Center。Kerberos認証では、KDCはユーザー・プリンシパルのリストを管理し、ユーザーの初期チケットに関してkinit(okinitはOracleバージョン)プログラムを通じてアクセスされます。KDCおよびチケット認可サービスが同じエンティティに結合されることが多いですが、その場合もKDCと呼ばれます。チケット認可サービスは、サービス・プリンシパルのリストを管理し、このようなサービスを提供するサーバーに対してユーザーの認証が必要な場合にアクセスされます。KDCは、セキュア・ホストで実行する必要のある信頼できるサード・パーティです。チケット認可チケットおよびサービス・チケットを作成します。

Kerberos

Massachusetts Institute of TechnologyのAthenaプロジェクトで開発されたネットワーク認証サービスであり、分散環境でのセキュリティを強化します。Kerberosは信頼できるサード・パーティ認証システムであり、共有秘密鍵に基づき、サード・パーティがセキュアであることを前提とします。シングル・サインオン機能とデータベース・リンク認証(MIT Kerberosのみ)があり、パスワードを一元的に保管してPCのセキュリティを強化します。

鍵

データの暗号化時に、指定されたアルゴリズムによって指定された平文から生成される暗号文を決定する値。また、データの復号化時に、暗号文を正しく復号化するために必要な値。正しい鍵が提供された場合のみ、暗号文は正しく復号化されます。

対称型暗号化アルゴリズムでは、同じデータの暗号化と復号化の両方に同じ鍵が使用されます。非対称型暗号化アルゴリズム(公開鍵暗号化アルゴリズムまたは公開鍵暗号システムとも呼びます)では、同じデータの暗号化と復号化に異なる鍵が使用されます。

鍵のペア

公開鍵とそれに対応する秘密鍵。「公開鍵と秘密鍵のペア」を参照してください。

キー表ファイル

1つ以上のサービス・キーを含むKerberosキー表ファイル。キー表ファイルは、ユーザーが各自のパスワードを使用する場合と同様に、ホストまたはサービスで使用されます。

kinstance

Kerberos認証されたサービスのインスタンス化または場所。これは、任意の文字列ですが、通常はサービスのホスト・コンピュータ名を指定します。

kservice

Kerberosサービス・オブジェクトの任意の名前。

LDAP

「Lightweight Directory Access Protocol(LDAP)」を参照してください。

ldap.oraファイル

次のディレクトリ・サーバー・アクセス情報を含むファイル。Oracle Netコンフィギュレーション・アシスタントによって作成されます。

- ディレクトリ・サーバーのタイプ。

- ディレクトリ・サーバーの位置。

- クライアントまたはサーバーで使用するデフォルトのID管理レルムまたはOracleコンテキスト(ポートを含む)

Lightweight Directory Access Protocol (LDAP)

標準の拡張可能ディレクトリ・アクセス・プロトコル。LDAPクライアントおよびサーバーが通信に使用する共通言語です。Oracle Internet Directoryなど、業界標準のディレクトリ製品をサポートする設計規則のフレームワーク。

リスナー

サーバー上で実行される独立したプロセスです。クライアントの着信接続要求をリスニングし、サーバーへの通信量を管理します。

クライアントがサーバーとのネットワーク・セッションを要求するたびに、リスナーが実際の要求を受信します。クライアント情報がリスナー情報と一致する場合、リスナーはサーバーへの接続を付与します。

listener.oraファイル

次のものを識別するリスナーの構成ファイル。

- リスナー名

- 接続要求を受付けるプロトコル・アドレス

- リスニング対象のサービス

通常、listener.oraファイルは、UNIXプラットフォームでは$ORACLE_HOME/network/adminに、WindowsではORACLE_BASE\ORACLE_HOME\network\adminにあります。

介在者

第三者によるメッセージの不正傍受という特徴を持つセキュリティ攻撃。第三者(介在者)は、メッセージを復号化して再暗号化し(元のメッセージを変更する場合と変更しない場合があります)、元の宛先である受信者に転送します。これらの処理はすべて、正当な送受信者が気付かないうちに行われます。この種のセキュリティ攻撃は、認証が行われていない場合にのみ発生します。

メッセージ認証コード

データ認証コード(DAC)とも呼ばれます。秘密鍵を追加したチェックサム。鍵を持つ人のみが暗号チェックサムを検証できます。

メッセージ・ダイジェスト

「チェックサム」を参照。

ネーミング・メソッド

クライアント・アプリケーションがデータベース・サービスへの接続を試みるときに、接続識別子を接続記述子に変換するために使用する解決メソッド。

National Institute of Standards and Technology (NIST)

米国商務省の機関であり、コンピュータおよびテレコミュニケーション・システム内の暗号ベース・セキュリティ・システムの設計、取得および実装に関連するセキュリティ標準の開発に責任を持ちます。連邦機関、または連邦の役割を遂行するために連邦政府にかわって情報を処理する連邦機関の契約者やその他の組織によって運営されます。

ネット・サービス別名

ディレクトリ・サーバーのディレクトリ・ネーミング・オブジェクトの代替名。ディレクトリ・サーバーは、定義されたネット・サービス名またはデータベース・サービスのネット・サービス別名を格納します。ネット・サービス別名のエントリには、接続記述子情報は含まれていません。かわりに、別名の対象のオブジェクトの場所のみ参照します。クライアントがネット・サービス別名のディレクトリ参照をリクエストすると、ディレクトリはそのエントリがネット・サービス別名であると判断し、参照しているのが実際のエントリであるかのようにして参照を完了します。

ネット・サービス名

接続記述子に解決されるサービスの単純名。ユーザーは、接続するサービスに対する接続文字列内に、ネット・サービス名とともにユーザー名およびパスワードを渡すことで接続リクエストを開始します。

CONNECT username@net_service_name
Enter password: password

必要に応じて、ネット・サービス名は次のような様々な場所に格納できます。

- 各クライアントのローカル構成ファイル、tnsnames.ora

- ディレクトリ・サーバー

- NISなどの外部ネーミング・サービス

ネットワーク認証サービス

分散環境で、クライアントからサーバー、サーバー間およびユーザーからクライアントとサーバーの両方を認証する手段。ネットワーク認証サービスは、アクセスできる様々なサーバー上のユーザーとサービスに関する情報、およびネットワーク上のクライアントとサーバーに関する情報を格納するためのリポジトリです。認証サーバーは、物理的に異なるコンピュータにすることも、システム内の別のサーバー上の共同の場所にある設備にすることもできます。可用性を保証するために、一部の認証サービスを複製してシングル・ポイント障害を回避できます。

ネットワーク・リスナー

1つ以上のプロトコルで1つ以上のデータベースへの接続要求をリスニングする、サーバー上のリスナー。「リスナー」を参照。

NIST

「米国商務省国立標準技術研究所(NIST)」を参照。

非拒否

メッセージの発信元、配信、送信または伝送の明白な証明。

不明瞭化

スクランブルに使用されているアルゴリズムが不明な場合にスクランブル解除が非常に困難になるように、情報を判読不能な形式にスクランブルするプロセス。

不明瞭化プログラム

Javaソース・コードの不明瞭化に使用される特殊なプログラム。「不明瞭化」を参照。

オブジェクト・クラス

名前を持った属性のグループ。属性をエントリに割り当てるときは、その属性を保持しているオブジェクト・クラスをそのエントリに割り当てます。同じオブジェクト・クラスに関連するオブジェクトはすべて、同じ属性を共有します。

Oracleコンテキスト

1. LDAP準拠のインターネット・ディレクトリ内にあるcn=OracleContextというエントリ。このディレクトリには、Oracle Net Servicesディレクトリ・ネーミングおよびチェックサムのセキュリティのエントリなど、Oracleソフトウェア関連のすべての情報が格納されています。

1つのディレクトリに1つ以上のOracleコンテキストを設定できます。Oracleコンテキストは、通常はID管理レルムに位置します。

Oracle Data Redaction

完全マスキング、部分マスキング、ランダム・マスキングまたはマスキングなしのいずれかを使用して、リアルタイムでデータをマスクできる一連の機能です。

「実際のデータ」、「リダクションされたデータ」および「リダクション」も参照してください。

Oracle Net Services

OracleサーバーまたはDesigner/2000などのOracleツールを実行する2台以上のコンピュータがサード・パーティ・ネットワークを通じてデータを交換できるようにするOracle製品。Oracle Net Servicesは、分散処理および分散データベース機能をサポートします。Oracle Net Servicesは、通信プロトコルに依存しないためオープン・システムであり、ユーザーはOracle Netから多数のネットワーク環境へのインタフェースをとることができます。

Oracle PKI証明書使用条件

証明書でサポートされるOracleアプリケーション・タイプを定義します。

パスワードアクセス可能なドメインのリスト

パスワード認証ユーザーからの接続を受け入れるために構成されたエンタープライズ・ドメインのグループ。

PCMCIAカード

Personal Computer Memory Card International Association(PCMCIA)標準に準拠する小さなクレジット・カード・サイズのコンピューティング・デバイス。これらのデバイスはPCカードとも呼ばれ、メモリー、モデムまたはハードウェア・セキュリティ・モジュールの追加に使用されます。PCMCIAカードは、ハードウェア・セキュリティ・モジュールが公開鍵と秘密鍵のペアの秘密鍵コンポーネントを安全に格納する際に使用され、暗号操作も実行するものもあります。

ピア識別情報

SSL接続セッションは、特定のクライアントと特定のサーバー間のセッションです。接続先の識別情報は、セッションのセットアップ・プロセスの一部として設定される場合があります。接続先は、X.509証明連鎖によって識別されます。

PEM

インターネット上での安全な電子メールを提供するためにInternet Architecture Boardによって採用されたInternet Privacy-Enhanced Mailプロトコル標準。PEMプロトコルは、暗号化、認証、メッセージ整合性および鍵管理を提供します。PEMは、データ暗号化鍵を暗号化するための対称型スキームと公開鍵スキームの両方を含む様々な鍵管理アプローチと互換性を持つよう意図された包括的な標準です。PEMの仕様は、4つのInternet Engineering Task Force(IETF)ドキュメント、RFC 1421、1422、1423および1424に記載されています。

PKCS #10

認証リクエストの構文を記述するRSA Security, Inc.のPublic-Key Cryptography Standards(PKCS)仕様。認証リクエストは、識別名、公開鍵およびオプションの属性セットから構成され、証明書を要求するエンティティによって一括して署名されます。このマニュアルでは、認証リクエストを証明書リクエストと呼びます。「証明書リクエスト」を参照。

PKCS #11

暗号情報を保持するデバイスへのCryptokiと呼ばれるアプリケーション・プログラミング・インタフェース(API)を定義し、暗号操作を実行するRSA Security, Inc.のPublic-Key Cryptography Standards(PKCS)仕様。「PCMCIAカード」を参照。

PKCS #12

通常はウォレットと呼ばれる形式で個人認証資格証明を格納および転送するための転送構文を記述するRSA Security, Inc.のPublic-Key Cryptography Standards(PKCS)仕様。

PKI

「公開鍵インフラストラクチャ(PKI)」を参照してください。

平文

暗号化されていないメッセージ・テキスト。

プリンシパル

Kerberos資格証明のセットが割り当てられているクライアントまたはサーバーを一意に識別する文字列。通常、これにはkservice/kinstance@REALMという3つの部分が含まれます。ユーザーの場合、kserviceはユーザー名です。

「kservice」、「kinstance」および「レルム」も参照してください。

秘密鍵

公開鍵暗号化では、この鍵が秘密鍵(secret key)です。主に復号化に使用されますが、デジタル署名の場合、暗号化にも使用されます。

「公開鍵と秘密鍵のペア」を参照してください。

プロキシ認証

ファイアウォールなどの中間層を伴う環境で一般に使用されるプロセス。エンド・ユーザーは中間層に対して認証を行い、中間層はエンド・ユーザーのプロキシとして、ユーザーのかわりにディレクトリに対して認証を実施します。中間層は、プロキシ・ユーザーとしてディレクトリにログインします。プロキシ・ユーザーは識別情報を切り替えることができ、ディレクトリにログインするとエンド・ユーザーの識別情報に切り替わります。プロキシ・ユーザーは、特定のエンド・ユーザーに適した認可を使用して、そのエンド・ユーザーにかわって操作を実行できます。

公開鍵

公開鍵暗号で使用される2つの鍵の1つ。もう一方は秘密鍵です。公開鍵暗号の一般的な使用方法では、公開鍵はデータを暗号化するとき、またはデジタル署名を検証するときに使用されます。秘密鍵は、データを復号化するとき、またはデジタル署名を生成するときに使用されます。公開鍵は誰でも使用できますが、秘密鍵は秘密のまま管理されます。

「公開鍵と秘密鍵のペア」を参照してください。

公開鍵暗号化

メッセージの送信側が受信側の公開鍵でメッセージを暗号化する処理。配信されたメッセージは、受信側の秘密鍵で復号化されます。

公開鍵インフラストラクチャ(PKI)

公開鍵暗号化の原理を利用した情報セキュリティ・テクノロジ。公開鍵暗号化には、共有の公開鍵と秘密鍵のペアを使用した情報の暗号化および復号化が含まれます。これにより、パブリック・ネットワーク上において安全でプライベートな通信ができます。

公開鍵と秘密鍵のペア

暗号化および復号化に使用される2つの数字のセットで、1つは秘密鍵、もう1つは公開鍵と呼ばれます。公開鍵は通常広く使用可能であるのに対して、秘密鍵はそれぞれの所有者によって保持されます。数学的に関連付けられてはいますが、計算によって公開鍵から秘密鍵を求めるのはほぼ不可能と考えられています。公開鍵と秘密鍵は、公開鍵暗号化アルゴリズムまたは公開鍵暗号化体系とも呼ばれる非対称型暗号化アルゴリズムでのみ使用されます。鍵のペアの公開鍵または秘密鍵で暗号化されたデータは、鍵のペアのうち関連付けられている鍵で復号化できます。ただし、公開鍵で暗号化されたデータを同じ公開鍵で復号化することはできず、秘密鍵で包まれたデータを同じ秘密鍵で複合化することはできません。

RADIUS

Remote Authentication Dial-In User Service(RADIUS)は、リモート・アクセス・サーバーが中央サーバーと通信してダイアルイン・ユーザーを認証し、リクエストされたシステムまたはサービスへのアクセスを認可できるようにするクライアント/サーバー・プロトコルおよびソフトウェアです。

リダクションされたデータ

Oracle Data Redactionポリシーでは、マスクされたデータが、問合せユーザーに表示されます。たとえば、実際のデータが3714-4963-5398-431の場合、データ・リダクション・ポリシーに従って、リダクションされたデータはXXXX-XXXX-XXXX-431として表示されます。

リダクション

Oracle Data Redactionポリシーで、問合せを行うユーザーにリダクションされたデータを表示するために、サーバーが実際のデータに対して実行するアクションです。

「リダクション」も参照してください。

レルム

1. ID管理レルムの省略形。2.Kerberosオブジェクト。単一の鍵配布センター/チケット認可サービス(KDC/TGS)の下で動作するクライアントとサーバーのセット。同じ名前を共有する異なるレルム内のサービス(kserviceを参照)は一意です。

レルムOracleコンテキスト

Oracle Internet DirectoryのID管理レルムの一部であるOracleコンテキスト。

レジストリ

コンピュータの構成情報を格納するWindowsのリポジトリ。

リモート・コンピュータ

ネットワーク上に存在する、ローカル・コンピュータ以外のコンピュータ。

ルート鍵証明書

「信頼できる証明書」を参照。

salt

1. 暗号化において、一般的には、saltは暗号化されたデータのセキュリティを強化する方法です。saltは、暗号化の前にデータに追加されるランダムな文字列です。したがって、攻撃者にとっては、暗号文のパターンを既知の暗号文サンプルと照合してデータを盗むことがより困難になります。2.saltは通常、辞書攻撃(悪意のあるハッカー(攻撃者)がパスワードを盗むために使用する方法)を防ぐためにも使用されます。パスワードが暗号化される前に、パスワードに追加されます。したがって、攻撃者にとっては、暗号化されたパスワードのハッシュ値(ベリファイアと呼ばれることもあります)と、一般のパスワード・ハッシュ値の辞書リストとの照合が困難になります。「辞書攻撃」を参照。

スキーマ

1. データベース・スキーマ。表、ビュー、クラスタ、プロシージャ、パッケージ、属性、オブジェクト・クラス、およびそれらに対応する一致規則など、名前が付いたオブジェクトの集合であり、特定のユーザーに関連付けられています。2.LDAPディレクトリ・スキーマ: 属性、オブジェクト・クラス、およびそれらに対応する一致ルールのコレクション。

スキーマ・マッピング

「ユーザー・スキーマ・マッピング」を参照。

Secure Hash Algorithm(SHA)

与えられたデータから160ビットの暗号メッセージ・ダイジェスト値を生成することにより、データの整合性を保証するアルゴリズム。1ビットでもデータが変更されると、そのデータのSecure Hash Algorithmチェックサムが変化します。与えられたデータ・セットを偽造して、元のデータと同じ結果をSecure Hash Algorithmで生成することはコンピュータではほぼ不可能と考えられます。

長さが264ビット未満のメッセージを取得して、160ビットのメッセージ・ダイジェスト値を生成するアルゴリズム。このアルゴリズムは、以前にサポートされていたMD5よりも若干速度が遅くなりますが、大きいメッセージ・ダイジェストによって、総当たり攻撃および反転攻撃に対処できます。

Secure Sockets Layer (SSL)

ネットワーク接続の保護のためにNetscape Communications社によって設計された業界標準プロトコル。SSLは、公開鍵インフラストラクチャ(PKI)を使用して、認証、暗号化およびデータ整合性を提供します。

Transport Layer Security (TLS)プロトコルは、SSLプロトコルの後継です。

サーバー

サービスのプロバイダ。

サービス

1. Oracleデータベース・サーバーなど、クライアントによって使用されるネットワーク・リソース。

2. Windowsレジストリにインストールされ、Windowsによって管理される実行可能プロセス。サービスが作成され、開始された後は、コンピュータにログオンしているユーザーがいない場合でも実行できます。

サービス名

Kerberosベース認証の場合は、サービス・プリンシパルのkservice部分。

サービス・プリンシパル

「プリンシパル」を参照。

サービス・キー表

Kerberos認証では、サービス・キー表はkinstanceに存在するサービス・プリンシパルのリストです。KerberosをOracleで使用するには、その前にこの情報をKerberosから抽出し、Oracleサーバー・コンピュータにコピーする必要があります。

サービス・チケット

サービス・チケットは、事前定義された期間、特定のサービスまたはサーバーに対してクライアントを認証するために使用する信頼できる情報です。初期チケットを使用してKDCから取得されます。

セッション鍵

少なくとも二者(通常はクライアントとサーバー)によって共有される鍵であり、単一の通信セッション中のデータ暗号化に使用されます。セッション鍵は通常、ネットワーク・トラフィックを暗号化するために使用されます。クライアントとサーバーはセッションの開始時にセッション鍵をネゴシエーションすることができ、その鍵はそのセッションの関係者間のすべてのネットワーク・トラフィックを暗号化するために使用されます。クライアントとサーバーが新しいセッションで再び通信する場合は、新しいセッション鍵をネゴシエーションします。

セッション・レイヤー

プレゼンテーション・レイヤー・エンティティが必要とするサービスを提供するネットワーク・レイヤーであり、プレゼンテーション・レイヤー・エンティティがダイアログの編成と同期およびデータ交換の管理を行えるようにします。このレイヤーは、クライアントとサーバー間のネットワーク・セッションを確立、管理および終了します。セッション・レイヤーの例には、ネットワーク・セッションがあります。

SHA

「Secure Hash Algorithm(SHA)」を参照してください。

共有スキーマ

複数のエンタープライズ・ユーザーが使用できるデータベースまたはアプリケーション・スキーマ。Oracle Advanced Securityでは、データベース上の同じ共有スキーマへの複数のエンタープライズ・ユーザーのマッピングがサポートされます。これにより、管理者はそれぞれのデータベースでユーザーごとにアカウントを作成する必要がなくなります。管理者は、ユーザーを1つの場所、つまり、エンタープライズ・ディレクトリに作成して、そのユーザーを共有スキーマにマップできます。この共有スキーマには他のエンタープライズ・ユーザーもマップできます。ユーザー/スキーマの分割とも呼ばれます。

単一鍵ペア・ウォレット

単一のユーザー証明書とその関連する秘密鍵が含まれるPKCS #12形式のウォレット。公開鍵は証明書に埋め込まれています。

単一パスワード認証

単一パスワードを使用して複数のデータベースでユーザーを認証する機能。Oracle Advanced Securityの実装では、パスワードはLDAP準拠ディレクトリに格納され、暗号化やアクセス制御リストで保護されます。

シングル・サインオン(SSO)

ユーザーが1度認証を受けると、その後の他のデータベースまたはアプリケーションへの接続に、厳密な認証が透過的に実施される機能。シングル・サインオンでは、ユーザーは1回の接続中に入力した単一のパスワードで複数のアカウントおよびアプリケーションにアクセスできます。単一のパスワードによる単一の認証です。Oracle Advanced Securityは、KerberosおよびSSLベースのシングル・サインオンをサポートしています。

スマートカード

ユーザー名やパスワードなどの情報を格納するため、また認証交換に関連する計算を実行するための集積回路が埋め込まれた(クレジット・カードに似た)プラスチック・カード。スマートカードは、クライアントまたはサーバーでハードウェア・デバイスによって読み取られます。

スマートカードでは、1回かぎりのパスワードとして使用できるランダムな数値を生成できます。この場合、スマートカードはサーバー上のサービスと同期するため、サーバーはスマートカードによって同じパスワードが生成されると予想します。

Sniffer

ネットワークからのプライベート・データ・トラフィックを不正にリスニングまたは取得するために使用されるデバイス。

sqlnet.oraファイル

次の内容を指定する、クライアントまたはサーバー用の構成ファイルです。

- 修飾されていないサービス名またはネット・サービス名に付加されるクライアント・ドメイン

- 名前の解決時にクライアントが使用するネーミング・メソッドの順序

- 使用するロギング機能とトレース機能

- 接続のルート

- デフォルトのOracle Names Server

- 外部ネーミング・パラメータ

- Oracle Advanced Securityパラメータ

通常、sqlnet.oraファイルは、UNIXプラットフォームでは$ORACLE_HOME/network/adminに、WindowsプラットフォームではORACLE_BASE\ORACLE_HOME\network\adminにあります。

SSO

「シングル・サイン・オン(SSO)」を参照してください。

システム・グローバル領域(SGA)

データを格納し、Oracleインスタンスの情報を制御する共有メモリー構造のグループです。

システム識別子(SID)

Oracleインスタンスの一意の名前。Oracleデータベース間を切り替えるには、ユーザーが目的のSIDを指定する必要があります。SIDは、tnsnames.oraファイル内の接続記述子のCONNECT DATA部分と、listener.oraファイル内のネットワーク・リスナーの定義に含まれます。

チケット

所有者の識別に役立つ情報。「初期チケット」および「サービス・チケット」を参照。

tnsnames.ora

接続記述子が含まれているファイル。各接続記述子はネット・サービス名にマップされます。すべてのクライアントまたは各クライアントで使用するために、このファイルを集中して維持することも、ローカルで維持することもできます。このファイルは通常、プラットフォームに応じて次の場所にあります。

- (UNIXの場合)ORACLE_HOME/network/admin

- (Windowsの場合)ORACLE_BASE\ORACLE_HOME\network\admin

トークン・カード

ユーザーが容易に認証サービスを利用できるように、数種類のメカニズムを提供するデバイス。一部のトークン・カードは、認証サービスと同期された1回かぎりのパスワードを提供します。サーバーは、認証サービスにアクセスすることにより、トークン・カードによって提供されるパスワードを任意の時点で検証できます。その他のトークン・カードは、チャレンジ・レスポンス・ベースで動作します。その場合、サーバーはユーザーがトークン・カードに入力するチャレンジ(数字)を提供します。トークン・カードは、ユーザーがサーバーに提供する別の数字(チャレンジから暗号的に派生)を提供します。

トランスポート・レイヤー

データ・フロー制御とエラー・リカバリ方式を通じてエンドツーエンドの信頼性を維持するネットワーキング・レイヤー。Oracle Net Servicesは、トランスポート・レイヤーにOracleプロトコル・サポートを使用します。

Transport Layer Security(TLS)

ネットワーク接続を保護するための業界標準プロトコル。TLSプロトコルはSSLプロトコルの後継です。公開鍵インフラストラクチャ(PKI)を使用した認証、暗号化およびデータの整合性を提供します。TLSプロトコルは、Internet Engineering Task Force (IETF)によって開発されています。

信頼できる証明書

ルート鍵証明書とも呼ばれることのある信頼できる証明書は、信頼のレベルで修飾されたサード・パーティ識別情報です。信頼できる証明書は、識別情報がエンティティの主張どおりであるかどうかを検証する際に使用されます。通常は、信頼する認証局を信頼できる証明書と呼びます。複数レベルの信頼できる証明書がある場合、証明連鎖における下位レベルの信頼できる証明書で、それより上のレベルの証明書をすべて再確認する必要はありません。

信頼できる認証局

「認証局」を参照。

トラスト・ポイント

「信頼できる証明書」を参照。

ユーザー名

データベースのオブジェクトに接続してアクセスできる名前。

ユーザー・スキーマ・マッピング

ユーザーが存在するディレクトリ内のベースおよびユーザーがマッピングされるデータベース・スキーマの名前という値のペアを含むLDAPディレクトリ・エントリ。マッピングで参照されるユーザーは、データベースへの接続時に指定されたスキーマに接続されます。ユーザー・スキーマ・マッピング・エントリは、1つのデータベースにのみ適用できるか、1つのドメイン内のすべてのデータベースに適用できます。「共有スキーマ」を参照。

ユーザー/スキーマの分割

「共有スキーマ」を参照。

ユーザー検索ベース

LDAPディレクトリ内のユーザーが存在するノード。

ビュー

1つ以上の表(またはその他のビュー)の選択的な表示で、構造とデータの両方を示します。

ウォレット

ウォレットとは、個々のエンティティに対するセキュリティ資格証明の格納と管理に使用されるデータ構造です。ウォレット・リソース・ロケータ(WRL)は、ウォレットを探すために必要なすべての情報を提供します。

ウォレット不明瞭化

ウォレット不明瞭化は、アクセスの前にユーザーにパスワードを問い合せずにOracleウォレットを格納およびアクセスするために使用されます(シングル・サイン・オン(SSO)をサポートします)。

ウォレット・リソース・ロケータ

ウォレット・リソース・ロケータ(WRL)は、ウォレットの位置を特定するために必要なすべての情報を提供します。ウォレットの保存場所であるオペレーティング・システムのディレクトリへのパスです。

Windows固有の認証

Windowsサーバーおよびそのサーバー上で稼働しているデータベースへのクライアントのシングル・ログイン・アクセスを可能にする認証方式。

WRL

「ウォレット・リソース・ロケータ」を参照してください。

X.509

デジタル証明の業界標準仕様。

索引
A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  R  S  T  U  V  W  X

A

アカウンティング、RADIUS, 11.3.5

チェックサムと暗号化の有効化, 9.4.1

非定型ツール

Oracle Data Redaction, 3.4.2

アダプタ, 1.3 ポリシーへの管理アクセス, 制限, 7.2 集計関数

データ・リダクション・ポリシー最適化に対する影響, 6.3

ALTER SYSTEM SETコマンド

ウォレットのクローズ, 8.2.7.1

暗号化ウォレットのオープン, 8.2.3, 8.2.7.1, 8.4.1.3

HSMウォレットのオープン, 8.2.6.6

マスター暗号化鍵の設定, 8.2.2.1, 8.2.6.4, 8.4.1.2

匿名, 13.6.2.3 APEX_UTIL.GET_NUMERIC_SESSION_STATEファンクション

Oracle Data Redactionポリシー(NVパブリック・ファンクション), 5.5.4

APEX_UTIL.GET_SESSION_STATEファンクション

Oracle Data Redactionポリシー(Vパブリック・ファンクション), 5.5.4

アプリケーション

データベース・アプリケーションおよびOracle Data Redaction, 3.4.1

RADIUSでの非同期認証モード, 11.2.2 認証, 1.3

複数の方式の構成, 15.3

方式, 1.2.2.2

RADIUSでのモード, 11.2

自動ログイン・ウォレット

透過的データ暗号化(TDE), 8.2.1.2, 8.2.2.2

B

Oracle Advanced Securityの利点, 1.2

BFILE, 8.2.4.7

ブラウザ証明書、Oracle Wallet Managerとの併用, 14.5.1.3.1

C

証明書, 13.2.3.2

ブラウザ、Oracle Wallet Managerとの併用, 14.5.1.3.1

認証局, 13.2.3.1 証明書失効リスト, 13.2.3.3

orapkiツールによる操作, 13.8.5.1

LDAPディレクトリへのアップロード, 13.8.5.1

格納場所, 13.8.3

証明書失効ステータス・チェック

サーバーでの無効化, 13.8.4.2, 13.8.4.3

証明書の検証のエラー・メッセージ

CRLが見つかりませんでした, 13.8.6.1

RSAステータスでCRLの日付検証に失敗しました, 13.8.6.1

RSAステータスでCRLの署名検証に失敗しました, 13.8.6.1

CRL DPからのCRLのフェッチ

CRLが見つかりません, 13.8.6.1

OIDのホスト名またはポート番号が設定されていません, 13.8.6.1 RADIUSでのチャレンジ・レスポンス認証, 11.2.2 チェンジ・データ・キャプチャ, 同期, 8.2.4.7 暗号ブロック連鎖モード, 1.2.1.1.1 暗号スイート

サーバーに指定する手順, 13.6.2.3

Secure Sockets Layer (SSL), B.3.2.1

SSLでのクライアント認証, 13.6.2.5 透過的データ暗号化のデータの圧縮, 8.3.8 構成ファイル

Kerberos, B.1

構成

Entrust対応のSecure Sockets Layer (SSL)

クライアント, F.4.3

Kerberos認証サービス・パラメータ, 12.1.7.1 Kerberosを使用するOracleサーバー, 12.1.2 RADIUS認証, 11.3.2 SSL, 13.6

クライアント, 13.6.3

サーバー, 13.6.2

シンJDBCのサポート, 10 接続

ユーザー名とパスワードの使用, 15.1

CRL, 13.2.3.3 CRLAdminsディレクトリ管理グループ, E.6.7.1 CRL

サーバーでの無効化, 13.8.4.2, 13.8.4.3

格納場所, 13.8.3

暗号化ハードウェア・デバイス, 13.2.3.5

D

透過的データ暗号化のデータのデータ重複除外, 8.3.8

Data Encryption Standard (DES)

Triple-DES暗号化アルゴリズム, 1.2.1.1.1, 9.1.2

データ整合性, 1.2.1.2, 1.2.1.2 データ・リダクション

「Oracle Data Redaction」を参照

データベース・リンク

RADIUSはサポートされない, 11.1

データベースのロール

データ・リダクション・ポリシー, 5.5.3

DDL文

Oracle Data Redactionポリシー, 6.1

Diffie-Hellman, 13.6.2.3 Diffie-Hellman鍵交換アルゴリズム, 9.3 DML文

Oracle Data Redactionポリシー, 6.1

E

暗号化とチェックサム

アクティブ, 9.4.1

ネゴシエーション, 9.4.2

パラメータ設定, 9.4.3

ENCRYPTION_WALLET_LOCATIONパラメータ, 8.2.1.1, 8.2.5.1, 8.2.6.1, 8.3.1.1, 8.4.1.1 Entrust Authority

データベース・ユーザーの作成, F.4.6

Entrust Authority for Oracle, F.2.1 Entrust Authorityソフトウェア

認証, F.3, F.4

証明書失効, F.1.3

コンポーネント, F.2, F.2.1.1

構成

クライアント, F.4.4

サーバー, F.4.5

Entelligence, F.2.1.3 etbinderコマンド, F.4.5.1 問題および制限事項, F.5 鍵管理, F.1.2 プロファイル, F.4.1

管理者による作成, F.4.1

ユーザーによる作成, F.4.1.2

Self-Administration Server, F.2.1.2 サポートされているバージョン, F.2 Entrust社, F Entrust対応のSSL

トラブルシューティング, F.6

Entrust/PKIソフトウェア, 1.2.2.2.4 エラー・メッセージ

ORA-12650, 9.4.1, 9.4.2.1, 9.4.2.2, A.2.6, A.2.7, A.2.8, A.2.9

ORA-28890, F.6

etbinderコマンド, F.4.5.1 EXEMPT REDACTION POLICY権限

Database Vaultでの使用, 7.2

外部ラージ・オブジェクト(BFILE), 8.2.4.7

F

米国連邦情報処理標準(FIPS), 1.2.1.3, D.3.1

sqlnet.oraパラメータ, D.3.2

FIPS 140-2 Level 2の証明書, D.2.1 FIPSパラメータ

構成, D.2.2

G

グリッド・コンピューティング

利点, 1.1.1

定義, 1.1.1

ガイドライン

非定型な問合せの攻撃とデータ・リダクション, 7.1

データ・リダクション・ポリシーで扱われるアプリケーションのコンテキスト値, 7.1

日常の操作とデータ・リダクション, 7.1

DDL文とデータ・リダクション・ポリシー, 7.1

総当たりSQL問合せおよび推論とデータ・リダクション, 7.1

マテリアライズド・ビューとデータ・リダクション, 7.5

ごみ箱とデータ・リダクション, 7.6

SYS_CONTEXT値とデータ・リダクション, 7.4

H

ハンドシェイク

SSL, 13.1.3

HSM(ハードウェア・セキュリティ・モジュール)

PKCS#11ライブラリ, 8.2.6.2

sqlnet.oraファイル, 8.2.6.1

user_Id:password文字列, 8.2.6.4

I

インポート/エクスポート・ユーティリティ、オリジナル, 8.2.4.7, 8.2.4.7

索引レンジ・スキャン, 8.1.2.2

初期化パラメータ・ファイル

Kerberosを使用するクライアントとサーバーのパラメータ, B.1

RADIUSを使用するクライアントとサーバーのパラメータ, B.2

SSLを使用するクライアントとサーバーのパラメータ, B.3

インライン・ビュー

データ・リダクション・ポリシーのリダクションの順序, 6.2

データ・リダクションのリダクション, 6.2

Internet Explorerの証明書

Oracle Wallet Managerとの併用, 14.5.1.3

侵入者

非定型な問合せの攻撃, 7.1

J

Javaバイト・コードの不明瞭化, 10.1.4

Java Database connectivity (JDBC)

Oracle Advanced Securityの実装, 10.1

Java Database Connectivity(JDBC)

構成パラメータ, 10.2

Oracleの拡張機能, 10.1.1

シン・ドライバの機能, 10.1.2

JDBC,「Javaデータベース接続」を参照

K

Kerberos, 1.2.2.2.1, 1.2.2.2.1

認証アダプタのユーティリティ, 12.2

認証の構成, 12.1, 12.1.7.1

フォールバック動作, 設定, 12.4

kinstance, 12.1.2

kservice, 12.1.2

レルム, 12.1.2

SQLNET.FALLBACK_AUTHENTICATIONパラメータ, 12.4

sqlnet.oraファイルのサンプル, A.1

システム要件, 1.4, 1.4

kinstance (Kerberos), 12.1.2 kservice (Kerberos), 12.1.2

L

LAN環境

脆弱性, 1.1.3.1

ラージ・オブジェクト

BFILE, 8.2.4.7

BLOB, 8.2.4.7

CLOB, 8.2.4.7

外部, 8.2.4.7

LOB, 8.2.4.7

ldap.ora

認証なし用に使用するディレクトリのSSLポート, 13.8.5.4

リスナー

エンドポイント

SSL構成, 13.6.2.7

M

RADIUSサーバーによるロールの管理, 11.3.9

マスキング

「Oracle Data Redaction」を参照

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

データ・リダクションのガイドライン, 7.5

Microsoft Internet Explorerの証明書

Oracle Wallet Managerとの併用, 14.5.1.3

N

nCipherハードウェア・セキュリティ・モジュール

Oracle Netトレースを使用したトラブルシューティング, 13.9.5.1

ネストした関数

データ・リダクション・ポリシーのリダクションの順序, 6.2

Netscapeの証明書

Oracle Wallet Managerとの併用, 14.5.1.3

Netscape社, 13.1 NOMACパラメータ(TDE), 8.2.4.1.3 NVパブリック・ファンクション(APEX_UTIL.GET_NUMERIC_SESSION_STATEファンクション), データ・リダクション・ポリシー, 5.5.4

O

不明瞭化, 10.1.4

okdstry

Kerberosアダプタ・ユーティリティ, 12.2

okinit

Kerberosアダプタ・ユーティリティ, 12.2

oklist

Kerberosアダプタ・ユーティリティ, 12.2

ORA-00979

「GROUP BYの式ではありません。」エラー, 7.1

ORA-12650エラー・メッセージ, A.2.7 ORA-28081

「権限が不十分です - コマンドはリダクション済のオブジェクトを参照しています。」エラー, 6.1

ORA-28330, 8.5 ORA-28331, 8.5 ORA-28332, 8.5 ORA-28333, 8.5 ORA-28334, 8.5 ORA-28335, 8.5 ORA-28336, 8.5 ORA-28337, 8.5 ORA-28338, 8.5 ORA-28339, 8.5 ORA-28340, 8.5 ORA-28341, 8.5 ORA-28342, 8.5 ORA-28343, 8.5 ORA-28344, 8.5 ORA-28345, 8.5 ORA-28346, 8.5 ORA-28347, 8.5 ORA-28348, 8.5 ORA-28349, 8.5 ORA-28350, 8.5 ORA-28351, 8.5 ORA-28353, 8.5 ORA-28354, 8.5 ORA-28356, 8.5 ORA-28357, 8.5 ORA-28358, 8.5 ORA-28359, 8.5 ORA-28361, 8.5 ORA-28362, 8.5 ORA-28363, 8.5 ORA-28364, 8.5 ORA-28365, 8.5 ORA-28366, 8.5 ORA-28367, 8.5 ORA-28368, 8.5 ORA-28369, 8.5 ORA-28370, 8.5 ORA-28371, 8.5 ORA-28372, 8.5 ORA-28373, 8.5 ORA-28374, 8.5 ORA-28375, 8.5 ORA-28376, 8.5 ORA-28377, 8.5 ORA-28378, 8.5 ORA-28885エラー, 14.1.6 ORA-40300エラー・メッセージ, 13.9.5.2 ORA-40301エラー・メッセージ, 13.9.5.2 ORA-40302エラー・メッセージ, 13.9.5.2 Oracle Advanced Security

sqlnet.oraファイルのチェックサムのサンプル, A.1

構成パラメータ, 10.2

認証の無効化, 15.2

sqlnet.oraファイルの暗号化のサンプル, A.1

Java実装, 10.1, 10.1.3

SSL機能, 13.1.2

Oracle Application Express

データ・リダクション・ポリシーのセッション・ステートによるユーザーのフィルタリング, 5.5.4

Oracleアプリケーションのウォレット・ロケーション, 14.4.11 Oracle Data Pump

データ・リダクション・ポリシーからエクスポートされたデータ, 6.8

Oracle Data Redaction

概要, 3.1

非定型ツール, 3.4.2

集計関数, 6.3

利点, 3.3

データベース・アプリケーション, 3.4.1

DBMS_REDACT.ADD_POLICYプロシージャ

使用, 5.3

DBMS_REDACT.ALTER_POLICYプロシージャ

概要, 5.12.1

例, 5.12.4

様々な操作に必要なパラメータ, 5.12.3

構文, 5.12.2

DBMS_REDACT.DISABLE_POLICY

概要, 5.14.1

例, 5.14.1

構文, 5.14.1

DBMS_REDACT.DROP_POLICY

概要, 5.15

例, 5.15

構文, 5.15

DBMS_REDACT.ENABLE_POLICY

概要, 5.14.2

例, 5.14.2

構文, 5.14.2

DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESプロシージャ

概要, 5.6.2.1

エディション, 6.5 データ・ポンプ・エクスポートを使用してデータをエクスポート, 6.8 完全なデータ・リダクション

概要, 4.1

ポリシーの作成, 5.6.1.1

例, 5.6.1.3

デフォルト値の変更, 5.6.2.1

構文, 5.6.1.2

完全なデータ・リダクション

LOBデータ型の列のデフォルトの変更, 5.6.2.3

LOB以外のデータ型の列のデフォルトの変更, 5.6.2.2

Oracle Virtual Private Databaseマスキングとの相違点, 6.6 インライン・ビューのリダクションの順序, 6.2 ネストした関数のリダクションの順序, 6.2 データ・リダクションなし

概要, 4.6, 5.10.1

ポリシーの作成, 5.10.1

例, 5.10.3

構文, 5.10.2

Oracle Enterprise Manager Data Masking and Subsetting Pack, 6.9 部分的なデータ・リダクション

概要, 4.2

文字の型, ポリシー, 5.7.4.1

日時データ型, 5.7.6.1

文字データ型を使用する例, 5.7.4.2

日時データ型を使用する例, 5.7.6.2

固定文字ショートカットを使用する例, 5.7.3.2

数値データ型を使用する例, 5.7.5.2

数値データ型, 5.7.5.1

ショートカット, 固定文字, 5.7.3.1

構文, 5.7.2

ポリシー作成の権限, 5.2 ランダム・データ・リダクション

概要, 5.9.1

ポリシーの作成, 5.9.1

例, 5.9.3

構文, 5.9.2

ランダム化されたデータ・リダクション

概要, 4.4

正規表現によるデータ・リダクション

ポリシーの作成, 5.8.1

カスタム, ポリシーの作成, 5.8.4

例, 5.8.3.2

カスタムの例, 5.8.4.2

設定, 5.8.4.1

ショートカット, 5.8.3.1

ショートカット, ポリシーの作成, 5.8.3

構文, 5.8.2

正規表現によるリダクション

概要, 4.3

SYSスキーマ・オブジェクト, 7.3 SYSTEMスキーマ・オブジェクト, 7.3 ユースケース, 3.4 使用する状況, 3.2 WHERE句のリダクション, 6.2 Oracle Data Redactionの部分リダクション

ポリシーの作成, 5.7.1

Oracle Data Redactionポリシー, 5.5.2

概要, 5.1

変更, 5.12.1

レポートの作成, 5.17

作成

例, 5.6.1.3

一般的な構文, 5.4

手順, 5.3

無効化, 5.14.1 削除, 5.15 ビュー・チェーンへの影響, 5.16 有効化, 5.14.2 ユーザーの除外, 5.11 式

Application Expressセッション・ステート, 5.5.4

データベース・ロール, 5.5.3

ユーザー環境, 5.5.2

ユーザーのフィルタリング

概要, 5.5.1

フィルタリングなし, 5.5.5

情報の検索, 5.18 1つのポリシーにおける複数列のリダクション, 5.13 Oracle Database Vault

データ・リダクションでの使用, 7.2

Oracle Enterprise Manager Data Masking and Subsetting Pack

Oracle Data Redactionの影響, 6.9

Oracle Internet Directory

Diffie-Hellman SSLポート, 13.8.5.4

Oracleパラメータ

認証, 15.4

Oracle Password Protocol, 10.1.3 Oracle Virtual Private Database(VPD)

データ・リダクション, 6.6

Oracle Wallet Manager

PKCS #7証明連鎖のインポート, 14.5.1.2

orapki

ウォレットへのルート証明書の追加, E.3.2

ウォレットへの信頼できる証明書の追加, E.3.2

ウォレットへのユーザー証明書の追加, E.3.2

ウォレット・パスワードの変更, E.3.1.4

ローカルの自動ログイン・ウォレットの作成, E.3.1.2

テスト用の署名付き証明書の作成, E.2

ウォレットの作成, E.3.1.1

自動ログイン・ウォレットの作成, E.3.1.2, E.3.1.2

ウォレットからの証明書のエクスポート, E.3.3

ウォレットからの証明書リクエストのエクスポート, E.3.3

テスト証明書の表示, E.2

ウォレットの表示, E.3.1.3

orapkiツール, 13.8.5.1 オリジナルのインポート/エクスポート・ユーティリティ, 8.2.4.7, 8.2.4.7 OS_AUTHENT_PREFIXパラメータ, 15.4.2 OSS.SOURCE.MY_WALLETパラメータ, 13.6.2.2, 13.6.3.3

P

パラメータ

認証

Kerberos, B.1

RADIUS, B.2

Secure Sockets Layer (SSL), B.3

JDBC用の構成, 10.2 暗号化とチェックサム, 9.4.3 PKCS #11デバイス, 13.2.3.5 PKCS #11エラー・メッセージ

ORA-40300, 13.9.5.2

ORA-40301, 13.9.5.2

ORA-40302, 13.9.5.2

PKCS #7証明連鎖, 14.5.1.2

X.509証明書との違い, 14.5.1.2

公開鍵インフラストラクチャ(PKI), 1.2.2.2.3, 1.2.2.2.4 公開鍵インフラストラクチャ(PKI)

証明書, 13.2.3.2

認証局, 13.2.3.1

証明書失効リスト, 13.2.3.3

PKCS #11ハードウェア・デバイス, 13.2.3.5

ウォレット, 13.2.3.4

R

RAC (Real Application Clusters)

TDE (透過的データ暗号化), 8.2.7

RADIUS, 1.2.2.2.2, 1.2.2.2.2

アカウンティング, 11.3.5

非同期認証モード, 11.2.2

認証モード, 11.2

認証パラメータ, B.2

チャレンジ・レスポンス

認証, 11.2.2

ユーザー・インタフェース, C.1, C.2

構成, 11.3.2 データベース・リンクはサポートされない, 11.1 秘密鍵の場所, 11.3.2.3 スマートカード, 1.2.2.2.2, 11.2.2, 11.3.2.3, C.1 sqlnet.oraファイルのサンプル, A.1 同期認証モード, 11.2.1 システム要件, 1.4 レルム(Kerberos), 12.1.2 ごみ箱

データ・リダクション・ポリシー, 7.6

レポート

基礎となるデータ・リダクション・ポリシー, 5.17

制限事項, 1.5 失効, F.1.3 ロール

RADIUSサーバーによる管理, 11.3.9

S

salt (TDE)

追加, 8.2.4.4

削除, 8.2.4.4

「TDE (透過的データ暗号化)」も参照

秘密鍵

RADIUSでの場所, 11.3.2.3

Secure Socket Layer (SSL), 1.2.2.2.3

アーキテクチャ, 13.3.1

認証パラメータ, B.3

Oracle環境における認証プロセス, 13.1.3

暗号スイート, B.3.2.1

クライアント認証パラメータ, B.3.4

クライアント構成, 13.6.3

他の認証方式の併用, 13.3

構成, 13.6

クライアントでのEntrust対応のSSLの構成, F.4.3

有効化, 13.6

Entrust対応のSSLの有効化, F.4

証明書のフィルタリング, 13.6.3.7

ハンドシェイク, 13.1.3

業界標準プロトコル, 13.1

複数の証明書, フィルタ処理, 13.6.3.7

クライアント認証の要求, 13.6.2.5

サーバー構成, 13.6.2

sqlnet.oraファイルのサンプル, A.1

システム要件, 1.4

バージョン・パラメータ, B.3.3

ウォレット・ロケーション、パラメータ, B.3.5

SecurID, 11.2.1

トークン・カード, 11.2.1

セキュリティ

インターネット, 1.1.2

イントラネット, 1.1.2

脅威, 1.1.3

データの書換え, 1.1.3.2

辞書攻撃, 1.1.3.4

傍受, 1.1.3.1

IDの偽造, 1.1.3.3

パスワード関連, 1.1.3.4

Secure Sockets Layer (SSL)

TLSを含めた用語の使用, 13.1.1

シングル・サインオン(SSO), 1.2.2.2.4, F.1.1 スマートカード, 1.2.2.2.2

RADIUS, 1.2.2.2.2, 11.2.2, 11.3.2.3, C.1

SQLNET.AUTHENTICATION_KERBEROS5_SERVICEパラメータ, 12.1.7.1 SQLNET.AUTHENTICATION_SERVICESパラメータ, 11.3.2.1, 12.1.7.1, 13.6.2.6, 13.6.2.6, 13.6.3.6, 13.6.3.6, 15.2, 15.3 SQLNET.CRYPTO_CHECKSUM_CLIENTパラメータ, 9.4.3.2 SQLNET.CRYPTO_CHECKSUM_SERVERパラメータ, 9.4.3.2 SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENTパラメータ, 9.4.3.2, A.2.9 SQLNET.CRYPTO_CHECKSUM_TYPES_SERVERパラメータ, 9.4.3.2, A.2.8 SQLNET.ENCRYPTION_CLIENTパラメータ, 9.4.3.1, A.2.2, A.2.3 SQLNET.ENCRYPTION_SERVERパラメータ, 9.4.3.1, A.2.1 SQLNET.ENCRYPTION_TYPES_CLIENTパラメータ, 9.4.3.1, A.2.7 SQLNET.ENCRYPTION_TYPES_SERVERパラメータ, 9.4.3.1, A.2.6 SQLNET.FALLBACK_AUTHENTICATIONパラメータ, 12.4 SQLNET.FIPS_140パラメータ, D.3.2.5 SQLNET.KERBEROS5_CC_NAMEパラメータ, 12.1.7.3 SQLNET.KERBEROS5_CLOCKSKEWパラメータ, 12.1.7.3 SQLNET.KERBEROS5_CONFパラメータ, 12.1.7.3 SQLNET.KERBEROS5_CONF_MITパラメータ, 12.1.7.3 SQLNET.KERBEROS5_KEYTABパラメータ, 12.1.7.3 SQLNET.KERBEROS5_REALMSパラメータ, 12.1.7.3 sqlnet.oraファイル

共通のサンプル, A.1

FIPS 140-1パラメータ, D.3.2

Kerberosのサンプル, A.1

Oracle Advanced Securityのチェックサムのサンプル, A.1

Oracle Advanced Securityの暗号化のサンプル, A.1

OSS.SOURCE.MY_WALLETパラメータ, 13.6.2.2, 13.6.3.3

Kerberosを使用するクライアントとサーバーのパラメータ, B.1

RADIUSを使用するクライアントとサーバーのパラメータ, B.2

SSLを使用するクライアントとサーバーのパラメータ, B.3

RADIUSのサンプル, A.1

サンプル, A.1

SQLNET.AUTHENTICATION_KERBEROS5_SERVICEパラメータ, 12.1.7.1

SQLNET.AUTHENTICATION_SERVICESパラメータ, 12.1.7.1, 13.6.2.6, 13.6.2.6, 13.6.3.6, 13.6.3.6, 15.2, 15.3

SQLNET.CRYPTO_CHECKSUM_CLIENTパラメータ, 9.4.3.2

SQLNET.CRYPTO_CHECKSUM_SERVERパラメータ, 9.4.3.2

SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENTパラメータ, 9.4.3.2, A.2.9

SQLNET.CRYPTO_CHECKSUM_TYPES_SERVERパラメータ, 9.4.3.2, A.2.8

SQLNET.ENCRYPTION_CLIENTパラメータ, A.2.2, A.2.3

SQLNET.ENCRYPTION_SERVERパラメータ, 9.4.3.1, A.2.1

SQLNET.ENCRYPTION_TYPES_CLIENTパラメータ, 9.4.3.1, A.2.7

SQLNET.ENCRYPTION_TYPES_SERVERパラメータ, 9.4.3.1, A.2.6

SQLNET.FIPS_140パラメータ, D.3.2.5

SQLNET.KERBEROS5_CC_NAMEパラメータ, 12.1.7.3

SQLNET.KERBEROS5_CLOCKSKEWパラメータ, 12.1.7.3

SQLNET.KERBEROS5_CONFパラメータ, 12.1.7.3

SQLNET.KERBEROS5_CONF_MITパラメータ, 12.1.7.3

SQLNET.KERBEROS5_KEYTABパラメータ, 12.1.7.3

SQLNET.KERBEROS5_REALMSパラメータ, 12.1.7.3

SQLNET.SSL_EXTENDED_KEY_USAGE, 13.6.3.7

SSLのサンプル, A.1

SSL_CLIENT_AUTHENTICATIONパラメータ, 13.6.2.5

SSL_CLIENT_AUTHETNICATIONパラメータ, 13.6.3.3

SSL_VERSIONパラメータ, 13.6.2.4, 13.6.3.5

トレース・ファイルの設定のサンプル, A.1

sqlnet.oraファイル、TDE (透過的データ暗号化), 8.2.2.1, 8.2.5.1, 8.2.6.1, 8.4.1.1, 8.5 SQLNET.RADIUS_ALTERNATEパラメータ, 11.3.2.3 SQLNET.RADIUS_ALTERNATE_PORTパラメータ, 11.3.2.3 SQLNET.RADIUS_ALTERNATE_RETRIESパラメータ, 11.3.2.3 SQLNET.RADIUS_ALTERNATE_TIMEOUTパラメータ, 11.3.2.3 SQLNET.RADIUS_SEND_ACCOUNTINGパラメータ, 11.3.5.1 SQLNET.SSL_EXTENDED_KEY_USAGE, A.2.3 SQLNET.SSL_EXTENDED_KEY_USAGEパラメータ, 13.6.3.7 SSLのウォレット・ロケーション, 14.4.2.1, 14.4.11 SSL_CLIENT_AUTHENTICATIONパラメータ, 13.6.2.5, 13.6.3.3 SSL_VERSIONパラメータ, 13.6.2.4, 13.6.3.5 SSOウォレット, 14.4.14 同期認証モード、RADIUS, 11.2.1 同期チェンジ・データ・キャプチャ, 8.2.4.7 SYSユーザー

データ・リダクション・ポリシー, 7.3

SYS_CONTEXT関数

データ・リダクション・ポリシー, 7.4

データ・リダクションで使用されているSYS_SESSION_ROLESネームスペース, 5.5.3

SYS_SESSION_ROLES SYS_CONTEXTネームスペース

データ・リダクション, 5.5.3

システム要件, 1.4

Kerberos, 1.4

RADIUS, 1.4

SSL, 1.4

SYSTEMユーザー

データ・リダクション・ポリシー, 7.3

T

表領域の暗号化

暗号化された表領域の作成, 8.2.5.3

sqlnet.oraファイルの編集, 8.2.5.1

ウォレットのオープン, 8.2.5.2

表領域の鍵の設定, 8.2.5.1

表領域マスター暗号化鍵, 8.2.5.1, 8.2.5.2 TDE (透過的データ暗号化)

Oracle RAC (Real Application Clusters), 8.2.7

概念, 8.1

図, 8.1.2.2

HSM(ハードウェア・セキュリティ・モジュール)

PKCS#11ライブラリ, 8.2.6.2

user_Id:password文字列, 8.2.6.4

管理, 8.3

鍵のバックアップおよびリカバリ, 8.3.2

ウォレットの管理, 8.3.1

参照, 8.6 制限, 8.2.4.7 表領域の暗号化

暗号化された表領域の作成, 8.2.5.3

ウォレットのオープン, 8.2.5.2

表領域の鍵の設定, 8.2.5.1

トラブルシューティング, 8.5 使用, 8.2

表の作成, 8.2.4.1

sqlnet.oraファイルの編集, 8.4.1.1

列の暗号化, 8.2.4.2

ウォレットのオープン, 8.2.3

マスター暗号化鍵の設定, 8.2.2

シンJDBCのサポート, 10 トークン・カード, 1.2.2.2.2 トレース・ファイル

sqlnet.oraファイルの設定のサンプル, A.1

透過的データ暗号化

「TDE」を参照

透過的データ暗号化(TDE)

暗号化データの圧縮, 8.3.8

暗号化データのデータ重複除外, 8.3.8

マルチデータベース環境, 8.3.6, 8.3.10

トランスポータブル表領域, 8.2.4.7 Triple-DES暗号化アルゴリズム, 1.2.1.1.1 トラブルシューティング, 12.5

Entrust対応のSSL, F.6

U

ユーティリティ, インポート/エクスポート, 8.2.4.7

V

Vパブリック・ファンクション(APEX_UTIL.GET_SESSION_STATEファンクション), データ・リダクション・ポリシー, 5.5.4

ビュー

データ・リダクション, 5.18

W

ウォレット, 13.2.3.4

ウォレット

自動ログイン, 8.2.1.2, 8.2.2.2, 14.4.14

パスワードの変更, 14.4.13

クローズ, 8.2.6.6, 8.2.7.1, 14.4.4

作成, 14.4.2

削除, 14.4.12

管理, 14.4

証明書の管理, 14.5

信頼できる証明書の管理, 14.5.2

オープン, 8.2.3, 8.2.6.6, 8.2.7.1, 8.4.1.3, 8.6.2, 14.4.3

Oracleアプリケーションのウォレット・ロケーション, 14.4.11

保存, 14.4.9

場所の設定, 13.6.2.2

SSLのウォレット・ロケーション, 14.4.2.1, 14.4.11

SSOウォレット, 14.4.14

X

X.509証明書

PKCS #7証明連鎖との違い, 14.5.1.2

X.509 PKI証明書標準, F.1.1

オラクルの法律上の注意点について

コピーライトについて

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

アルファ版およびベータ版ドラフト・ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のアルファ版およびベータ版ドラフト・ドキュメントについて

このドキュメントが非公開の試作版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のベータ・トライアル契約のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle PartnerNetwork 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を参照してください。