29 データ・プライバシの構成

この章では、データ・プライバシについて説明し、Oracle Internet Directoryがデータの受信後にそれを保護する仕組みについて説明します(送信中のデータはSSLによって保護されるため)。具体的には、Oracle Databaseの透過的データ暗号化(TDE)を使用して表領域の暗号化を有効化および無効化する方法、Oracle Database Vaultを構成してOracle Internet Directoryデータを保護する方法、および機密の属性とハッシュ属性を構成する方法について説明します。

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

29.1 表領域の暗号化の概要

Oracle Databaseの透過的データ暗号化(TDE)は、Oracle Enterprise User Securityの1コンポーネントであり、ディスクへの書込み時のデータ暗号化と認可ユーザーによる読取り時の復号化を透過的に行います。TDEは、ストレージ・メディアまたはデータ・ファイルが盗まれた場合に、メディア上に格納されたデータの保護に役立ちます。アプリケーションの変更は不要であり、ストレージ・メディア上のデータの暗号化はユーザーには透過的に行われます。

Oracle Database 11g Advanced Securityの透過的データ暗号化では、データベースの表領域の暗号化を新たにサポートしています。暗号化された表領域内に作成されたオブジェクトはすべて自動的に暗号化されます。暗号化された表領域内のデータはすべて、暗号化された形式でディスク上に格納されます。データ・ブロックは、Oracle Databaseによるアクセス時に透過的に復号化されます。表領域の暗号化によって、列の暗号化の外部キー制限が解消され、暗号化されたデータの索引レンジ・スキャンが可能になります。

29.2 表領域の暗号化の有効化と無効化

Oracle Databaseで使用するOracle Internet Directoryの表領域の暗号化を有効化または無効化できます。

次のトピックを参照してください。

29.2.1 表領域の暗号化の初回設定の構成

初めて表領域の暗号化設定を構成する場合は、ここに示されている手順に従います。

表領域の暗号化を初めて有効化する場合の手順は、次のとおりです。

  1. Oracle Internet Directoryインスタンスで使用するOracle Databaseのコールド・バックアップを作成します。

  2. データベースのOracleホームにJava VMパッケージとXML Developer's Kitパッケージがインストールされていることを確認します。

    指定のパッケージがインストールされているかどうかを確認するには、次のSQL*Plusを実行します。

    SELECT comp_id, status FROM dba_registry;
    

    次のPL/SQLプロシージャを実行します。

    sys.dbms_metadata_util.load_stylesheets
     
  3. SYSTEM権限のあるユーザーとしてSQL*Plusにログインし、次のコマンドを実行します。

    GRANT CREATE ANY DIRECTORY TO ods; 
    
  4. Oracle Data Pumpユーティリティのディレクトリ・オブジェクト、ダンプ・ファイルに使用するログ・ディレクトリ・オブジェクトおよびログ・ファイルを作成します。ODSユーザーとしてSQL*Plusにログインし、次のコマンドを実行します。

    CREATE OR REPLACE DIRECTORY directory_object_name as directory_path;
    CREATE OR REPLACE DIRECTORY log_directory_object_name as log_directory_path; 
    
  5. directory_pathlog_directory_pathをファイル・システムに作成します。

  6. データベース・ウォレットの場所をデータベースのOracleホームのsqlnet.ora内に設定します。

    ノート:

    データベース・ウォレットを、「Secure Sockets Layer (SSL)の構成」で説明しているOracle Internet Directoryウォレットと混同しないでください。

    表領域の暗号化専用に個別のウォレットを使用することをお薦めします。

    1. 表領域の暗号化用に個別のデータベース・ウォレットを使用するには、sqlnet.oraにパラメータENCRYPTION_WALLET_LOCATIONを設定します。次に例を示します。

      ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/install/db11g/dbs)))
      
    2. すべてのOracleコンポーネントで同じデータベース・ウォレットを共有して使用するには、sqlnet.oraにパラメータWALLET_LOCATIONを設定します。次に例を示します。

      WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/install/db11g/dbs))) 
      

29.2.2 表領域の暗号化の有効化または無効化

ここに示されている手順に従って、表領域の暗号化を有効化または無効化できます。

表領域の暗号化を有効化または無効化するには:

  1. Oracle DatabaseのOracleホームを使用しているすべてのOracle Internet Directoryインスタンスを停止します。
  2. Oracle DatabaseのOracleホームで表領域の暗号化を初めて有効化する場合は、ALTER SYSTEM権限のあるユーザーとしてSQL*Plusにログインし、次のコマンドを実行します。
    ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY yourwalletpassword;
    
  3. Oracle Databaseを停止して再起動するたびに、ALTER SYSTEM権限のあるユーザーとしてSQL*Plusにログインし、次のコマンドを実行します。
    ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY yourwalletpassword;
    

    Oracle Internet Directoryを起動する前と、ステップ6に示すPerlスクリプトを実行する前に、このコマンドを必ず実行してください。

  4. 環境変数ORACLE_HOMEOracle Databaseのホームに設定します。
  5. 環境変数NLS_LANGOracle Databaseサーバーの文字セットに設定します。
  6. コンピュータ上のperl5の場所と一致するようPerlスクリプトORACLE_HOME/ldap/datasecurity/oidtbltde.pl内のperl5実行可能ファイルのパスを編集します。
  7. Perl用のデータベース非依存インタフェース・モジュール(DBI)とPerl用のOracle DBDドライバがインストールされていない場合は、この2つをインストールします。
  8. Perlスクリプトoidtbltde.plを実行し、Oracle Internet DirectoryのTDEを有効化または無効化します

29.3 Database VaultとOracle Internet Directoryの使用方法の概要

Oracle Internet Directoryでは、LDAPプロトコル層でアクセス制御を適用します。ただし、DBAなどの特権ユーザーは通常、基礎となるデータベース内のOracle Internet DirectoryデータにSQL*Plusでアクセスできます。

Oracle Database Vaultを使用すると、特権ユーザーによるOracle Internet Directoryデータへの不正アクセスを防止できます。このためには、Oracle Database Vaultをインストールして有効化し、Oracle Internet Directoryで使用するODSデータベース・スキーマを含むDatabase Vaultレルムを設定し、ODSデータベース・アカウントのみにデータ・アクセスを許可するポリシーを設定する必要があります。

関連項目:

  • Oracle Database Vaultのインストール、有効化および無効化のクイック・ガイドは、『Oracle Database 2日でセキュリティ・ガイド』を参照してください

  • Oracle Database Vaultの管理の詳細は、『Oracle Database Vault管理者ガイド』を参照してください

29.4 Oracle Database Vaultの構成によるOracle Internet Directoryデータの保護

Oracle Database Vaultは、Oracle Internet Directory用に構成する前にインストールおよび登録する必要があります。Database Vaultは、Oracle Databaseインストールの一部としてインストールします。

次の各項では、これについてさらに詳しく説明しています。

29.4.1 Oracle Database VaultのOracle Internet Directoryへの初回登録

Oracle Database VaultがOracle Database 11gに登録されていない場合、次の手順を実行します。

  1. 『Oracle Identity Managementのインストールと構成』OIDインストールの検証に関する項の説明に従って、Oracle Internet Directoryをインストールします。
  2. 『Oracle Database Vault管理者ガイド』Oracle DatabaseへのOracle Database Vaultの登録に関する項 の説明に従って、Oracle Database Vaultを登録します。
  3. Oracle Databaseのバージョンが11.1.0.7である場合は、バグ7244497のパッチをダウンロードしてインストールします。これは、より新しいバージョンのOracle Databaseでは必要ありません。
  4. Oracle Databaseのバージョンが11.1.0.7である場合は、バグ7291157のパッチをダウンロードしてインストールします。これは、より新しいバージョンのOracle Databaseでは必要ありません。

29.4.2 Oracle Database VaultがOracle Databaseに登録されているかどうかの確認

SQLコマンドを使用して、Oracle database VaultがOracle Databaseに登録されているかどうかを確認できます。

Oracle Database VaultがOracle Database 11gにインストールされているかどうか不明な場合は、次のように入力します。

SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';

入力は、SQL*Plusプロンプトで行います。この問合せにOracle Database Vaultと返された場合、Oracle Database Vaultはインストールおよび登録されています。この問合せは大/小文字が区別されることに注意してください。

29.4.3 既存のOracle Database Vault登録のバグ・パッチのインストール

既存のOracle Database Vault登録のバグ・パッチをインストールする方法を確認するには、ここに示されている手順に従います。

Oracle Database VaultがOracle Databaseに登録されている場合、次の手順を実行します。

  1. Oracle Database Vaultが有効化されている場合は、無効化します。『Oracle Database Vault管理者ガイド』の「Oracle Database Vaultの無効化および有効化」を参照してください。
  2. 『Oracle Identity Managementのインストールと構成』Oracle Internet Directoryインストールの検証に関する項の説明に従って、Oracle Internet Directoryをインストールします。
  3. 『Oracle Database Vault管理者ガイド』Oracle Database Vaultの有効化に関する項の説明に従って、Database Vaultを有効化します。
  4. Oracle Database 11.1.0.7を使用している場合は、バグ7244497のパッチをダウンロードしてインストールします。
  5. Oracle Database 11.1.0.7を使用している場合は、バグ7291157のパッチをダウンロードしてインストールします。

29.4.4 ポリシーを適用するDatabase Vaultレルムの追加

Oracle Internet Directoryには、必要なDatabase Vaultポリシーを適用するためのスクリプトが用意されています。これらのスクリプトは、$ORACLE_HOME/ldap/datasecurityの下にあるOracle Internet Directoryのインストール・ディレクトリに含まれています。

Database VaultポリシーをOracle Internet Directoryデータベースに適用するには、Oracle Internet Directory用のデフォルトのDatabase Vaultレルムを次のように作成する必要があります。

  1. dbv_oid_rule.sqlをテキスト・エディタで開き、Check ods connectionsルールとCheck ods connections 2ルール内のダミーIPアドレスを次のアドレスに置き換えます。

    Oracle Internet Directoryが実行されているコンピュータのIPアドレス。

  2. データベースにDatabase Vault所有者として接続し、dbv_create_oid_policies.sqlを実行します。

29.4.5 Oracle Internet DirectoryデータベースへのSQL*Plusアクセスの有効化

dbv_create_oid_policies.sql内のポリシーにより、Oracle Internet DirectoryデータベースへのSQL*Plusアクセスが完全に無効化されます。

一部のタスクでは、ODSユーザーとしてSQL*Plusでデータベースにアクセスする必要があります。この場合、Oracle Internet DirectoryデータベースへのSQL*Plusアクセスを特定のホストからのみ有効化します。

Oracle Internet Directoryデータベースへの接続を有効化するには、次のステップに従います。

  1. dbv_oid_rule_sqlplus.sqlをテキスト・エディタで開きます。Check ods connections 3ルール内のダミーIPアドレスを、Oracle Internet DirectoryデータベースへのSQL*Plusアクセスを許可するホストのIPアドレスに置き換えます。
  2. データベースにDatabase Vault所有者として接続し、dbv_oid_rule_sqlplus.sqlを実行します。

29.4.6 Oracle Internet DirectoryデータベースへのSQL*Plusアクセスのブロック

ここに示されているコマンドを実行することで、Oracle Internet DirectoryデータベースへのSQL*Plusアクセスをブロックできます。

ある時点でOracle Internet DirectoryデータベースへのSQL*Plusアクセスを完全にブロックする場合は、Database Vault所有者としてデータベースに接続し、dbv_oid_delete_rule_sqlplus.sqlを実行します。

29.4.7 Oracle Internet Directoryに定義されているDatabase Vaultルール

Oracle Internet Directory用に定義されているDatabase Vaultルールは、Check ods connectionsCheck ods connections 2Check odssm connectionsおよびAllow other connectionsです。

『Oracle Database Vault管理者ガイド』コマンド・ルールの構成に関する項で、データ・ディクショナリ・ビューの使用方法について説明しています。この項では、Oracle Internet Directory関連の情報を報告するいくつかのビューについて説明します。

Oracle Internet Directoryで使用するDatabase Vaultレルムの名前はOID Realmです。このレルムの存在は、DBA_DV_REALMデータ・ディクショナリ・ビューに問合せを実行すると確認できます。

Oracle Internet Directory用に定義されているDatabase Vaultルールは、Check ods connectionsCheck ods connections 2Check odssm connectionsおよびAllow other connectionsです。dbv_oid_rule_sqlplus.sqlを実行すると、ルールCheck ods connection 3も定義されます。これらのルールは、OID App Accessという名前のルール・セットに追加されます。既存のルールの名前を確認するには、DBA_DV_RULE_SET_RULEビューに問合せを実行します。

CONNECTコマンド・ルールにより、このルール・セットが起動されます。これは、DBA_DV_COMMAND_RULEビューに問合せを実行すると確認できます。このCONNECTルールでは、インストールされている既存のOracle Database VaultでOracle Internet Directoryスクリプトを実行する際、既存のCONNECTコマンド・ルールが上書きされません。

29.4.8 Oracle Internet Directory用のDatabase Vaultポリシーの削除

次のコマンドラインを使用して、Oracle Internet Directory用のDatabase Vaultポリシーを削除できます。

前述の項でインストールしたOID用のDatabase Vaultポリシーを削除するには、データベースにDatabase Vault所有者として接続している間にdbv_delete_oid_policies.sqlを実行します。

29.4.9 Oracle Internet Directoryデータベース用のOracle Database Vaultの無効化

Oracle Internet Directoryデータベース用のOracle Database Vaultを無効化できます。

『Oracle Database Vault管理者ガイド』Oracle Database Vaultの無効化および有効化に関する項を参照してください。

29.5 Database VaultとOracle Internet Directoryの使用方法のベスト・プラクティス

Oracle Database Vaultの使用時は、次の管理タスクに特別な注意が必要です。

  • 製品のアップグレードおよびパッチ・セットのインストール: Oracle Internet DirectoryまたはOracle Databaseをアップグレードする前、またはパッチ・セットをインストールする前に、Oracle Database Vaultを無効化します。アップグレードまたはインストールの完了後、Oracle Database Vaultを再度有効化します。

  • データのバルク・ロード: Oracle Database Vaultが有効化されている場合、SQL*Loaderのダイレクト・パス・モードは使用できなくなり、bulkloadツールのパフォーマンスが低下します。100KBを超えるデータ、または100万を超えるエントリをロードする場合は、bulkloadを使用する前にOracle Database Vaultを無効化します。操作の完了後、Oracle Database Vaultを再度有効化します。

29.6 機密の属性の概要

Oracle Internet Directoryは、機密の属性を暗号化形式で格納します。

機密の属性の例としては、orclpasswordattributeorclrevpwd、プラグイン属性orclpluginsecuredflexfieldおよびサーバー・チェーン属性orclOIDSCExtPasswordがあります。

次の各項では、機密の属性についてさらに詳しく説明しています。

29.6.1 機密の属性のリスト

機密の属性のリストは、DSA構成エントリ内の属性orclencryptedattributesに格納されています。

このリストを表29-1に示します。

表29-1orclencryptedattributesに格納されている機密の属性

機密の属性 属性の使用方法

orclpluginsecuredflexfield

プラグインに渡される機密の属性。表46-1を参照してください。

orcloidscextpassword

プラグイン接続用のサーバー管理パスワード。

表46-1を参照してください。

orcloidscwalletpassword

プラグインのsslwalletパスワード。「ディレクトリ・サーバー・チェーンの構成」を参照してください

orclrevpwd

可逆暗号化形式のユーザー・パスワード。「パスワード・ベリファイアの管理」を参照してください。

orclunsyncrevpwd

関連するuserpasswordと同期されない可逆暗号化パスワード。「パスワード・ベリファイアの管理」を参照してください。

orclodipprofileinterfaceconnectinformation

Oracle Directory Integration Platform: イベント伝播用のアプリケーションとの接続に使用される情報。

orclodipcondiraccesspassword

Oracle Directory Integration Platform: ディレクトリに接続するためにサード・パーティ・ディレクトリによって使用されます。

orclodipagentpassword

Oracle Directory Integration Platform: ディレクトリへのバインドに同期プロファイルで使用するパスワード。

最後の3エントリの詳細は、『Oracle Identity Managementリファレンス』「LDAP属性リファレンス」を参照してください。

orcldataprivacymode属性は、データの受信時にこれらの属性を暗号化するかどうかを制御します。orcldataprivacymodeが有効な場合、機密の属性は暗号化されます。プライバシ・モードが無効の場合、機密のデータはクリアテキストで返されます。

暗号化された属性を機密の属性のリストに追加する場合、新しい属性が機密の属性の新しいリストに追加され、サーバーによって認識されるように、Oracle Internet Directoryサーバー・インスタンスを再起動する必要があります。

ノート:

表29-1の属性は、オラクル社のみが使用することを想定しています。Oracleサポートによって要求されないかぎり、この表に示される属性の追加または変更は行わないでください。

29.6.2 機密の属性の暗号化アルゴリズム

11g リリース1 (11.1.1.4.0)より前は、Oracle Internet Directoryは機密の属性の格納に3DES暗号化アルゴリズムを使用していました。11g リリース1 (11.1.1.4.0)以上では、Oracle Internet DirectoryはAES-256を使用しています。

以前のリリースの顧客は、システムにパッチを適用している場合、3DESアルゴリズムで暗号化された格納値をすでに持っている可能性があります。このような場合は、次の規則が適用されます。

  • 復号化するときに、Oracle Internet Directoryは適切なアルゴリズム(3DESまたはAES-256)を使用して値を復号化します。

  • 暗号化するときに、Oracle Internet Directoryは常にAES-256を使用して暗号化します。

これにより、時間の経過とともに、暗号化されたすべての値が確実にAES-256に変換されます。

29.7 機密の属性のプライバシ・モードの有効化

プライバシ・モードはデフォルトでは無効です。つまり、orcldataprivacymodeの値は0です。

セキュリティ保護を提供するには、DSA構成エントリでorcldataprivacymodeの値を0から1に変更することで、プライバシ・モードを有効にする必要があります

プライバシ・モードを有効にするには、次のエントリが含まれるLDIFファイルを使用します。

dn: cn=dsaconfig,cn=configsets,cn=oracle internet directory
changetype: modify
replace: orcldataprivacymode
orcldataprivacymode: 1

LDIFファイルを次のようなコマンド行によりロードします。

$ORACLE_HOME/bin/ldapmodify -h host -p port -D cn=orcladmin -q -v \
   -f LDIF_file_name

29.8 機密の属性のプライバシ・モード・ステータスの確認

orcldataprivacymodeの値を決定するには、次の検索を実行します。

$ORACLE_HOME/bin/ldapsearch -h host -p port -D cn=orcladmin -q \
   -b "cn=dsaconfig,cn=configsets,cn=oracle internet directory" -s base \
   "objectclass=*" orcldataprivacymode

29.9 ハッシュ属性の概要

暗号化とは異なり、ハッシングは一方向操作です。ハッシュ値から元の値を導出することはできません。

Oracle Internet Directoryは、機密の属性に加えて、ハッシュ属性もサポートしています。ハッシュ属性のリストは、DSA構成エントリの複数値属性であるorclhashedattributesに含まれています。ハッシングは、ルートDSE属性orclcryptoschemeで設定されている暗号スキームを使用して実行されます。

LDAP操作およびbulkloadは、表29-2で説明している変換を自動的に実行します。ハッシュ属性を指定してbulkmodifyコマンドを使用することはできません。

表29-2 orclhashedattributesの属性に対するLDAP操作とバルク操作

操作 着信属性値がすでにハッシュされている場合 着信属性値がハッシュされていない場合

ldapadd

値をそのまま使用します。

操作を実行する前に、orclcryptoschemeを使用して着信値をハッシュします。

ldapmodify

値をそのまま使用します。

追加操作または置換操作の場合は、操作を実行する前に、orclcryptoschemeを使用して着信値をハッシュします。

削除操作の場合、操作を実行する前に、属性がディレクトリに格納されたときに使用されていた暗号スキームを使用して着信値をハッシュします。

ldapcompare

着信値を、ディレクトリに格納されている値と比較します。

属性がディレクトリに格納されたときに使用された暗号スキームを使用して着信値をハッシュし、それを格納値と比較します。

bulkload

値をそのまま使用します。

操作を実行する前に、orclcryptoschemeを使用して着信値をハッシュします。

bulkmodify

bulkmodifyは許可されていません。

bulkmodifyは許可されていません。

ノート:

  • orclhashedattributesorclencryptedattributesの両方に同じ属性を含めないでください。

  • 単一値属性のみをハッシュ属性にすることができます。

29.10 ハッシュ属性の構成

Oracle Enterprise Manager Fusion Middleware Controlまたはコマンド行を使用して、orclhashedattributesの属性のリストを管理できます。

次の各項では、この構成についてさらに詳しく説明しています。

29.10.1 Fusion Middleware Controlを使用したハッシュ属性の構成

Oracle Enterprise Manager Fusion Middleware Controlの「共有プロパティ」ページを使用して、ハッシュ属性を構成できます。

「Oracle Internet Directory」メニューから「管理」を選択し、「共有プロパティ」を選択します。

29.10.2 ldapmodifyを使用したハッシュ属性の構成

コマンド行を使用してハッシュ属性を構成するには、その属性名をDSA構成エントリの複数値属性orclhashedattributeに追加します。

たとえば、次のLDIFファイルでは、3つの属性がorclhashedattributesに追加されます。

dn: cn=dsaconfig,cn=configsets,cn=oracle internet directory
changetype:modify
add: orclhashedattributes
orclhashedattributes: attributeName1
orclhashedattributes: attributeName2
orclhashedattributes: attributeName3
 

LDIFファイルを次のようなコマンド行によりロードします。

$ORACLE_HOME/bin/ldapmodify -h host -p port -D cn=orcladmin -q -v \
   -f LDIF_file_name