テーブル暗号化によって、データベース全体の暗号化がもたらすようなパフォーマンスの低下を招くことなく、機密データが含まれるテーブルやマテリアライズド・ビューを暗号化することができます。テーブルの暗号化が有効な場合、暗号化されたテーブルのテーブル・ページ、関連するインデックス・ページ、テンポラリ・ファイルのページが暗号化されます。暗号化されたテーブルのトランザクションを含むトランザクション・ログのページも暗号化されます。
マテリアライズド・ビューの暗号化については、マテリアライズド・ビューの暗号化と復号化を参照してください。
データベース内のテーブルを暗号化するためには、テーブル暗号化を有効にしておく必要があります。テーブル暗号化の有効化は、データベースを初期化するときに行います。テーブル暗号化が有効になっているかどうかを確認するには、次のように DB_PROPERTY 関数を使用して EncryptionScope データベース・プロパティの値を取得します。
SELECT DB_PROPERTY( 'EncryptionScope' ); |
TABLE が返された場合は、テーブル暗号化が有効になっています。
テーブル暗号化で暗号化アルゴリズムが有効であるかどうかを確認するには、次のように DB_PROPERTY 関数を使用して Encryption データベース・プロパティの値を取得します。
SELECT DB_PROPERTY( 'Encryption' ); |
サポートされている暗号化アルゴリズムのリストについては、データベースの暗号化と復号化を参照してください。
暗号化されたテーブルでは、各テーブル・ページがディスクへの書き込みと同時に暗号化され、ディスクから読み取るときに復号化されます。このプロセスはアプリケーションには影響しません。ただし、暗号化されたテーブルの読み込みや書き込みにおいてパフォーマンスが多少低下することがあります。既存のテーブルを暗号化または復号化する場合、テーブルのサイズによっては時間がかかることがあります。
暗号化されたテーブル内のカラムに対するインデックスのインデックス・ページ、暗号化されたテーブルのトランザクションを含むトランザクション・ログのページ、データベースのテンポラリ・ファイルのすべてのページも暗号化されます。その他のデータベースとトランザクション・ログ・ページは暗号化されません。
暗号化されたテーブルに圧縮されたカラムが含まれている場合があります。その場合、データは圧縮されてから暗号化されます。
テーブルの暗号化は必要記憶域には影響しません。
テーブル暗号化が有効であるデータベースを起動する方法は、暗号化されたデータベースを起動する場合と同じです。たとえば、-ek オプションを指定してデータベースを起動する場合は、キーを指定する必要があります。-ep オプションを指定してデータベースを起動すると、キーの入力を要求されます。初期化ユーティリティ (dbinit)を参照してください。
テーブル暗号化を有効にする場合は、データベースの作成時に行う必要があります。データベースでテーブル暗号化が有効になっていない場合、またはデータベース暗号化が有効な場合は、テーブル暗号化を有効にしてデータベースを再作成する必要があります。
CREATE DATABASE 文を使用してデータベースを作成します。このとき、キーと暗号化アルゴリズムを指定します。
次のコマンドは、キー abc と暗号化アルゴリズム AES256_FIPS を使用して、強力なテーブル暗号化が有効になっているデータベース new.db を作成します。
CREATE DATABASE 'new.db' ENCRYPTED TABLE KEY 'abc' ALGORITHM 'AES256_FIPS'; |
このデータベース内のテーブルを暗号化するときには、AES256_FIPS アルゴリズムと abc キーが使用されます。
dbinit に -et オプションと -ek オプションを指定し、キーと暗号化アルゴリズムも指定して、データベースを作成します。
次のコマンドは、キー abc と暗号化アルゴリズム AES256_FIPS を使用して、強力なテーブル暗号化が有効になっているデータベース new.db を作成します。
dbinit new.db -et -ek abc -ea AES256_FIPS |
このデータベース内のテーブルを暗号化するときには、AES256_FIPS アルゴリズムと abc キーが使用されます。
キーを指定して CREATE ENCRYPTED TABLE DATABASE 文を使用して、データベースの暗号化されたコピーを作成します。
次の例は、contacts1 という既存のデータベースから contacts2 というデータベースを作成します。新しいデータベースでは、テーブル暗号化がサポートされています。
CREATE ENCRYPTED TABLE DATABASE 'contacts2.db' FROM 'contacts1.db' KEY 'Sd8f6654' OLD KEY 'Sc8e5543'; |
このデータベース内のテーブルを暗号化するときには、AES アルゴリズムと Sd8f6654 キーが使用されます。
データベース内のテーブルを暗号化するためには、そのデータベースでテーブル暗号化が有効になっている必要があります。データベース内のテーブル暗号化の有効化を参照してください。
テーブルを暗号化するときは、データベースの作成時に指定した暗号化のアルゴリズムとキーが使用されます。
CREATE TABLE 文の ENCRYPTED 句を使用してテーブルを作成します。
次のコマンドは、暗号化されたテーブル MyEmployees を作成します。
CREATE TABLE MyEmployees ( MemberID CHAR(40), CardNumber INTEGER ) ENCRYPTED; |
ALTER TABLE 文の ENCRYPTED 句を使用してテーブルを暗号化します。
次の文は、MyEmployees2 というテーブルを作成してから暗号化します。
CREATE TABLE MyEmployees2 ( MemberID CHAR(40), CardNumber INTEGER ); ALTER TABLE MyEmployees2 ENCRYPTED; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |