当前位置:   article > 正文

SQL Server 数据库帐号密码安全设计_数据库用户密码设计模式

数据库用户密码设计模式

一、背景

作为一个DBA,或许你有很多的系统需要管理,而且不同的系统使用了不同的数据库,通常的情况下,我们都是通过sa进行设置密码的,而且在config文件里面明文的写上我们的帐号和密码,这样的设计我们是否太大方了呢?

或许你会说,我们的数据库是安全的,因为我们的数据库是只有内网可以访问的,但是那台机器的安全性呢?因为能进入操作系统就能看到我们的帐号密码了。再加上有些时候我们不希望客户能看到数据库密码的。那么应该如何保证我们的数据库账号密码的安全性呢?

 

二、架构设计

针对上面的安全性问题,我设计了下面的方案,主要是运用加密算法进行加密,再通过分离一些职责,设置几道关卡,加强数据的安全性。

下面是这个方案的总体架构图:


(架构图)

 

三、架构解析说明

1.      程序1,程序2表示我们的应用程序,在程序的config中再也没有明文的数据库帐号和密码的了,它调用一个公用的webservice,只需要传入一个唯一的key值(有DBA发布这个key值),获取数据库IP、帐号、密码;

2.      网页接口调用程序是我们提供的一个webservice,它使用只读帐号视图,查询key值所对应加密后的数据库IP、帐号、密码;如下图所示:

[LinkName] 表示key值;

[En_LinkIP]表示程序需要链接的数据库IP地址;

[En_LinkSa]表示数据库使用的帐号;

[En_LinkPassword]表示数据库帐号所对应的密码;


(只读账号视图)

3.      把上图获取到的数据返回给网页接口调用程序,把这些值以|符号进行串联成一个字符串,再进行二次加密(使用不同的加密算法);再把加密后的字符串返回给程序1、程序2;

4.      当程序拿到这些加密后的字符串后,使用我们发布的DLL进行解密,这里的解密包括两个解密算法,把解密后的值返回给程序;

5.      那这些记录是怎么录入的呢?你猜对了,那就是DBA,DBA收集这些帐号和密码进行管理,只要开发人员告知数据库的相关信息(或许根本就不需要,因为部署是DBA的事情,或许开发人员根本就不需要知道这个数据库在哪里),我就使用单机机密程序,加密我们的数据库IP、帐号、密码,并生成唯一的key值,把这个key告诉开发人员。

把加密后的数据插入到数据库;超级管理员视图如下图所示:


(超级管理员视图)

 

四、特别说明

1.      就安全性考虑,LinkIP的值尽量能使用端口进行设置,修改默认的1433端口;

2.      虽然在程序中可以获取到明文的帐号密码,但是这比明文写在config上要安全很多倍了;

3.      对字符串进行二次加密是为了防止数据的拦截的;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/655193
推荐阅读
相关标签
  

闽ICP备14008679号