Oracle ネイティブネットワーク暗号化
Amazon RDS は、Oracle ネイティブネットワーク暗号化 (NNE) をサポートしています。NATIVE_NETWORK_ENCRYPTION
オプションを使用すると、DB インスタンスとの間でデータを移動するときにデータを暗号化できます。Amazon RDS では、Oracle Database のすべてのエディションの NNE がサポートされています。
Oracle ネイティブネットワーク暗号化の詳細な説明はこのガイドでは取り上げませんが、配置で使用するソリューションを決定する前に各アルゴリズムおよびキーの長所と短所を理解する必要があります。Oracle ネイティブネットワークの暗号化で使用できるアルゴリズムとキーについては、Oracle ドキュメントの「Configuring Network Data Encryption
注記
ネイティブネットワーク暗号化または Secure Sockets Layer を使用できますが、両方を使用することはできません。詳細については、「Oracle Secure Sockets Layer」を参照してください。
NATIVE_NETWORK_ENCRYPTION オプション設定
暗号化要件は、サーバーとクライアントの両方で指定できます。DB インスタンスは、データベースリンクを使用して別のデータベースに接続する場合などに、クライアントとして機能します。サーバー側で暗号化の強制を回避できます。例えば、サーバーで必要としているからといって、すべてのクライアント通信で暗号化の使用を強制することはありません。この場合、SQLNET.*CLIENT
オプションを使用してクライアント側で暗号化を強制できます。
Amazon RDS は、NATIVE_NETWORK_ENCRYPTION
オプションの次の設定をサポートします。
注記
オプション設定の値をコンマで区切る場合は、コンマの後にスペースを挿入しないでください。
オプション設定 | 有効な値 | デフォルト値 | 説明 |
---|---|---|---|
|
|
|
非セキュア暗号を使用しているクライアントでデータベースへの接続を試行したときのサーバーの動作。 設定を
|
|
|
|
非セキュア暗号を使用しているクライアントでデータベースへの接続を試行したときのサーバーの動作。次の暗号はセキュアではないと見なされます。
設定を 設定を
|
|
|
|
クライアント、またはクライアントとして機能しているサーバーが DB インスタンスに接続する場合のデータ整合性動作。DB インスタンスでデータベースリンクが使用されている場合、そのインスタンスはクライアントとして機能します。
|
|
|
|
クライアント、またはクライアントとして機能しているサーバーが DB インスタンスに接続する場合のデータ整合性動作。DB インスタンスでデータベースリンクが使用されている場合、そのインスタンスはクライアントとして機能します。
|
|
|
|
チェックサムアルゴリズムのリスト。 1 つの値を指定することも、カンマで区切られた値リストを指定することもできます。コンマを使用する場合は、コンマの後にスペースを挿入しないでください。スペースを挿入すると、 このパラメータと |
|
|
|
チェックサムアルゴリズムのリスト。 1 つの値を指定することも、カンマで区切られた値リストを指定することもできます。コンマを使用する場合は、コンマの後にスペースを挿入しないでください。スペースを挿入すると、 このパラメータと |
|
|
|
クライアント、またはクライアントとして機能しているサーバーが DB インスタンスに接続する場合のクライアントの暗号化動作。DB インスタンスでデータベースリンクが使用されている場合、そのインスタンスはクライアントとして機能します。
|
|
|
|
クライアント、またはクライアントとして機能しているサーバーが DB インスタンスに接続する場合のサーバーの暗号化動作。DB インスタンスでデータベースリンクが使用されている場合、そのインスタンスはクライアントとして機能します。
|
|
|
|
クライアントによって使用される暗号化アルゴリズムのリスト。クライアントは、各アルゴリズムが順序どおりに使用され、アルゴリズムが成功するか、リストの末尾に到達するまでサーバー入力の復号を試みます。 Amazon RDS は、Oracle による次のデフォルトリストを使用します。RDS は
1 つの値を指定することも、カンマで区切られた値リストを指定することもできます。コンマの場合は、コンマの後にスペースを挿入しないでください。スペースを挿入しないと、 このパラメータと |
|
|
|
DB インスタンスによって使用された暗号化アルゴリズムのリスト。DB インスタンスは、各アルゴリズムを順序どおりに使用し、アルゴリズムが成功するか、リストの末尾に到達するまでクライアントの復号を試みます。 Amazon RDS は、Oracle による次のデフォルトリストを使用します。順序を変更したり、クライアントで受け入れられるアルゴリズムを制限したりすることができます。
1 つの値を指定することも、カンマで区切られた値リストを指定することもできます。コンマの場合は、コンマの後にスペースを挿入しないでください。スペースを挿入しないと、 このパラメータと |
NATIVE_NETWORK_ENCRYPTION オプションの追加
DB インスタンスに NATIVE_NETWORK_ENCRYPTION
オプションを追加する一般的なプロセスは以下のとおりです。
新しいオプショングループを作成するか、既存のオプショングループをコピーまたは変更します。
オプショングループに [] オプションを追加します。
オプショングループを DB インスタンスに関連付けます。
オプショングループがアクティブになると、NNE がアクティブになります。
AWS Management Console を使用して DB インスタンスに NATIVE_NETWORK_ENCRYPTION オプションを追加するには
-
[Engine] で、使用する Oracle のエディションを選択します。NNE はすべてのエディションでサポートされます。
-
[メジャーエンジンのバージョン] で、DB インスタンスのバージョンを選択します。
詳細については、「オプショングループを作成する」を参照してください。
-
NATIVE_NETWORK_ENCRYPTION オプションをオプショングループに追加します。オプションの追加方法の詳細については、「オプショングループにオプションを追加する」を参照してください。
注記
NATIVE_NETWORK_ENCRYPTION オプションを追加した後に DB インスタンスを再起動する必要はありません。オプショングループがアクティブになると、すぐに NNE がアクティブになります。
-
新規または既存の DB インスタンスに、DB オプショングループを適用します。
-
新規 DB インスタンスの場合は、インスタンスを起動するときにオプショングループを適用します。詳細については、「Amazon RDS DB インスタンスの作成」を参照してください。
-
既存の DB インスタンスの場合は、インスタンスを修正し、新しいオプショングループを添付することで、オプショングループを適用します。NATIVE_NETWORK_ENCRYPTION オプションを追加した後に DB インスタンスを再起動する必要はありません。オプショングループがアクティブになると、すぐに NNE がアクティブになります。(詳しくは、「Amazon RDS DB インスタンスを変更する」を参照してください。)
-
sqlnet.ora で NNE 値を設定する
Oracle ネイティブネットワーク暗号化を使用すると、サーバー側とクライアント側でネットワーク暗号化を設定できます。クライアントとは DB インスタンスへの接続に使用されるコンピュータです。slqnet.ora では、次のクライアント設定を指定できます。
-
SQLNET.ALLOW_WEAK_CRYPTO
-
SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS
-
SQLNET.CRYPTO_CHECKSUM_CLIENT
-
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT
-
SQLNET.ENCRYPTION_CLIENT
-
SQLNET.ENCRYPTION_TYPES_CLIENT
詳細については、Oracle ドキュメントの「Oracle サーバーおよびクライアントのネットワークデータ暗号化と整合性の設定
DB インスタンスでアプリケーションからの接続リクエストが拒否される場合があります。例えば、クライアント側の暗号化アルゴリズムとサーバー側の暗号化アルゴリズムが一致しない場合、拒否される可能性があります。Oracle ネイティブネットワーク暗号化をテストするには、クライアントの sqlnet.ora ファイルに次の行を追加します。
DIAG_ADR_ENABLED=off TRACE_DIRECTORY_CLIENT=/tmp TRACE_FILE_CLIENT=nettrace TRACE_LEVEL_CLIENT=16
接続が試行されると、前の行により /tmp/nettrace*
というトレースファイルがクライアントに生成されます。トレースファイルには、接続に関する情報が含まれています。Oracle ネイティブネットワーク暗号化を使用した場合の接続に関連する問題の詳細については、「Oracle Database ドキュメント」の「暗号化と整合性のネゴシエーションについて
NATIVE_NETWORK_ENCRYPTION オプション設定
NATIVE_NETWORK_ENCRYPTION
オプションを有効にすると、その設定を変更できます。現在、NATIVE_NETWORK_ENCRYPTION
オプション設定は、AWS CLI または RDS API でのみ変更できます。 コンソールは使用できません。次の例では、オプションで 2 つの設定を変更します。
aws rds add-option-to-option-group \ --option-group-name my-option-group \ --options "OptionName=NATIVE_NETWORK_ENCRYPTION,OptionSettings=[{Name=SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER,Value=SHA256},{Name=SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER,Value=SHA256}]" \ --apply-immediately
CLI を使用したオプション設定の変更方法の詳細については、「AWS CLI」を参照してください。各設定の詳細については、「NATIVE_NETWORK_ENCRYPTION オプション設定」を参照してください。
CRYPTO_CHECKSUM_* 値の変更
NATIVE_NETWORK_ENCRYPTION オプション設定を変更する場合は、次のオプション設定に共通の暗号が少なくとも 1 つあることを確認してください。
-
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER
-
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT
次の例は、SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER
を変更するシナリオを示しています。CRYPTO_CHECKSUM_TYPES_CLIENT
、CRYPTO_CHECKSUM_TYPES_SERVER
の両方が SHA256
を使用するため、設定は有効です。
オプション設定 | 変更前の値 | 変更後の値 |
---|---|---|
|
|
変更なし |
|
|
SHA1,MD5,SHA256 |
別の例では、SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER
をデフォルト設定から SHA1,MD5
に変更するとします。この場合、SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT
を 必ず SHA1
または MD5
に設定してください。これらのアルゴリズムは SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT
のデフォルト値に含まれていません。
ALLOW_WEAK_CRYPTO* 設定の変更
SQLNET.ALLOW_WEAK_CRYPTO*
オプションをデフォルト値から FALSE
に設定する場合は、次の条件が満たされていることを確認してください。
-
SQLNET.ENCRYPTION_TYPES_SERVER
とSQLNET.ENCRYPTION_TYPES_CLIENT
には、一致するセキュアな暗号化方式が 1 つあります。方式がDES
、3DES
、またはRC4
(すべてのキーの長さ) ではない場合、セキュアと見なされます。 -
SQLNET.CHECKSUM_TYPES_SERVER
とSQLNET.CHECKSUM_TYPES_CLIENT
には、一致するセキュアなチェックサム方式が 1 つあります。方式がMD5
ではない場合、セキュアと見なされます。 -
クライアントで 2021 年 7 月 PSU パッチが適用されます。クライアントにパッチが適用されていない場合、クライアントでの接続が失われ、
ORA-12269
エラーを受け取ります。
次の例は サンプル NNE 設定を示しています。SQLNET.ENCRYPTION_TYPES_SERVER
と SQLNET.ENCRYPTION_TYPES_CLIENT
をFALSE に設定して、非セキュア接続をブロックすると仮定します。チェックサムオプションの設定は、どちらにも SHA256
が含まれているため、前提条件を満たしています。ただし、SQLNET.ENCRYPTION_TYPES_CLIENT
と SQLNET.ENCRYPTION_TYPES_SERVER
では、非セキュアな暗号化方式である DES
、3DES
、および RC4
が使用されます。したがって、SQLNET.ALLOW_WEAK_CRYPTO*
オプションを FALSE
に設定する場合は、まず SQLNET.ENCRYPTION_TYPES_SERVER
と SQLNET.ENCRYPTION_TYPES_CLIENT
をセキュアな暗号化方式 (AES256
など) に設定します。
オプション設定 | [値] |
---|---|
|
|
|
SHA1,MD5,SHA256 |
|
|
|
|
NATIVE_NETWORK_ENCRYPTION オプションの削除
DB インスタンスから NNE を削除できます。
NATIVE_NETWORK_ENCRYPTION
オプションを DB インスタンスから削除するには、次のいずれかを実行します。
-
複数の DB インスタンスからオプションを削除するには、それらが属しているオプショングループから
NATIVE_NETWORK_ENCRYPTION
オプションを削除します。この変更はそのオプショングループを使用するすべての DB インスタンスに影響します。NATIVE_NETWORK_ENCRYPTION
オプションを削除した後に DB インスタンスを再起動する必要はありません。(詳しくは、「オプショングループからオプションを削除する」を参照してください。) -
1 つの DB インスタンスからオプションを削除するには、DB インスタンスを変更し、
NATIVE_NETWORK_ENCRYPTION
オプションを含まない別のオプショングループを指定します。デフォルト (空) のオプショングループや別のカスタムオプショングループを指定できます。NATIVE_NETWORK_ENCRYPTION
オプションを削除した後に DB インスタンスを再起動する必要はありません。(詳しくは、「Amazon RDS DB インスタンスを変更する」を参照してください。)