Using a key store#
外部キー管理システムのキーストアを使用して、データ暗号化キーを管理できます。テストおよびサポートされているキーストアは次のとおりです。
Amazon AWS Key Management ServiceKMS
Microsoft Azure Key Vault
Google Cloud - Cloud Key Management Service
HashiCorp Vault KMIP SecretsエンジンおよびTransit Secretsエンジン
Thales CipherTrust Manager
Fortanixデータセキュリティマネージャー
Entrust KeyControl
使用可能なキーストアのいずれかを使用するには、構成例を参照してください。
AWS Key Management Serviceの例#
AWS Key Management Service でキーを作成します。
aws kms create-key
aws kms create-alias --alias-name alias/pg-tde-master-1 --target-key-id "..."
aws kms コマンドとalias/pg-tde-master-1
キーを使用して、データ暗号化キーをラップおよびラップ解除します。
PGDATAKEYWRAPCMD=aws kms encrypt --key-id alias/pg-tde-master-1 --plaintext fileb:///dev/stdin --output text --query CiphertextBlob | base64 -d > "%p"
PGDATAKEYUNWRAPCMD=aws kms decrypt --key-id alias/pg-tde-master-1 --ciphertext-blob fileb://"%p" --output text --query Plaintext | base64 -d
注釈
この例のようなパイプを使用したシェルコマンドは、パイプの終了ステータスが最後のコマンドの終了ステータスであるため、問題があります。最初のより興味深いコマンドの失敗は、適切に報告されません。 Postgresは、wrapまたはunwrapコマンドが何も書き込んだかどうかを認識することにより、これをある程度処理します。ただし、これをより堅牢にすることをお勧めします。たとえば、一部のシェルで使用可能な`pipefail` オプション、または一部のオペレーティングシステムで使用可能な`mispipe` コマンドを使用します。より複雑なコマンドをインラインで定義するのではなく、外部シェルスクリプトまたは他のプログラムに配置します。
Azure Key Vaultの例#
Azure Key Vault でキーを作成します。
az keyvault key create --vault-name pg-tde --name pg-tde-master-1
az keyvault key コマンドとpg-tde-master-1
キーを使用して、データ暗号化キーをラップおよびラップ解除します。
PGDATAKEYWRAPCMD=az keyvault key encrypt --name pg-tde-master-1 --vault-name pg-tde --algorithm A256GCM --value @- --data-type plaintext --only-show-errors --output json | jq -r .result > "%p"
PGDATAKEYUNWRAPCMD=az keyvault key decrypt --name pg-tde-master-1 --vault-name pg-tde --algorithm A256GCM --value @"%p" --data-type plaintext --only-show-errors --output json | jq -r .result
注釈
この例のようなパイプを使用したシェルコマンドは、パイプの終了ステータスが最後のコマンドの終了ステータスであるため、問題があります。最初のより興味深いコマンドの失敗は、適切に報告されません。 Postgresは、wrapまたはunwrapコマンドが何も書き込んだかどうかを認識することにより、これをある程度処理します。ただし、これをより堅牢にすることをお勧めします。たとえば、一部のシェルで使用可能な`pipefail` オプション、または一部のオペレーティングシステムで使用可能な`mispipe` コマンドを使用します。より複雑なコマンドをインラインで定義するのではなく、外部シェルスクリプトまたは他のプログラムに配置します。
Google Cloud KMSの例#
Google Cloud KMS でキーを作成します。
gcloud kms keys create pg-tde-master-1 --location=global --keyring=pg-tde --purpose=encryption
gcloud kms コマンドとpg-tde-master-1
キーを使用して、データ暗号化キーをラップおよびラップ解除します。
PGDATAKEYWRAPCMD=gcloud kms encrypt --plaintext-file=- --ciphertext-file=%p --location=global --keyring=pg-tde --key=pg-tde-master-1
PGDATAKEYUNWRAPCMD=gcloud kms decrypt --plaintext-file=- --ciphertext-file=%p --location=global --keyring=pg-tde --key=pg-tde-master-1
HashiCorp Vault Transit Secrets Engineの例#
HashiCorp Vault Transit Secrets Engine でトランジットを有効にします
vault secrets enable transit
キーを作成し、名前を付けます。
vault write -f transit/keys/pg-tde-master-1
vault write コマンドとpg-tde-master-1
キーを使用して、データ暗号化キーをラップおよびラップ解除します。
PGDATAKEYWRAPCMD=base64 | vault write -field=ciphertext transit/encrypt/pg-tde-master-1 plaintext=- > %p
PGDATAKEYUNWRAPCMD=vault write -field=plaintext transit/decrypt/pg-tde-master-1 ciphertext=- < %p | base64 -d
Thales CipherTrust Managerの例#
データ暗号化キーをThalesキーストアのキーでラップする方法については、 Implementing Thales CipherTrust Manager ドキュメントの Using TDE initialization options セクションを参照してください。
Fortanix Data Security Managerの例#
ステップバイステップの構成チュートリアルについては、 Using Fortanix Data Security Manager with EDB Postgres for TDE を参照してください。
Entrust KeyControl統合ガイド#
インストール、構成、および使用手順キーのローテーションを含むについては、 EDB Postgres and Entrust KeyControl 統合ガイドを参照してください。