この付録では、Oracle Transparent Data Encryption (TDE)をOracle Identity Manager用に構成する方法について説明します。
Oracle Databaseは次のタイプのデータ暗号化をサポートしています。
TDE表領域暗号化: その表領域に格納されているすべてのコンテンツを暗号化します。これは、機密データが複数の列に格納されている場合に便利です。
TDE列暗号化: 表内の特定の列に格納されているデータを保護します。データがSQLレイヤーを通過する際に、データの暗号化と復号化を透過的に行います。
注意: TDEの詳細は、『Oracle Database Advanced Securityガイド』を参照してください。 |
Oracle Identity ManagerはTDE表領域暗号化をサポートしており、連携して機能します。
この付録の内容は以下のとおりです。
TDEを構成するには、暗号化されていない表領域から暗号化された表領域にデータを移動するために、ダウンタイムが必要となります。そのため、リポジトリ作成ユーティリティ(RCU)を使用してデータベース・スキーマをインストールしたら、Oracle Identity Managerアプリケーションをインストールする前に、TDEをすぐにOracle Identity Managerデプロイメント用に構成します。
TDEをOracle Identity Managerの新規インストール用に構成するには、次の手順に従います。
Oracle Databaseをインストールします。詳細は、Oracle Databaseのドキュメントを参照してください。
RCUを実行して、Oracle Identity Managerスキーマと依存スキーマを作成します。詳細は、『Oracle Fusion Middleware Oracle Identity and Access Managementインストレーション・ガイド』を参照してください。
Oracle Identity Managerをシャットダウンします(該当する場合)。
Oracle Identity Managerのインストール後にTDEを構成している場合は、Oracle Identity Managerをシャットダウンする必要があります。これは、TDE実装によってデータ移動が実行され、通常の表領域からTDE対応の表領域へとデータが移動される間、Oracle Identity Managerアプリケーションが利用できなくなるためです。
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_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)))
ウォレットを作成します。
TDEを使用するには、Oracleウォレットに対するALTER SYSTEM権限と、有効なパスワードを持っている必要があります。Oracleウォレットが存在しない場合は、SQLコマンドで指定されたパスワードを使用して、新しいOracleウォレットが作成されます。
新規のマスター・キーを作成してTDEを使用するには、次のSQLコマンドを実行します。
ALTER SYSTEM SET ENCRYPTION KEY AUTHENTICATED BY "PASSWORD";
このコマンドは、次の操作を実行します。
手順4で指定された場所にウォレットを作成します。
指定したパスワードをウォレットのパスワードとして設定します。パスワードは大文字と小文字を区別し、二重引用符で囲む必要があります。
TDE用のウォレットを開いて、マスター・キーを格納および取得します。
このSQLコマンドにより、データベース・サーバーのマスター暗号化鍵が生成されます。この鍵は、各表の列暗号化鍵を暗号化するためにサーバーによって使用されます。データベース内の表の列は、サーバーのマスター・キーが設定されるまで暗号化できません。
ウォレットを開きます。
ウォレットは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 Identity Managerとその表領域を削除します。
OIMは表領域を削除する前に削除します。次に示すのは、これを行うためのサンプル・コマンドです。
DROP USER OIM_SCHEMA_NAME CASCADE; DROP TABLESPACE OIM_DATA_TBS INCLUDING contents AND datafiles; DROP TABLESPACE OIM_LOB_TBS INCLUDING contents AND datafiles; DROP TABLESPACE OIM_ARCH_DATA_TBS INCLUDING contents AND datafiles;
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 ts.name, es.encryptedts, es.encryptionalg FROM v$tablespace ts INNER JOIN v$encrypted_tablespaces es ON es.ts# = ts.ts#;
Oracle Identity Managerとその依存スキーマ用のOracle Identity Managerデータベースにデータをインポートします。
TDE対応の表領域が作成されたので、Oracle Identity Managerスキーマのバックアップをインポート/リストアする必要があります。次に示すのは、Oracle Identity Managerスキーマのバックアップをインポートするためのサンプル・コマンドです。
Impdp expdp system/<PASSWORD>@TNS_ALIAS schemas=OIM_SCHEMA_NAME directory=DATA_PUMP_DIR dumpfile=DUMP_FILE_NAME logfile=LOG_FILE_NAME
Oracle Identity Managerの構成
Oracle Identity Managerスキーマのバックアップが正常にインポートされたら、Oracle Identity Managerのインストールと構成を続けます。
Oracle Identity Managerのインストール後にTDEを構成している場合は、次の手順を実行します。
TDE実装によりデータ移動が実行され、その間Oracle Identity Managerアプリケーションが利用できなくなるので、Oracle Identity Managerをシャットダウンします。
「TDEをOracle Identity Managerの新規インストール用に構成する」で説明した手順3~11を実行します。
Oracle Identity Managerを起動します。
Oracle Identity Managerに対するTDEの構成を解除するには、次の手順を実行します。
DBMS_METADATA.GET_DDL()パッケージを使用して、OIMユーザー、表領域およびオブジェクト権限のバックアップを作成します。
GET_DDL()パッケージの詳細は、次のURLを参照してください。
http://www.oracle.com/technetwork/database/security/twp-transparent-data-encryption-bes-130696.pdf
Oracle Identity Managerデータベース・スキーマのバックアップを作成します。
OIMユーザーを削除します。
次のOracle Identity Manager表領域を削除します。
DEV_OIM
DEV_OIM_LOB
DEV_OIM_ARCH_DATA
次の問合せをSYSDBAユーザーとして実行して、暗号化ウォレットを閉じます。
ALTER system SET encryption wallet CLOSE IDENTIFIED BY "PASSWORD";
次の更新問合せを実行し、SYSDBAユーザーとしてコミットします。
UPDATE TS$ SET flags=flags - 16384 WHERE online$=3 AND bitand(flags,16384) = 16384;COMMIT;
Oracle Identity Managerデータベースを再起動します。
OIMユーザー、表領域およびオブジェクト・レベル権限を再度作成します。
Oracle Identity Managerのバックアップをリストアします。
SQLNET.ORAファイルから暗号化エントリを削除します。
ウォレットの鍵/ディレクトリ(ORACLE_HOME/orawallet/)を削除します。
Oracle Identity Managerを起動します。