Oracle ネイティブネットワーク暗号化 - Amazon Relational Database Service

Oracle ネイティブネットワーク暗号化

Amazon RDS は、Oracle ネイティブネットワーク暗号化 (NNE) をサポートしています。NATIVE_NETWORK_ENCRYPTION オプションを使用すると、DB インスタンスとの間でデータを移動するときにデータを暗号化できます。Amazon RDS では、Oracle Database のすべてのエディションの NNE がサポートされています。

Oracle ネイティブネットワーク暗号化の詳細な説明はこのガイドでは取り上げませんが、配置で使用するソリューションを決定する前に各アルゴリズムおよびキーの長所と短所を理解する必要があります。Oracle ネイティブネットワークの暗号化で使用できるアルゴリズムとキーについては、Oracle ドキュメントの「Configuring Network Data Encryption」を参照してください。AWS セキュリティの詳細については、AWS セキュリティセンターを参照してください。

注記

ネイティブネットワーク暗号化または Secure Sockets Layer を使用できますが、両方を使用することはできません。詳細については、「Oracle Secure Sockets Layer」を参照してください。

NATIVE_NETWORK_ENCRYPTION オプション設定

暗号化要件は、サーバーとクライアントの両方で指定できます。DB インスタンスは、データベースリンクを使用して別のデータベースに接続する場合などに、クライアントとして機能します。サーバー側で暗号化の強制を回避できます。例えば、サーバーで必要としているからといって、すべてのクライアント通信で暗号化の使用を強制することはありません。この場合、SQLNET.*CLIENT オプションを使用してクライアント側で暗号化を強制できます。

Amazon RDS は、NATIVE_NETWORK_ENCRYPTION オプションの次の設定をサポートします。

注記

オプション設定の値をコンマで区切る場合は、コンマの後にスペースを挿入しないでください。

オプション設定 有効な値 デフォルト値 説明

SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS

TRUE, FALSE

TRUE

非セキュア暗号を使用しているクライアントでデータベースへの接続を試行したときのサーバーの動作。TRUE の場合、2021 年 7 月 PSU パッチが適用されていなくても、クライアントでの接続が可能です。

設定を FALSE にすると、クライアントで 2021 年 7 月 PSU パッチが適用された場合にだけ、データベースへの接続が可能です。SQLNET.ALLOW_WEAK_CRYPTO_CLIENTSFALSE に設定する前に、次の条件が満たされていることを確認してください。

  • SQLNET.ENCRYPTION_TYPES_SERVERSQLNET.ENCRYPTION_TYPES_CLIENT には、DES3DES、または RC4 (すべてのキーの長さ) とは異なる、一致する暗号化方式が 1 つあります。

  • SQLNET.CHECKSUM_TYPES_SERVERSQLNET.CHECKSUM_TYPES_CLIENT には、MD5 とは異なる、一致するセキュアなチェックサム方式が 1 つあります。

  • クライアントで 2021 年 7 月 PSU パッチが適用されます。クライアントにパッチが適用されていない場合、クライアントでの接続が失われ、ORA-12269 エラーを受け取ります。

SQLNET.ALLOW_WEAK_CRYPTO

TRUE, FALSE

TRUE

非セキュア暗号を使用しているクライアントでデータベースへの接続を試行したときのサーバーの動作。次の暗号はセキュアではないと見なされます。

  • DES 暗号化方式 (すべてのキーの長さ)

  • 3DES 暗号化方式 (すべてのキーの長さ)

  • RC4 暗号化方式 (すべてのキーの長さ)

  • MD5 チェックサム方式

設定を TRUE にすると、クライアントで前述の非セキュア暗号を使用した場合に接続できます。

設定を FALSE にすると、クライアントで前述の非セキュア暗号を使用した場合にデータベースが接続を阻止します。SQLNET.ALLOW_WEAK_CRYPTOFALSE に設定する前に、次の条件が満たされていることを確認してください。

  • SQLNET.ENCRYPTION_TYPES_SERVERSQLNET.ENCRYPTION_TYPES_CLIENT には、DES3DES、または RC4 (すべてのキーの長さ) とは異なる、一致する暗号化方式が 1 つあります。

  • SQLNET.CHECKSUM_TYPES_SERVERSQLNET.CHECKSUM_TYPES_CLIENT には、MD5 とは異なる、一致するセキュアなチェックサム方式が 1 つあります。

  • クライアントで 2021 年 7 月 PSU パッチが適用されます。クライアントにパッチが適用されていない場合、クライアントでの接続が失われ、ORA-12269 エラーを受け取ります。

SQLNET.CRYPTO_CHECKSUM_CLIENT

Accepted, Rejected, Requested, Required

Requested

クライアント、またはクライアントとして機能しているサーバーが DB インスタンスに接続する場合のデータ整合性動作。DB インスタンスでデータベースリンクが使用されている場合、そのインスタンスはクライアントとして機能します。

Requested は、DB インスタンスによるチェックサムの実行をクライアントで必要としないことを示しています。

SQLNET.CRYPTO_CHECKSUM_SERVER

Accepted, Rejected, Requested, Required

Requested

クライアント、またはクライアントとして機能しているサーバーが DB インスタンスに接続する場合のデータ整合性動作。DB インスタンスでデータベースリンクが使用されている場合、そのインスタンスはクライアントとして機能します。

Requested は、クライアントによるチェックサムの実行を DB インスタンスで必要としないことを示しています。

SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT

SHA256, SHA384, SHA512, SHA1, MD5

SHA256, SHA384, SHA512

チェックサムアルゴリズムのリスト。

1 つの値を指定することも、カンマで区切られた値リストを指定することもできます。コンマを使用する場合は、コンマの後にスペースを挿入しないでください。スペースを挿入すると、InvalidParameterValue エラーが発生します。

このパラメータと SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER には、共通の暗号が必要です。

SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER

SHA256, SHA384, SHA512, SHA1, MD5

SHA256, SHA384, SHA512, SHA1, MD5

チェックサムアルゴリズムのリスト。

1 つの値を指定することも、カンマで区切られた値リストを指定することもできます。コンマを使用する場合は、コンマの後にスペースを挿入しないでください。スペースを挿入すると、InvalidParameterValue エラーが発生します。

このパラメータと SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT には、共通の暗号が必要です。

SQLNET.ENCRYPTION_CLIENT

Accepted, Rejected, Requested, Required

Requested

クライアント、またはクライアントとして機能しているサーバーが DB インスタンスに接続する場合のクライアントの暗号化動作。DB インスタンスでデータベースリンクが使用されている場合、そのインスタンスはクライアントとして機能します。

Requested は、クライアントでサーバーからのトラフィックを暗号化する必要がないことを示しています。

SQLNET.ENCRYPTION_SERVER

Accepted, Rejected, Requested, Required

Requested

クライアント、またはクライアントとして機能しているサーバーが DB インスタンスに接続する場合のサーバーの暗号化動作。DB インスタンスでデータベースリンクが使用されている場合、そのインスタンスはクライアントとして機能します。

Requested は、DB インスタンスでクライアントからのトラフィックを暗号化する必要がないことを示します。

SQLNET.ENCRYPTION_TYPES_CLIENT

RC4_256, AES256, AES192, 3DES168, RC4_128, AES128, 3DES112, RC4_56, DES, RC4_40, DES40

RC4_256, AES256, AES192, 3DES168, RC4_128, AES128, 3DES112, RC4_56, DES, RC4_40, DES40

クライアントによって使用される暗号化アルゴリズムのリスト。クライアントは、各アルゴリズムが順序どおりに使用され、アルゴリズムが成功するか、リストの末尾に到達するまでサーバー入力の復号を試みます。

Amazon RDS は、Oracle による次のデフォルトリストを使用します。RDS は RC4_256 で始まり、リストの下の方へ順番に進みます。順序を変更したり、DB インスタンスで受け入れられるアルゴリズムを制限したりすることができます。

  1. RC4_256: RSA RC4 (256 ビットのキーサイズ)

  2. AES256: AES (256 ビットのキーサイズ)

  3. AES192: AES (192 ビットのキーサイズ)

  4. 3DES168: 3-key Triple-DES (112 ビットの有効キーサイズ)

  5. RC4_128: RSA RC4 (128 ビットのキーサイズ)

  6. AES128: AES (128 ビットのキーサイズ)

  7. 3DES112: 2-key Triple-DES (80 ビットの有効キーサイズ)

  8. RC4_56: RSA RC4 (56 ビットのキーサイズ)

  9. DES: Standard DES (56 ビットのキーサイズ)

  10. RC4_40: RSA RC4 (40 ビットのキーサイズ)

  11. DES40: DES40 (40 ビットのキーサイズ)

1 つの値を指定することも、カンマで区切られた値リストを指定することもできます。コンマの場合は、コンマの後にスペースを挿入しないでください。スペースを挿入しないと、InvalidParameterValue エラーが発生します。

このパラメータと SQLNET.SQLNET.ENCRYPTION_TYPES_SERVER には、共通の暗号が必要です。

SQLNET.ENCRYPTION_TYPES_SERVER

RC4_256, AES256, AES192, 3DES168, RC4_128, AES128, 3DES112, RC4_56, DES, RC4_40, DES40

RC4_256, AES256, AES192, 3DES168, RC4_128, AES128, 3DES112, RC4_56, DES, RC4_40, DES40

DB インスタンスによって使用された暗号化アルゴリズムのリスト。DB インスタンスは、各アルゴリズムを順序どおりに使用し、アルゴリズムが成功するか、リストの末尾に到達するまでクライアントの復号を試みます。

Amazon RDS は、Oracle による次のデフォルトリストを使用します。順序を変更したり、クライアントで受け入れられるアルゴリズムを制限したりすることができます。

  1. RC4_256: RSA RC4 (256 ビットのキーサイズ)

  2. AES256: AES (256 ビットのキーサイズ)

  3. AES192: AES (192 ビットのキーサイズ)

  4. 3DES168: 3-key Triple-DES (112 ビットの有効キーサイズ)

  5. RC4_128: RSA RC4 (128 ビットのキーサイズ)

  6. AES128: AES (128 ビットのキーサイズ)

  7. 3DES112: 2-key Triple-DES (80 ビットの有効キーサイズ)

  8. RC4_56: RSA RC4 (56 ビットのキーサイズ)

  9. DES: Standard DES (56 ビットのキーサイズ)

  10. RC4_40: RSA RC4 (40 ビットのキーサイズ)

  11. DES40: DES40 (40 ビットのキーサイズ)

1 つの値を指定することも、カンマで区切られた値リストを指定することもできます。コンマの場合は、コンマの後にスペースを挿入しないでください。スペースを挿入しないと、InvalidParameterValue エラーが発生します。

このパラメータと SQLNET.SQLNET.ENCRYPTION_TYPES_SERVER には、共通の暗号が必要です。

NATIVE_NETWORK_ENCRYPTION オプションの追加

DB インスタンスに NATIVE_NETWORK_ENCRYPTION オプションを追加する一般的なプロセスは以下のとおりです。

  1. 新しいオプショングループを作成するか、既存のオプショングループをコピーまたは変更します。

  2. オプショングループに [] オプションを追加します。

  3. オプショングループを DB インスタンスに関連付けます。

オプショングループがアクティブになると、NNE がアクティブになります。

AWS Management Console を使用して DB インスタンスに NATIVE_NETWORK_ENCRYPTION オプションを追加するには
  1. [Engine] で、使用する Oracle のエディションを選択します。NNE はすべてのエディションでサポートされます。

  2. [メジャーエンジンのバージョン] で、DB インスタンスのバージョンを選択します。

    詳細については、「オプショングループを作成する」を参照してください。

  3. NATIVE_NETWORK_ENCRYPTION オプションをオプショングループに追加します。オプションの追加方法の詳細については、「オプショングループにオプションを追加する」を参照してください。

    注記

    NATIVE_NETWORK_ENCRYPTION オプションを追加した後に DB インスタンスを再起動する必要はありません。オプショングループがアクティブになると、すぐに NNE がアクティブになります。

  4. 新規または既存の 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_CLIENTCRYPTO_CHECKSUM_TYPES_SERVER の両方が SHA256 を使用するため、設定は有効です。

オプション設定 変更前の値 変更後の値

SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT

SHA256, SHA384, SHA512

変更なし

SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER

SHA256, SHA384, SHA512, SHA1, MD5

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_SERVERSQLNET.ENCRYPTION_TYPES_CLIENT には、一致するセキュアな暗号化方式が 1 つあります。方式が DES3DES、または RC4 (すべてのキーの長さ) ではない場合、セキュアと見なされます。

  • SQLNET.CHECKSUM_TYPES_SERVERSQLNET.CHECKSUM_TYPES_CLIENT には、一致するセキュアなチェックサム方式が 1 つあります。方式が MD5 ではない場合、セキュアと見なされます。

  • クライアントで 2021 年 7 月 PSU パッチが適用されます。クライアントにパッチが適用されていない場合、クライアントでの接続が失われ、ORA-12269 エラーを受け取ります。

次の例は サンプル NNE 設定を示しています。SQLNET.ENCRYPTION_TYPES_SERVERSQLNET.ENCRYPTION_TYPES_CLIENT をFALSE に設定して、非セキュア接続をブロックすると仮定します。チェックサムオプションの設定は、どちらにも SHA256 が含まれているため、前提条件を満たしています。ただし、SQLNET.ENCRYPTION_TYPES_CLIENTSQLNET.ENCRYPTION_TYPES_SERVER では、非セキュアな暗号化方式である DES3DES、および RC4 が使用されます。したがって、SQLNET.ALLOW_WEAK_CRYPTO* オプションを FALSE に設定する場合は、まず SQLNET.ENCRYPTION_TYPES_SERVERSQLNET.ENCRYPTION_TYPES_CLIENT をセキュアな暗号化方式 (AES256 など) に設定します。

オプション設定 [値]

SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT

SHA256, SHA384, SHA512

SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER

SHA1,MD5,SHA256

SQLNET.ENCRYPTION_TYPES_CLIENT

RC4_256, 3DES168, DES40

SQLNET.ENCRYPTION_TYPES_SERVER

RC4_256, 3DES168, DES40

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 インスタンスを変更する」を参照してください。)