Oracle Databaseの「透過的データ暗号化機能」とは何か今さら? 今こそ! データベースセキュリティ(7)(3/3 ページ)

» 2017年10月30日 05時00分 公開
[福田知彦日本オラクル株式会社]
前のページへ 1|2|3       

(2)マスター鍵の準備

 キーストアにマスター鍵を作成します。マスター鍵作成のコマンドは以下の通りです。

ADMINISTER KEY MANAGEMENT SET KEY USING TAG '初期作成マスター鍵' IDENTIFIED BY "oracle12c" WITH BACKUP;

 ここでは「'初期作成マスター鍵'」というTAG名でマスター鍵を作成しています。鍵が増えたときに識別できるよう、TAG名には分かりやすい名前を付けておいてください。

 マスター鍵を作成すると、V$ENCRYPTION_WALLETビューのSTATUS列はOPENとなります(下記コマンド、12行目)。

SQL> select * from v$encryption_wallet;
WRL_TYPE
--------------------
WRL_PARAMETER
--------------------------------------------------------------------------------
STATUS                         WALLET_TYPE          WALLET_OR FULLY_BAC
------------------------------ -------------------- --------- ---------
    CON_ID
----------
FILE
/opt/oracle/admin/orcl/wallet/
OPEN                           PASSWORD             SINGLE    NO
         1

 また、V$ENCRYPTION_KEYSビューから、マスター鍵が作成されていることが確認できます。

SQL> select key_id, tag, creation_time, key_use, keystore_type from v$encryption_keys;
KEY_ID
------------------------------------------------------------------------------
TAG
--------------------------------------------------------------------------------
CREATION_TIME
---------------------------------------------------------------------------
KEY_USE    KEYSTORE_TYPE
---------- -----------------
AQeZXvVKZ08Jv6Bx7nPkkr0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
初期作成マスター鍵
17-08-28 14:32:23.794537 +09:00
TDE IN PDB SOFTWARE KEYSTORE

 以上で、マスター鍵の作成は完了です。

 なお、12cでマルチテナント環境を利用している場合には、キーストアは全てのPDBで単一のものを共有しますが、マスター鍵は各PDBで個別に持ちます。PDBで透過的データ暗号化機能を利用した場合には、PDBごとに個別にマスター鍵を作成してください。

(3)暗号化表領域の作成

 新規暗号化表領域を作成します。表領域作成のコマンドは以下の通りです。

create tablespace enctbs
datafile '/opt/oracle/oradata/orcl/orclpdb/enctbs.dbf' size 10m
encryption using 'aes256'
default storage (encrypt);

 暗号化表領域を作成する場合には、通常のCREATE TABLESPACE文にENCRYPTION句(上記コマンド、3行目)とSTORAGE句のENCRYPTオプション(同4行目)の2つを追加するだけです。ENCRYPTION句では、利用する暗号化アルゴリズムを指定します。指定できる暗号化アルゴリズムと鍵長のペアはAES256、AES192、AES128および3DES168で、指定を省略した際のデフォルトはAES128です。

 暗号化された表領域は、V$ENCRYPTED_TABLESPACESビューから確認できます。なお、このビューからは表領域名が確認できないため、V$TABLESPACEビューと結合して参照する必要があります。

SQL> select t.name, et.encryptionalg, et.encryptedkey
  2  from v$tablespace t, v$encrypted_tablespaces et
  3  where t.ts#=et.ts#;
NAME                           ENCRYPT
------------------------------ -------
ENCRYPTEDKEY
----------------------------------------------------------------
ENCTBS                         AES256
AFC60E3680832A3F6E0868AD81F4A3CC7C0029371A4DA7BAA227D5D3C3CA1238

 なお、ENCRYPTEDKEY列の値は表領域暗号鍵のバージョンであり、鍵自体ではありません。

 暗号化された表領域を作成した後は、この表領域に表や索引などのオブジェクトを定義していけば、そのデータは自動的に暗号化されてからディスクに保存されます。



 今回は、オラクルデータベースの透過的データ暗号化機能を紹介し、その使い方を説明しました。次回は、既存の暗号化されていないデータベースの暗号化に関する幾つかの方法と、その他のデータベース暗号化機能について説明します。

筆者紹介

福田知彦(ふくだ ともひこ)

日本オラクルでセキュリティ関連のプロダクトやソリューションを長年担当。出荷前製品検証からプリセールス、コンサルティングと、さまざまな部署を転々とするも、担当はだいたいいつもデータベースセキュリティかIDマネジメント。出荷前から構築、運用、トラブル対応まで製品の一生を見守るエンジニア


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。