注册
【脑洞打开】一种另辟蹊径免密登录方式
技术分享/ 文章详情 /

【脑洞打开】一种另辟蹊径免密登录方式

气可鼓不可泄 2024/01/31 2387 2 0

最近对在鼓捣disql 希望可以自定义一些好玩的东西,来更快捷的实现登录,本方案借助于达梦提供的外部加密的密码文件,在登录的时候通过读取密码文件来实现代填用户名和密码。这种代填密码的方式在其他的软件中也有广泛的应用

概述

具体实现分两步,

  1. 配置用户名/密码组合的密码文件
  2. 配置disql实现自定义效果

配置密码文件

具体实现分为两步:一是创建 wallet 文件,用于存储服务名、用户名和登录密码。二是配置 dm_svc.conf 文件,设置 wallet 文件路径以及服务名对应的数据库连接地址(IP和 PORT)。配置完成后用户便可直接通过服务名成功登录数据库。 -- 来自于达梦安全管理手册

[dmdba@VM-20-12-centos bin]$ ./dmmkstore -wrl /home/dmdba -create DM Secret Store Tool: V8 Enter password: mkstore-86508: Invalid password: Passwords length [9, 48], and contain uppercase and lowercase characters combined with numbers and special characters. Enter password: Enter password again: mkstore-86509: Passwords did not match. ## 在这一步指定 密码文件的密码 [dmdba@VM-20-12-centos bin]$ ./dmmkstore -wrl /home/dmdba -create DM Secret Store Tool: V8 Enter password: Enter password again: mkstore-86509: Passwords did not match. [dmdba@VM-20-12-centos bin]$ ./dmmkstore -wrl /home/dmdba -create DM Secret Store Tool: V8 Enter password: Enter password again: ## 在这一步指定 用户/密码/服务名组合 [dmdba@VM-20-12-centos bin]$ ./dmmkstore -wrl /home/dmdba -createCredential dm_user 用户名 密码 DM Secret Store Tool: V8 Enter wallet password: Create credential DM.security.client.connect_string1 [dmdba@VM-20-12-centos bin]$ ./dmmkstore -wrl /home/dmdba -listCredential DM Secret Store Tool: V8 Enter wallet password: List credential (index: connect_string username) 1: dm_user SYSDBA ## 自定义dm_svc.conf 文件目录 [dmdba@VM-20-12-centos ~]$ export DM_SVC_PATH="/home/dmdba" [dmdba@VM-20-12-centos ~]$ cat dm_svc.conf WALLET_LOCATION=(/home/dmdba) ## 此处需要指定密码文件所在的目录 TIME_ZONE=(+8:00) dm_user=(127.0.0.1:5236) [dm_user]

封装disql 工具实现自定义登录

也可以做一些复杂的封装实现更多的效果,具体就要看脑洞怎么样了

vim newdisql chmod +x newdisql ### 将如下内容复制到newdisql中 PRG="$0" PRGDIR=`dirname "$PRG"` ################################################# ## 我这里使用默认的DM_HOME变量,如果有单独的disql 工具目录,可以进行修改,并记得将disql 工具目录添加到LD_LIBRARY_PATH中 cd "$PRGDIR/.." #DM_HOME=`pwd` cd "$DM_HOME/bin" ################################################# sed -i '4s/.*/dm_user=($1)/g' dm_svc.conf "$DM_HOME/bin/disql" /@dm_user ## 也可以增加 rlwrap 实现上下左右键的使用 ## rlwrap"$DM_HOME/bin/disql" /@dm_user

做一些登录效果

export DM_SQLPATH="/home/dmdba" [dmdba@VM-20-12-centos ~]$ cat login.sql set time on column instance_name new_value instance_name select instance_name from v$instance; column user_name new_value user_name select user user_name from dual; column HOST_NAME new_value HOST_NAME select HOST_NAME from v$instance; set sqlprompt "&user_name'@'&HOST_NAME(&instance_name) SQL>"

效果展示

此处我的两个实例的密码都是一样的,因此才能有如此效果,如果用户名密码不一样,就要配置多种组合,并通过脚本来做ip的替换

登录效果展示
这样就可以实现安全的免密登录了

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服