ここまでは、保存されたデータの暗号化について説明してきました。Oracle Databaseでは保存データの他に、ネットワークを流れる通信中のデータを暗号化する機能も提供しています。Oracle DatabaseではOracle Netプロトコルを利用して通信しますが、このプロトコルを暗号化する機能です。データベースサーバおよび接続元クライアントのsqlnet.oraファイルに設定するだけで、簡単にOracle Net通信を暗号化できます。
サーバ側に設定するパラメーターは以下の通りです。
SQLNET.ENCRYPTION_SERVER = ACCEPTED SQLNET.ENCRYPTION_TYPES_SERVER = (AES256, AES192, AES128)
クライアント側に設定するパラメーターは以下の通りです。
SQLNET.ENCRYPTION_CLIENT = REQUESTED SQLNET.ENCRYPTION_TYPES_CLIENT = (AES256)
Oracle Net通信の暗号化を行うかどうかは、「SQLNET.ENCRYPTION_SERVER」と「SQLNET.ENCRYPTION_CLIENT」の組み合わせで決まります。このパラメーターには「REQUIRED」「REQUESTED」「ACCEPTED」「REJECTED」の4つが指定でき、実際に暗号化されるかどうかは以下の図の通りになります。
なお、サーバ、クライアントそれぞれのデフォルト値は「ACCEPTED」です。
Oracle Net通信の暗号化に利用するアルゴリズムを、「SQLNET.ENCRYPTION_TYPES_SERVER」および「SQLNET.ENCRYPTION_TYPES_CLIENT」に指定します。利用可能なアルゴリズムはバージョンにより異なりますので、マニュアルを参照してください。アルゴリズムはカンマ区切りで複数指定することができ、サーバ側とクライアント側両方で利用できるアルゴリズムを利用します。共通のアルゴリズムがない場合には暗号化が行われないため、注意が必要です。またこのパラメータが指定されていない場合には、インストールされている全てのアルゴリズムを利用してよいと判断されます。
サーバ、クライアント両方でOracle Net通信の暗号化をしていない場合、「SQLNET.ENCRYPTION_SERVER」と「SQLNET.ENCRYPTION_CLIENT」にはそれぞれのデフォルト値のACCEPTEDが適用されますので、結果として暗号化されません。
設定例で示した設定の場合は「ACCEPTED」と「REQUESTED」なので、暗号化は有効化され、暗号化アルゴリズムとしては両方のリストに載っているAES256が利用されます。設定を行っていない場合のデフォルト値は「ACCEPTED」ですので、サーバかクライアントのどちらか片方で「REQUIRED」か「REQUESTED」の設定を行うことにより、Oracle Net通信が暗号化されることを意味します。
また、クライアント側がJDBC Thinドライバの場合、oracle.jdbc.OracleConnectionインタフェースとして暗号化のための各種プロパティが定義されており、これを利用することで暗号化通信を行うことができます。
今回説明したOracle Databaseの暗号化機能は残念ながら全てが基本機能ではありません。以下の機能を利用するためにはEnterprise EditionとOracle Advanced Securityのライセンスが必要になります。
なお、以下の機能は全てのEditionで利用可能です。
なお、Oracle CloudのOracle Database Cloud Serviceの場合、Standard Packageを含め、全てのパッケージで透過的データ暗号化機能が利用可能で、デフォルトで有効化されています。これにより、Oracle Cloudのインフラの運用管理担当者がストレージをのぞき見ても(もちろんそんなことはしませんが)データを参照できないように、技術的な対策がなされています。
「Oracle Advanced Security」は、Enterprise Editionのオプションで、各種データの暗号化機能を含むデータベースのセキュリティを高めるための機能が含まれています。昔は、Oracle Net通信の暗号化および高度な認証機能(証明書認証、RADIUS認証)などはEnterprise EditionとOracle Advanced Securityのライセンスが必要でしたが、2013年の価格改定で、全てのEditionで利用できる標準機能になりました。2017年9月の時点で、Oracle Advanced Securityに含まれているのは、今回説明した保存データの暗号化機能と「Oracle Data Redaction」です。
Oracle Data Redactionは、アプリケーションに変更を加えることなく、特定の条件(ユーザー、接続元IP、アプリ、時間など)の場合にデータの全体または一部をマスクできる機能です。
アプリケーションを変更せずに保存するデータを暗号化して、データベースを経由しない不正アクセスから情報を保護する透過的データ暗号化(TDE)、同じくアプリケーションを変更せずに、特定の条件のセッションからはデータを一部しか見せなくするOracle Data Redaction機能と、Oracle Advanced Securityではアプリケーションを変更せずに、既存のアプリケーションに適用して、セキュリティレベルを上げるソリューションを提供しています。
今回は、オラクルデータベースにおけるデータおよび通信の暗号化機能を紹介しました。次回は、安全なデータベース運用のための構成管理について説明します。
日本オラクルでセキュリティ関連のプロダクトやソリューションを長年担当。出荷前製品検証からプリセールス、コンサルティングと、さまざまな部署を転々とするも、担当はだいたいいつもデータベースセキュリティかIDマネジメント。出荷前から構築、運用、トラブル対応まで製品の一生を見守るエンジニア
Copyright © ITmedia, Inc. All Rights Reserved.