キーストアにマスター鍵を作成します。マスター鍵作成のコマンドは以下の通りです。
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ごとに個別にマスター鍵を作成してください。
新規暗号化表領域を作成します。表領域作成のコマンドは以下の通りです。
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マネジメント。出荷前から構築、運用、トラブル対応まで製品の一生を見守るエンジニア
Copyright © ITmedia, Inc. All Rights Reserved.