AS/400如何监控ODBC的数据传输?
【AS400教程】ODBC为异种OS访问AS/400提供接口,但是,安全方面的问题也接踵而来,如何有效监控ODBC对AS/400数据的传输?本文将通过Exit Program的方式来进行监控。
QIBM_QTF_TRANSFER(程序1)
PGM PARM(&RC &STRU)
DCL VAR(&RC) TYPE(*CHAR) LEN(1)
DCL VAR(&STRU) TYPE(*CHAR) LEN(80)
DCL VAR(&USER) TYPE(*CHAR) LEN(10) /* user profile*/
DCL VAR(&APP1) TYPE(*CHAR) LEN(10) /* function */
DCL VAR(&APP2) TYPE(*CHAR) LEN(10) /* sub function*/
DCL VAR(&TFOBJ) TYPE(*CHAR) LEN(10) /* file name */
DCL VAR(&TFLIB) TYPE(*CHAR) LEN(10) /*library */
DCL VAR(&TFMBR) TYPE(*CHAR) LEN(10) /* member */
DCL VAR(&TFFMT) TYPE(*CHAR) LEN(10) /* format */
DCL VAR(&TYPE) TYPE(*CHAR) LEN(2) /* journaltype */
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(EXIT))
CHGVAR &RC VALUE(''1'') /* set return code to
allow request unless rejected by program */
CHGVAR &USER VALUE(%SST(&STRU 1 10)) /*user */
CHGVAR &APP2 VALUE(%SST(&STRU 21 10)) /*funct*/
CHGVAR &TFOBJ VALUE(%SST(&STRU 31 10)) /*file */
CHGVAR &TFLIB VALUE(%SST(&STRU 41 10)) /*libr */
CHGVAR &TFMBR VALUE(%SST(&STRU 51 10)) /*mbr */
CHGVAR &TFFMT VALUE(%SST(&STRU 61 10)) /*fmt */
LOG: CHGVAR VAR(&TYPE) VALUE(''X'' *CAT &RC)
SNDJRNE JRN(QAUDJRN) TYPE(&TYPE) ENTDTA(&STRU)
EXIT:ENDPGM
QIBM_QZDA_NDB1(程序2)
PGM PARM(&RC &REQUEST)
DCL VAR(&RC) TYPE(*CHAR) LEN(1) VALUE(''1'')
DCL VAR(&REQUEST) TYPE(*CHAR) LEN(700)
DCL VAR(&TYPE) TYPE(*CHAR) LEN(2)
DCL &X1800 *CHAR 4 VALUE(X''00001800'') /*create database file*/
DCL &X1801 *CHAR 4 VALUE(X''00001801'') /*create source file*/
DCL &X1802 *CHAR 4 VALUE(X''00001802'') /*add member */
DCL &X1803 *CHAR 4 VALUE(X''00001803'') /*clear member */
DCL &X1804 *CHAR 4 VALUE(X''00001804'') /*delete member */
DCL &X1805 *CHAR 4 VALUE(X''00001805'') /*file override */
DCL &X1806 *CHAR 4 VALUE(X''00001806'') /*delete file override*/
DCL &X1807 *CHAR 4 VALUE(X''00001807'') /*create save file */
DCL &X1808 *CHAR 4 VALUE(X''00001808'') /*clear save file */
DCL &X1809 *CHAR 4 VALUE(X''00001809'') /*delete file */
/* OPTIMIZED DATABASE SERVER DECLARES */
DCL &DBFMT *CHAR 8 /* format name */
DCL &DBFID *CHAR 4 /* function identifier */
/* FOLLOWING PARAMETERS ADDITIONAL FOR FORMAT ZDAD0100 */
DCL &DBFILE *CHAR 128 /* file name */
DCL &DBLIB *CHAR 10 /* library name */
DCL &DBMBR *CHAR 10 /* member name */
DCL &DBAUT *CHAR 10 /* authority to file */
DCL &DBBFIL *CHAR 128 /* based on file name */
DCL &DBBLIB *CHAR 10 /* based on library name */
DCL &DBOFIL *CHAR 10 /* override file name */
DCL &DBOLIB *CHAR 10 /* override library name */
DCL &DBOMBR *CHAR 10 /* override member name */
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(EXIT))
/* allow request unless rejected by program */
CHGVAR VAR(&RC) VALUE(''1'')
/* set variables from request description */
CHGVAR VAR(&DBFMT) VALUE(%SST(&REQUEST 21 8))
CHGVAR VAR(&DBLIB) VALUE(%SST(&REQUEST 161 10))
CHGVAR VAR(&DBMBR) VALUE(%SST(&REQUEST 171 10))
CHGVAR VAR(&DBOFIL) VALUE(%SST(&REQUEST 329 10))
CHGVAR VAR(&DBOLIB) VALUE(%SST(&REQUEST 339 10))
CHGVAR VAR(&DBOMBR) VALUE(%SST(&REQUEST 349 10))
LOG:
CHGVAR VAR(&TYPE) VALUE(''Z'' *CAT &RC)
SNDJRNE JRN(QAUDJRN) TYPE(&TYPE) ENTDTA(&REQUEST)
EXIT: ENDPGM
☆具体实施方法:
1、将上述2个程序编译,Owner改为QSECOFR,并使用继续权限。
2、CHGNETA PCSACC(*REGFAC)。
3、使用ADDEXITPGM命令把程序添加到相应的Exit point。
4、可以给这2个程序设置一个权限列表,凡是在权限列表内有权限执行此程序的人才可以利用ODBC下传数据
5、用DSPJRN JRN(QAUDJRN) ENTTYP(Z1)就可以查看下传的数据情况了。
6、可以用WRKREGINF查看Exit program设置情况。
注:需要有QAUDJRN,如没有需先WRKSYSVAL修改系统值QAUDCTL、QAUDLVL,然后CRTJRN创建QAUDJRN和创建QAUDJRN。