プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Identity Managerの管理
11g リリース2 (11.1.2.3.0)
E61959-10
  目次へ移動
目次

前
 
次
 

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

この付録では、Oracle Transparent Data Encryption (TDE)をOracle Identity Manager用に構成する方法について説明します。

Oracle Databaseは次のタイプのデータ暗号化をサポートしています。


注意:

TDEの詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

Oracle Identity ManagerはTDE表領域暗号化をサポートしており、連携して機能します。

この付録の内容は以下のとおりです。

D.1 TDEをOracle Identity Managerの新規インストール用に構成する

TDEを構成するには、暗号化されていない表領域から暗号化された表領域にデータを移動するために、ダウンタイムが必要となります。そのため、リポジトリ作成ユーティリティ(RCU)を使用してデータベース・スキーマをインストールしたら、Oracle Identity Managerアプリケーションをインストールする前に、TDEをすぐにOracle Identity Managerデプロイメント用に構成します。

TDEをOracle Identity Managerの新規インストール用に構成するには、次の手順に従います。

  1. Oracle Databaseをインストールします。詳細は、Oracle Databaseのドキュメントを参照してください。

  2. RCUを実行して、Oracle Identity Managerスキーマと依存スキーマを作成します。詳細は、『Oracle Fusion Middleware Oracle Identity and Access Managementインストレーション・ガイド』を参照してください。

  3. Oracle Identity Managerをシャットダウンします(該当する場合)。

    Oracle Identity Managerのインストール後にTDEを構成している場合は、Oracle Identity Managerをシャットダウンする必要があります。これは、TDE実装によってデータ移動が実行され、通常の表領域からTDE対応の表領域へとデータが移動される間、Oracle Identity Managerアプリケーションが利用できなくなるためです。

  4. Data Pumpユーティリティを使用して、Oracle Identity Managerデータベース・スキーマのバックアップを作成します。

    Data Pumpユーティリティを使用して、Oracle Identity Managerデータベース・スキーマのバックアップを作成します。このバックアップは、後でTDEを表領域レベルで有効化する際に、リストアする必要が生じる場合があります。次に示すのは、バックアップを作成するためのサンプル・コマンドです。

    expdp system/PASSWORD@TNS_ALIAS schemas=OIM_SCHEMA_NAME directory=DATA_PUMP_DIR dumpfile=DUMP_FILE_NAME logfile=LOG_FILE_NAME
    

    注意:

    Oracle Identity Managerスキーマをエクスポートする前に、次のSQLコマンド(SYSユーザーとして実行)を使用して、システム権限およびオブジェクト権限を取得して保持してください。
    • SELECT DBMS_METADATA.GET_GRANTED_DDL ('SYSTEM_GRANT','OIM_SCHEMA_NAME') FROM DUAL;
      
    • SELECT DBMS_METADATA.GET_GRANTED_DDL ('OBJECT_GRANT', 'OIM_SCHEMA_NAME') FROM DUAL;
      

    SQLコマンドの出力をコピーし、各文の後ろにセミコロン(;)を追加するために編集してください。保持した権限は、手順10の後に実行する必要があります。


  5. ウォレット・ロケーションを指定します。

    ディレクトリ・パスを選択するには、$ORACLE_HOME/network/admin/ディレクトリにあるsqlnet.oraファイル内で指定します。たとえば、ウォレットをorawallet/ディレクトリに置きたい場合は、sqlnet.oraファイルに次の行を含めます。

    ENCRYPTION_WALLET_LOCATION =
    (SOURCE=
    (METHOD=file)
    (METHOD_DATA=
    (DIRECTORY=ORACLE_HOME\orawallet)))
    

    バイナリ用のローカル・ファイル・システムを使用したOracle RACクラスタの場合は、すべてのノードのSQLNET.oraを変更します。


    注意:

    ウォレット・ロケーションのバックアップは、通常のバックアップとともに管理する必要があります。

    複数のOracleコンポーネント間で同じOracleデータベース・ウォレット共有を使用するには、ウォレット・パラメータを次のように設定します。

    WALLET_LOCATION =
    (SOURCE=
    (METHOD=file)
    (METHOD_DATA=
    (DIRECTORY=D:\oracle\product\11.2.0\dbhome_1\orawallet)))
    
  6. ウォレットを作成します。

    Oracle Database 11gの場合:

    TDEを使用するには、Oracleウォレットに対するALTER SYSTEM権限と、有効なパスワードを持っている必要があります。Oracleウォレットが存在しない場合は、SQLコマンドで指定されたパスワードを使用して、新しいOracleウォレットが作成されます。

    新規のマスター・キーを作成してTDEを使用するには、次のSQLコマンドを実行します。

    ALTER SYSTEM SET ENCRYPTION KEY AUTHENTICATED BY "PASSWORD";
    

    このコマンドは、次の操作を実行します。

    • 手順4で指定された場所にウォレットを作成します。

    • 指定したパスワードをウォレットのパスワードとして設定します。パスワードは大文字と小文字を区別し、二重引用符で囲む必要があります。

    • TDE用のウォレットを開いて、マスター・キーを格納および取得します。

    このSQLコマンドにより、データベース・サーバーのマスター暗号化鍵が生成されます。この鍵は、各表の列暗号化鍵を暗号化するためにサーバーによって使用されます。データベース内の表の列は、サーバーのマスター・キーが設定されるまで暗号化できません。

    Oracle Database 12c (12.1.0.2.0)非CDBおよびCDBの場合:

    TDEを使用するには、ADMINISTER KEY MANAGEMENTまたはSYSKM権限が必要です。Oracleウォレットが存在しない場合は、SQLコマンドで指定されたパスワードを使用して、新しいOracleウォレットが作成されます。

    キーストアを作成するには:

    1. SYSユーザーで次のSQLコマンドを実行します。

      SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '<KEYSTORE_LOCATION>' IDENTIFIED BY <KEYSTORE_PASSWORD>;
      

      ここで、<KEYSTORE_LOCATION>は、SQLNET.ORAファイルのDIRECTORYパスに指定された値です(ステップ5を参照)。<KEYSTORE_PASSWORD>はキーストアのパスワードです。

      このコマンドは、次の操作を実行します。

      • 手順4で指定された場所にウォレットを作成します。

      • 指定したパスワードをウォレットのパスワードとして設定します。パスワードは大文字と小文字が区別されます。

      このSQLコマンドにより、データベース・サーバー(キーストア)のマスター・キーが生成されます。この鍵は、各表の列暗号化鍵を暗号化するためにサーバーによって使用されます。データベース内の表の列は、サーバーのキーストア・キーが設定されるまで暗号化できません。

    2. キーストアが作成されたことを確認します。PDBユーザー(CDBの場合)またはSYSユーザー(非CDBの場合)として次のSQLコマンドを実行します。

      SQL> SELECT wrl_parameter,status FROM v$encryption_wallet;
      

      このSQLコマンドを実行すると次の結果が予期されます。

      • ステータス: Closed

      • wrl_parameter: <KEYSTORE_LOCATION>

    3. 次のようにデータベースを停止します。

      SQL> shutdown immediate;
      
    4. 次のコマンドを実行してデータベースを再起動します。CDBの場合は、それぞれのプラガブル・データベースも起動してください。

      SQL> startup;
      
  7. ウォレットを開きます。

    Oracle Database 11gの場合:

    ウォレットは1回しか作成されないので、ウォレット・ロケーションの指定とウォレットの作成は1回だけ行います。ウォレットは、データベース・インスタンスが起動されるたびに、マスター・キーを使用して明示的に開かれる必要があります。

    データベースの再起動後にマスター・キーをロードするには、次のSQLコマンドを実行します。

    ALTER system SET encryption wallet OPEN authenticated BY "PASSWORD";
    

    または

    ALTER system SET wallet OPEN IDENTIFIED BY "PASSWORD";
    

    TDEを機能させるには、ウォレットが開いている必要があります。ウォレットが閉じている場合、暗号化されていない列にはアクセスできますが、暗号化された列にはアクセスできません。


    注意:

    ウォレットを閉じる場合は、次のコマンドを実行します。
    ALTER system SET encryption wallet CLOSE IDENTIFIED BY "myPassword";
    

    Oracle Database 12c (12.1.0.2.0)非CDBの場合:

    キーストアは1回しか作成されないので、キーストア・ロケーションの指定とキーストアの作成は1回のみ行います。キーストアは、データベース・インスタンスが起動されるたびに、(キーストア)マスター・キーを使用して明示的に開かれる必要があります。

    (キーストア)マスター・キーをロードして、キーストアのステータスを確認するには:

    1. データベースの再起動後に(キーストア)マスター・キーをロードするには、SYSユーザーとして次のSQLコマンドを実行します。

      SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY <KEYSTORE_PASSWORD>;
      

      ここで、<KEYSTORE_PASSWORD>はステップ6でウォレットの作成に使用されたものと同じパスワードです。

      TDEを機能させるには、キーストアが開いている必要があります。キーストアが閉じている場合、暗号化されていない列にはアクセスできますが、暗号化された列にはアクセスできません。

    2. キーストアのステータスを確認します。そのためには、SYSユーザーとして次のSQLコマンドを実行します。

      SQL> SELECT status FROM v$encryption_wallet;
      

      このコマンドを実行すると、ステータスがOPEN_NO_MASTER_KEYに設定されます。

    Oracle Database 12c (12.1.0.2.0) CDBの場合:

    キーストアは1回しか作成されないので、キーストア・ロケーションの指定とキーストアの作成は1回のみ行います。キーストアは、データベース・インスタンスが起動されるたびに、(キーストア)マスター・キーを使用して明示的に開かれる必要があります。

    (キーストア)マスター・キーをロードして、キーストアのステータスを確認するには:

    1. データベースの再起動後に(キーストア)マスター・キーをロードするには、CDB SYSユーザーとして次のSQLコマンドを実行します。

      SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY <KEYSTORE_PASSWORD>;
      

      TDEを機能させるには、キーストアが開いている必要があります。キーストアが閉じている場合、暗号化されていない列にはアクセスできますが、暗号化された列にはアクセスできません。

    2. キーストアのステータスを確認します。そのためには、CDB SYSユーザーとして次のSQLコマンドを実行します。

      SQL> SELECT status FROM v$encryption_wallet;
      

      このコマンドを実行すると、ステータスがOPEN_NO_MASTER_KEYに設定されます。

    3. データベースの再起動後に(キーストア)マスター・キーをロードするには、PDB SYSユーザーとして次のSQLコマンドを実行します。

      SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY <KEYSTORE_PASSWORD>;
      

      ここで、<KEYSTORE_PASSWORD>はステップ6でウォレットの作成に使用されたものと同じパスワードです。

      TDEを機能させるには、キーストアが開いている必要があります。キーストアが閉じている場合、暗号化されていない列にはアクセスできますが、暗号化された列にはアクセスできません。

    4. キーストアのステータスを確認します。そのためには、PDB SYSユーザーとして次のSQLコマンドを実行します。

      SQL> SELECT status FROM v$encryption_wallet;
      

      このコマンドを実行すると、ステータスがOPEN_NO_MASTER_KEYに設定されます。

  8. マスター暗号化鍵を設定します(Oracle Database 12cのみ)。

    Oracle Database 12c (12.1.0.2.0)非CDBおよびCDBの場合:

    キーストアが開いたら、それに対してTDEマスター暗号化鍵を設定します。これを行うには、次のようにします。

    1. TDEマスター暗号化鍵をキーストアに設定するには、SET KEY句を含むADMINISTER KEY MANAGEMENT文を使用します。SYSユーザーとして次のSQLコマンドを実行します。

      SQL> ADMINISTER KEY MANAGEMENT SET KEY [USING TAG '<TAG>'] IDENTIFIED BY <PASSWORD> [WITH BACKUP [USING 'backup_identifier']];
      

      各変数は次のとおりです。

      • <PASSWORD>はステップ6でウォレットの作成に使用されたものと同じパスワードです。

      • <TAG>は、定義する関連の属性および情報です。この設定は'oim12ccdb'のように一重引用符(' ')で囲みます。

    2. キーストアのステータスを確認します。SYSユーザーまたはPDB SYSユーザーとして次のSQLコマンドを実行します。

      SQL> SELECT status FROM v$encryption_wallet;
      

      このコマンドを実行すると、ステータスがOPENに設定されます。

  9. Oracle Identity Managerとその表領域を削除します。

    OIMは表領域を削除する前に削除します。次に示すのは、これを行うためのサンプル・コマンドです。

    DROP USER OIM_SCHEMA_NAME CASCADE;
    DROP TABLESPACE SCHEMA_NAME INCLUDING contents AND datafiles;
    DROP TABLESPACE SCHEMA_NAME_LOB INCLUDING contents AND datafiles;
    DROP TABLESPACE SCHEMA_NAME_ARCH_DATA INCLUDING contents AND datafiles;
    
  10. Oracle Identity Manager用にTDE対応の表領域とユーザーを作成します。

    Oracle Identity Manager用の表領域を暗号化を使用して作成することで、TDEを表領域レイヤーで有効化します。手順9で削除した3つの表領域すべてを作成する必要があります。表領域作成のためのDDLを取得するには、DBMS_METADATA APIを使用できます。次に示すのはサンプル・コマンドです。

    CREATE TABLESPACE SCHEMA_NAME DATAFILE 'FILE_PATH' SIZE 128K AUTOEXTEND ON NEXT 64K EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT);
     
    CREATE TABLESPACE SCHEMA_NAME_LOB DATAFILE 'FILE_PATH' SIZE 128K AUTOEXTEND ON NEXT 64K EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT);
    
    CREATE TABLESPACE SCHEMA_NAME_ARCH_DATA DATAFILE 'FILE_PATH' SIZE 128K AUTOEXTEND ON NEXT 64K EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT);
    

    注意:

    データファイル・パスは、次のコマンドから参照できます。
    Select name from v$datafile;
    

    表領域レベルでの暗号化を検証するには、次の問合せを実行します。

    SELECT ts.name, es.encryptedts, es.encryptionalg FROM v$tablespace ts INNER JOIN v$encrypted_tablespaces es ON es.ts# = ts.ts#;
    
  11. Oracle Identity Managerとその依存スキーマ用のOracle Identity Managerデータベースにデータをインポートします。

    TDE対応の表領域が作成されたので、Oracle Identity Managerスキーマのバックアップをインポート/リストアする必要があります。次に示すのは、Oracle Identity Managerスキーマのバックアップをインポートするためのサンプル・コマンドです。

    Impdp system/<PASSWORD>@TNS_ALIAS schemas=OIM_SCHEMA_NAME directory=DATA_PUMP_DIR dumpfile=DUMP_FILE_NAME logfile=LOG_FILE_NAME
    

    注意:

    • Oracle Identity Managerスキーマをインポートした後、手順4で提案されているように、保持されている権限を実行してください。

    • Oracle Identity Managerスキーマをインポートした後、次のSQLコマンド(SYSユーザーとして実行)を使用して、スキーマ内のすべてのオブジェクトをコンパイルしてください。

      BEGIN
       UTL_RECOMP.recomp_serial('OIM_SCHEMA_NAME');
      END;
      

      ここでは、OIM_SCHEMA_NAMEをOracle Identity Managerデータベース・スキーマ名に置き換えます。


  12. Oracle Identity Managerの構成

    Oracle Identity Managerスキーマのバックアップが正常にインポートされたら、Oracle Identity Managerのインストールと構成を続けます。

D.2 TDEをOracle Identity Managerの既存インストール用に構成する

Oracle Identity Managerのインストール後にTDEを構成している場合は、次の手順を実行します。

  1. TDE実装によりデータ移動が実行され、その間Oracle Identity Managerアプリケーションが利用できなくなるので、Oracle Identity Managerをシャットダウンします。

  2. 「TDEをOracle Identity Managerの新規インストール用に構成する」で説明した手順3~11を実行します。

  3. Oracle Identity Managerを起動します。

D.3 Oracle Identity Managerに対するTDEの構成を解除する

Oracle Identity Managerに対するTDEの構成を解除するには、次の手順を実行します。

  1. DBMS_METADATA.GET_DDL()パッケージを使用して、OIMユーザー、表領域およびオブジェクト権限のバックアップを作成します。

    GET_DDL()パッケージの詳細は、次のURLを参照してください。

    http://www.oracle.com/technetwork/database/security/twp-transparent-data-encryption-bes-130696.pdf

  2. Oracle Identity Managerデータベース・スキーマのバックアップを作成します。

  3. OIMユーザーを削除します。

  4. 次のOracle Identity Manager表領域を削除します。

    • DEV_OIM

    • DEV_OIM_LOB

    • DEV_OIM_ARCH_DATA

  5. 次の問合せをSYSDBAユーザーとして実行して、暗号化ウォレットを閉じます。

    ALTER system SET encryption wallet CLOSE IDENTIFIED BY "PASSWORD";
    
  6. 次の更新問合せを実行し、SYSDBAユーザーとしてコミットします。

    UPDATE TS$ SET flags=flags - 16384 WHERE online$=3 AND bitand(flags,16384) = 16384;COMMIT;
    
  7. Oracle Identity Managerデータベースを再起動します。

  8. OIMユーザー、表領域およびオブジェクト・レベル権限を再度作成します。

  9. Oracle Identity Managerのバックアップをリストアします。

  10. SQLNET.ORAファイルから暗号化エントリを削除します。

  11. ウォレットの鍵/ディレクトリ(ORACLE_HOME/orawallet/)を削除します。

  12. Oracle Identity Managerを起動します。