Transparent data encryption (TDE)#
重要
TDEは、それをサポートするオペランドでのみ使用できます。EDB EDB Postgres Advanced Serverバージョン15以降およびEDB Postgres Extendedバージョン15以降。
透過的データ暗号化TDEは、いくつかのデータベースベンダーが使用している技術であり、保存データ、つまりディスク上のデータベースファイルを暗号化します。ただし、TDEは使用中のデータを暗号化しません。
TDEは、バージョン15以降のEDB Postgres Advanced ServerまたはEDB Postgres Extendedに含まれており、 EDB Postgres Distributed for Kubernetesでサポートされています。
重要
続行する前に、時間をかけて TDE feature in the EPAS documentation を理解してください。
TDEをアクティブにすると、WALファイルとテーブルのファイルの両方が暗号化されます。データの暗号化/復号化は、アプリケーションの変更やクライアントドライバーの更新を必要とせずにデータベースによって管理されるため、ユーザーに対して完全に透過的です。
EDB CloudNativePGグローバルクラスターでのTDEのサポートは、EDB CloudNativePGクラスターPG4Kからの実装に依存しています。 the PG4K documentation を参照
完全なコンテキストについては。
EDB Postgres Advanced Serverバイナリキーの暗号化に使用されるKubernetesシークレットに保存されたパスフレーズでTDEを使用できます。
この暗号化キーの詳細については、
EDB
CloudNativePGグローバルクラスターの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
再度、 the PG4K documentation を参照してください
暗号化シークレットの作成方法やTDEを使用する追加の方法など、さらなる詳細については。
TDE feature documentation に示されているように、情報は保存時に暗号化されます。
たとえば、データノードの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