VDS

Vastbase G100和M100数据库专属的图形化开发管理工具,产品具备完善的对象管理、数据管理、PL/SQL程序开发调试、安全审计等功能。

Menu

安全管理

概述

本章节描述VDS的安全管理信息。

请务必使用最新的补丁更新操作系统和相关软件,以防漏洞和其他安全问题。

确保应用程序内存数据安全

如下信息对VDS的安全管理至关重要:

在受信任的环境中运行VDS时,必须防止恶意软件扫描或访问用于存储应用程序数据 (包括敏感信息) 的内存。或者,可以在连接数据库时选择“不保存”,密码就不会保存在内存中。

保存数据加密

如下信息对VDS的安全管理至关重要:

可以从“首选项”页面启用加密选项来对自动保存的数据进行加密。有关加密的具体步骤,请参见备份查询/函数/过程。

SQL历史记录

如下信息对VDS的安全管理至关重要:

  • 历史执行 SQL 脚本未加密。
  • “历史执行 SQL”列表不显示包含如下关键字的敏感查询:

    • Alter Role
    • Alter User
    • Create Role
    • Create User
    • Identified by
    • Password
  • 部分查询语法示例列举如下:

    • ALTER USER name [ WITH ] option [ … ]]
    • CREATE USER name [ [ WITH ] option [ … ] ]
    • CREATE ROLE name [ [ WITH ] option [ … ] ]
    • ALTER ROLE name [ [ WITH ] option [ … ] ]

SSL证书和服务器配置

当对数据传输的安全性要求较高时,建议使用 SSL 连接。使用非 ssl 连接可能存在安全风险。

VDS可以使用安全套接字层[SSL]选项连接到数据库。添加连接需要下列文件:

# 证书/密钥 说明
1 客户端 SSL 证书(client.crt) 由系统/数据库管理员提供。
2 客户端 SSL 密钥(client.key) 由系统/数据库管理员提供。
3 root 证书(cacert.pem) 由系统/数据库管理员提供。
4 SSL密码 由系统/数据库管理员提供。

SSL证书生成和服务器配置

使用openssl工具生成服务端证书、私钥、根证书、客户端证书、客户端私钥、吊销证书列表:

生成证书的步骤如下:

openssl功能版本必须在1.1.1以上,用户可以使用openssl version查看版本。

步骤1:搭建CA环境

1、假设用户vastbase已存在,搭建CA的路径为cadir ,以root用户身份登录Linux环境,切换到用户vastbase,执行如下命令创建ca目录并进入:

mkdir cadir
cd cadir

2、copy 配置文件openssl.cnf到cadir目录下 :

cp /etc/pki/tls/openssl.cnf .

3、开始搭建CA环境

a.创建文件夹demoCA./demoCA/newcerts./demoCA/private 。

mkdir ./demoCA ./demoCA/newcerts ./demoCA/private 
chmod 777 ./demoCA/private 

b.创建serial文件,写入01 。

echo '01'>./demoCA/serial 

c.创建文件index.txt 。

touch ./demoCA/index.txt 

d.修改openssl.cnf配置文件中配置项[ CA_default ]下的dir参数 。

dir  = ./demoCA 
default_md      = sha256 

至此CA环境搭建完成。

步骤2:生成CA私钥

openssl ecparam -out demoCA/private/cakey.pem -name SM2 -genkey

步骤3:生成根请求文件

openssl req -config openssl.cnf -key demoCA/private/cakey.pem -new -out cacert.req

返回内容如下所示,输入对应位置,组织名称等内容:

  • 以下输入的名称请牢记,生成服务器证书和客户端证书时填写的信息需要与此处的 一致 。
  • 其中Common Name可以随意命名。
  • 以下信息可以选择性填写:
    • Email Address []:
    • A challenge password []:
    • An optional company name []
You are about to be asked to enter information that will be incorporated 
into 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 blank 
For some fields there will be a default value, 
If you enter '.', the field will be left blank. 
----- 
Country Name (2 letter code) [AU]:CN 
State or Province Name (full name) [Some-State]:shanxi 
Locality Name (eg, city) []:xian 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Abc 
Organizational Unit Name (eg, section) []:hello 
Common Name (eg, YOUR name) []:world 
Email Address []: 
 
Please enter the following 'extra' attributes 
to be sent with your certificate request 
A challenge password []: 
An optional company name []:

步骤4:生成自签发根证书

1、生成根证书时,需要修改openssl.cnf文件中的配置项[usr_cert]下的basicConstraints参数,打开配置文件:

vi openssl.cnf 

修改内容如下:

basicConstraints=CA:TRUE

2、生成CA自签发根证书 。

openssl ca -config openssl.cnf -in cacert.req -keyfile demoCA/private/cakey.pem -selfsign -out demoCA/cacert.pem

返回内容如下所示:

Check that the request matches the signature 
Signature ok 
Certificate Details: 
        Serial Number: 1 (0x1) 
        Validity 
            Not Before: Feb 28 02:17:11 2017 GMT 
            Not After : Feb 28 02:17:11 2018 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:  
                F9:91:50:B2:42:8C:A8:D3:41:B0:E4:42:CB:C2:BE:8D:B7:8C:17:1F 
            X509v3 Authority Key Identifier:  
                keyid:F9:91:50:B2:42:8C:A8:D3:41:B0:E4:42:CB:C2:BE:8D:B7:8C:17:1F 
Certificate is to be certified until Feb 28 02:17:11 2018 GMT (365 days) 
Sign the certificate? [y/n]:y 
 1 out of 1 certificate requests certified, commit? [y/n]y 
Write out database with 1 new entries 
Data Base Updated 

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

步骤5:生成服务器私钥文件server.key

openssl ecparam -out server.key -name SM2 -genkey

步骤6:生成服务器证书请求文件server.req

openssl req -config openssl.cnf -key server.key -new -out server.req

步骤7:生成服务端证书

openssl req -config openssl.cnf -key server.key -new -out server.req

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

1、打开配置文件。

vi openssl.cnf 

修改内容如下:

basicConstraints=CA:FALSE

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

vi demoCA/index.txt.attr 

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

openssl ca -config openssl.cnf -in server.req -out server.crt -days 3650 

返回如下结果:

  • 以下填写的信息与创建CA时的信息一致。
  • 其中Common Name可以随意命名。
  • 以下信息可以选择性填写:
    • Email Address []:
    • A challenge password []:
    • An optional company name []:
Enter pass phrase for server.key: 
You are about to be asked to enter information that will be incorporated 
into 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 blank 
For some fields there will be a default value, 
If you enter '.', the field will be left blank. 
----- 
Country Name (2 letter code) [AU]:CN 
State or Province Name (full name) [Some-State]:shanxi 
Locality Name (eg, city) []:xian 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Abc 
Organizational Unit Name (eg, section) []:hello 
Common Name (eg, YOUR name) []:world 
Email Address []: 
Please enter the following 'extra' attributes 
to be sent with your certificate request 
A challenge password []: 
An optional company name []:

步骤8:生成客户端私钥

openssl ecparam -out client.key -name SM2 -genkey

步骤9:生成客户端证书请求文件

openssl req -config openssl.cnf -new -key client.key -out client.req

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

openssl ca -config openssl.cnf -in client.req -out client.crt -days 3650 -md sha256

步骤11:配置客户端文件权限

chmod 600 client.key
chmod 600 client.crt
chmod 600 ./demoCA/cacert.pem
chmod 600 server.key
chmod 600 server.crt

步骤12:配置服务器端参数

1、将server.crt,server.key文件拷贝至实例目录下:

cp server.crt server.key ./demoCA/cacert.pem $PGDATA

2、修改postgresql.conf配置文件相关参数:

ssl = on
require_ssl = on
ssl_cert_file='server.crt'
ssl_key_file='server.key'
ssl_ca_file='cacert.pem'
ssl_crl_file = ''
  • ssl:表示是否启动SSL功能。
  • require_ssl:设置服务器端是否强制要求SSL连接。该参数只有当参数ssl为on时才有效。
  • ssl_cert_file:指定服务器证书文件,包含服务器端的公钥。服务器证书用以表明服务器身份的合法性,公钥将发送给对端用来对数据进行加密。
  • ssl_key_file:指定服务器私钥文件,用以对公钥加密的数据进行解密。
  • ssl_ca_file:CA服务器的根证书。此参数可选择配置,需要验证客户端证书的合法性时才需要配置。
  • ssl_crl_file:证书吊销列表,如果客户端证书在该列表中,则当前客户端证书被视为无效证书。

步骤13:配置客户端参数

1、将server.crt,server.key文件拷贝至实例目录下:

export PGSSLCERT="/home/vastbase/cadir/client.crt"
export PGSSLKEY="/home/vastbase/cadir/client.key"
export PGSSLMODE="verify-ca"
export PGSSLROOTCERT="/home/vastbase/data/vastbase/cacert.pem"
  • PGSSLCERT:指定客户端证书文件,包含客户端的公钥。客户端证书用以表明客户端身份的合法性,公钥将发送给对端用来对数据进行加密。
  • PGSSLKEY:指定客户端私钥文件,用以对公钥加密的数据进行解密。
  • PGSSLMODE:设置是否和服务器进行SSL连接协商,以及指定SSL连接的优先级。
  • PGSSLROOTCERT:指定为客户端颁发证书的根证书文件,根证书用于验证服务器证书的有效性。

步骤14:启动数据库实例

vb_ctl start

步骤15:客户端vsql连接服务端

vsql -h 127.0.0.1 -p 5444 -d vastbase -U vbadmin -r