Transparent Data Encryption (TDE)#
重要
TDEは、それをサポートするオペランドでのみ使用できます。EPASバージョン15以降、Postgres Extendedバージョン15以降。
Transparent Data EncryptionTDEは、 保存データ 、つまりディスク上のデータベースファイルを暗号化するために複数のデータベースベンダーが使用しているテクノロジーです。ただし、TDEは使用中のデータを暗号化しません。
TDEは、バージョン15以降のEDB Postgres Advanced Server ServerEPASまたはEDB Postgres Extendedに含まれており、 EDB Postgres Distributed for Kubernetesでサポートされています。
重要
続行する前に、時間をかけて に慣れてください。
TDEをアクティブにすると、WALファイルとテーブルのファイルの両方が暗号化されます。データの暗号化/復号化は、アプリケーションの変更やクライアントドライバーの更新を必要とせずにデータベースによって管理されるため、ユーザーに対して完全に透過的です。
EDB Postgres Distributed for KubernetesでのTDEのサポートは、 EDB Postgres for Kubernetes PG4Kからの実装に依存しています。参照してください
完全なコンテキストについては。
次に、Kubernetes Secretに保存されたパスフレーズでTDEを使用する方法を示します。これは、EPASバイナリキーの暗号化に使用されます。
参考
EPAS暗号キーの詳細については、 を参照してください。
KubernetesのEDB Postgres
DistributedのTDEは、PG4K実装に依存しています。クラスターでTDEをアクティブにするには、マニフェストのepas
セクションを使用します。これは、ストレージなどのPG4Kレベルの指示子に使用されるcnp
セクション内にあります。 tde
スタンザを使用してTDEを有効にし、TDE暗号化キーを保持するKubernetesシークレットの名前を設定します。
次のYAML部分には、パスフレーズbase-64エンコードを保持するシークレットと、パスフレーズでTDEをアクティブにするepas
セクションの両方が含まれています。
- --
apiVersion: v1
kind: Secret
metadata:
name: tde-key
data:
key: bG9zcG9sbGl0b3NkaWNlbnBpb3Bpb3Bpb2N1YW5kb3RpZW5lbmhhbWJyZWN1YW5kb3RpZW5lbmZyaW8=
- --
apiVersion: pgd.k8s.enterprisedb.io/v1beta1
kind: PGDGroup
[…]
spec:
instances: 3
[…]
cnp:
postgresql:
epas:
tde:
enabled: true
secretKeyRef:
name: tde-key
key: key
storage:
size: 1Gi
繰り返しになりますが、暗号化シークレットの作成方法やTDEの追加の使用方法など、詳細については、 を参照してください。
に示すように、情報は保存時に暗号化されます。
たとえば、データノードの1つでpsql ターミナルを開きます。
kubectl exec -ti <DATA-NODE> -- psql app
テキスト列を含む新しいテーブルを作成します。
create table foo(bar int, baz varchar);
insert into foo(bar, baz) values (1, hello), (2, goodbye);
次に、新しく定義されたテーブルがディスク上の保存される場所を確認します。
select pg_relation_filepath(foo);
pg_relation_filepath
- ---------------------
base/16385/16387
同じデータノードでターミナルを開くことができます。
kubectl exec -ti <DATA-NODE> -- bash
ファイルが暗号化されたことを確認します。
cd $PGDATA/base/16385
hexdump -C 16387 | grep hello
hexdump -C 16387 | grep goodbye