我有以下代码可连接到COBOL程序中的外部数据库:

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

有没有更好的方法来处理这种情况?

最佳答案

如果它是IBM zOS大型机,则无需提供任何凭证。

您的连接将使用正在运行的作业的用户ID。

您只需要告诉您的DBA该作业将使用什么JCL用户ID。
运行-他将授予您正在使用的计划的访问权限。

关于security - 如何避免在COBOL程序中对凭证进行硬编码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50317586/

10-12 18:24