GaussDB(DWS) 云端运维系列第四期:集群安全(SSL连接,三权分立)
SSL连接
GaussDB(DWS) 支持SSL认证方式的连接,以加密GaussDB(DWS) 客户端与数据库之间传输的数据。SSL连接方式的安全性高于普通模式,集群默认开启SSL功能允许来自客户端的SSL连接或非SSL连接,从安全性考虑,建议用户在客户端使用SSL连接方式。如果要强制使用SSL连接,需要为集群开启“服务器端是否强制使用SSL连接”。
DWS支持SSL通道加密和证书认证两种方式进行客户端与服务器端的通信。您可以通过服务器端是否强制使用SSL连接进行设置。开关打开,即只能通过SSL方式连接。开关关闭,即两种方式均可。默认关闭。
在集群的“安全设置”页面可以设置是否开启“服务器端是否强制使用SSL连接”。
【说明】
-
修改安全配置参数并保存生效可能需要重启集群,将导致集群暂时不可用。
-
实时数仓暂不支持SSL连接。
-
实时数仓暂不支持MRS数据源连接。
-
修改集群安全配置必须同时满足以下两个条件:
集群状态为“可用”或“低性能”。
任务信息不能处于“创建快照中”、“节点扩容”、“配置中”或“重启中”。
设置SSL连接
-
登录GaussDB(DWS) 管理控制台。
-
在左侧导航树中,单击“集群管理”。
-
在集群列表中,单击指定集群的名称,然后单击“安全设置”。
默认显示“配置状态”为“已同步”,表示页面显示的是数据库当前最新结果。
-
在“SSL连接”区域中,单击“服务器端是否强制使用SSL连接”的设置开关进行设置,建议开启。
:开启,表示服务器端强制要求SSL连接。
:关闭,表示服务器端对是否通过SSL连接不作强制要求,默认为关闭。
说明:
如果使用GaussDB(DWS) 提供的gsql客户端或ODBC驱动,GaussDB(DWS) 支持的SSL协议为TLSv1.2。
如果使用GaussDB(DWS) 提供的JDBC驱动,支持的SSL协议有SSLv3、TLSv1、TLSv1.1、TLSv1.2。客户端与数据库之间实际使用何种SSL协议,依赖客户端使用的JDK(Java Development Kit)版本,一般JDK支持多个SSL协议。
5. 单击“应用”。
系统将自动应用保存SSL连接设置,在“安全设置”页面,“配置状态”显示“应用中”。当“配置状态”显示为“已同步”,表示配置已保存生效。
客户端和服务端SSL连接参数组合情况
客户端最终是否使用SSL加密连接方式、是否验证服务器证书,取决于客户端参数sslmode与服务器端(即GaussDB(DWS) 集群侧)参数ssl、require_ssl。参数说明如下:
ssl(服务器)
ssl参数表示是否开启SSL功能。on表示开启,off表示关闭。
-
对于集群版本高于1.3.1(包括1.3.1)的集群,默认为on,不支持在GaussDB(DWS) 管理控制台上设置。
-
对于集群版本低于1.3.1的集群,默认为on。ssl参数可通过GaussDB(DWS) 管理控制台上集群的“安全设置”页面中的“SSL连接”进行设置。
require_ssl(服务器)
require_ssl参数是设置服务器端是否强制要求SSL连接,该参数只有当ssl为on时才有效。on表示服务器端强制要求SSL连接。off表示服务器端对是否通过SSL连接不作强制要求。
-
对于集群版本高于1.3.1(包括1.3.1)的集群,默认为off。require_ssl参数可通过GaussDB(DWS) 管理控制台上集群的“安全设置”页面中的“服务器端是否强制使用SSL连接”进行设置。
-
对于集群版本低于1.3.1的集群,默认为off,不支持在GaussDB(DWS) 管理控制台上设置。
sslmode(客户端)
可在SQL客户端工具中进行设置。
-
在gsql命令行客户端中,为“PGSSLMODE”参数。
-
在Data Studio客户端中,为“SSL模式”参数。
客户端参数sslmode与服务器端参数ssl、require_ssl配置组合结果如下:
表1 客户端与服务器端SSL参数组合结果
ssl(服务器) |
sslmode(客户端) |
require_ssl(服务器) |
结果 |
on |
disable |
on |
由于服务器端要求使用 SSL,但客户端针对该连接禁用了 SSL,因此无法建立连接。 |
disable |
off |
连接未加密。 |
|
allow |
on |
连接经过加密。 |
|
allow |
off |
连接未加密。 |
|
prefer |
on |
连接经过加密。 |
|
prefer |
off |
连接经过加密。 |
|
require |
on |
连接经过加密。 |
|
require |
off |
连接经过加密。 |
|
verify-ca |
on |
连接经过加密,且验证了服务器证书。 |
|
verify-ca |
off |
连接经过加密,且验证了服务器证书。 |
|
off |
disable |
on |
连接未加密。 |
disable |
off |
连接未加密。 |
|
allow |
on |
连接未加密。 |
|
allow |
off |
连接未加密。 |
|
prefer |
on |
连接未加密。 |
|
prefer |
off |
连接未加密。 |
|
require |
on |
由于客户端要求使用 SSL,但服务器端禁用了 SSL,因此无法建立连接。 |
|
require |
off |
由于客户端要求使用 SSL,但服务器端禁用了 SSL,因此无法建立连接。 |
|
verify-ca |
on |
由于客户端要求使用 SSL,但服务器端禁用了 SSL,因此无法建立连接。 |
|
verify-ca |
off |
由于客户端要求使用 SSL,但服务器端禁用了 SSL,因此无法建立连接。 |
下载SSL证书
GaussDB(DWS) 支持SSL标准协议(TLS 1.2),SSL协议是安全性更高的协议标准,它们加入了数字签名和数字证书来实现客户端和服务器的双向身份验证,保证了通信双方更加安全的数据传输。为支持SSL连接方式,GaussDB(DWS) 已经从CA认证中心申请到正式的服务器、客户端的证书和密钥(假设服务器的私钥为server.key,证书为server.crt,客户端的私钥为client.key,证书为client.crt,CA根证书名称为cacert.pem。)。
GaussDB(DWS) 集群(即服务器端)默认已开启SSL功能允许来自客户端的SSL连接或非SSL连接,并且,GaussDB(DWS) 服务器端的证书、私钥以及根证书已经默认配置完成。
如果客户端或JDBC/ODBC应用程序要使用SSL连接方式,用户必须在客户端或应用程序代码中配置相关的SSL连接参数。GaussDB(DWS) 管理控制台提供了客户端所需的SSL证书,该SSL证书包含了客户端所需的默认证书、私钥、根证书以及私钥密码加密文件。请将该SSL证书下载到客户端所在的主机上,然后在客户端中指定证书所在的路径。
说明:
使用默认的证书可能存在安全风险,为了提高系统安全性,强烈建议用户定期更换证书以避免被破解的风险。如果需要更换证书,请联系客服。
步骤:
-
登录GaussDB(DWS) 管理控制台。
-
在左侧导航栏中,单击“连接管理”。
-
在“下载驱动程序”区域,单击“这里”下载SSL证书文件。
三权分立
介绍
为了保护用户的数据安全,DWS支持使用不同类型的用户分别控制不同权限的三权分立模式。开启此模式后,用户划分为:系统管理员、安全管理员、审计管理员和普通用户,其中三类管理员用户权限彼此分离。
默认权限机制和系统管理员两节的描述基于的是集群创建之初的默认情况。从前面的介绍可以看出,默认情况下拥有SYSADMIN属性的系统管理员,具备系统最高权限。
在实际业务管理中,为了避免系统管理员拥有过度集中的权利带来高风险,可以设置三权分立,将系统管理员的权限分立给安全管理员和审计管理员。
三权分立后,系统管理员将不再具有CREATEROLE属性(安全管理员)和AUDITADMIN属性(审计管理员)能力。即不再拥有创建角色和用户的权限,并不再拥有查看和维护数据库审计日志的权限。关于CREATEROLE属性和AUDITADMIN属性的更多信息请参考CREATE ROLE。
三权分立后,系统管理员只会对自己作为所有者的对象有权限。
三权分立的设置办法请参考设置三权分立部分。
三权分立前的权限详情及三权分立后的权限变化,请分别参见表1和表2。
表1 默认的用户权限
对象名称 |
系统管理员 |
安全管理员 |
审计管理员 |
普通用户 |
表空间 |
对表空间有创建、修改、删除、访问、分配操作的权限。 |
不具有对表空间进行创建、修改、删除、分配的权限,访问需要被赋权。 |
||
表 |
对所有表有所有的权限。 |
仅对自己的表有所有的权限,对其他用户的表无权限。 |
||
索引 |
可以在所有的表上建立索引。 |
仅可以在自己的表上建立索引。 |
||
模式 |
对所有模式有所有的权限。 |
仅对自己的模式有所有的权限,对其他用户的模式无权限。 |
||
函数 |
对所有的函数有所有的权限。 |
仅对自己的函数有所有的权限,对其他用户放在public这个公共模式下的函数有调用的权限,对其他用户放在其他模式下的函数无权限。 |
||
自定义视图 |
对所有的视图有所有的权限。 |
仅对自己的视图有所有的权限,对其他用户的视图无权限。 |
||
系统表和系统视图 |
可以查看所有系统表和视图。 |
只可以查看部分系统表和视图。详细请参见系统表和系统视图。 |
表2 三权分立较非三权分立权限变化说明
对象名称 |
系统管理员 |
安全管理员 |
审计管理员 | 普通用户 | ||||
表空间 |
无变化 |
无变化。 |
||||||
表 |
权限缩小。 只对自己的表有所有权限,对其他用户放在属于各自模式下的表无权限。 |
无变化。 |
||||||
索引 |
权限缩小。 只可以在自己的表上建立索引。 |
无变化。 |
||||||
模式 |
权限缩小。 只对自己的模式有所有的权限,对其他用户的模式无权限。 |
无变化。 |
||||||
函数 |
权限缩小。 只对自己的函数有所有的权限,对其他用户放在属于各自模式下的函数无权限。 |
无变化。 |
||||||
自定义视图 |
权限缩小。 只对自己的视图及其他用户放在public模式下的视图有所有的权限,对其他用户放在属于各自模式下的视图无权限。 |
无变化。 |
||||||
系统表和系统视图 |
无变化。 |
无变化。 |
无变化。 | 无权查看任何系统表和视图。 |
设置三权分立
操作场景
默认情况下,创建GaussDB(DWS) 集群时指定的管理员用户属于数据库的系统管理员,能够创建其他用户和查看数据库的审计日志,即权限不分立,三权分立模式为关闭。
为了保护集群数据的安全,GaussDB(DWS) 支持对集群设置三权分立,使用不同类型的用户分别控制不同权限的模式。
默认的权限模型和开启三权分立后的权限模型,请参见《数据仓库服务数据库开发指南》的三权分立章节。
对系统影响
修改安全配置参数并保存生效可能需要重启集群,将导致集群暂时不可用。
前提条件:
修改集群安全配置必须同时满足以下两个条件:
集群状态为“可用”或“低性能”。
任务信息不能处于“创建快照中”、“节点扩容”、“配置中”或“重启中”。
操作步骤
1. 登录GaussDB(DWS) 管理控制台。
2. 在左侧导航树中,单击“集群管理”。
3. 在集群列表中,单击指定集群的名称,然后单击“安全设置”。
4. 默认显示“配置状态”为“已同步”,表示页面显示的是数据库当前最新结果。
5. 在“安全设置”页面,设置三权分立
表示开启三权分立模式。开启“三权分立”后,分别设置“安全管理员”和“审计管理员”的用户名和密码,系统将会创建这两个用户。使用这两个用户可以连接数据库并执行数据库的相关操作
表示关闭三权分立模式。默认为关闭状态。
图1 安全配置
表1 安全配置参数说明
参数名 |
参数解释 |
样例值 |
安全管理员 |
用户命名要求如下: l 只能由小写字母、数字或下划线组成。 l 必须以小写字母或下划线开头。 l 长度为6~64个字符。 l 用户名不能为GaussDB(DWS) 数据库的关键字。GaussDB(DWS) 数据库的关键字,具体请参见《数据仓库服务数据库开发指南》中关键字章节。 |
security_admin |
密码 |
密码复杂度要求如下: l 密码长度为8~32个字符。 l 不能与用户名或倒序的用户名相同。 l 密码至少包含大写字母、小写字母、数字和特殊字符四类中的三类,其中可输入的特殊字符为:~!@#%^&*()-_=+|[{}];:,<.>/? l 弱口令检查。 |
Dws_2018! |
确认密码 |
再次输入安全管理员密码。 |
- |
审计管理员 |
用户命名要求如下: l 只能由小写字母、数字或下划线组成。 l 必须以小写字母或下划线开头。 l 长度为6~64个字符。 l 用户名不能为GaussDB(DWS) 数据库的关键字。GaussDB(DWS) 数据库的关键字,具体请参见《数据仓库服务数据库开发指南》中关键字章节。 |
audit_admin |
密码 |
密码复杂度要求如下: l 密码长度为8~32个字符。 l 不能与用户名或倒序的用户名相同。 l 密码至少包含大写字母、小写字母、数字和特殊字符四类中的三类,其中可输入的特殊字符为:~!@#%^&*()-_=+|[{}];:,<.>/? l 弱口令检查。 |
Dws_2018! |
确认密码 |
再次输入审计管理员密码。 |
- |
6. 单击“应用”。
7. 在弹出的“保存配置”窗口中,选择是否勾选“立即重启集群”,然后单击“是”。
-
如果勾选“立即重启集群”,系统将保存“安全设置”页面的配置并立即重启集群,集群重启成功后安全设置将立即生效。
-
如果不勾选“立即重启集群”,系统将只保存“安全设置”页面的配置。稍后,用户需要手动重启集群才能使安全设置生效。
-
安全设置完成后,在“安全设置”页面,“配置状态”有如下3种状态:
-
“应用中”:表示系统正在保存配置。
-
“已同步”:表示配置已保存生效。
-
“需重启生效”:表示配置已保存但还未生效。如需生效,需重启集群。
- 点赞
- 收藏
- 关注作者
评论(0)