谈自动化平台上脚本走查心得

谈自动化平台上脚本走查心得

前言

一、数据库或FTP服务更改

二、执行脚本用户

三、参数判断

四、类型分类

五、总结


前言

        为规避和自查自动化平台上注册的所有类型脚本(shell、bat、python)在执行时存在的安全隐患、参数是否传入正确(或参数是否有为空的判断)、本身逻辑是否存在问题、执行时是否在用root用户调用等相关问题,进行了一次全组的脚本走查工作。

        当时为了减少登录主机执行的风险,在自动化平台上注册了大量的脚本,其中有一些没有经过严格的测试,由于一些脚本执行度较小,有可能一年才会执行一次,所以一直没有发现问题,但在这次走查时发现了大量的隐患。通过这次走查,更改有问题的脚本或程序时,使自己得到了一些心得,想拿出来和大家一起分享一下,所分享的心得纯属本人看法,如有问题或理解不到位的还请大家指出,和大家一起共同成长。

一、数据库或FTP服务更改

        有一些数据库(FTP服务)进行了迁移或是改造,其中IP地址、端口、架构、库或表的权限有可能会发生改变,之前注册的脚本都是统一连接数据库,使用统一的用户和密码进行连接或是获取数据。

        但在走查相关的脚本,进行相关内容的修改时,发现需要修改的地方太多,如果只是一种类型的脚本还好说,一旦多种类型的在进行更改时,即费时还费力,有可能还会漏掉一些脚本或是程序。

        本人的建议是,如果是shell、bat类型的脚本,建立统一的配置文件,该配置文件以key和value的形式进存放,并做好相关的说明,如下内容所示:

#TEST数据库情况说明

DB=TEST

DB_SERVER=192.168.2.1

DB_USER=username

DB_PASSWD=password

DB_PORT=db_port

#FTP服务情况

FTP_SERVER=192.168.2.2

FTP_USER=username

FTP_PASSWD=password

FTP_PORT=ftp_port

……………………………………………………

        如果脚本中有需要连接数据库(或是FTP服务)的要求,可以通过该配置文件的key和对应的value值来获取连接,这样数据库在发生迁移或是改造后,可以直接修改一个配置文件,就可以直接修改掉所有的shell、bat脚本的所有连接数据库(或是FTP服务)的内容,这样可以避免或减少更改的次数,或是避免忘记其中有需要更改的shell或是bat脚本。

        注:如果大家使用了FTP进行文件上传或是下载,最好更改为FTP的虚拟帐号处理或是用SFTP进行传输,SFTP可以避免用户和密码的明文传输,FTP的虚拟帐号可以减少不必要的系统性安全问题等。

        如何使用FTP虚拟帐号登录或配置FTP服务,大家有兴趣的话可以参照我之前写的“Linux下创建FTP虚拟用户的配置过程--非系统账户登陆FTP”。

        使用SFTP进行传输的话,需要用户或密码的交互,主机上需要安装expect命令进行用户或密码的交互,并且需要整理成支持expect的格式命令,进行上传或下载文件。

        Python也可以通过统一配置文件或者数据库表的形式进行统一参数的存放,如果是统一配置文件的话,当配置文件更改后,可以全局生效,但有一个问题是,如果是用的虚拟环境启动的Python接口程序的话,需要重启虚拟环境,但使用数据表进行存放时,只需要修改要改的字段列即可,重新调用时,就可以直接生效,不用重启Python虚拟环境。

        配置文件类似shell和bat的方法,如下所示:

class MySQL_DB(object)

DB='TEST'

DB_SERVER='192.168.2.1'

DB_POER=db_port

DB_USER='username'

DB_PASSWD=password

…………………………………………

       数据库表的形式存放,如下所示:

db_name

db_ip

db_port

db_user

db_passwd

TEST

192.168.2.1

db_port

username

         passwd

二、执行脚本用户

        在自动化平台上注册脚本时,有时候会用到root用户去执行该注册的脚本,或是可以用用户执行的脚本,但还是用root执行,因为root执行方便,不会出现有些权限不足或其它莫名其妙的问题存在。

        这种以root执行的脚本,虽然说带来很大的便利,但无形中也存在一定的风险,所以在自动化平台上注册脚本时一定要根据业务场景去决定,是否需要用root来执行,还是用应用用户来执行。

        如果脚本中有些地方需要用root用户提前做一些操作之后才可以用应用用户操作的话,要做好用户的切换动作,当需要用root用户操作时,可以用root用户操作,需要用应用用户执行的,一定要先切到应用用户之后,再执行操作,避免出现应用用户做其它操作时权限不足的情况发生。

三、参数判断

        虽说自动化平台上支持参数的传递,在自动化平台上执行带参数的脚本时,如果不输入参数,也会提醒要输入参数后才能执行。但为了更安全的执行,需要在脚本中加入对传入参数的判断机制,如果所传入的参数为空时,要退出执行,增加双保险的机制,避免不必要的意外情况发生。

        还需要对传入参数的个数做好判断逻辑,避免出现参数不足时,脚本没有做好参数个数的判断,引起下面的逻辑执行出错等。

四、类型分类

        有的脚本内容是需要根据传入不同的类型分类给出不同的结果,在对这样脚本进行书写时,要提前规划好类型的分类,如:输入A类型,需要根据传入A的类型,输出有关A类型的内容,在做这样的判断时,一定要对传入空类型的情况进行判断和规避,减少输出结果的异常和脚本执行出现意想不到的错误情况等。

五、总结

        综上所述,是自己在对自动平台上走查脚本发现的3大类型问题,也是根据自己本人的理解做出的整改方法,如果大家有更好的方法,欢迎大家一起分享,共同学习和进步。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部