ソフトウェアおよびハードウェアのキーストアは、個々の表列または表領域全体の両方で使用するために構成できます。
内容は次のとおりです。
ソフトウェア・キーストアとは、ソフトウェアのファイル・システム上にあるTDEマスター暗号化鍵のコンテナです。
内容は次のとおりです。
ソフトウェア・キーストアとは、透過的データ暗号化マスター暗号化鍵を格納するコンテナです。
キーストアを構成する前に、まずsqlnet.ora
ファイルでその場所を定義する必要があります。1つのデータベースあたり1つのキーストアがあり、データベースは、sqlnet.ora
ファイルで定義したキーストアの場所を確認することで、このキーストアを探します。必要に応じて、キーストアのコピーなどの他のキーストアを作成したり、鍵が含まれているファイルをエクスポートすることができます。ただし、sqlnet.ora
の場所で構成したキーストアを除去または削除したり、別のキーストアで置き換えることはできません。
sqlnet.ora
ファイルでソフトウェア・キーストアの場所を構成したら、データベース・インスタンスにログインしてキーストアを作成して開き、次にTDEマスター暗号化鍵を設定できます。これらの手順を完了したら、データの暗号化を開始できます。
ソフトウェア・キーストアを構成するには、まずsqlnet.ora
ファイル内にその場所を指定します。
内容は次のとおりです。
ソフトウェア・キーストアであろうと、ハードウェア・モジュール・セキュリティ(HSM)・キーストアであろうと、Oracle Key Vaultのキーストアであろうと、Oracle Databaseは、sqlnet.ora
ファイルを確認してキーストアのディレクトリ場所を探します。
sqlnet.ora
ファイルを編集して、作成する予定のキーストアのディレクトリ場所を定義する必要があります。このディレクトリが事前に存在していることを確認してください。このディレクトリは空であると理想的です。
Oracle Real Application Clusters (Oracle RAC)またはマルチテナント環境でsqlnet.ora
ファイルを編集する必要がある場合は、次の動作に注意してください。
Oracle RAC環境: srvctl
ユーティリティを使用していて、sqlnet.ora
構成ファイルに環境変数を含める場合は、各環境変数をオペレーティング・システムとsrvctl
環境の両方に設定する必要があります。Oracle Automatic Storage Management (ASM)またはNFSなどの共有ファイル・システム上にキーストアを配置することをお薦めします。
マルチテナント環境: キーストアの場所は、個々のプラガブル・データベース(PDB)用ではなくマルチテナントのコンテナ・データベース(CDB)全体に設定されます。
sqlnet.ora
ファイルで、ENCRYPTION_WALLET_LOCATION
パラメータを設定してキーストアの場所を指定する必要があります。どのキーストアを使用するかを決める場合、Oracle Databaseは、次の場所においてこの順序でキーストアの場所を検索します。
sqlnet.ora
ファイルでパラメータENCRYPTION_WALLET_LOCATION
によって指定されている場所にあるキーストアの使用を試行します。
ENCRYPTION_WALLET_LOCATION
パラメータが設定されていない場合は、パラメータWALLET_LOCATION
によって指定されている場所にあるキーストアの使用を試みます。
WALLET_LOCATION
パラメータも設定されていない場合は、Oracle Databaseは、デフォルトのデータベースの場所でキーストアを探します。この場所は、ORACLE_BASE
/admin/
DB_UNIQUE_NAME
/wallet
またはORACLE_HOME
/admin/
DB_UNIQUE_NAME
/wallet
です。(DB_UNIQUE_NAME
は、初期化パラメータ・ファイルで指定されたデータベースの固有の名前です。)キーストアの場所がsqlnet.ora
ファイルに設定されていない場合、V$ENCRYPTION_WALLET
ビューにはデフォルトの場所が表示されます。キーストアの場所およびステータスは、V$ENCRYPTION_WALLET
ビューで確認できます。
デフォルトでは、sqlnet.ora
ファイルは、ORACLE_HOME
dbs
ディレクトリ、またはTNS_ADMIN
環境変数によって設定されている場所にあります。正しいsqlnet.ora
ファイルを指すようにTNS_ADMIN
環境変数が適切に設定されていることを確認してください。
関連項目:
TNS_ADMIN
環境変数の設定例の詳細は、『SQL*Plusユーザーズ・ガイドおよびリファレンス』を参照してくださいsqlnet.ora
ファイルを使用して、通常のファイル・システム用、複数データベースのアクセス用、およびOracle Automatic Storage Management (ASM)用にキーストアの場所を構成します。
通常のファイル・システムでソフトウェア・キーストアを作成するには、sqlnet.ora
ファイルを編集するときに次のフォーマットを使用します。
ENCRYPTION_WALLET_LOCATION= (SOURCE= (METHOD=FILE) (METHOD_DATA= (DIRECTORY=path_to_keystore)))
path_to_keystore
が環境変数を含むことになる場合、データベース・インスタンスが起動した環境で、データベースを起動する前に、この変数を設定します。srvctl
ユーティリティを使用してデータベースを起動する場合、次のコマンドを使用してsrvctl
環境にも環境変数を設定します。
srvctl setenv database -db database_name -env "environment_variable_name=environment_variable_value"
通常のファイル・システムにソフトウェア・キーストアを構成できます。
次の例では、データベース名がorcl
である通常のファイル・システム用にsqlnet.ora
ファイルにソフトウェア・キーストアの場所を構成する方法を示します。
ENCRYPTION_WALLET_LOCATION= (SOURCE= (METHOD=FILE) (METHOD_DATA= (DIRECTORY=/etc/ORACLE/WALLETS/orcl)))
複数のデータベースでsqlnet.ora
ファイルを共有するように構成できます。
次の例では、複数のデータベースでsqlnet.ora
ファイルを共有する場合にソフトウェア・キーストアの場所を構成する方法を示します。
ENCRYPTION_WALLET_LOCATION= (SOURCE= (METHOD=FILE) (METHOD_DATA= (DIRECTORY=/etc/ORACLE/WALLETS/$ORACLE_SID/)))
Automatic Storage Management (ASM)ファイル・システムにsqlnet.ora
を構成できます。
次の例では、ASMファイル・システム用にsqlnet.ora
ファイルにソフトウェア・キーストアの場所を構成する方法を示します。
ENCRYPTION_WALLET_LOCATION= (SOURCE= (METHOD=FILE) (METHOD_DATA= (DIRECTORY=+disk1/mydb/wallet)))
Oracle Automatic Storage Management (ASM)ディスク・グループにsqlnet.ora
を構成できます。
次のフォーマットは、ASMディスク・グループでソフトウェア・キーストアの場所を作成する場合にソフトウェア・キーストアを構成する方法を示しています。
ENCRYPTION_WALLET_LOCATION=
(SOURCE=
(METHOD=FILE)
(METHOD_DATA=
(DIRECTORY=+ASM_file_path_of_the_diskgroup)))
ソフトウェア・キーストアのディレクトリの場所を指定したら、キーストアを作成できます。
内容は次のとおりです。
3つの異なるタイプのソフトウェア・キーストアがあります。
パスワードベースのソフトウェア・キーストア、自動ログイン・ソフトウェア・キーストアおよびローカル自動ログイン・ソフトウェア・キーストアを作成できます。
問合せSELECT * FROM V$ENCRYPTION_WALLET
を実行すると、自動ログイン・ソフトウェア・キーストアが自動的に開くため、注意してください。たとえば、パスワードベースのキーストアと自動ログイン・キーストアがあるとします。パスワードベースのキーストアが開いているときに、このパスワードベースのキーストアを閉じて、V$ENCRYPTION_WALLET
ビューを問い合せると、出力にキーストアが開いていることが示されます。ところが、これはV$ENCRYPTION_WALLET
が自動ログイン・ソフトウェア・キーストアを開いて、自動ログイン・キーストアのステータスを表示したことによるものです。
関連項目:
ソフトウェア・キーストアの詳細は、キーストアのタイプを参照してください。
パスワードベースのソフトウェア・キーストアには、キーストアに格納される鍵と資格証明を保護するために使用するユーザー・パスワードが必要です。
「手順1: sqlnet.oraファイルでのソフトウェア・キーストアの場所の設定」で説明した手順が完了していることを確認します。
ADMINISTER KEY MANAGEMENT
またはSYSKM
権限が付与されたユーザーとして、データベース・インスタンスにログインします。
マルチテナント環境では、rootとしてログインします。例:
sqlplus c##sec_admin as syskm
Enter password: password
Connected.
SQL*Plusがすでに開かれていて、この間にsqlnet.ora
ファイルを変更した場合、SQL*Plusに再接続します。データベース・セッションはsqlnet.ora
の変更が有効になる前に変更される必要があります。
ADMINISTER KEY MANAGEMENT
SQL文を実行してキーストアを作成します。
構文は次のとおりです。
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 'keystore_location' IDENTIFIED BY software_keystore_password;
ここでは次のように指定します。
keystore_location
は、自動ログイン・キーストアを作成するパスワードベースのキーストアのキーストア・ディレクトリの場所に対するパスです(/etc/ORACLE/WALLETS/orcl
など)。keystore_location
設定は一重引用符(' ')で囲みます。この場所を見つけるには、V$ENCRYPTION_WALLET
ビューのWRL_PARAMETER
列を問い合せます。(キーストアがデフォルトの場所に作成されていない場合、V$ENCRYPTION_WALLET
ビューのSTATUS
列はNOT_AVAILABLE
になります。)
software_keystore_password
は、セキュリティ管理者が作成するキーストアのパスワードです。
たとえば、/etc/ORACLE/WALLETS/orcl
ディレクトリにキーストアを作成する場合、次のようになります。
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/etc/ORACLE/WALLETS/orcl
' IDENTIFIED BY password;
keystore altered.
この文を実行すると、キーストアとなるewallet.p12
ファイルがキーストアの場所に生成されます。
パスワードベースのキーストアの別の方法として、自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアのいずれかを作成できます。
これらのキーストアの両方は、システム生成パスワードを持っています。これらは、PKCS#12ベースのファイルでもあります。自動ログイン・ソフトウェア・キーストアは、このキーストアがあるコンピュータとは違うコンピュータから開くことができますが、ローカル自動ログイン・ソフトウェア・キーストアは、このキーストアが作成されたコンピュータからしか開けません。自動ログイン・キーストアとローカル自動ログイン・キーストアの両方は、パスワードベースのソフトウェア・キーストアから作成されます。
「手順1: sqlnet.oraファイルでのソフトウェア・キーストアの場所の設定」で説明した手順が完了していることを確認します。
ADMINISTER KEY MANAGEMENT
またはSYSKM
権限が付与されたユーザーとして、データベース・インスタンスにログインします。
マルチテナント環境では、rootとしてログインします。例:
sqlplus c##sec_admin as syskm
Enter password: password
Connected.
SQL*Plusがすでに開かれていて、この間にsqlnet.ora
ファイルを変更した場合、SQL*Plusに再接続します。データベース・セッションはsqlnet.ora
の変更が有効になる前に変更される必要があります。
パスワードベースのソフトウェア・キーストアの作成に記載されているように、パスワードベースのソフトウェア・キーストアを作成します。
ADMINISTER KEY MANAGEMENT
SQL文を実行してキーストアを作成します。
構文は次のとおりです。
ADMINISTER KEY MANAGEMENT CREATE [LOCAL] AUTO_LOGIN KEYSTORE FROM KEYSTORE 'keystore_location' IDENTIFIED BY software_keystore_password;
ここでは次のように指定します。
LOCAL
では、ローカル自動ログイン・ソフトウェア・キーストアを作成できます。そうでない場合、キーストアに他のコンピュータからアクセスできるようにするときは、この句を省略します。
keystore_location
は、自動ログイン・キーストアを作成するパスワードベースのキーストアのディレクトリの場所に対するパスです(/etc/ORACLE/WALLETS/orcl
など)。この設定は一重引用符(' ')で囲みます。この場所を確認するには、V$ENCRYPTION_WALLET
ビューのWRL_PARAMETER
列を問い合せます。
software_keystore_password
は、自動ログイン・キーストアを作成するパスワードベースのキーストアです。
たとえば、パスワードベースのキーストアの自動ログイン・ソフトウェア・キーストアを/etc/ORACLE/WALLETS/orcl
ディレクトリに作成するには、次のようにします。
ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE '/etc/ORACLE/WALLETS/orcl
' IDENTIFIED BY password;
keystore altered.
この文を実行した後、cwallet.sso
ファイルがキーストアの場所に表示されます。ewallet.p12
ファイルがパスワードベースのウォレットです。
注意:
自動ログイン・キーストア(.sso
ファイル)の作成後は、PKCS#12
ウォレット(ewallet.p12
ファイル)は削除しないでください。将来、TDEマスター暗号化鍵を再生成またはキー更新するには、PKCS#12
ウォレットが必要です。デフォルトでは、このファイルは、$ORACLE_HOME/admin/
ORACLE_SID
/wallet
ディレクトリにあります。
透過的データ暗号化が自動ログイン・キーストアを使用するのは、このキーストアが正しい場所(ENCRYPTION_WALLET_LOCATION
、
WALLET_LOCATION
またはデフォルトのキーストアの場所)にあり、かつ、暗号化されたキーストアを開くためのSQLがまだ実行されていない場合のみです。(自動ログイン・キーストアにはシステム生成のパスワードがあり、暗号化されていることに注意してください。)
関連項目:
キーストアでTDEマスター暗号化鍵を作成するか、これにアクセスする前に、パスワードベースのソフトウェア・キーストアを手動で開く必要があります。
自動ログイン・ソフトウェア・キーストアまたはローカル自動ログイン・ソフトウェア・キーストアは手動で開く必要はありません。これらのキーストアは、必要時に(暗号化操作で鍵にアクセスする必要がある場合に)自動的に開かれます。必要に応じて、これらのタイプのどのキーストアでも明示的に閉じることができます。V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せることで、キーストアが開いているか、閉じているか、開いていてもマスター鍵がないか、開いていても不明なマスター鍵があるかといったステータスを確認できます。
キーストアを開くと、手動で閉じるまでキーストアは開いたままになります。データベース・インスタンスを再起動するたびに、パスワード・キーストアを手動で開いて暗号化と復号化の操作を再有効化する必要があります。
キーストアが開いたら、それに対してTDEマスター暗号化鍵を設定できます。
内容は次のとおりです。
TDEマスター暗号化鍵はキーストアに格納されます。
この鍵によって、TDE表キーおよび表領域暗号化鍵が保護されます。デフォルトでは、TDEマスター暗号化鍵は、透過的データ暗号化(TDE)によって生成される鍵です。V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せることで、キーストアに、設定されているマスター鍵がないかどうか、または不明なマスター鍵がないかどうかを確認できます。
マルチテナント環境では、rootまたはPDBからTDEマスター暗号化鍵を作成および管理できます。
注意:
後で使用するためにTDEマスター暗号化鍵を作成でき、その後それらを手動で有効にできます。詳細は、後で使用するためのTDEマスター暗号化鍵の作成を参照してください。
TDEマスター暗号化鍵をソフトウェア・キーストアに設定するには、SET KEY
句を含むADMINISTER KEY MANAGEMENT
文を使用する必要があります。
パスワード・ソフトウェア・キーストアの場合、手順3: ソフトウェア・キーストアを開くに記載されている、鍵を開くための手順を完了したことを確認します。
自動ログイン・ソフトウェア鍵またはローカル自動ログイン・ソフトウェア鍵は、作成された後で自動的に開きます。パスワードベースのソフトウェア・キーストアは、TDEマスター暗号化鍵を設定する前に開かれている必要があります。自動ログイン・ソフトウェア・キーストアが開いている場合、それを閉じてパスワードベースのソフトウェア・キーストアを開く必要があります。パスワードベースのキーストアと自動ログイン・キーストアの両方が構成済の場所に存在し、パスワードベースのキーストアが開いている場合、自動ログイン・キーストアにもTDEマスター暗号化鍵が自動的に書き込まれます。
ADMINISTER KEY MANAGEMENT
またはSYSKM
権限が付与されたユーザーとして、データベース・インスタンスにログインします。
マルチテナント環境で、rootまたはPDBにログインします。たとえば、PDBとしてログインするには次を実行します。
sqlplus sec_admin@hrpdb as syskm
Enter password: password
Connected.
利用可能なPDBを検索するには、DBA_PDBS
データ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_name
コマンドを実行します。
データベースがREAD WRITE
モードでオープンしていることを確認します。
OPEN_MODE
がREAD WRITE
に設定されている場合、TDEマスター暗号化鍵を設定できます。マルチテナント環境以外の環境に関するステータスを検索するには、V$DATABASE
動的ビューのOPEN_MODE
列を問い合せます。マルチテナント環境を使用している場合は、V$PDBS
ビューを問合せます。(これらのビューにアクセスできない場合は、SYSDBA
として接続し、問合せを再試行します。このタイプの問合せに対してSYSKM
として接続するには、これに対するパスワード・ファイルを作成する必要があります。詳細は、Oracle Database管理者ガイドを参照してください。)
SYSKM
管理権限を使用して接続し、ADMINISTER KEY MANAGEMENT
SQL文を実行してソフトウェア管理キーストアを設定します。
ADMINISTER KEY MANAGEMENT SET KEY [USING TAG 'tag'] IDENTIFIED BY keystore_password [WITH BACKUP [USING 'backup_identifier']] [CONTAINER = ALL | CURRENT];
ここでは次のように指定します。
tag
は、定義する関連の属性および情報です。この設定は一重引用符(' ')で囲みます。
password
は、「手順2: ソフトウェア・キーストアの作成」でキーストアを作成したときに作成した必須キーストア・パスワードです。
WITH BACKUP
を使用すると、キーストアのバックアップが作成されます。パスワードベースのキーストアの場合、このオプションを使用する必要があります。オプションでUSING
句を使用し、バックアップの簡単な説明を追加できます。この説明は一重引用符(' ')で囲みます。この識別子は名前付きキーストア・ファイルに付加されます(たとえば、emp_key_backup
がバックアップ識別子になっているewallet_
time_stamp
_emp_key_backup.p12
)。オペレーティング・システムで使用されているファイル命名規則に従ってください。
CONTAINER
は、マルチテナント環境で使用するために用意されています。このCDBのすべてのPDBで鍵を設定するには、ALL
を入力し、現在のPDBで設定するには、CURRENT
を入力します。
例:
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY keystore_password WITH BACKUP USING 'emp_key_backup';
keystore altered.
ハードウェア・キーストアは暗号化鍵を保存するために設計された、ハードウェア・セキュリティ・モジュール(HSM)内にあります。
内容は次のとおりです。
ハードウェア・キーストアは、暗号化鍵のために安全な記憶域を提供する独立したサーバーまたはデバイスです。
外部のキーストアは、Oracle Databaseの外部にあります。Oracle Databaseは外部のキーストアと相互に接続できますが、Oracleインタフェースの外部でキーストアを操作できません。Oracle Databaseは外部キーストアに鍵を作成するように要求できますが、この鍵を外部データベースに格納する方法を定義することはできません。(反対に、TDEを使用して作成されたソフトウェア・キーストアの場合、Oracle Databaseでは完全に制御できます。すなわち、SQL文を使用してこのタイプのキーストアを操作できます。)外部キーストアの例には、ハードウェア・セキュリティ・モジュールやOracle Key Vaultキーストアがあります。複数のデータベースの外部キーストアは、Oracle Key Vaultなどを使用して集中管理できます。
ハードウェア・セキュリティ・モジュール(ハードウェア・キーストア)のキーストアを構成するには、まずsqlnet.ora
ファイルにキーストア・タイプを含め、ハードウェア・キーストアを構成して開き、ハードウェア・キーストアTDEマスター暗号化鍵を設定します。要するに、1つのデータベースあたり1つのハードウェア・キーストアがあり、データベースは、sqlnet.ora
ファイルで定義したキーストア・タイプを確認することで、このキーストアを探します。
ハードウェア・キーストアを構成すると、データの暗号化を開始する準備ができます。
ハードウェア・キーストアを構成する前に、sqlnet.ora
ファイルを変更する必要があります。
デフォルトでは、このファイルは、ORACLE_HOME
dbs
ディレクトリ、またはTNS_ADMIN
環境変数によって設定されている場所にあります。
sqlnet.ora
ファイルの次の設定を使用して、ハードウェア・キーストアのタイプ(HSM
)を定義します。
ENCRYPTION_WALLET_LOCATION=
(SOURCE=
(METHOD=HSM))
関連項目:
Oracle Databaseがキーストアの場所を探す方法の詳細は、sqlnet.oraファイルでのキーストアの場所についてを参照してください。
これらの2つのキーストア・タイプ間の移行のためにsqlnet.ora
ファイルを構成する方法の詳細は、ソフトウェア・パスワード・キーストアとハードウェア・キーストア間の移行を参照してください。
サード・パーティのハードウェア・セキュリティ・モジュールを構成するには、PKCS#11ライブラリを正しい場所にコピーして、ベンダーの指示に従う必要があります。
手順1: sqlnet.oraファイルでのハードウェア・キーストアのタイプの設定に記載されている手順を完了したことを確認します。
PKCS#11ライブラリを正しいパスにコピーします。
ハードウェア・セキュリティ・モジュール・ベンダーから関連のPKCS#11ライブラリの提供を受けているはずです。一度にサポートされるのは、1つのPKCS#11ライブラリのみです。新しいベンダーのHSMを使用する場合は、PKCS#11ライブラリを以前のベンダーのものから新しいベンダーのものに置き換える必要があります。
このライブラリを適切な場所にコピーして、Oracle Databaseがこのライブラリを見つけられるようにします。
UNIXシステム: 次の構文を使用して、このディレクトリにライブラリをコピーします。
/opt/oracle/extapi/[32,64]/hsm/{VENDOR}/{VERSION}/libapiname.so
Windowsシステム: 次の構文を使用して、このディレクトリにライブラリをコピーします。
%SYSTEM_DRIVE%\oracle\extapi\[32,64]\hsm\{VENDOR}\{VERSION}\libapiname.dll
ここでは次のように指定します。
[32,64]
には、提供されるバイナリが32ビットか64ビットかを指定します。
VENDOR
は、ライブラリを提供しているベンダー名を表します。
VERSION
は、ライブラリのバージョンを表します。なるべく、number.number.number
の形式を使用してください。
apiname
には、特に決まった形式はありません。ただし、構文に示すように、apiname
の前にはlib
という語を付ける必要があります。
ベンダーの指示に従ってハードウェア・セキュリティ・モジュールを設定してください。
ハードウェア・セキュリティ・モジュール管理インタフェース、およびHSMベンダーが提供する指示に従って、ハードウェア・セキュリティ・モジュールを設定します。ハードウェア・セキュリティ・モジュールと相互作用するためにデータベースが使用する必要があるユーザー・アカウントおよびパスワードを作成します。このプロセスは、Oracle Databaseと通信するハードウェア・キーストアを作成および構成します。
ハードウェア・セキュリティ・モジュールを構成したら、使用する前にハードウェア・キーストアを開く必要があります。
内容は次のとおりです。
暗号化または復号化を実行する前に、ハードウェア・キーストアがデータベースにアクセスできるようにするために、ハードウェア・キーストアを開く必要があります。
V$ENCRYPTION_WALLET
ビューのSTATUS
列を問い合せることで、キーストアが開いているか、閉じているか、開いていてもTDEマスター暗号化鍵がないか、開いていても不明なマスター暗号化鍵があるかといったステータスを確認できます。
ハードウェア・キーストアを開くには、SET KEYSTORE OPEN
句を含むADMINISTER KEY MANAGEMENT
文を使用します。
手順2: ハードウェア・セキュリティ・モジュールの構成で説明した手順が完了していることを確認します。
ADMINISTER KEY MANAGEMENT
またはSYSKM
権限が付与されたユーザーとして、データベース・インスタンスにログインします。
マルチテナント環境の場合、キーストアをPDBで開く前に、まずrootで開く必要があります。たとえば、rootにログインするには、次のようにします。
sqlplus sec_admin as syskm
Enter password: password
Connected.
利用可能なPDBを検索するには、DBA_PDBS
データ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_name
コマンドを実行します。
SQL*Plusがすでに開かれていて、この間にsqlnet.ora
ファイルを変更した場合、SQL*Plusに再接続します。データベース・セッションはsqlnet.ora
の変更が有効になる前に変更される必要があります。
次の構文を使用して、ADMINISTER KEY MANAGEMENT
SQL文を実行します。
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "user_id:password" [CONTAINER = ALL | CURRENT];
ここでは次のように指定します。
user_id
は、HSM管理インタフェースを使用してデータベース用に作成されたユーザーIDです。
password
は、HSM管理インタフェースを使用してユーザーIDに対して作成されたパスワードです。
user_id:password
文字列を二重引用符(" ")で囲み、user_id
とpassword
をコロン(:
)で区切ります。
CONTAINER
は、マルチテナント環境で使用するために用意されています。このCDBのすべてのPDBでキーストアを設定するには、ALL
を入力するか、現在のPDBでキーストアを設定するには、CURRENT
を入力します。
例:
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "psmith:password";
keystore altered.
データベース・インスタンスを再起動するたびにこの手順を繰り返します。
ハードウェア・キーストアを開いた後で、ハードウェア・キーストアのTDEマスター暗号化鍵を設定できます。
内容は次のとおりです。
ハードウェア・キーストア内に格納されたTDEマスター暗号化鍵を作成する必要があります。
Oracle Databaseは、TDEマスター暗号化鍵を使用して、ハードウェア・セキュリティ・モジュール内部のTDE表キーまたは表領域暗号化鍵の暗号化または復号化を行います。
透過的データ暗号化用にソフトウェア・キーストアをまだ構成していない場合、まだ構成していない場合のTDEマスター暗号化鍵の設定の手順に従います。TDE用にソフトウェア・キーストアをすでに構成している場合、前に構成したTDEマスター暗号化鍵の移行の説明に従ってそれをハードウェア・セキュリティ・モジュールに移行する必要があります。
現在のTDEマスター・キーとともに、Oracleウォレットでは、TDEマスター・キーをローテーションするキーの更新操作のたびに生成される履歴TDEマスター・キーを保持します。これらのTDEマスター・キーにより、履歴TDEマスター・キーのいずれかを使用して、以前に作成されたOracleデータベースのバックアップをリストアすることができます。
透過的データ暗号化用にソフトウェア・キーストアをまだ構成していない場合は、この手順を完了する必要があります。
マルチテナント環境では、rootまたはPDBからTDEマスター暗号化鍵を作成および管理できます。
注意:
後で使用するためにTDEマスター暗号化鍵を作成でき、その後それらを手動で有効にできます。詳細は、後で使用するためのTDEマスター暗号化鍵の作成を参照してください。
手順3: ハードウェア・キーストアを開くに記載されている手順を完了したことを確認します。
ADMINISTER KEY MANAGEMENT
またはSYSKM
権限が付与されたユーザーとして、データベース・インスタンスにログインします。
マルチテナント環境で、rootまたはPDBにログインします。例:
sqlplus sec_admin@hrpdb as syskm
Enter password: password
Connected.
利用可能なPDBを検索するには、DBA_PDBS
データ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_name
コマンドを実行します。
データベースがREAD WRITE
モードでオープンしていることを確認します。
OPEN_MODE
がREAD WRITE
に設定されている場合、TDEマスター暗号化鍵を設定できます。マルチテナント環境以外の環境に関するステータスを検索するには、V$DATABASE
動的ビューのOPEN_MODE
列を問い合せます。マルチテナント環境を使用している場合は、V$PDBS
ビューを問合せます。(これらのビューにアクセスできない場合は、SYSDBA
として接続し、問合せを再試行します。このタイプの問合せに対してSYSKM
として接続するには、これに対するパスワード・ファイルを作成する必要があります。詳細は、Oracle Database管理者ガイドを参照してください。)
次のSQL文を実行します。
ADMINISTER KEY MANAGEMENT SET KEY [USING TAG 'tag'] [FORCE KEYSTORE] IDENTIFIED BY [EXTERNAL STORE | "user_id:password"] [CONTAINER = ALL | CURRENT];
ここでは次のように指定します。
tag
は、定義する関連の属性および情報です。この設定は一重引用符(' ')で囲みます。
FORCE KEYSTORE
は、キーストアが閉じている場合に、キーストア操作を有効にします。
IDENTIFIED BY
は次のいずれかの設定にできます。
EXTERNAL STORE
は、外部ストアに格納されたキーストア・パスワードを使用して、キーストア操作を実行します。
user_id:password
: user_id
は、ハードウェア・キーストア用に作成されたユーザーIDです。password
は、ハードウェア・キーストア用に作成されたパスワードです。user_id:password
文字列を二重引用符(" ")で囲み、user_id
とpassword
をコロン(:
)で区切ります。
CONTAINER
は、マルチテナント環境で使用するために用意されています。このCDBのすべてのPDBでキーストアを設定するには、ALL
を入力するか、現在のPDBでキーストアを設定するには、CURRENT
を入力します。
例:
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY "psmith:password";
keystore altered.
ソフトウェア・キーストアを以前に構成した場合は、前に構成したTDEマスター暗号化鍵を移行する必要があります。
Oracle Data PumpやOracle Recovery Managerなどのツールでは、ソフトウェア・キーストアを使用してエクスポートまたはバックアップされたデータに対して復号化と暗号化の操作を実行するために、古いソフトウェア・キーストアにアクセスする必要があります。ソフトウェア・パスワード・キーストアとハードウェア・キーストア間の移行の説明に従って、ソフトウェア・キーストアからハードウェア・キーストアに移行できます。
現在のTDEマスター・キーとともに、Oracleウォレットでは、TDEマスター・キーをローテーションするキーの更新操作のたびに生成される履歴TDEマスター・キーを保持します。これらのTDEマスター・キーにより、履歴TDEマスター・キーのいずれかを使用して、以前に作成されたOracleデータベースのバックアップをリストアすることができます。
透過的データ暗号化を使用すると、データベース表の個々の列を暗号化できます。
内容は次のとおりです。
表の個々の列を暗号化できます。
個々の列または表領域全体のどちらを暗号化するかは、表のデータ型によって決まります。また、TDE列暗号化をサポートしていない機能もいくつかあります。
Oracle Databaseでは、TDE列暗号化で使用できる特定のセットのデータ型をサポートしています。
様々なデータ型が使用されるデータ列を暗号化することができます。
サポートされるデータ型は次のとおりです。
BINARY_DOUBLE
BINARY_FLOAT
CHAR
DATE
INTERVALDAYTOSECOND
INTERVALYEARTOMONTH
NCHAR
NUMBER
NVARCHAR2
RAW
(レガシーまたは拡張)
TIMESTAMP
(TIMESTAMP WITH TIME ZONE
およびTIMESTAMP WITH LOCAL TIME ZONE
を含む)
VARCHAR2
(レガシーまたは拡張)
暗号化列のサイズが列のデータ型で許容されるサイズより大きい場合は、列を暗号化できません。
表3-1に、各種データ型の最大許容サイズを示します。
表3-1 各データ型の最大許容サイズ
データ型 | 最大サイズ |
---|---|
|
1932バイト |
|
3932バイト |
|
32,699バイト |
|
1966バイト |
|
16,315バイト |
|
966バイト |
|
32,699バイト |
注意:
TDE表領域暗号化には、これらのデータ型制限はありません。詳細は、「表領域の暗号化」を参照してください。
TDEの暗号化はSQLレイヤーで行われます。SQLレイヤーをバイパスするOracle Databaseユーティリティは、TDEの列暗号化サービスを使用できません。
TDE列暗号化は、次のデータベース機能と併用しないでください。
Bツリー以外の索引タイプ
索引内のレンジ・スキャン検索
同期チェンジ・データ・キャプチャ
トランスポータブル表領域
また、TDE列暗号化では、外部キー制約で使用される列は暗号化できません。
サポートされていないこれらの機能を使用する必要があるアプリケーションは、DBMS_CRYPTO
PL/SQLパッケージを使用して暗号化を実行できます。
透過的データ暗号化は、ディスクまたは他のメディアに格納されているデータを保護します。転送中のデータは保護対象外です。ネットワーク上のデータを暗号化するには、Oracle Databaseセキュリティ・ガイドに記載されているネットワーク暗号化ソリューションを使用します。
関連項目:
DBMS_CRYPTO
PL/SQLパッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください。
CREATE TABLE
文を使用して作成されるID列の詳細は、Oracle Database SQL言語リファレンスを参照してください。
暗号化された列がある新しい表を作成できます。Oracle Databaseには、暗号化を定義するために使用できる様々なアルゴリズムが用意されています。
内容は次のとおりです。
CREATE TABLE
SQL文を使用して、暗号化列を持つ表を作成できます。
暗号化列を含むリレーショナル表を作成するには、CREATE TABLE
SQL文でデータベース列を定義するときにSQL ENCRYPT
句を指定します。
TDEでは、192ビット長の鍵を使用するAES
暗号化アルゴリズム(AES192
)がデフォルトで使用されます。
アルゴリズムを指定しないで表の列を暗号化すると、その列はAES192
アルゴリズムを使用して暗号化されます。
暗号化の前にTDEは、saltを平文に追加します。saltを追加すると、攻撃者が総当たり攻撃によってデータを盗むことがより困難になります。また、TDEにより整合性をチェックするために、データにメッセージ認証コード(MAC)が追加されます。デフォルトでは、SHA-1
整合性アルゴリズムが使用されます。
列を暗号化する表を作成するには、ENCRYPT
句を含むCREATE TABLE
SQL文を使用します。
たとえば、デフォルト・アルゴリズムを使用して表の列を暗号化するには、次のようにします。
CREATE TABLE employee (
first_name VARCHAR2(128),
last_name VARCHAR2(128),
empID NUMBER,
salary NUMBER(6) ENCRYPT);
この例では、暗号化列を含む新しい表を作成しています(salary
)。この列は、デフォルトの暗号化アルゴリズム(AES192
)を使用して暗号化されます。saltおよびMACはデフォルトで追加されます。この例では、ウォレットがオープン状態であり、マスター鍵が設定されていると想定しています。
注意:
1つの表に複数の暗号化列がある場合、これらのすべての列で暗号化アルゴリズムと整合性アルゴリズムの同じペアが使用される必要があります。
saltは列レベルで指定されます。つまり、表の暗号化列には、saltが使用される暗号化列とsaltが使用されない暗号化列が混在していてもかまいません。
CREATE TABLE
SQL文を使用して、暗号化列を持つ表を作成します。
暗号化の前に、デフォルトでTDEは、saltを平文に追加します。saltを追加すると、攻撃者が総当たり攻撃によってデータを盗むことがより困難になります。ただし、暗号化列を索引付けする場合、NO SALT
パラメータを使用する必要があります。
デフォルト以外のアルゴリズムの暗号化列、またはアルゴリズムなしの暗号化列を使用する表を作成するには、次のようにCREATE TABLE
SQL文を実行します。
アルゴリズムを使用しない場合は、ENCRYPT NO SALT
句を含めます。
デフォルト以外のアルゴリズムを使用する場合は、ENCRYPT USING
句を使用し、その後に一重引用符で囲んだ次のいずれかのアルゴリズムを続けます。
3DES168
AES128
AES192
(デフォルト)
AES256
次の例では、empID
列およびsalary
列の暗号化設定の指定方法を示します。
CREATE TABLE employee ( first_name VARCHAR2(128), last_name VARCHAR2(128), empID NUMBER ENCRYPT NO SALT, salary NUMBER(6) ENCRYPT USING '3DES168');
この例では、次のようになります。
empID
列は暗号化されますが、saltを使用しません。表のすべての暗号化列は、同じ暗号化アルゴリズムを使用する必要があるため、empID
列とsalary
列の両方は、3DES168
暗号化アルゴリズムを使用します。
salary
列は、3DES168
暗号化アルゴリズムを使用して暗号化されます。アルゴリズムを指定する文字列は、一重引用符(' ')で囲む必要があることに注意してください。salary
列では、デフォルトでsaltが使用されます。
TDEで実行するチェックはバイパスできます。この場合、暗号化された値ごとに20バイトのディスク領域を節約できます。
表の行および暗号化列の数が多い場合、TDEチェックをバイパスすることで、かなりの量のディスク領域になることがあります。さらに、処理サイクルが節約され、TDEに関連するパフォーマンス・オーバーヘッドが減少します。
TDEでは、デフォルトでSHA-1
整合性アルゴリズムが使用されます。表のすべての暗号化列で同じ整合性アルゴリズムが使用される必要があります。表の列ですでにSHA-1
アルゴリズムを使用している場合は、NOMAC
パラメータによって同じ表の別の列を暗号化することはできません。
暗号化および復号化操作での整合性チェックをバイパスするには、CREATE TABLE
文およびALTER TABLE
文でNOMAC
パラメータを使用します。
CREATE TABLE SQL文を使用し、NOMACパラメータを使用して表の列を暗号化できます。
例3-1では、暗号化列を含む表を作成しています。empID
列は、NOMAC
パラメータを使用して暗号化されます。
例3-1 CREATE TABLE文でのNOMACパラメータの使用
CREATE TABLE employee (
first_name VARCHAR2(128),
last_name VARCHAR2(128),
empID NUMBER ENCRYPT 'NOMAC' ,
salary NUMBER(6));
ALTER TABLE SQL文を使用して、データベース表の整合性アルゴリズムを変更できます。
例3-2に、表内の暗号化列の整合性アルゴリズムを変更する方法を示します。暗号化アルゴリズムを3DES168
に、整合性アルゴリズムをSHA-1
に設定しています。2番目のALTER TABLE
文では、整合性アルゴリズムをNOMAC
に設定しています。
例3-2 表の整合性アルゴリズムの変更
ALTER TABLE EMPLOYEE REKEY USING '3DES168' 'SHA-1'; ALTER TABLE EMPLOYEE REKEY USING '3DES168' 'NOMAC';
外部表の機能を使用すると、データベース表内のデータであるかのように、外部ソースのデータにアクセスできます。
外部表は、ORACLE_DATAPUMP
アクセス・ドライバを使用して更新できます。
外部表の特定の列を暗号化するには、列を定義するときにENCRYPT
句を使用します。
列は、システム生成鍵によって暗号化されます。たとえば、次のCREATE TABLE
SQL文は、3DES168
アルゴリズムを使用してssn
列を暗号化します。
CREATE TABLE emp_ext (
first_name,
....
ssn ENCRYPT USING '3DES168',
....
外部表を新しい場所に移動することを予定している場合、列の暗号化にランダム生成の鍵は使用できません。これは、新しい場所ではランダム生成の鍵が使用できないためです。
このような場合は、列を暗号化する際にパスワードを指定する必要があります。データを移動した後で、同じパスワードを使用して、新しい場所の暗号化列データへのアクセスに必要な鍵を再生成できます。
表パーティション交換でもパスワードベースのTDE表キーが必要になります。
例3-3 パスワード生成TDE表キーを使用した新しい外部表の作成
CREATE TABLE emp_ext ( first_name, last_name, empID, salary, ssn ENCRYPT IDENTIFIED BY password ) ORGANIZATION EXTERNAL ( TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY "D_DIR" LOCATION('emp_ext.dat') ) REJECT LIMIT UNLIMITED AS SELECT * FROM EMPLOYEE;
既存の表にある列を暗号化できます。新しい表の場合、暗号化の定義に使用する様々なアルゴリズムを選択できます。
内容は次のとおりです。
ALTER TABLE
SQL文では、既存の表にある列を暗号化できます。
既存の表に暗号化列を追加したり、既存の列を暗号化または復号化するには、ADD
句またはMODIFY
句を含むALTER TABLE
SQL文を使用します。
既存の表の列を暗号化したり、異なるアルゴリズムを使用したり、NO SALT
を使用して列を索引付けすることができます。
既存の表に暗号化列を追加するには、ALTER TABLE ADD
文を使用して、ENCRYPT
句で新しい列を指定します。
例3-4では、employee
という既存の表に暗号化列ssn
を追加しています。ssn
列は、デフォルトのAES192
アルゴリズムを使用して暗号化されます。saltおよびMACはデフォルトで追加されます。
例3-4 既存の表への暗号化列の追加
ALTER TABLE employee ADD (ssn VARCHAR2(11) ENCRYPT);
ALTER TABLE MODIFY
文を使用して、既存の暗号化されていない列を暗号化できます。
暗号化されていない既存の列を暗号化するには、ALTER TABLE MODIFY
文を使用して、ENCRYPT
句で、暗号化されてない列を指定します。
次の例では、employee
表のfirst_name
列を暗号化しています。first_name
列は、デフォルトのAES192
アルゴリズムを使用して暗号化されます。saltはデフォルトでデータに追加されます。別のアルゴリズムを使用して列を暗号化できます。列を索引付けする場合、NO SALT
を指定する必要があります。NOMAC
パラメータを使用して、整合性チェックをバイパスすることもできます。
ALTER TABLE employee MODIFY (first_name ENCRYPT);
次の例では、NOMAC
パラメータを使用してemployee表のfirst_name
列を暗号化しています。
ALTER TABLE employee MODIFY (first_name ENCRYPT 'NOMAC');
互換性やパフォーマンスの理由から、暗号化を無効にすることが必要になる場合があります。
列の暗号化を無効にするには、ALTER TABLE MODIFY
コマンドを使用し、DECRYPT
句を指定します。
例3-5では、employee
表のfirst_name
列を復号化しています。
例3-5 列の暗号化の無効化
ALTER TABLE employee MODIFY (first_name DECRYPT);
暗号化された列に対して索引を作成できます。
索引付け対象の列は、saltなしで暗号化されている必要があります。saltを使用して列が暗号化されている場合、ORA-28338: 索引付けされた列は、saltを使用して暗号化できません
エラーが発生します。
暗号化列に索引を作成する場合は、ENCRYPT NO SALT
句を含むCREATE INDEX
文を使用します。
例3-6に、saltなしで暗号化された列に対して索引を作成する方法を示します。
例3-6 saltなしで暗号化された列に対する索引の作成
CREATE TABLE employee (
first_name VARCHAR2(128),
last_name VARCHAR2(128),
empID NUMBER ENCRYPT NO SALT,
salary NUMBER(6) ENCRYPT USING '3DES168');
CREATE INDEX employee_idx on employee (empID);
ソルトは、暗号化される前のデータに追加されるランダムな文字列で、暗号化されたデータのセキュリティを強化する方法です。
Saltにより、同じ平文データが常に同じ暗号化テキストに変換されることがなくなります。saltを追加すると、侵入者がデータを盗むために使用する一般的な方法の1つである暗号化テキストのパターン一致を排除できます。saltを追加するには、暗号化されたデータ値ごとに16バイトの追加記憶域が必要です。
暗号化列に対してsaltを追加または削除するには、ALTER TABLE MODIFY
SQL文を使用します。
たとえば、saltを使用してfirst_name
列を暗号化するとします。first_name
列が以前にsaltなしで暗号化されていた場合は、ALTER TABLE MODIFY
文によって、saltを使用して列が再暗号化されます。
ALTER TABLE employee MODIFY (first_name ENCRYPT SALT);
ALTER TABLE SQL文を使用して、暗号化列からsaltを削除できます。
暗号化列からsaltを削除するには、ALTER TABLE SQL文でENCRYPT NO SALT
句を使用します。
たとえば、first_name
列からsaltを削除するとします。saltを使用して暗号化された列に索引を付ける必要がある場合は、索引を付ける前に、この文を使用してsaltを削除します。
ALTER TABLE employee MODIFY (first_name ENCRYPT NO SALT);
ALTER TABLE
SQL文を使用して、暗号化列で使用される暗号化鍵またはアルゴリズムを変更できます。
各表では、その列に1つのTDE表キーのみ指定できます。TDE表キーはALTER TABLE
文を使用して再生成できます。このプロセスでは、新しい鍵を生成し、以前の鍵を使用して表のデータを復号化し、新しい鍵を使用してデータを再暗号化し、表のメタデータを新しい鍵情報で更新します。新しいTDE表キーに対して別の暗号化アルゴリズムを使用することもできます。
暗号化列を含む表の暗号化鍵またはアルゴリズムを変更するには、ALTER TABLE
SQL文でREKEY
またはREKEY USING
句を使用します。
例:
ALTER TABLE employee REKEY;
例3-7では、3DES168
アルゴリズムを使用してemployee
表に対するTDE表キーを再生成しています。
例3-7 暗号化された表の列の暗号化鍵およびアルゴリズムの変更
ALTER TABLE employee REKEY USING '3DES168';
オンラインとオフラインの両方の表領域およびデータベースで暗号化操作を実行できます。
内容は次のとおりです。
表領域を暗号化する際は、透過的データ暗号化の使用に関する制限事項に注意する必要があります。
次の制約に注意してください:
透過的データ暗号化(TDE)表領域暗号化では、SQLレイヤーでデータを暗号化および復号化するTDE列暗号化とは対照的に、読取りおよび書込み操作時にデータを暗号化または復号化します。このことは、データ型制限や索引タイプ制限など、TDE列暗号化に適用される制限のほとんどが、TDE表領域暗号化には適用されないことを意味します。
インポートおよびエクスポート操作を実行するには、Oracle Data Pumpを使用します。
関連項目:
Oracle Data Pumpの詳細は、『Oracle Databaseユーティリティ』を参照してください。
暗号化された表領域を作成する前に、COMPATIBLE
初期化パラメータを設定する必要があります。
内容は次のとおりです。
11.2.0.0
の最小限のCOMPATIBLE
設定により、すべての表領域暗号化機能が有効になります。
互換性を11.1.0.0
ではなく11.2.0.0
に設定することで、次の追加機能を使用できます。
11.2.0.0
に設定することにより、データベースでは、データの暗号化にサポートしている4つのアルゴリズム(3DES168
、AES128
、AES192
およびAES256
)の任意のものを使用できます。
11.2.0.0
に設定することにより、ソフトウェア・キーストアからハードウェア・キーストアに鍵を移行できます(TDEマスター暗号化鍵がハードウェア・キーストア用に構成されていることを確認します)。
11.2.0.0
に設定することにより、TDEマスター暗号化鍵を再設定およびローテーションできます。
このパラメータを11.2.0.0
に設定すると、変更は元に戻せないことに注意してください。表領域暗号化を使用するには、互換性設定が最低でも11.1.0.0
であることを確認します。
関連項目:
COMPATIBLE
パラメータの詳細は、Oracle Database SQL言語リファレンスを参照してください。
初期化パラメータ・ファイルの詳細は、Oracle Database管理者ガイドを参照してください。
COMPATIBLE
初期化パラメータを設定するには、データベース・インスタンスの初期化パラメータを編集する必要があります。
データベース・インスタンスにログインします。
マルチテナント環境の場合、PDBにログインします。例:
sqlplus sec_admin@hrpdb
Enter password: password
Connected.
利用可能なPDBを検索するには、DBA_PDBS
データ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_name
コマンドを実行します。
COMPATIBLE
パラメータの現在の設定を確認します。
例:
SHOW PARAMETER COMPATIBLE NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ compatible string 11.0.0.0 noncdbcompatible BOOLEAN FALSE
COMPATIBLE
パラメータを変更する必要がある場合、この手順の残りのステップを実行します。
値は、11.2.0.0以上である必要があります。
データベース・インスタンスの初期化パラメータ・ファイルを特定します。
UNIXシステム: このファイルは、ORACLE_HOME
/dbs
ディレクトリにあり、init
ORACLE_SID
.ora
(initmydb.ora
など)という名前です。
Windowsシステム: このファイルは、ORACLE_HOME
\database
ディレクトリにあり、init
ORACLE_SID
.ora
(initmydb.ora
など)という名前です。
初期化パラメータ・ファイルを新しいCOMPATIBLE
設定を使用するよう編集します。
例:
compatible=11.2.0.0.0
SQL*Plusで、SYSDBA
管理権限を持つユーザーとして接続し、データベースを停止します。
例:
CONNECT /AS SYSDBA SHUTDOWN
正しいCOMPATIBLE
設定を使用して初期化パラメータ・ファイルを編集します。
例:
COMPATIBLE = 12.1.0.0
SQL*Plusで、SYSDBA
管理権限を持つユーザーとして接続していることを確認し、データベースを起動します。
例:
CONNECT /AS SYSDBA STARTUP
表領域の暗号化を使用している場合は、データベース・マウントでキーストアを開きます。キーストアは、暗号化された表領域のデータにアクセスする前に開いている必要があります。
STARTUP MOUNT;
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY keystore_password;
ALTER DATABASE OPEN;
TDEマスター暗号化鍵が構成されていることを確認する必要があります。
次のようにTDEマスター暗号化鍵を設定します。
ソフトウェアTDEマスター暗号化鍵の場合は、手順4: ソフトウェアTDEマスター暗号化鍵の設定を参照してください。
ハードウェアTDEマスター暗号化鍵の場合は、手順4: ハードウェア・キーストアのTDEマスター暗号化鍵の設定を参照してください。
COMPATIBLE
初期化パラメータを設定したら、暗号化された表領域の作成は完了です。
内容は次のとおりです。
暗号化された表領域を作成するには、CREATE TABLESPACE
SQL文を使用します。
暗号化された表領域を作成するには、CREATE TABLESPACE
システム権限が必要です。
既存の表領域を変更して、それを暗号化済にすることはできません。ただし、Oracle Data Pumpを使用して、暗号化された表領域にデータをインポートすることはできます。CREATE TABLE...AS SELECT...
やALTER TABLE...MOVE...
などのSQL文を使用して、暗号化された表領域にデータを移動することもできます。CREATE TABLE...AS SELECT...
文は、既存の表から表を作成します。ALTER TABLE...MOVE...
文は、暗号化された表領域に表を移動します。
セキュリティ上の理由から、NO SALT
オプションを使用して表領域を暗号化することはできません。
表領域が暗号化されたかどうかを確認するために、DBA_TABLESPACES
データ・ディクショナリ・ビューおよびUSER_TABLESPACES
データ・ディクショナリ・ビューのENCRYPTED
列を問い合せることができます。
関連項目:
これらのデータ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください
暗号化された表領域を作成するには、ENCRYPTION USING
句を含むCREATE TABLESPACE
文を使用する必要があります。
CREATE TABLESPACE
システム権限が付与されたユーザーとして、データベース・インスタンスにログインします。
マルチテナント環境の場合、PDBにログインします。例:
sqlplus sec_admin@hrpdb as syskm
Enter password: password
Connected.
利用可能なPDBを検索するには、DBA_PDBS
データ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_name
コマンドを実行します。
暗号化句を使用してCREATE TABLESPACE
文を実行します。
例:
CREATE TABLESPACE encrypt_ts DATAFILE '$ORACLE_HOME/dbs/encrypt_df.dbf' SIZE 1M ENCRYPTION USING 'AES256' DEFAULT STORAGE (ENCRYPT);
ここでは次のように指定します。
ENCRYPTION USING 'AES256'
には、暗号化アルゴリズムおよび暗号化鍵の長さを指定します。この設定は一重引用符(' ')で囲みます。鍵長は、アルゴリズムの名前に含まれています。暗号化アルゴリズムを指定しない場合は、デフォルトの暗号化アルゴリズムAES128
が使用されます。次のアルゴリズムから選択します。
3DES168
AES128
AES192
AES256
DEFAULT STORAGE
句のENCRYPT
は、表領域を暗号化します。
関連項目:
CREATE TABLESPACE
文の構文の詳細は、Oracle Database SQL言語リファレンスを参照してください。
CREATE TABLESPACE SQL文を使用して、暗号化された表領域を作成できます。
例3-8では、3DES
アルゴリズムを使用して暗号化された、securespace_1
という表領域を作成します。鍵長は168ビットです。
例3-8 3DES168を使用する暗号化された表領域の作成
CREATE TABLESPACE securespace_1 DATAFILE '/home/user/oradata/secure01.dbf' SIZE 150M ENCRYPTION USING '3DES168' DEFAULT STORAGE(ENCRYPT);
CREATE TABLESPACE SQL文を使用して、デフォルト・アルゴリズムを使用する暗号化された表領域を作成できます。
例3-9では、securespace_2
という表領域を作成します。暗号化アルゴリズムが指定されていないため、デフォルトの暗号化アルゴリズム(AES128
)が使用されます。鍵長は128ビットです。
既存の表領域は暗号化できません。
例3-9 デフォルト・アルゴリズムを使用する暗号化された表領域の作成
CREATE TABLESPACE securespace_2 DATAFILE '/home/user/oradata/secure01.dbf' SIZE 150M ENCRYPTION DEFAULT STORAGE(ENCRYPT);
Oracle Databaseには、透過的データ暗号化データに関する詳細情報を検索するために問い合せできる、一連の動的ビューおよびデータ・ディクショナリ・ビューが用意されています。
表3-2に、これらの動的ビューおよびデータ・ディクショナリ・ビューを示します。
表3-2 透過的データ暗号化の関連ビュー
ビュー | 説明 |
---|---|
|
現在のユーザーがアクセスできる表内の暗号化列に関する暗号化情報が表示されます。 |
|
データベースにあるすべての暗号化列の暗号化情報が表示されます。 |
|
現在のユーザーのスキーマにある暗号化された表の列の暗号化情報が表示されます。 |
|
永続、一時、およびUNDO表領域を含むすべてのタイプの表領域についての表領域使用状況メトリックを示します |
|
様々な機能(クライアント)用のキーストアに格納された文字列(シークレット)のプロパティが一覧表示されます。 マルチテナント環境では、PDB内のこのビューを問い合せると、現在のPDB用に作成またはアクティブ化された鍵に関する情報が表示されます。rootでこのビューを問い合せると、すべてのPDBの鍵に関するこの情報が表示されます。 |
|
暗号化された表領域に関する情報が表示されます。 |
|
マルチテナント環境では、PDB内のこのビューを問い合せると、現在のPDB用に作成またはアクティブ化された鍵に関する情報が表示されます。rootでこのビューを問い合せると、すべてのPDBの鍵に関するこの情報が表示されます。 |
|
TDEのキーストアのステータスおよびキーストアの場所に関する情報が表示されます。 |
|
TDEのマスター暗号化鍵として使用できるPKI証明書のメタデータ情報が表示されます。 |
関連項目:
これらのビューの詳細は、Oracle Databaseリファレンスを参照してください。