我们将这个postgresql.conf配置文件放在spring引导应用程序的哪个位置



我正在尝试加密我的prostagres数据库中的一列。列名是";测试";类型为";字节";。

我的祖先代码在下面,

@ColumnTransformer(read = "pgp_sym_decrypt(" + "    test, "
+ "    current_setting('encrypt.key')"
+ ")", write = "pgp_sym_encrypt( " + "    ?, "
+ "    current_setting('encrypt.key')" + ") ")
@Column(columnDefinition = "bytea")
private String test;

postgresql.conf配置文件:encrypt.key='哇!太安全了。

将postgresql.conf配置文件放在spring-boot-appln的src/main/resources中。但是encryption.key值没有被提取。有没有一种方法可以使用application.properties传递密钥?

postgresql.conf是Postgres服务器的配置文件。它存储在服务器上的数据目录(又称"集群"(中。

你不能把它放在客户端(你的应用程序运行的地方(。它在那里没有任何意义。

要更改其中的值,您需要编辑文件(在服务器上(或使用ALTER SYSTEM

如果要更改当前会话的配置设置,请使用SETset_config()

后两种可能是您想要初始化加密/解密函数的自定义属性的方法。

使用encrypt.key的方法,不仅用于当前会话,还将其存储在postgresql.conf中。

正确的位置在该文件的末尾;定制选项";区段:

#------------------------------------------------------------------------------
# CUSTOMIZED OPTIONS
#------------------------------------------------------------------------------
# Add settings for extensions here
encrypt.key=123456

重新加载数据库服务器的配置:

systemctl reload postgresql.service

测试它是否正常工作。打开一个pgsql会话并键入:

mydb=# show encrypt.key;
encrypt.key
-------------
123456
(1 row)

加密示例:

mydb=# select pgp_sym_encrypt('Hola mundo',current_setting('encrypt.key'));
pgp_sym_encrypt
------------------------------------------------------------------------------------------------------------------------------------------------------------
xc30d04070302255230e388dfe25e7dd23b01c5b8e62d148088a3417d3c27ed2cc11655d863b271672b9f076fffb82f1a7f074f2ecbe973df04642cd7a4f76ca5cff4a13b9a71e7cc6e693827
(1 row)

解密示例:

mydb=# select pgp_sym_decrypt('xc30d04070302255230e388dfe25e7dd23b01c5b8e62d148088a3417d3c27ed2cc11655d863b271672b9f076fffb82f1a7f074f2ecbe973df04642cd7a4f76ca5cff4a13b9a71e7cc6e693827',current_setting('encrypt.key'));
pgp_sym_decrypt
-----------------
Hola mundo
(1 row)

最新更新