The EDB Blog
2015年8月13日

セキュリティは常にエンタープライズの大きな課題でした。特に、重要な情報がデータベースに格納されている場合、企業は常にそこに堅牢なセキュリティを設けることを希望します。長年にわたって、技術は進化しており、それに伴いソリューションもより良いものへと進化してきました。

あなたが非常に機密性の高い情報を持っている場合、おそらくその情報を暗号化することでしょう。そうすれば、誰かがシステムにアクセスしても、許可がなければ情報を見ることができません。

Moving Oracle to the Cloud?
Learn 5 key decisions to make to ensure success. Get the Whitepaper.

機密情報を管理する際、エンタープライズは複数の方法を使用します:

  1. 特定の情報を暗号化する。

PPASユーザーの場合は、データベースの機密情報を暗号化する方法を提供する、DBMS_CRYPTOパッケージを使用した方が良いでしょう。

詳細については、以下のリンクを参照してください:

http://www.enterprisedb.com/docs/en/9.4/oracompat/Database_Compatibility_for_Oracle_Developers_Guide.1.178.html#

PostgreSQLの場合、ユーザーはpgcryptoモジュールを使用できます。

  1. Transparent Data Encryption(TDE)は、MicrosoftとOracleがデータベースファイルを暗号化するために使用するもう1つの方法です。TDEは、ファイルレベルで暗号化を提供します。この方法は、休眠時にデータを保護すること、すなわちハードドライブ上および結果的にバックアップ媒体上の両方でデータベースを暗号化するという問題を解決します。エンタープライズは、通常TDEを使用してPCI DSSなどのコンプライアンス問題を解決します。

Postgres Plusには、現在TDEは組み込まれていませんが、エンタープライズがデータベースファイルレベルで暗号化を探している場合は、以下のいずれかの方法を使用して休眠時のデータを保護することができます:

  1. フルディスク暗号化:

フルディスクまたはパーティションの暗号化は、データを保護する最善の方法の1つです。ただし、この方法は各ファイルを保護するだけでなく、これらのファイルの一部を含む一時記憶域も保護します。フルディスク暗号化によりすべてのファイルが保護されるため、保護したいファイルと見つからないファイルを選択する心配はありません。

RHEL(Red Hat)は、LinuxのUnified Key Setup-on-disk-format(またはLUKS)をサポートしています。LUKSバルクはハードドライブ・パーティションを暗号化します。

LUKSの詳細については、以下のリンクを参照してください:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/chap-Security_Guide-Encryption.html#sect-Security_Guide-LUKS_Disk_Encryption

  1. ファイルシステムレベルの暗号化:

ファイルシステムレベルの暗号化は、ファイル/ディレクトリ暗号化とも呼ばれます。この方法では、個々のファイルまたはディレクトリは、ファイルシステム自体によって暗号化されます。

ユーザーが自分の環境で利用できる、積み重ね可能な暗号ファイルシステムの暗号化があります。

ファイルシステムレベルの暗号化には、以下の利点があります

  1. 柔軟なファイルベースのキー管理。各ファイルは別々の暗号化キーで暗号化できるようになります。
  1. 暗号化ファイルの個別管理例えば、個々の増分バックアップは、暗号化されたボリューム全体をバックアップするのではなく、暗号化された形式でもファイルを変更します。
  1. アクセス制御は、公開キー暗号方式を使用すること、および暗号キーが復号化されたファイルが開かれている間だけメモリに保持されることによって、行うことができます。

スタック可能な暗号ファイルシステムの暗号化は、透過的なデータ暗号化のためのPostgresに対して使用できます。

このブログでは、セットアップ時に必要なオーバーヘッドが少なくて済むようにmount ecrpytfsを使用する方法について説明します(LUKSでは、データを格納する前に、新しいディスクを設定してフォーマットする必要があります)。「mount ecrpytfs」は既存のディレクトリとデータで動作します)。

エンタープライズがTDEのDBAに制御権を与えたい場合、DBAが暗号化のためのコマンドを実行するために、少数のsudoルールを使用/定義することができます。

以下は、使用可能な方法です:

  • システム管理者に問い合わせて、DBAがPostgres Plusのデータディレクトリの暗号化を実行できるようにするsudoルールを作成します。これを行う一般的な方法の1つは、Linuxオペレーティングシステムで「mount ecryptfs」コマンドを使用することです。
  • ユーザーが/ppas94/dataディレクトリを暗号化する必要がある場合、次のコマンドを使用できます:
sudo mount -t ecryptfs /ppas94/data /ppas94/data
        

詳細は、RHELのドキュメントを参照してください:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-efs.html

また、上記のコマンドで、暗号化キーの種類(パスフレーズ、openssl)、暗号化(aes、des3_ede...)、キーのバイト数およびその他のオプションを指定することもできます。

例を以下に示します:

# mount -t ecryptfs /home /home -o ecryptfs_unlink_sigs \

 ecryptfs_key_bytes=16 ecryptfs_cipher=aes ecryptfs_sig=c7fed37c0a341e19
<strong>

Centos 7とRHEL 7では、デフォルトでecrpytfsが付属していないため、ユーザーはencfsコマンドも使用できます。

encfsの詳細については、以下のリンクを参照してください:

https://wiki.archlinux.org/index.php/EncFS

以下に、encfsを使用してデータディレクトリを暗号化する手順を示します。

  1. EnterpriseDBユーザーとして、次のコマンドを使用してデータディレクトリを作成します。
   mkdir /var/lib/ppas/9.4/encrypted_data
   chmod 700 /var/lib/ppas/9.4/encrypted_data
  1. 以下のencfsコマンドを使用して、データディレクトリを暗号化します。
         encfs /var/lib/ppas-9.4/encrypted_data/ /var/lib/ppas-9.4/data

上記のコマンドのスナップショットを以下に示します:

 encfs /var/lib/ppas/9.4/encrypted_data /var/lib/ppas/9.4/data
 
The directory "/var/lib/ppas/9.4/data" does not exist. Should it be created? (y,n) y</pre>
Creating new encrypted volume.
 
Please choose from one of the following options:
 
enter "x" for expert configuration mode,
 
enter "p" for pre-configured paranoia mode,
 
anything else, or an empty line will select standard mode.
 
?>
 
Standard configuration selected.
 
Configuration finished.  The filesystem to be created has
 
the following properties:
 
Filesystem cipher: "ssl/aes", version 3:0:2
 
Filename encoding: "nameio/block", version 4:0:2
 
Key Size: 192 bits
 
Block Size: 1024 bytes
 
Each file contains 8 byte header with unique IV data.
 
Filenames encoded using IV chaining mode.
 
File holes passed through to ciphertext.
 
Now you will need to enter a password for your filesystem.
 
You will need to remember this password, as there is absolutely
 
no recovery mechanism.  However, the password can be changed
 
later using encfsctl.
 
New Encfs Password: 
 
Verify Encfs Password:

  1. データディレクトリを暗号化した後、ユーザーはPostgreSQL-<version>サービススクリプトを変更して、パスワード用に適切なコマンドを含める必要があります。そのために、彼らはsshpassを使用するか、ディレクトリを実装するためのパスワードを渡すことができる独自のプログラムを書くことができます。

ご覧のとおり、Transparent Data Encryption Postgresを実現することは、非常に簡単です。

 
vibhor.kumar_enterprisedb.comの写真

Vibhor Kumar is Chief Performance Architect with 12+ years of leadership experience in designing innovative business solutions for customers and leads the performance engineering team at EnterpriseDB.