注册
达梦数据库限制用户IP地址
专栏/LeeWen的铺子/ 文章详情 /

达梦数据库限制用户IP地址

LeeWen 2021/09/24 2461 3 0
摘要 达梦数据库限制用户IP地址

简介

达梦数据库中可以通过配置限制用户IP地址和用户访问时间段策略,来保证数据库访问的安全性。IP地址限制和时间段限制是针对于数据库用户,通过对运维用户和业务用户进行不同的访问控制策略的限制可以很好的保障数据的安全性。

手册上提示是DM安全版本提供的功能,经测试企业版本也可以进行配置

使用示例

环境说明

OS:Kylin Linux Advanced Server release V10 (SP1)

DB:DM Database Server 64 V8 1-2-38-21.07.09-143359-10018-ENT(企业版)

IP:192.168.15.35(DB SERVER)

具体相关详细的语法规则参数说明,可以参考:资源限制 | 达梦云适配中心文档 (dameng.com)

可以通过SQL语句进行配置,也可以通过达梦管理工具进行图形化配置。

限制用户IP地址策略配置

IP地址限制规则:

image-20210809174620207

允许IP和禁止IP用于控制此登录是否可以从某个IP访问数据库,其中禁止IP优先。在设置IP时,设置的允许和禁止IP需要用双引号括起来,中间用逗号隔开,如”192.168.0.29”,”192.168.0.30”,也可以利用 * 来设置网段,如”192.168.0.*“。

例如:

(1)只允许TEST用户通过192.168.15.71这个服务器登录:

alter user TEST allow_ip "192.168.15.71";

(2)只允许TEST用户通过192.168.15.35、192.168.15.71这两台服务器登录:

alter user TEST allow_ip "192.168.15.35","192.168.15.71";

(3)只允许TEST用户通过192.168.15和192.168.1这两个网段内的服务器登录:

alter user TEST allow_ip "192.168.15.*","192.168.1.*";

(4)不允许TEST用户通过192.168.15.71这台服务器登录:

alter user TEST not_allow_ip "192.168.15.71";

(5)不允许TEST用户通过192.168.15.35、192.168.15.71这两台服务器登录:

alter user TEST not_allow_ip "192.168.15.35","192.168.15.71";

(6)不允许TEST用户通过192.168.15这个网段的服务器登录:

alter user TEST not_allow_ip "192.168.15.*";

(7)取消所有不允许或者允许的IP限制

alter user "TEST" allow_ip  null;    ---取消所有允许的IP限制
alter user "TEST" not_allow_ip  null;   ---取消所有不允许的IP限制

(8)通过达梦管理工具进行配置

在对应用户,选择"修改" —“连接限制”—“IP限定”,选择添加或者删除。单个IP只能添加一次,只能是允许或者不允许。

演示示例

只允许TEST用户通过192.168.15.71这台机器上进行登录

(1)在数据库服务器(192.168.15.35)上disql登录配置IP登录限制,并进行登录。预期结果:登录成功

[dmdba@localhost bin]$ ./disql SYSDBA

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.087(ms)
disql V8
SQL> alter user TEST allow_ip "192.168.15.71";     ---设置IP登录限制
操作已执行
已用时间: 6.986(毫秒). 执行号:900.
SQL> conn test/123456789                           ---本机登录失败,提示"无效IP"
[-2158]:无效的IP.
SQL> host ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.15.35  netmask 255.255.255.0  broadcast 192.168.15.255
        inet6 fe80::89b7:a6c4:d5cc:d905  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:eb:c8:7f  txqueuelen 1000  (Ethernet)
        RX packets 607005  bytes 802868323 (765.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 85569  bytes 12155360 (11.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2215  bytes 483302 (471.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2215  bytes 483302 (471.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(2)在客户端机器(192.168.15.71)上登录测试。预期结果:登录成功

[dmdba@localhost bin]$ ./disql TEST/123456789@192.168.15.35

Server[192.168.15.35:5236]:mode is normal, state is open    ---登录成功
login used time : 4.355(ms)
disql V8
SQL> select id_code;

LINEID     ID_CODE                                
---------- ---------------------------------------
1          1-2-38-21.07.09-143359-10018-ENT  Pack1

used time: 2.262(ms). Execute id is 1000.
SQL> host ifconfig
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.15.71  netmask 255.255.255.0  broadcast 192.168.15.255
        inet6 fe80::1a2d:8be9:91f6:6b51  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:3c:b1:d9  txqueuelen 1000  (Ethernet)
        RX packets 6678  bytes 607422 (593.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3679  bytes 669619 (653.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens34: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.101  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::3131:aa4b:2604:d803  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:3c:b1:e3  txqueuelen 1000  (Ethernet)
        RX packets 11797  bytes 4764578 (4.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3983  bytes 312610 (305.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(3)在客户端机器(192.168.15.10)上登录测试。预期结果:登录失败

image-20210809170620727

测试结果均符合预期。

不允许TEST用户通过192.168.15.71这台机器进行登录

(1)在数据库服务器(192.168.15.35)上disql登录配置IP登录限制,并进行登录

[dmdba@localhost bin]$ ./disql 
disql V8
用户名:
密码:

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.713(ms)
SQL> alter user TEST not_allow_ip "192.168.15.71";       ---设置IP限制
操作已执行
已用时间: 6.012(毫秒). 执行号:1400.
SQL> conn test/123456789

服务器[LOCALHOST:5236]:处于普通打开状态                     ---登录成功
登录使用时间 : 3.252(ms)
SQL> host ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.15.35  netmask 255.255.255.0  broadcast 192.168.15.255
        inet6 fe80::89b7:a6c4:d5cc:d905  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:eb:c8:7f  txqueuelen 1000  (Ethernet)
        RX packets 607798  bytes 802972891 (765.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 86150  bytes 12372114 (11.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2367  bytes 500103 (488.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2367  bytes 500103 (488.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


SQL> 

(2)在客户端机器(192.168.15.71)上登录测试。预期结果:登录失败

image-20210809171631976

(3)在客户端机器(192.168.15.10)上登录测试。预期结果:登录成功

image-20210809171726414

测试结果均符合预期。

只允许192.168.15 这个网段登录

策略配置如下:

[dmdba@localhost bin]$ ./disql 
disql V8
用户名:
密码:

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.454(ms)
SQL> alter user test not_allow_ip null;
操作已执行
已用时间: 6.655(毫秒). 执行号:1500.
SQL> alter user test allow_ip "192.168.15.*";
操作已执行
已用时间: 3.492(毫秒). 执行号:1501.

需要注意:

​ 当设置只允许网段登录的限制之后,在数据库服务器本机上使用./disql TEST/123456789 这样登录(默认是LOCALHOST:5236)也是无法登录,必须使用./disql TEST/123456789@192.168.15.35:5236才能正常登录。

(1)三台15段的机器登录测试,预期结果:均能正常登录:

###192.168.15.35机器
[dmdba@localhost bin]$ ./disql TEST/123456789@192.168.15.35

服务器[192.168.15.35:5236]:处于普通打开状态
登录使用时间 : 2.257(ms)
disql V8
SQL> host ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.15.35  netmask 255.255.255.0  broadcast 192.168.15.255
        inet6 fe80::89b7:a6c4:d5cc:d905  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:eb:c8:7f  txqueuelen 1000  (Ethernet)
        RX packets 608445  bytes 803031342 (765.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 86603  bytes 12446529 (11.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2636  bytes 524088 (511.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2636  bytes 524088 (511.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

### 192.168.15.71机器
[dmdba@localhost bin]$ ./disql TEST/123456789@192.168.15.35

Server[192.168.15.35:5236]:mode is normal, state is open
login used time : 2.774(ms)
disql V8
SQL> host ifconfig
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.15.71  netmask 255.255.255.0  broadcast 192.168.15.255
        inet6 fe80::1a2d:8be9:91f6:6b51  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:3c:b1:d9  txqueuelen 1000  (Ethernet)
        RX packets 6701  bytes 610474 (596.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3707  bytes 672429 (656.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens34: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.101  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::3131:aa4b:2604:d803  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:3c:b1:e3  txqueuelen 1000  (Ethernet)
        RX packets 12415  bytes 4834857 (4.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4186  bytes 334304 (326.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

###192.168.15.10机器
[dmdba@DaMengDB bin]$ ./disql TEST/123456789@192.168.15.35

服务器[192.168.15.35:5236]:处于普通打开状态
登录使用时间: 2.971(毫秒)
disql V8
SQL> host ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:19:26:F7  
          inet addr:192.168.15.10  Bcast:192.168.15.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe19:26f7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:150770 errors:0 dropped:0 overruns:0 frame:0
          TX packets:120500 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:82072886 (78.2 MiB)  TX bytes:69635793 (66.4 MiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:19:26:01  
          inet addr:192.168.25.10  Bcast:192.168.25.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe19:2601/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6232 errors:0 dropped:0 overruns:0 frame:0
          TX packets:431 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:672839 (657.0 KiB)  TX bytes:77054 (75.2 KiB)

(2)通过将数据库服务器(192.168.15.35)5236端口映射转发到192.168.1.100上的15236端口,进行非192.168.15网段的IP连接测试

① VMware配置端口转发:

image-20210809173101072

② 测试登录,预期结果:登录失败

image-20210809173256198

③ 去掉IP限制,然后测试,预期结果:登录成功

[dmdba@localhost bin]$ ./disql 
disql V8
用户名:
密码:

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.557(ms)
SQL> alter user TEST allow_ip null;
操作已执行
已用时间: 6.929(毫秒). 执行号:1800.

image-20210809173555631

测试结果均符合预期。

只允许除了192.168.15.35和192.168.15.71外的所有192.168.15段的IP访问登录

策略设置:

[dmdba@localhost bin]$ ./disql
disql V8
用户名:
密码:

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.289(ms)
SQL> alter user "TEST" allow_ip "192.168.15.*";
操作已执行
已用时间: 6.274(毫秒). 执行号:2100.
SQL> alter user "TEST" not_allow_ip "192.168.15.71","192.168.15.35";
操作已执行
已用时间: 3.678(毫秒). 执行号:2101.

(1)192.168.15.35上进行登录测试,预期结果:登录失败

image-20210809175646496

(2)192.168.15.71上进行登录测试,预期结果:登录失败

image-20210809175948158

(3)192.168.15.10上进行登录测试,预期结果:登录成功

image-20210809180049743

(4)使用192.168.1网段IP进行登录测试,预期结果:登录失败

image-20210809180228582

测试均符合预期。

特殊示例:同一个IP即允许又不允许的情况(错误策略)

此种情况只能通过SQL语句进行设置,无法通过达梦管理工具进行设置,因为管理工具图形界面中单独的同一个IP只能添加1次。

注意此策略属于错误策略。经测试,会禁止所有IP登录

策略配置:

[dmdba@localhost bin]$ ./disql
disql V8
用户名:
密码:

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.550(ms)
SQL> 
SQL> alter user "TEST" not_allow_ip "192.168.15.71";
操作已执行
已用时间: 5.744(毫秒). 执行号:2300.
SQL> alter user "TEST" allow_ip "192.168.15.71";
操作已执行
已用时间: 27.232(毫秒). 执行号:2301.

经测试,所有的IP均无法使用TEST用户登录。

通过达梦管理工具进行设置IP限制

对应用户,选择"修改" —“连接限制”—“IP限定”,选择添加或者删除。IP:可以是IP段或者单个IP地址,限定的方式:允许或者不允许

注意:单个IP只能添加一次,只能是允许或者不允许

image-20210809181850703

示例:

image-20210809182036983

总结

1、通过配置合理的数据库登录访问策略,可以更好的保障数据的安全;

2、在配置策略时,需要注意,要允许数据库服务器本机能够进行登录;

3、达梦数据库配置IP限制策略可以在线配置并立即生效;

4、手册上提示IP限制是DM安全版本提供的功能,经测试企业版本也可以进行配置;

5、更多资讯请上达梦技术社区了解:https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服