

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# を使用した Oracle データベース透過的データ暗号化 (TDE) AWS CloudHSM
<a name="oracle-tde"></a>

透過的なデータ暗号化 (TDE) を使用して、データベースファイルを暗号化します。TDE を使用すると、データベースソフトウェアはデータをディスクに保存する前に暗号化します。データベースのテーブル列またはテーブルスペースのデータは、テーブルキーまたはテーブルスペースキーで暗号化されています。一部バージョンの Oracle のデータベースソフトウェアには TDE を提供します。Oracle TDE では、これらのキーは TDE マスター暗号化キーを使用して暗号化されます。TDE マスター暗号化キーを AWS CloudHSM クラスターの HSMs に保存することで、セキュリティを強化できます。

![Oracle TDE マスター暗号化キーを AWS CloudHSMに保存します。](http://docs.aws.amazon.com/ja_jp/cloudhsm/latest/userguide/images/tde-master-key-in-hsm.png)


このソリューションでは、Amazon EC2 インスタンスにインストールされている Oracle Database を使用します。Oracle Database は [PKCS \#11 のAWS CloudHSM ソフトウェアライブラリ](pkcs11-library.md)と統合し、TDE マスターキーをクラスター内の HSM に保存します。

**重要**  
 Amazon EC2 インスタンスに Oracle Database をインストールすることを推奨します。

Oracle TDE と AWS CloudHSMを統合するには、次のステップを実行します。

**Topics**
+ [ステップ 1. 前提条件の設定](#oracle-tde-prerequisites)
+ [ステップ 2: Oracle データベース設定を更新する](#oracle-tde-configure-database-and-generate-master-key)
+ [ステップ 3: Oracle TDE マスター暗号化キーの生成](#oracle-tde-generate-master-key)

## ステップ 1. 前提条件の設定
<a name="oracle-tde-prerequisites"></a>

Oracle TDE と の統合を実現するには AWS CloudHSM、以下が必要です。
+ 少なくとも 1 つの HSM を持つアクティブな AWS CloudHSM クラスター。
+ 次のソフトウェアがインストールされた Amazon Linux オペレーティングシステムを実行している Amazon EC2 インスタンス。：
  +  AWS CloudHSM クライアントおよびコマンドラインツール。
  + PKCS \#11 用の AWS CloudHSM ソフトウェアライブラリ。
  + Oracle Database. は Oracle TDE 統合 AWS CloudHSM をサポートしています。クライアント SDK 5.6 以降は、Oracle Database 19c 用 Oracle TDE をサポートしています。クライアント SDK 3 は Oracle データベースバージョン 11g および 12c の Oracle TDE をサポートします。
+ クラスター内の HSM で TDE マスター暗号化キーを所有および管理するための暗号化ユーザー (CU)。

これらの前提条件のすべてを設定するには、以下のステップを実行します。

**との Oracle TDE 統合の前提条件を設定するには AWS CloudHSM**

1. 「[開始方法](getting-started.md)」のステップを完了します。これを行うと、1 つの HSM を含むアクティブなクラスターが提供されます。Amazon Linux オペレーティングシステムで実行される Amazon EC2 インスタンスも作成されます。 AWS CloudHSM クライアントツールとコマンドラインツールもインストールおよび設定されます。

1. (オプション) 他の HSM をクラスターに追加します。詳細については、「[AWS CloudHSM クラスターへの HSM の追加](add-hsm.md)」を参照してください。

1. Amazon EC2 クライアントインスタンスに接続し、以下を実行します。

   1. [PKCS \#11 用の AWS CloudHSM ソフトウェアライブラリをインストールします](pkcs11-library-install.md)。

   1. Oracle Database をインストールします。詳細については、[Oracle Database のドキュメント](https://docs.oracle.com/en/database/)を参照してください。クライアント SDK 5.6 以降は、Oracle Database 19c 用 Oracle TDE をサポートしています。クライアント SDK 3 は Oracle データベースバージョン 11g および 12c の Oracle TDE をサポートします。

   1. cloudhsm\_mgmt\_util コマンドラインツールを使用し、クラスターで暗号化ユーザー (CU) を作成します。CU の作成に関する詳細については、[CMU で HSM ユーザーを管理する方法](create-users-cmu.md) と [HSM ユーザー](manage-hsm-users.md) を参照してください。

## ステップ 2: Oracle データベース設定を更新する
<a name="oracle-tde-configure-database-and-generate-master-key"></a>

クラスターで HSM を*外部セキュリティモジュール*として使用するように Oracle Database の設定を更新するには、次のステップを実行します。外部セキュリティモジュールの詳細については、[Oracle Database Advanced Security ガイド](https://docs.oracle.com/database/122/ASOAG/introduction-to-transparent-data-encryption.htm)の「*透過的データ暗号化の概要*」を参照してください。

**Oracle 設定を更新するには**

1. Amazon EC2 クライアントインスタンスに接続します。これは、Oracle Database をインストールした先のインスタンスです。

1. `sqlnet.ora` というファイルのバックアップコピーを作成します。このファイルの場所については、Oracle のドキュメントを参照してください。

1. テキストエディタを使用して、`sqlnet.ora` というファイルを編集します。次の行を追加します。ファイルの既存の行が `encryption_wallet_location` で始まる場合は、既存の行を次の行に置き換えます。

   ```
   encryption_wallet_location=(source=(method=hsm))
   ```

   ファイルを保存します。

1. 次のコマンドを実行して、Oracle Database が AWS CloudHSM PKCS \#11 ソフトウェアライブラリのライブラリファイルを検索するディレクトリを作成します。

   ```
   sudo mkdir -p /opt/oracle/extapi/64/hsm
   ```

1. 次のコマンドを実行して、PKCS \#11 ファイルの AWS CloudHSM ソフトウェアライブラリを前のステップで作成したディレクトリにコピーします。

   ```
   sudo cp /opt/cloudhsm/lib/libcloudhsm_pkcs11.so /opt/oracle/extapi/64/hsm/
   ```
**注記**  
`/opt/oracle/extapi/64/hsm` ディレクトリに含めるライブラリファイルは 1 つに限られます。そのディレクトリに存在する他のファイルを削除します。

1. 次のコマンドを実行して、`/opt/oracle` ディレクトリおよびその内容すべての所有権を変更します。

   ```
   sudo chown -R oracle:dba /opt/oracle
   ```

1. Oracle Database を起動します。

## ステップ 3: Oracle TDE マスター暗号化キーの生成
<a name="oracle-tde-generate-master-key"></a>

クラスターの HSM で Oracle TDE マスターキーを生成するには、次の手順を実行します。

**マスターキーを生成するには**

1. 次のコマンドを使用して、Oracle SQL\*Plus を開きます。プロンプトが表示されたら、Oracle Database のインストール時に設定したシステムパスワードを入力します。

   ```
   sqlplus / as sysdba
   ```
**注記**  
クライアント SDK 3 の場合、マスターキーを生成するたびに `CLOUDHSM_IGNORE_CKA_MODIFIABLE_FALSE` 環境変数を設定する必要があります。この変数は、マスターキーの生成にのみ必要です。詳細については、[サードパーティーアプリケーションの統合に関する既知の問題](ki-third-party.md) の「問題：Oracleは `CKA_MODIFIABLE` マスターキーの生成中に PCKS ＃11 属性を設定しますが、HSM はそれをサポートしていません」を参照してください。

1. 次の例に示すように、マスター暗号化キーを作成する SQL ステートメントを実行します。使用しているバージョンの Oracle Database に対応するステートメントを使用します。{{<CU user name>}} を暗号化ユーザー (CU) のユーザー名に置き換えます。{{<password>}} を CU パスワードに置き換えます。
**重要**  
次のコマンドは 1 回のみ実行します。コマンドを実行するたびに、新しいマスター暗号化キーが作成されます。
   + Oracle Database バージョン 11 の場合は、次の SQL ステートメントを実行します。

     ```
     SQL> alter system set encryption key identified by "{{<CU user name>}}:{{<password>}}";
     ```
   + Oracle Database バージョン 12 およびバージョン 19c の場合は、次の SQL ステートメントを実行します。

     ```
     SQL> administer key management set key identified by "{{<CU user name>}}:{{<password>}}";
     ```

   レスポンスが `System altered` または `keystore altered` の場合は、Oracle TDE のマスターキーが正常に生成および設定されています。

1. (オプション) 次のコマンドを実行して *Oracle ウォレット*のステータスを確認します。

   ```
   SQL> select * from v$encryption_wallet;
   ```

   ウォレットが開いていない場合は、次のいずれかのコマンドを使用して開きます。{{<CU user name>}} を暗号化ユーザー (CU) の名前に置き換えます。{{<password>}} を CU パスワードに置き換えます。
   + Oracle 11 の場合は、次のコマンドを実行してウォレットを開きます。

     ```
     SQL> alter system set encryption wallet open identified by "{{<CU user name>}}:{{<password>}}";
     ```

     手動でウォレットを閉じるには、次のコマンドを実行します。

     ```
     SQL> alter system set encryption wallet close identified by "{{<CU user name>}}:{{<password>}}";
     ```
   + Oracle 12 および Oracle 19c の場合は、次のコマンドを実行してウォレットを開きます。

     ```
     SQL> administer key management set keystore open identified by "{{<CU user name>}}:{{<password>}}";
     ```

     手動でウォレットを閉じるには、次のコマンドを実行します。

     ```
     SQL> administer key management set keystore close identified by "{{<CU user name>}}:{{<password>}}";
     ```