我有以下代码连接到COBOL程序中的外部DB:
MOVE 'I2SFG04' TO WK-USER
MOVE '12345' TO WK-PASS
EXEC SQL
CONNECT TO :WK-EXT-MACHINE
USER :WK-USER
USING :WK-PASS
END-EXEC.但是您可以猜到,我不想硬编码用户并在COBOL程序中传递。那么,是否有一种安全的方法来存储它们,以便任何有权查看COBOL程序的人都看不到凭据?
我的第一种方法是创建一个包含SYSIN内容的文件(RACF受保护的),这样COBOL程序就可以加载它,但是它不会在源代码中显示。就像这样:
//STEP001 EXEC PGM=IKJEFT01
//STEPLIB DD DSN=I2SJR04.SYS.DBRMLIB,DISP=SHR
//SYSIN DD DSN=EF35.PRIVATE.DB.LOGIN,DISP=SHR
//SYSOUT DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(SSID)
RUN PROGRAM(MYCOBB) PLAN(PLANNAME) -
LIB('I2SJR04.SYS.LOADLIB')
END
/*EF35.PRIVATE.DB.LOGIN文件的内容:
I2SFG04
12345有更好的方法来处理这种情况吗?
发布于 2018-05-17 14:57:29
如果它是IBM,则不需要提供任何凭据。
您的连接将使用运行作业的用户id。
您只需告诉您的DBA,JCL用户的作业将以什么身份运行--然后他将授予您正在使用的计划的访问权限。
发布于 2018-05-18 00:41:44
一个更复杂和安全的解决方案是编写一个简短的汇编程序,从安全系统(RACF、ACF2、绝密)获取用户和密码。
如果您将IBM产品作为您的安全产品,下面是一个叙述:2.1.0/com.ibm.zos.v2r1.ichd100/passret.htm
这种方法所做的是将是否允许获取密码的逻辑交给安全管理员,而不是程序员。您可以向世界展示您的源代码,但是如果安全系统不授予对凭据的访问权限,那么用户看到什么并不重要。另外,这种类型的事情通常可以被审计,所以每次引用用户/密码时,您都可以很容易地获得完整的列表。
发布于 2018-05-16 00:47:53
我能看到的唯一的缺陷是,如果有人在哪里重新编码和重新编译程序,说输出细节。
因此,也许您可以采取其他步骤,使用RACF受保护的程序库,将程序编译到其中。
https://stackoverflow.com/questions/50317586
复制相似问题