接入 SSL 认证配置:满足等保最佳实践

前言

随着信息安全形势的日益严峻,等保(信息安全等级保护)要求成为各行业信息系统必须遵守的标准。在数据库领域,OpenGauss作为一款高性能、安全、可靠的开源关系型数据库,也需要满足等保要求,确保数据的安全传输。本文将详细介绍在等保要求下,如何为OpenGauss配置SSL客户端接入认证。

一、配置客户端接入认证

背景信息
如果主机需要远程连接数据库,必须在数据库系统的配置文件中增加此主机的信息,并且进行客户端接入认证。配置文件(默认名称为pg_hba.conf)存放在数据库的数据目录里。hba(host-based authentication)表示是基于主机的认证。

本产品支持如下三种认证方式,这三种方式都需要配置“pg_hba.conf”文件。

基于主机的认证:服务器端根据客户端的IP地址、用户名及要访问的数据库来查看配置文件从而判断用户是否通过认证。
口令认证:包括远程连接的加密口令认证和本地连接的非加密口令认证。
SSL加密:使用OpenSSL(开源安全通信库)提供服务器端和客户端安全连接的环境。
“pg_hba.conf”文件的格式是一行写一条信息,表示一个认证规则,空白和注释(以#开头)被忽略。

[omm@worker1 dn1]$ lsbase             gswlm_userinfo.cfg  pg_errorinfo      pg_llog       pg_replslot   pg_twophase              postgresql.conf.lock  server.keycacert.pem       mot.conf            pg_hba.conf       pg_location   pg_serial     PG_VERSION               postmaster.opts       server.key.ciphergaussdb.state    pg_clog             pg_hba.conf.bak   pg_logical    pg_snapshots  pg_xlog                  postmaster.pid        server.key.randglobal           pg_csnlog           pg_hba.conf.lock  pg_multixact  pg_stat_tmp   postgresql.conf          postmaster.pid.lock   undogs_gazelle.conf  pg_ctl.lock         pg_ident.conf     pg_notify     pg_tblspc     postgresql.conf.guc.bak  server.crt[omm@worker1 dn1]$ vim pg_hba.conf

图片

每个认证规则是由若干空格和/,空格和制表符分隔的字段组成。如果字段用引号包围,则它可以包含空白。一条记录不能跨行存在。

1. 以操作系统用户omm登录数据库主节点。
2. 配置客户端认证方式

允许客户端以“jack”用户连接到本机,此处远程连接禁止使用“omm”用户(即数据库初始化用户)。

例如,下面示例中配置允许IP地址为192.0.2.121的客户端访问本机。
gs_guc set -N all -I all -h “host all jack 192.0.2.121/32 sha256”

[omm@worker1 dn1]$ gs_guc set -N all -I all -h "host all jack 192.0.2.121/32 sha256"The gs_guc run with the following arguments: [gs_guc -N all -I all -h host all jack 192.0.2.121/32 sha256 set ].Begin to perform the total nodes: 1.Popen count is 1, Popen success count is 1, Popen failure count is 0.Begin to perform gs_guc for datanodes.Command count is 1, Command success count is 1, Command failure count is 0.
Total instances: 1. Failed instances: 0.ALL: Success to perform gs_guc!
[omm@worker1 dn1]$ 

图片

3. 创建“jack”用户

使用“jack”用户前,需先本地连接数据库,并在数据库中使用如下语句建立“jack”用户:
CREATE USER jack PASSWORD ‘Test@123’;

[root@worker1 mnt]# su - ommLast login: Mon Jun 10 10:04:09 CST 2024 on pts/1[omm@worker1 ~]$ gsql -d postgres -p 15000gsql ((openGauss 6.0.0-RC1 build ed7f8e37) compiled at 2024-03-31 11:59:31 commit 0 last mr  )Non-SSL connection (SSL connection is recommended when requiring high-security)Type "help" for help.
openGauss=# CREATE USER jack PASSWORD 'Test@123';CREATE ROLEopenGauss=# 

图片

-N all表示openGauss的所有主机。

-I all表示主机的所有实例。

-h表示指定需要在“pg_hba.conf”增加的语句。

all表示允许客户端连接到任意的数据库。

jack表示连接数据库的用户。

192.0.2.121/32表示只允许IP地址为192.0.2.121的主机连接。此处的IP地址不能为openGauss内的IP,在使用过程中,请根据用户的网络进行配置修改。32表示子网掩码为1的位数,即255.255.255.255。

sha256表示连接时jack用户的密码使用sha256算法加密。

这条命令在数据库主节点实例对应的“pg_hba.conf”文件中添加了一条规则,用于对连接数据库主节点的客户端进行鉴定。

“pg_hba.conf”文件中的每条记录可以是下面四种格式之一,四种格式的参数说明请参见配置文件参考。
[omm@worker1 dn1]$ vim pg_hba.conf

local DATABASE USER METHOD [OPTIONS]
host DATABASE USER ADDRESS METHOD [OPTIONS]
hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]

因为认证时系统是为每个连接请求顺序检查“pg_hba.conf”里的记录的,所以这些记录的顺序是非常关键的。

说明:
在配置“pg_hba.conf”文件时,请依据通讯需求按照格式内容从上至下配置记录,优先级高的需求需要配置在前面。openGauss和扩容配置的IP优先级最高,用户手动配置的IP请放在这二者之后,如果已经进行的客户配置和扩容节点的IP在同一网段,请在扩容前删除,扩容成功后再进行配置。
因此对于认证规则的配置建议如下: 靠前的记录有比较严格的连接参数和比较弱的认证方法。靠后的记录有比较宽松的连接参数和比较强的认证方法。

说明:

一个用户要想成功连接到特定的数据库,不仅需要通过pg_hba.conf中的规则检查,还必须要有该数据库上的CONNECT权限。如果希望控制某些用户只能连接到指定数据库,赋予/撤销CONNECT权限通常比在pg_hba.conf中设置规则更为简单。

4. 配置客户端认证示例

对应openGauss外部客户端连接,trust为不安全的认证方式,请将认证方式设置为sha256。

[omm@worker1 dn1]$ vim pg_hba.conf

示例
TYPE DATABASE USER ADDRESS METHOD

“local” is for Unix domain socket connections only
#表示只允许以安装时-U参数指定的用户从服务器本机进行连接。
local all all trust
IPv4 local connections:
#表示允许jack用户从192.0.2.121主机上连接到任意数据库,使用sha256算法对密码进行加密。
host all jack 192.0.2.121/32 sha256
#表示允许任何用户从192.0.2.121/24网段的主机上连接到任意数据库,使用sha256算法对密码进行加密,并且经过SSL加密传输。
hostssl all all 192.0.2.121/24 sha256
#表示禁止任何用户从192.0.2.121/32网段的主机上连接到任意数据库。
host all all 192.0.2.121/32 reject

图片

二、SSL证书管理

openGauss默认配置了通过openssl生成的安全证书、私钥。

1、证书生成

在测试环境下,用户可以用通过以下方式进行数字证书测试。在客户的运行环境中,请使用从CA认证中心申请的数字证书。

2、自认证证书生成过程
2.1 搭建CA环境。

–假设用户为omm已存在,搭建CA的路径为test
–以root用户身份登录Linux环境,切换到用户omm

[root@worker1 ~]# su - ommLast login: Tue Jun  4 22:05:29 CST 2024 on pts/0[omm@worker1 ~]$ lsgaussdb_tmp[omm@worker1 ~]$ mkdir test[omm@worker1 ~]$ cd /etc/pki/tls/[omm@worker1 tls]$ lscert.pem  certs  misc  openssl.cnf  private[omm@worker1 tls]$ 

图片

–copy 配置文件openssl.cnf到test下

​​​​​​​

[omm@worker1 tls]$ lscert.pem  certs  misc  openssl.cnf  private[omm@worker1 tls]$ cp openssl.cnf ~/test[omm@worker1 tls]$ cd ~/test[omm@worker1 test]$ lsopenssl.cnf[omm@worker1 test]$ 

图片

–到test文件夹下,开始搭建CA环境
–创建文件夹demoCA./demoCA/newcerts./demoCA/private

​​​​​​​

[omm@worker1 test]$ mkdir ./demoCA ./demoCA/newcerts ./demoCA/private[omm@worker1 test]$ chmod 700 ./demoCA/private[omm@worker1 test]$ 

图片

–创建serial文件,写入01

[omm@worker1 test]$ echo '01'>./demoCA/serial

图片

–创建文件index.txt

​​​​​​​

[omm@worker1 test]$ touch ./demoCA/index.txt[omm@worker1 test]$ 

图片

–修改openssl.cnf配置文件中的参数

​​​​​​​

[omm@worker1 test]$ lsdemoCA  openssl.cnf[omm@worker1 test]$ vim openssl.cnf 
dir  = ./demoCAdefault_md      = sha256

图片

图片

–至此CA环境搭建完成

2.2 生成根私钥。

–生成CA私钥

​​​​​​​

[omm@worker1 test]$ [omm@worker1 test]$ openssl genrsa -aes256 -out demoCA/private/cakey.pem 2048Generating RSA private key, 2048 bit long modulus (2 primes)..........................................+++++..................+++++e is 65537 (0x010001)Enter pass phrase for demoCA/private/cakey.pem:

图片

–设置根私钥的保护密码,假设为Test@123
Enter pass phrase for demoCA/private/cakey.pem:
–再次输入私钥密码 Test@123
Verifying - Enter pass phrase for demoCA/private/cakey.pem:

图片

2.3 生成根证书请求文件。

–生成CA根证书申请文件careq.pem

​​​​​​​

[omm@worker1 test]$ [omm@worker1 test]$ openssl req -config openssl.cnf -new -key demoCA/private/cakey.pem -out demoCA/careq.pemEnter pass phrase for demoCA/private/cakey.pem:

图片

–输入根私钥密码 Test@123

​​​​​​​

[omm@worker1 test]$ [omm@worker1 test]$ openssl req -config openssl.cnf -new -key demoCA/private/cakey.pem -out demoCA/careq.pemEnter pass phrase for demoCA/private/cakey.pem:You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----

图片

–以下名称请牢记,生成服务端证书和客户端证书时填写的信息需要与此处的一致

​​​​​​​

Country Name (2 letter code) [XX]:CNState or Province Name (full name) []:shanxiLocality Name (eg, city) [Default City]:xianOrganization Name (eg, company) [Default Company Ltd]:AbcOrganizational Unit Name (eg, section) []:helloCommon Name (eg, your name or your server's hostname) []:openEmail Address []:
Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:An optional company name []:[omm@worker1 test]$ 

图片

2.4 生成自签发根证书。

–生成根证书时,需要修改openssl.cnf文件,设置basicConstraints=CA:TRUE

[omm@worker1 test]$ vim openssl.cnf

图片

图片


–生成CA自签发根证书

​​​​​​​

[omm@worker1 test]$ [omm@worker1 test]$ openssl ca -config openssl.cnf -out demoCA/cacert.pem -keyfile demoCA/private/cakey.pem -selfsign -infiles demoCA/careq.pemUsing configuration from openssl.cnfEnter pass phrase for demoCA/private/cakey.pem:

图片


–输入根私钥密码 Test@123​​​​​​​

[omm@worker1 test]$ openssl ca -config openssl.cnf -out demoCA/cacert.pem -keyfile demoCA/private/cakey.pem -selfsign -infiles demoCA/careq.pemUsing configuration from openssl.cnfEnter pass phrase for demoCA/private/cakey.pem:Check that the request matches the signatureSignature okCertificate Details:        Serial Number: 1 (0x1)        Validity            Not Before: Jun  9 06:58:22 2024 GMT            Not After : Jun  9 06:58:22 2025 GMT        Subject:            countryName               = CN            stateOrProvinceName       = shanxi            organizationName          = Abc            organizationalUnitName    = hello            commonName                = world        X509v3 extensions:            X509v3 Basic Constraints:                 CA:TRUE            Netscape Comment:                 OpenSSL Generated Certificate            X509v3 Subject Key Identifier:                 2C:49:CE:02:2F:37:8F:AE:3E:5F:83:A9:38:1A:12:16:1B:E1:FB:C0            X509v3 Authority Key Identifier:                 keyid:2C:49:CE:02:2F:37:8F:AE:3E:5F:83:A9:38:1A:12:16:1B:E1:FB:C0
Certificate is to be certified until Jun  9 06:58:22 2025 GMT (365 days)Sign the certificate? [y/n]:y1 out of 1 certificate requests certified, commit? [y/n]yWrite out database with 1 new entriesData Base Updated[omm@worker1 test]$ 

图片

–至此CA根证书自签发完成,根证书demoCA/cacert.pem。

2.5 生成服务端证书私钥。

–生成服务端私钥文件server.key

​​​​​​​

[omm@worker1 test]$ openssl genrsa -aes256 -out server.key 2048Generating RSA private key, 2048 bit long modulus (2 primes)..........................................+++++...................................................................................................+++++e is 65537 (0x010001)Enter pass phrase for server.key:Verifying - Enter pass phrase for server.key:[omm@worker1 test]$ 

图片

–服务端私钥的保护密码,假设为Test@123
Verifying - Enter pass phrase for server.key:
–再次确认服务端私钥的保护密码,即为Test@123

2.6 生成服务端证书请求文件。

–生成服务端证书请求文件server.req

​​​​​​​

[omm@worker1 test]$ openssl req -config openssl.cnf -new -key server.key -out server.reqEnter pass phrase for server.key:You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----

图片

–以下填写的信息与创建CA时的信息一致​​​​​​​

Country Name (2 letter code) [XX]:CNState or Province Name (full name) []:shanxiLocality Name (eg, city) [Default City]:xianOrganization Name (eg, company) [Default Company Ltd]:AbcOrganizational Unit Name (eg, section) []:helloCommon Name (eg, your name or your server's hostname) []:worldEmail Address []:
Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:An optional company name []:[omm@worker1 test]$ 

图片

2.7 生成服务端证书。

–生成服务端/客户端证书时,修改openssl.cnf文件,设置basicConstraints=CA:FALSE

[omm@worker1 test]$ vim openssl.cnf

图片


–修改demoCA/index.txt.attr中属性为no。

[omm@worker1 test]$ vim demoCA/index.txt.attr

图片


–对生成的服务端证书请求文件进行签发,签发后将生成正式的服务端证书server.crt

​​​​​​​

[omm@worker1 test]$ openssl ca  -config openssl.cnf -in server.req -out server.crt -days 3650 -md sha256Using configuration from openssl.cnfEnter pass phrase for ./demoCA/private/cakey.pem:Check that the request matches the signatureSignature okCertificate Details:        Serial Number: 2 (0x2)        Validity            Not Before: Jun  9 07:07:00 2024 GMT            Not After : Jun  7 07:07:00 2034 GMT        Subject:            countryName               = CN            stateOrProvinceName       = shanxi            organizationName          = Abc            organizationalUnitName    = hello            commonName                = world        X509v3 extensions:            X509v3 Basic Constraints:                 CA:FALSE            Netscape Comment:                 OpenSSL Generated Certificate            X509v3 Subject Key Identifier:                 2B:E3:44:16:67:1B:D1:27:C8:8D:9C:F1:02:72:3C:59:D8:26:B0:47            X509v3 Authority Key Identifier:                 keyid:2C:49:CE:02:2F:37:8F:AE:3E:5F:83:A9:38:1A:12:16:1B:E1:FB:C0
Certificate is to be certified until Jun  7 07:07:00 2034 GMT (3650 days)Sign the certificate? [y/n]:

图片

–选择y对证书进行签发
Sign the certificate? [y/n]:y

–选择y,证书签发结束
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

图片

去掉私钥密码保护,方法如下:

–去掉服务端私钥的密码保护

​​​​​​​

[omm@worker1 test]$ openssl rsa -in server.key -out server.keyEnter pass phrase for server.key:writing RSA key[omm@worker1 test]$ 

图片

–如果不去掉服务端私钥的密码保护需要使用gs_guc工具对存储密码进行加密保护

[omm@worker1 test]$ gs_guc encrypt -M server -D ./The gs_guc run with the following arguments: [gs_guc -M server -D ./ encrypt ].Password: gs_guc encrypt -M server [omm@worker1 test]$ 

图片

–根据提示输入服务端私钥的密码,加密后会生成server.key.cipher,server.key.rand两个私钥密码保护文件

2.8 客户端证书,私钥的生成。

生成客户端证书和客户端私钥的方法和要求与服务端相同。

–生成客户端私钥

[omm@worker1 test]$ openssl genrsa -aes256 -out client.key 2048Generating RSA private key, 2048 bit long modulus (2 primes)........+++++...................................................+++++e is 65537 (0x010001)Enter pass phrase for client.key:Verifying - Enter pass phrase for client.key:[omm@worker1 test]$ 

图片

–生成客户端证书请求文件

[omm@worker1 test]$ openssl req -config openssl.cnf -new -key client.key -out client.reqEnter pass phrase for client.key:You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [XX]:CNState or Province Name (full name) []:shanxiLocality Name (eg, city) [Default City]:xianOrganization Name (eg, company) [Default Company Ltd]:AbcOrganizational Unit Name (eg, section) []:helloCommon Name (eg, your name or your server's hostname) []:worldEmail Address []:
Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:An optional company name []:[omm@worker1 test]$ 

图片


–对生成的客户端证书请求文件进行签发,签发后将生成正式的客户端证书client.crt

[omm@worker1 test]$ openssl ca -config openssl.cnf -in client.req -out client.crt -days 3650 -md sha256Using configuration from openssl.cnfEnter pass phrase for ./demoCA/private/cakey.pem:Check that the request matches the signatureSignature okCertificate Details:        Serial Number: 3 (0x3)        Validity            Not Before: Jun  9 07:15:47 2024 GMT            Not After : Jun  7 07:15:47 2034 GMT        Subject:            countryName               = CN            stateOrProvinceName       = shanxi            organizationName          = Abc            organizationalUnitName    = hello            commonName                = world        X509v3 extensions:            X509v3 Basic Constraints:                 CA:FALSE            Netscape Comment:                 OpenSSL Generated Certificate            X509v3 Subject Key Identifier:                 1C:2C:1A:11:FE:56:55:E5:71:78:60:AF:C3:89:B5:7C:E2:C8:DF:F6            X509v3 Authority Key Identifier:                 keyid:2C:49:CE:02:2F:37:8F:AE:3E:5F:83:A9:38:1A:12:16:1B:E1:FB:C0
Certificate is to be certified until Jun  7 07:15:47 2034 GMT (3650 days)Sign the certificate? [y/n]:y1 out of 1 certificate requests certified, commit? [y/n]yWrite out database with 1 new entriesData Base Updated[omm@worker1 test]$ 

图片

去掉私钥密码保护,方法如下:

–去掉客户端私钥的密码保护

[omm@worker1 test]$ openssl rsa -in client.key -out client.keyEnter pass phrase for client.key:writing RSA key[omm@worker1 test]$ 

图片

–如果不去掉客户端私钥的密码保护需要使用gs_guc工具对存储密码进行加密保护

[omm@worker1 test]$ gs_guc encrypt -M client -D ./The gs_guc run with the following arguments: [gs_guc -M client -D ./ encrypt ].Password: gs_guc encrypt -M client [omm@worker1 test]$ 

图片

–根据提示输入客户端私钥的密码,加密后会生成client.key.cipher,client.key.rand两个私钥密码保护文件。
将客户端密钥转化为DER格式,方法如下:

[omm@worker1 test]$ openssl pkcs8 -topk8 -outform DER -in client.key -out client.key.pk8 -nocrypt[omm@worker1 test]$ lsclient.crt  client.key.cipher  client.key.rand  demoCA       server.crt  server.key.cipher  server.reqclient.key  client.key.pk8     client.req       openssl.cnf  server.key  server.key.rand[omm@worker1 test]$ 

图片

三、用SSL进行安全的TCP/IP连接

openGauss支持SSL标准协议(TLS 1.2),SSL协议是安全性更高的协议标准,它们加入了数字签名和数字证书来实现客户端和服务器的双向身份验证,保证了通信双方更加安全的数据传输。

前提条件:
从CA认证中心申请到正式的服务器、客户端的证书和密钥。(假设服务器的私钥为server.key,证书为server.crt,客户端的私钥为client.key,证书为client.crt,CA根证书名称为cacert.pem。)
当用户远程连接到数据库主节点时,需要使用sha256的认证方式。
当内部服务器之间连接时,需要使用trust的认证方式,支持IP白名单认证。
openGauss在数据库部署完成后,默认已开启SSL认证模式。服务器端证书,私钥以及根证书已经默认配置完成。用户需要配置客户端的相关参数。

1、配置客户端参数。

已从CA认证中心申请到客户端默认证书,私钥,根证书以及私钥密码加密文件。假设证书、私钥和根证书都放在“/home/omm”目录。

[omm@worker1 test]$ lsclient.crt  client.key.cipher  client.key.rand  demoCA       server.crt  server.key.cipher  server.reqclient.key  client.key.pk8     client.req       openssl.cnf  server.key  server.key.rand[omm@worker1 test]$ pwd/home/omm/test[omm@worker1 test]$ 

图片

1.1 双向认证需配置如下参数:
[omm@worker1 test]$ [omm@worker1 test]$ export PGSSLCERT="/home/omm/test/client.crt"[omm@worker1 test]$ export PGSSLKEY="/home/omm/test/client.key"[omm@worker1 test]$ export PGSSLMODE="verify-ca"[omm@worker1 test]$ export PGSSLROOTCERT="/home/omm/test/cacert.pem"[omm@worker1 test]$ 

图片

1.2 单向认证需要配置如下参数:

export PGSSLMODE=“verify-ca”
export PGSSLROOTCERT="/home/omm/cacert.pem"

2、修改客户端密钥的权限。

客户端根证书,密钥,证书以及密钥密码加密文件的权限,需保证权限为600。如果权限不满足要求,则客户端无法以SSL连接到openGauss。

[omm@worker1 test]$ chmod 600 client.key[omm@worker1 test]$ chmod 600 client.crt[omm@worker1 test]$ chmod 600 client.key.cipher[omm@worker1 test]$ chmod 600 client.key.rand[omm@worker1 test]$ chmod 600 cacert.pem[omm@worker1 test]$ 

须知: 从安全性考虑,建议使用双向认证方式。 配置客户端环境变量,必须包含文件的绝对路径。

3、验证SSL配置

使用支持SSL的数据库客户端工具(如gsql、psql等)连接到OpenGauss服务器,并检查连接是否使用了SSL。可以通过客户端工具的输出或服务器的日志文件来验证SSL连接是否成功建立。

[omm@worker1 test]$ gsql "sslmode=require host=192.0.2.121 port=15000 user=omm dbname=postgres"gsql: FATAL:  Forbid remote connection with initial user.[omm@worker1 test]$ gsql "sslmode=require host=192.0.2.121 port=15000 user=jack dbname=postgres"Password: gsql ((openGauss 6.0.0-RC1 build ed7f8e37) compiled at 2024-03-31 11:59:31 commit 0 last mr  )SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)Type "help" for help.
openGauss=> 

图片

显示SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)
说明使用了SSL

结语:

本文介绍了在等保要求下为openGauss配置SSL客户端接入认证的过程。通过启用SSL、配置客户端接入认证规则以及验证SSL连接等步骤,可以确保OpenGauss数据库与客户端之间通信的安全性。在配置SSL时,请确保你使用的证书和私钥是有效的,并且与你的openGauss服务器和客户端兼容。同时,需要注意证书管理、权限控制、日志记录和备份恢复等方面的问题,注意保护你的SSL证书和私钥文件,以防止未经授权的访问和使用。如果你在生产环境中使用openGauss,请确保你遵循最佳的安全实践和标准来配置和管理你的SSL连接。以确保整个系统的安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16739.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读】Revisiting the Assumption of Latent Separability for Backdoor Defenses

https://github.com/Unispac/Circumventing-Backdoor-Defenses 摘要和介绍 在各种后门毒化攻击中,来自目标类别的毒化样本和干净样本通常在潜在空间中形成两个分离的簇。 这种潜在的分离性非常普遍,甚至在防御研究中成为了一种默认假设,我…

2024-2025年主流的开源向量数据库推荐

以下是2024-2025年主流的开源向量数据库推荐,涵盖其核心功能和应用场景: 1. Milvus 特点:专为大规模向量搜索设计,支持万亿级向量数据集的毫秒级搜索,适用于图像搜索、聊天机器人、化学结构搜索等场景。采用无状态架…

开源身份和访问管理方案之keycloak(一)快速入门

文章目录 什么是IAM什么是keycloakKeycloak 的功能 核心概念client管理 OpenID Connect 客户端 Client Scoperealm roleAssigning role mappings分配角色映射Using default roles使用默认角色Role scope mappings角色范围映射 UsersGroupssessionsEventsKeycloak Policy创建策略…

【工业场景】用YOLOv8实现火灾识别

火灾识别任务是工业领域急需关注的重点安全事项,其应用场景和背景意义主要体现在以下几个方面: 应用场景:工业场所:在工厂、仓库等工业场所中,火灾是造成重大财产损失和人员伤亡的主要原因之一。利用火灾识别技术可以及时发现火灾迹象,采取相应的应急措施,保障人员安全和…

FlinkCDC 实现 MySQL 数据变更实时同步

文章目录 1、基本介绍2、代码实战 2.1、数据源准备2.2、代码实战2.3、数据格式 1、基本介绍 Flink CDC 是 Apache Flink 提供的一个功能强大的组件,用于实时捕获和处理数据库中的数据变更。可以实时地从各种数据库(如MySQL、PostgreSQL、Oracle、Mon…

金融风控项目-1

文章目录 一. 案例背景介绍二. 代码实现1. 加载数据2. 数据处理3. 查询 三. 业务解读 一. 案例背景介绍 通过对业务数据分析了解信贷业务状况 数据集说明 从开源数据改造而来,基本反映真实业务数据销售,客服可以忽略账单周期,放款日期账单金…

CANMV K230入手体验(1)u盘安装镜像

这是安装镜像后的磁盘管理。 使用镜像文件名为: CanMV-K230_01Studio_micropython_v1.2.2-0-g4b8cae1_nncase_v2.9.0.img。 安装结束。 套件的sd卡损坏,已申请更换。 小伙伴们注意sd卡的问题,一个上午过去了。C... 下图是资源管理器的截…

策略模式-小结

总结一下看到的策略模式: A:一个含有一个方法的接口 B:具体的实行方式行为1,2,3,实现上面的接口。 C:一个环境类(或者上下文类),形式可以是:工厂模式,构造器注入模式,枚举模式。 …

springCloud-2021.0.9 之 GateWay 示例

文章目录 前言springCloud-2021.0.9 之 GateWay 示例1. GateWay 官网2. GateWay 三个关键名称3. GateWay 工作原理的高级概述4. 示例4.1. POM4.2. 启动类4.3. 过滤器4.4. 配置 5. 启动/测试 前言 如果您觉得有用的话,记得给博主点个赞,评论,收…

[FastAdmin] 上传图片并加水印,压缩图片

1.app\common\library\Upload.php 文件 upload方法 /*** 普通上传* return \app\common\model\attachment|\think\Model* throws UploadException*/public function upload($savekey null){if (empty($this->file)) {throw new UploadException(__(No file upload or serv…

windows系统远程桌面连接ubuntu18.04

记录一下自己在配置过程中遇到的问题,记录遇到的两大坑: windows系统通过xrdp远程桌面连接ubuntu18.04的蓝屏问题。参考以下第一章解决。 同一局域网内网段不同的连接问题。参考以下第三章解决,前提是SSH可连。 1. 在ubuntu上安装xrdp 参考&…

逻辑回归不能解决非线性问题,而svm可以解决

逻辑回归和支持向量机(SVM)是两种常用的分类算法,它们在处理数据时有一些不同的特点,特别是在面对非线性问题时。 1. 逻辑回归 逻辑回归本质上是一个线性分类模型。它的目的是寻找一个最适合数据的直线(或超平面&…

23页PDF | 国标《GB/T 44109-2024 信息技术 大数据 数据治理实施指南 》发布

一、前言 《信息技术 大数据 数据治理实施指南》是中国国家标准化管理委员会发布的关于大数据环境下数据治理实施的指导性文件,旨在为组织开展数据治理工作提供系统性的方法和框架。报告详细阐述了数据治理的实施过程,包括规划、执行、评价和改进四个阶…

ESM3(1)-介绍:用语言模型模拟5亿年的进化历程

超过30亿年的进化在天然蛋白质空间中编码形成了一幅生物学图景。在此,作者证明在进化数据上进行大规模训练的语言模型,能够生成与已知蛋白质差异巨大的功能性蛋白质,并推出了ESM3,这是一款前沿的多模态生成式语言模型,…

在大型语言模型(LLM)框架内Transformer架构与混合专家(MoE)策略的概念整合

文章目录 传统的神经网络框架存在的问题一. Transformer架构综述1.1 transformer的输入1.1.1 词向量1.1.2 位置编码(Positional Encoding)1.1.3 编码器与解码器结构1.1.4 多头自注意力机制 二.Transformer分步详解2.1 传统词向量存在的问题2.2 详解编解码…

【黑马点评】 使用RabbitMQ实现消息队列——3.批量获取1k个用户token,使用jmeter压力测试

【黑马点评】 使用RabbitMQ实现消息队列——3.批量获取用户token,使用jmeter压力测试 3.1 需求3.2 实现3.2.1 环境配置3.2.2 修改登录接口UserController和实现类3.2.3 测试类 3.3 使用jmeter进行测试3.4 测试结果3.5 将用户登录逻辑修改回去3.6 批量删除生成的用户…

【安全靶场】信息收集靶场

靶场:https://app.hackinghub.io/hubs/prison-hack 信息收集 子域名收集 1.subfinder files.jabprisons.com staging.jabprisons.com cobrowse.jabprisons.com a1.top.jabprisons.com cf1.jabprisons.com va.cobrowse.jabprisons.com vs.jabprisons.com c…

springboot239-springboot在线医疗问答平台(源码+论文+PPT+部署讲解等)

💕💕作者: 爱笑学姐 💕💕个人简介:十年Java,Python美女程序员一枚,精通计算机专业前后端各类框架。 💕💕各类成品Java毕设 。javaweb,ssm&#xf…

(一)获取数据和读取数据

获取公开数据 下载、爬虫、API 一些公开数据集网站: 爬虫: 发送请求获取网页源代码——解析网页源代码内容,提取数据 通过公开API获取: API定义了两个程序之间的服务合约,即双方是如何使用请求和响应来进行通讯的…

在MacBook Air上本地部署大模型deepseek指南

随着大模型技术的兴起,越来越多的人开始关注如何在本地部署这些强大的AI模型。如果你也想体验大模型的魅力,那么这篇文章将指导你如何在你的MacBook Air上本地部署大模型. 工具准备 为了实现本地部署,你需要以下工具: Ollama&a…