如何保护 JCL FTP 中的存储密码?
Posted
技术标签:
【中文标题】如何保护 JCL FTP 中的存储密码?【英文标题】:How to secure store password in a JCL FTP? 【发布时间】:2018-05-11 10:29:17 【问题描述】:我有以下代码使用 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
/*
它就像一个魅力,问题是我不想将凭据硬编码在 JCL 中。我们如何隐藏它们,让任何有权访问 JCL 的人都看不到连接详细信息?我也想从输出中隐藏凭据,但请注意,我仍然想查看其余信息:传输的字节数、可能的错误消息等。
我想将 SYSTSIN 内容放入文件中,但我会面临同样的问题:任何有权访问该文件的人都会看到该用户并通过。因此,解决这个问题的最佳方法是什么?
【问题讨论】:
不确定为什么这会被否决,这实际上是使用 JCL 进行 FTP 时的一个有效问题和关注 【参考方案1】:我看到的做法是这样的:
//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
AA.SOMETHING.LOGIN
将包含在哪里
123.234.345.67
myuser1 <- replace with ACID for this job
p4ssw0rd <- replace with password for the ACID
AA.SOMETHING.FTP
将包含
ascii
cd infos
PUT 'EF35.LMINFO.D180203' info_180203.txt
AA.SOMETHING.LOGOFF
将包含
QUIT
此 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
这还允许您更改服务器、FTP 命令和注销/清理所有这些,而无需访问登录凭据。
唯一真正的缺点是,如果您需要更新登录凭据,则需要:
-
请求访问文件
编写另一个 JCL,该 JCL 将使用有权访问该文件的 ACID 来更新它
即使考虑到这一点,我仍然认为这是最好的方法。
【讨论】:
它还允许您对多个 FTP 使用相同的登录文件。所以如果密码改变了,你只需要改变一个文件 太棒了!还有两个问题:1)用户和密码会显示在日志输出中吗? 2) 是否可以使用 RACF 或类似工具加密AA.SOMETHING.LOGIN
?只是为了提供二级安全性。谢谢!
当我尝试它时,用户出现在 SYSOUT 中,但密码没有。我从未尝试过加密,但我认为它不起作用,因为在将其传递到 FTP 步骤时无法解密它(无需解密并将其复制到另一个文件,这将我们带回到这里)。
完美,谢谢!我可以在这里看到潜在的改进,请看:ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/…你有什么想法?
我同意你的看法,harrison4【参考方案2】:
harrison4 指出,IBM Communications Server 具有这种解决方案的架构形式,可以使用数据集或 USS 文件。它记录在“z/OS 通信服务器:IP 用户指南和命令”手册中,harrison4 在他的评论中链接到该手册:
https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.halu001/netftp.htm
这可能不用说,但我还是会说。除非加密(未编码,加密),否则将密码存储在数据集或文件中始终是不好的做法。如果您必须这样做,请确保文件权限或安全管理器配置文件尽可能限制对文件/数据集的访问。
【讨论】:
以上是关于如何保护 JCL FTP 中的存储密码?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 iText 7 删除受密码保护的 pdf 中的密码