透過的データ暗号化(TDE)とは?Oracleデータベースの暗号化機能を徹底解説
Oracle®は、セキュリティ対策の一環として、Oracle 12cにおいて透過的データ暗号化(Transparent Data Encryption:TDE)機能を導入しました。この機能により、ユーザーは機密データに対して表領域レベルおよび列レベルの暗号化を有効にできるようになります。
TDEの概要
データを暗号化すると、許可されたユーザーやアプリケーションのみがそのデータにアクセスできるようになります。Oracleでは、認証・権限付与・監査のためのツールやプロセスがデータベースに対して提供されていますが、データを格納しているOSのデータファイル自体は保護対象外でした。そこでTDEが重要な役割を果たします。
『Oracle Database Advanced Security Guide(ASOAG)』には次のように記載されています。
「TDEは、データファイルに格納された機密データを暗号化します。不正な復号を防ぐため、TDEは暗号化キーをデータベース外部のセキュリティモジュール(キーストアと呼ばれます)に保存します。」
TDEに必要な権限
TDEを構成するには、まずユーザーにSYSKM管理権限を付与する必要があります。ASOAGでは、「パスワードファイルを作成し、ユーザーがSYSKMとしてパスワードを使ってデータベースに接続できるようにすること」が推奨されています。
なお、TDEの列暗号化や表領域暗号化を構成する際にはSYSKM権限は必須ではありませんが、表の列や表領域を暗号化するためには以下の権限が必要です。
- CREATE TABLE
- ALTER TABLE
- CREATE TABLESPACE
- ALTER TABLESPACE(オンラインおよびオフラインの表領域暗号化用)
- ALTER DATABASE(高速オフライン表領域暗号化用)
これらの権限に加えて、TDEを有効にするためには、常にオープン状態にしておくウォレットを作成する必要があります。12cでは、このウォレットは「キーストア」とも呼ばれます。
TDEの2つの種類
TDEには主に2種類の暗号化方式があります。それぞれ詳しく見ていきましょう。
1. TDE列暗号化(カラム暗号化)
この方式は、クレジットカード番号や社会保障番号など、表内に格納された機密データを保護します。ASOAGによると、次のような仕組みになっています。
「2層のキーベースアーキテクチャを使用して、機密性の高い表の列を透過的に暗号化・復号化します。TDEマスター暗号化キーは、Oracleソフトウェアまたはハードウェアキーストアである外部セキュリティモジュールに格納されます。このTDEマスター暗号化キーがTDE表キーを暗号化・復号化し、さらにそのTDE表キーが表の列内のデータを暗号化・復号化します。」
画像出典:https://docs.oracle.com/database/121/ASOAG/introduction-to-transparent-data-encryption.htm#ASOAG10137
2. TDE表領域暗号化(テーブルスペース暗号化)
暗号化された表領域内に作成されたすべてのオブジェクトは、自動的に暗号化されます。これにより、表全体または複数の列をまとめて暗号化できます。ASOAGには以下のように記載されています。
「TDE表領域暗号化も、2層のキーベースアーキテクチャを使用して表領域を透過的に暗号化(および復号化)します。TDEマスター暗号化キーは外部セキュリティモジュール(ソフトウェアまたはハードウェアキーストア)に格納されます。このTDEマスター暗号化キーはTDE表領域暗号化キーを暗号化するために使用され、そのキーが表領域内のデータの暗号化・復号化に使用されます。」
画像出典:https://docs.oracle.com/database/121/ASOAG/introduction-to-transparent-data-encryption.htm#ASOAG10137
TDEを利用する目的
ASOAGでは、TDEを使用すべき理由として以下を挙げています。
- ストレージメディアやデータファイルが盗まれた場合でも、機密データを保護できる。
- セキュリティ関連の法令コンプライアンスへの対応を支援できる。
- アプリケーションデータを復号化するための補助的なビューなどを作成できる。データベースユーザーやアプリケーションに対して表データを透過的に復号化するため、アプリケーションの変更はほとんど、あるいは一切不要。
- データベースユーザーやアプリケーションユーザーは、アクセスしているデータが暗号化されていることを意識する必要がない。
- オンライン再定義を使用すればダウンタイムなしでデータを暗号化でき、オフラインモードでの暗号化にも対応。
- 暗号化データを扱うためにアプリケーションの変更は不要。暗号化・復号化はデータベース側で処理される。
- TDEマスター暗号化キーおよびキーストアの管理操作は、Oracle Databaseによって自動化されている。
TDEの構成手順
以下の手順に従って、TDEとウォレットを構成します。
ステップ1:ウォレット(キーストア)の場所を作成する
mkdir -p /u01/oracle/wallet
ステップ2:sqlnet.oraにウォレットの場所を設定する
cat $ORACLE_HOME/network/admin/sqlnet.ora
# sqlnet.ora Network Configuration File: /home/oracle/app/oracle/product/12.1.0/dbhome_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ENCRYPTION_WALLET_LOCATION =
(SOURCE =(METHOD = FILE)(METHOD_DATA =
(DIRECTORY = /u01/oracle/wallet)))
ステップ3:キーストアを作成する
SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/oracle/wallet/' IDENTIFIED BY Oraclewallet#123 ;
keystore altered.
SQL> host ls /u01/oracle/wallet/
Oraclewallet.P12
ステップ4:キーストアをオープンする
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY Oraclewallet#123;
keystore altered.
ステップ5:キーをアクティブ化する
SQL> SET LINESIZE 100
SELECT con_id, key_id FROM v$encryption_keys;
no rows selected
SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY Oraclewallet#123 WITH BACKUP;
keystore altered.
SQL> SET LINESIZE 100
SELECT con_id, key_id FROM v$encryption_keys;
CON_ID KEY_ID
---------- ------------------------------------------------------------------------------
0 HTDRKP*%GRLOHNRWMrX2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
SQL> SET LINESIZE 200
COLUMN wrl_parameter FORMAT A50
SELECT * FROM v$encryption_wallet;
WRL_TYPE WRL_PARAMETER STATUS
WALLET_TYPE WALLET_OR FULLY_BAC CON_ID
-------------------- -------------------------------------------------- ------------------------------ -------------------- --------- --------- ----------
FILE
/u01/oracle/wallet/ OPEN
PASSWORD SINGLE
NO 0
ステップ6:暗号化された表領域を作成する
SQL> CREATE TABLESPACE ENCRYPTION_TEST
datafile '/u01/oracle/app/oracle/oradata/db/encrytest.dbf' size 2G
ENCRYPTION USING 'AES256'
DEFAULT STORAGE(ENCRYPT);
Tablespace created.
SQL> create table ENCRYPTION_EMP(
empno Number(3),
Name varchar(10)
) tablespace ENCRYPTION_TEST;
Table created.
SQL> select tablespace_name,encrypted from dba_tablespaces where tablespace_name='ENCRYPTION_TEST';
TABLESPACE_NAME ENC
------------------------------ ---
ENCRYPTION_TEST YES
ステップ7:暗号化列を含む表を作成する
SQL> CREATE TABLE employee (
first_name VARCHAR2(128),
last_name VARCHAR2(128),
empID NUMBER,
salary NUMBER(6) ENCRYPT
);
Table created.
SQL> select owner,table_name,column_name,encryption_alg from dba_encrypted_columns where table_name='EMPLOYEE';
OWNER TABLE_NAME COLUMN_NAME ENCRYPTION_A
---------- ------------ ------------ -----
RAJ EMPLOYEE SALARY AES 192 bits
key
ステップ8:自動ログインを有効にする
SQL> SELECT * FROM v$encryption_wallet;
WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID
---------- ------------------- ------------ --------------- ------------- ------------- ----------
FILE /u01/oracle/wallet/ OPEN PASSWORD SINGLE NO 0
上記の出力ではwallet_typeがPASSWORDになっています。この場合、データベースを再起動するたびに、キー(ウォレット)を明示的にオープンする必要があります。これを避けるには自動ログインを有効にしましょう。自動ログインを有効にすると、データベースの再起動時にウォレットが自動的にオープンされます。
まとめ
TDEを活用すれば、高度に機密性の高いデータを安全に保護できます。仮にデータファイルやストレージメディアが盗難に遭ったとしても、復号化キーを持つユーザー以外はデータにアクセスできないため、情報漏洩のリスクを大幅に低減できます。
データベースサービスについてさらに詳しく知りたい方は、ぜひお気軽にお問い合わせください。フィードバックタブからコメントやご質問をお寄せいただくことも可能です。
-
Windows向け暗号化ソフトおすすめ9選!大切なデータを守る定番ツールを徹底解説
個人用・業務用を問わず、大切なデータは常に適切に保護すべきものです。フォルダを隠したり名前を偽装したりするだけでは、十分な対策にならないこともあります。 不正アクセスからデータを守るには、本格的な保護手段が必要です。そこで活躍するのがディスク暗号化ソフトウェアです。機密データに強固なセキュリティをもたらしてくれます。 データの盗難や紛失を防ぐためには、暗号化ソフトの導入が非常に有効です。これらのツールは、正しいパスフレーズがなければデータへアクセスできない仕組みになっています。今回は、Windowsで使えるおすすめの暗号化ソフト9選をご紹介します。 Windows 10 / 8 / 7で使える
-
Windows 11の自動デバイス暗号化を無効にする方法【データ消失を防ぐ設定手順】
データ暗号化とは、大切なデータを頑丈な金庫にしまい、鍵を持つ人だけがアクセスできるようにする仕組みです。一見すると非常に優れたアイデアに思えますが、鍵を忘れてしまえば、自分自身もデータにアクセスできなくなります。データ暗号化が成功するのは、所有者がいつでもどこでも鍵を使ってデータを解除できる場合のみ。そうでなければ、データは永遠にロックされ、何の役にも立たない「デジタルゴミ」と化してしまうのです。 Microsoftはユーザーデータのセキュリティと安全性に常に配慮しており、その一環として2007年にWindows VistaへBitLockerを導入しました。このアプリケーションはデータを暗号