如何在JCL FTP中保护商店密码?

har*_*on4 7 security ftp mainframe jcl zos

我有以下代码使用JCL通过FTP发送文件:

//FTP00001 EXEC PGM=IKJEFT01,DYNAMNBR=50         
//OUT      DD   SYSOUT=*                         
//AMSDUMP  DD   SYSOUT=*                         
//SYSTSPRT DD   SYSOUT=*                         
//SYSIN    DD   DUMMY                             
//SYSPRINT DD   DUMMY                             
//OUTPUT   DD   SYSOUT=*                         
//SYSTSIN  DD  *                                 
123.234.345.67
myuser1
p4ssw0rd
ascii
cd infos
PUT 'EF35.LMINFO.D180203' info_180203.txt
QUIT
/*
Run Code Online (Sandbox Code Playgroud)

它就像一个魅力,问题是我不想把凭证硬编码在JCL里面.我们怎么能隐藏它们,以便任何有权访问JCL的人都看不到连接细节?我也想从输出中隐藏凭据,但请注意我仍然希望看到其余的信息:传输的字节,可能的错误消息等等.

我想将SYSTSIN内容放在一个文件中,但是我遇到了同样的问题:任何有权访问该文件的人都会看到用户并通过.因此,解决这个问题的最佳方法是什么?

Sag*_*fus 6

我看到它的方式是这样的:

//FTP00001 EXEC PGM=IKJEFT01,DYNAMNBR=50         
//OUT      DD   SYSOUT=*                         
//AMSDUMP  DD   SYSOUT=*                         
//SYSTSPRT DD   SYSOUT=*                         
//SYSIN    DD   DUMMY                             
//SYSPRINT DD   DUMMY                             
//OUTPUT   DD   SYSOUT=*                         
//SYSTSIN  DD  DSN=AA.SOMETHING.LOGIN,DISP=SHR
//         DD  DSN=AA.SOMETHING.FTP,DISP=SHR
//         DD  DSN=AA.SOMETHING.LOGOFF,DISP=SHR
Run Code Online (Sandbox Code Playgroud)

哪里AA.SOMETHING.LOGIN会包含

123.234.345.67
myuser1    <- replace with ACID for this job 
p4ssw0rd   <- replace with password for the ACID
Run Code Online (Sandbox Code Playgroud)

AA.SOMETHING.FTP 会得到什么

ascii
cd infos
PUT 'EF35.LMINFO.D180203' info_180203.txt
Run Code Online (Sandbox Code Playgroud)

AA.SOMETHING.LOGOFF 会包含

QUIT
Run Code Online (Sandbox Code Playgroud)

此JCL将通过批处理ACID运行,只有ACID才能对该AA.SOMETHING.LOGIN文件进行读/写访问.因此FTP服务器需要将ACID添加为用户.这真的是唯一的方法.你是对的,任何有权访问的人都AA.SOMETHING.LOGIN可以看到凭据,但由于我们将登录信息与FTP命令分开,除非用户名/密码或IP地址发生变化,否则没有理由需要访问登录文件.因此,您可以更改您有权访问的文件中的任何内容.您还可以更进一步,而不是将IP地址放在单独的数据集中,这样您就可以编辑/查看除登录凭据之外的任何内容.这看起来像这样:

//FTP00001 EXEC PGM=IKJEFT01,DYNAMNBR=50         
//OUT      DD   SYSOUT=*                         
//AMSDUMP  DD   SYSOUT=*                         
//SYSTSPRT DD   SYSOUT=*                         
//SYSIN    DD   DUMMY                             
//SYSPRINT DD   DUMMY                             
//OUTPUT   DD   SYSOUT=*                         
//SYSTSIN  DD  DSN=AA.SOMETHING.SERVER,DISP=SHR
//         DD  DSN=AA.SOMETHING.LOGIN,DISP=SHR
//         DD  DSN=AA.SOMETHING.FTP,DISP=SHR
//         DD  DSN=AA.SOMETHING.LOGOFF,DISP=SHR
Run Code Online (Sandbox Code Playgroud)

这也允许您在不访问登录凭据的情况下更改服务器,FTP命令和注销/清理.

唯一真正的缺点是,如果您需要更新登录凭据,您需要:

  1. 请求访问该文件
  2. 编写另一个将与有权访问该文件的ACID一起运行的JCL来更新它

即便考虑到这一点,我仍然认为这是最好的方法.

  • 它还允许您为多个FTP使用相同的登录文件.因此,如果密码更改,您只需要更改一个文件 (2认同)