暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【干货攻略】DM登录用户名密码外部存储

达梦E学 2023-05-18
1930

背景
为了避免用户登录数据库时直接接触数据库登录密码,DM提供了一种登录用户名密码外部存储方式,系统管理员可将用户名和密码存储在外部加密的密码文件(wallet 文件)中,用户登录数据库时只需使用配置好的服务名便可成功登录数据库。
体实现分为两步:一是创建 wallet 文件,用于存储服务名、用户名和登录密码。二是配置 dm_svc.conf 文件,设置 wallet 文件路径以及服务名对应的数据库连接地址(IP 和 PORT)。配置完成后用户便可直接通过服务名成功登录数据库。

本章内容已在如下环境中测试:

操作系统:银河麒麟V10

数据库:DM8

相关关键字:用户名密码外部存储、wallet


本次测试的DM8数据库版本号如下:



一、创建wallet文件并配置凭据



1.1 创建测试用户
使用如下语句创建数据库用户DMTEST,指定密码为Dameng123,指定密码策略复杂度为15。
    SQL> create user dmtest identified by Dameng123 password_policy 15;


    1.2 创建wallet文件

    wallet 文件由dmmkstore工具创建。dmmkstore 是 DM 数据库密码命令行管理工具,通过该工具可以创建、访问或修改 wallet 文件。支持跨平台或跨编码下发 wallet 文件。

    执行./dmmkstore -help可查看使用帮助:
      [dmdba@KylinDCA04 bin]$ ./dmmkstore -help
      DM Secret Store Tool: V8
      version: 03134283968-20230103-178822-20033
      dmmkstore [-wrl wrl] [-create] [-list]
      [-viewEntry alias] [-modifyEntry alias secret]
      [-createCredential connect_string username password]
      [-listCredential]
      [-modifyCredential connect_string username password]
      [-deleteCredential connect_string]
      [-cipherName name] [-hashName name] [-help]
      使用-wrl参数可以在/home/dmdba目录下创建wallet文件:
        [dmdba@KylinDCA04 bin]$ ./dmmkstore -wrl home/dmdba/wallet -create
        DM Secret Store Tool: V8
        输入口令:Dameng_123
        再次输入口令:Dameng_123
        执行该命令后,系统生成/home/dmdba/wallet 目录,该目录下生成dmwallet.prikey文件,用于保存凭据(credential)信息。
          [dmdba@KylinDCA04 wallet]$ pwd
          /home/dmdba/wallet
          [dmdba@KylinDCA04 wallet]$ ll
          总用量 4
          -rw-r--r-- 1 dmdba dinstall 1341 58 15:34 dmwallet.prikey

          1.3 配置用户凭据Credential

          wallet 文件用于存储数据库登录信息,以凭据(credential)格式存储。每个凭据包含三个条目(entry):服务名、用户名、密码。可以利用 dmmkstore 工具增加、删除或修改 wallet 文件中的凭据。


          1.3.1配置DMTEST用户凭据:

          使用-createCredential参数创建凭据
            [dmdba@KylinDCA04 bin]$ ./dmmkstore -wrl home/dmdba/wallet -createCredential DM dmtest Dameng123
            DM Secret Store Tool: V8


            输入 Wallet 口令:Dameng_123
            Create credential DM.security.client.connect_string1
            使用-listCredential参数可查看凭据
              [dmdba@KylinDCA04 bin]$ ./dmmkstore -wrl home/dmdba/wallet -listCredential
              DM Secret Store Tool: V8


              输入 Wallet 口令:Dameng_123


              List credential (index: connect_string username)
              1: DM dmtest
              1.3.2配置SYSDBA用户凭据:
                [dmdba@KylinDCA04 bin]$ ./dmmkstore -wrl home/dmdba/wallet -createCredential DM_SYSDBA SYSDBA SYSDBA
                DM Secret Store Tool: V8


                输入 Wallet 口令:Dameng_123
                Create credential DM.security.client.connect_string2
                查看凭据
                  [dmdba@KylinDCA04 bin]$ ./dmmkstore -wrl home/dmdba/wallet -listCredential
                  DM Secret Store Tool: V8


                  输入 Wallet 口令: Dameng_123


                  List credential (index: connect_string username)
                  1: DM dmtest
                  2: DM_SYSDBA SYSDBA


                  二、配置dm_svc.conf


                  启用wallet文件登录,需在客户端dm_svc.conf文件中添加全局配置项wallet_location参数,仅当WALLET_LOCATION 非空时,才可通过 wallet 文件登录数据库。

                  使用全局配置项 WALLET_LOCATION 指定 wallet 文件所在路径,并配置服务名对应的数据库连接地址(IP 和 PORT):
                    [dmdba@KylinDCA04 bin]$ cat etc/dm_svc.conf
                    TIME_ZONE=(480)
                    LANGUAGE=(cn)
                    wallet_location=(/home/dmdba/wallet)
                    DM=(192.168.88.5:5236)
                    DM_SYSDBA=(192.168.88.5:5236)



                    三、登录验证


                    wallet文件登录支持disql、dimp/dexp、dmfldr等工具。

                    使用dm_svc.conf文件中配置的服务名连接串连接数据库,此时使用的是wallet中配置的用户名和密码连接数据库。

                    3.1 disql使用wallet文件登录数据库:
                      [dmdba@KylinDCA04 bin]$ ./disql @DM_SYSDBA
                      服务器[192.168.88.5:5236]:处于普通打开状态
                      登录使用时间 : 14.669(ms)
                      disql V8
                      SQL> select user;
                      行号 USER()
                      ---------- ------
                      1 SYSDBA
                      已用时间: 0.803(毫秒). 执行号:61000.
                      SQL> grant create table to dmtest;
                      操作已执行
                      已用时间: 18.605(毫秒). 执行号:61001.
                      SQL> conn @DM
                      服务器[192.168.88.5:5236]:处于普通打开状态
                      登录使用时间 : 10.939(ms)
                      SQL> select user;
                      行号 USER()
                      ---------- ------
                      1 DMTEST
                      已用时间: 0.647(毫秒). 执行号:61100.
                      SQL> create table t_test(id int, name varchar(20));
                      操作已执行
                      已用时间: 25.638(毫秒). 执行号:61101.
                      3.2 dexp使用wallet文件登录导出数据:
                        [dmdba@KylinDCA04 bin]$ ./dexp @DM file=/dm8/data/dexp.dmp log=/dm8/data/dexp.log
                        dexp V8
                        开始导出模式[DMTEST].....
                        ----- 共导出 0 个SEQUENCE -----
                        ----- 共导出 0 个VIEW -----
                        ----- 共导出 0 个TRIGGER -----
                        ----- 共导出 0 个COMMENT VIEW -----
                        ----- 共导出 0 个COMMENT COL -----
                        ----- 共导出 0 个PROCEDURE -----
                        ----- 共导出 0 个SYNONYM -----
                        ----- 共导出 0 个DBLINK -----
                        ----- 共导出 0 个TRIGGER -----
                        ----- 共导出 0 个PACKAGE -----
                        ----- 共导出 0 个PKG_BODY -----
                        ----- 共导出 0 个OBJECT of NO REFER OTHER CLASS -----
                        ----- 共导出 0 个OBJECT of REFER OTHER CLASS -----
                        ----- 共导出 0 个JCLASS -----
                        ----- 共导出 0 个CLASS_BODY -----
                        ----- 共导出 0 个DOMAIN -----
                        ----- 共导出 0 个PARTITION GROUP -----
                        导出模式下的对象权限...
                        ----- [2023-05-08 16:30:47]导出表:T_TEST -----
                        导出表对象权限...
                        表T_TEST导出结束,共导出 0 行数据
                        模式[DMTEST]导出结束.....
                        成功导出 第1 个SCHEMA :DMTEST
                        共导出 1 个SCHEMA
                        整个导出过程共花费 0.185 s
                        成功终止导出, 没有出现警告
                        3.3 dmfldr使用wallet文件登录实现快速装载:
                          [dmdba@KylinDCA04 bin]$ ./dmfldr @DM CONTROL=\'/dm8/data/t_test.ctl\' LOG=\'/dm8/data/t_test.log\' mode=\'OUT\'
                          dmfldr V8
                          export success.
                          0 行数据已导出
                          用时:5.750(ms)




                          四、管理wallet文件



                          dmmkstore工具可以查看wallet文件中配置的用户名、密码、连接串等信息。如果数据库服务器的用户名密码有更新,则需要同步更新wallet文件。


                          4.1查看凭据

                          查看wallet中凭据存储条目信息:

                            [dmdba@KylinDCA04 bin]$ ./dmmkstore -wrl /home/dmdba/wallet -list
                            DM Secret Store Tool: V8
                            输入 Wallet 口令:
                            DM 密钥存储条目:
                            DM.security.client.connect_string1
                            DM.security.client.connect_string2
                            DM.security.client.password1
                            DM.security.client.password2
                            DM.security.client.username1
                            DM.security.client.username2


                            查看wallet凭据中指定条目值:
                              [dmdba@KylinDCA04 bin]$ ./dmmkstore -wrl /home/dmdba/wallet -viewEntry DM.security.client.connect_string1 -viewEntry DM.security.client.username1 -viewEntry DM.security.client.password1
                              DM Secret Store Tool: V8
                              输入 Wallet 口令:Dameng_123
                              DM.security.client.connect_string1 = DM
                              DM.security.client.username1 = dmtest
                              DM.security.client.password1 = Dameng123


                              4.2 修改凭据
                              如果更新dmtest用户密码,则原wallet文件无法登录:
                                [dmdba@KylinDCA04 bin]$ disql /@DM_SYSDBA
                                服务器[192.168.88.5:5236]:处于普通打开状态
                                登录使用时间 : 18.122(ms)
                                disql V8
                                SQL> alter user dmtest identified by "Dmtest123";
                                操作已执行
                                已用时间: 12.218(毫秒). 执行号:61400.
                                SQL> conn /@DM
                                [-2501]:用户名或密码错误.
                                需同步更新wallet文件中的凭证信息(更新凭证密码):
                                  [dmdba@KylinDCA04 bin]$ ./dmmkstore -wrl /home/dmdba/wallet -modifyEntry DM.security.client.password1 Dmtest123
                                  DM Secret Store Tool: V8
                                  输入 Wallet 口令:Dameng_123
                                  查看凭证中设置的密码:
                                    [dmdba@KylinDCA04 bin]$ ./dmmkstore -wrl /home/dmdba/wallet -viewEntry DM.security.client.password1
                                    DM Secret Store Tool: V8
                                    输入 Wallet 口令: Dameng_123
                                    DM.security.client.password1 = Dmtest123
                                    重新使用更新后的wallet文件登录数据库:
                                      [dmdba@KylinDCA04 bin]$ disql /@DM
                                      服务器[LOCALHOST:5236]:处于普通打开状态
                                      登录使用时间 : 5.820(ms)
                                      4.3 删除凭据
                                      不用的凭证信息可以删除,使用-deleteCredential参数可以删除某凭证信息:
                                        [dmdba@KylinDCA04 ~]$ dmmkstore -wrl /home/dmdba/wallet -deleteCredential DM
                                        DM Secret Store Tool: V8
                                        输入 Wallet 口令: Dameng_123
                                        Delete credential
                                        Delete 1


                                        说明
                                        1、wallet文件登录方式(登录用户名密码外部存储)支持disql、dimp/dexp、dmfldr等工具。但disql的LOGIN 命令不支持利用 wallet 文件登录数据库。
                                        2、DM 管理工具和 JDBC 等接口不支持利用 wallet 文件登录数据库。
                                        3、wallet 文件和dm_svc.conf均在客户端配置。wallet 文件默认使用加密算法DESEDE_CFB,也可以指定其他加密算法。

                                        点击了解前期分享:
                                        【干货攻略】DM8 dmfldr VS MySQL LOAD


                                        END

                                        达梦知识普及

                                        扫码关注我们
                                        学习共享
                                        知识普及

                                        作者:青城
                                        排版:哈哈



                                        文章转载自达梦E学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                        评论