IBM DB2ããŒã¿ããŒã¹ç®¡çã·ã¹ãã ã¯ã70幎代ããéçºãéå§ããçŸåšãäŒæ¥ã®DBMSåžå Žã§ç¢ºåºããå°äœãå ããŠãããããã©ãŒãã³ã¹ãä¿¡é Œæ§ãã»ãã¥ãªãã£ãããã³ã¹ã±ãŒã©ããªãã£ã®é«ãèŠä»¶ãæºãããŠããŸãã æ°éã»ââã¯ã¿ãŒã§ã¯ãIBM DB2 Expressã®ç¡æããŒãžã§ã³ãå©çšå¯èœã§ããã«ãããããããDB2ã·ã¹ãã ã¯æ®åããŠããŸããã ãããããããåå ã§ãDB2ã®ã»ããã¢ãããšäœ¿çšã«é¢ããã€ã³ã¿ãŒãããäžã®èšäºã¯ããŸãå€ããããŸããã
DB2ã»ãã¥ãªãã£ã¢ãã«ã«ã¯åºç¯ãªæ©èœããããDBMSèªäœã䜿çšããŠãå€éšã®åœ±é¿ããããŒã¿ãä¿è·ããå éšãŠãŒã¶ãŒã®ã¢ã¯ã»ã¹æš©ãåºå¥ããããšãã§ããŸãã
ãã ããæºåã®æŽã£ãŠããªããŠãŒã¶ãŒããã®å€æ§æ§ããã¹ãŠäžããç解ããããšã¯é£ããããããã®èšäºã§ã¯ããã€ãã®éèŠãªåŽé¢ã«ã€ããŠèª¬æããŸãã
ãšã³ããªãŒãã€ã³ã
DB2ãžã®ãšã³ããªãã€ã³ãã¯æ¬¡ã®ãšããã§ããDBMS->ã€ã³ã¹ã¿ã³ã¹ãç¹å®ã®ããŒãã«ãã€ã³ãã§ããŸã->ç¹å®ã®ããŒã¿ããŒã¹ã®ååã ã»ãã¥ãªãã£èšå®ã¯ãç¹å®ã®ã€ã³ã¹ã¿ã³ã¹ãšç¹å®ã®ããŒã¿ããŒã¹ã®äž¡æ¹ã§å€æŽã§ããŸãã
èªèšŒ
èªèšŒã¯ãDB2ãµãŒããŒã«æ¥ç¶ããããšãããšãã«é©çšãããäž»èŠãªã»ãã¥ãªãã£ã¡ã«ããºã ã§ãã èªèšŒã¯ãæäŸãããè³æ Œæ å ±ãæ£ããããšãæ€èšŒããŸãã DB2ã®äž»ãªæ©èœã¯ããŠãŒã¶ãŒèªèšŒãå€éšãã©ã°ã€ã³ã«ãã£ãŠã®ã¿å®è¡ãããããšã§ãã OracleãMS SQL Serverãšã¯ç°ãªããå éšãŠãŒã¶ãŒã¯ããã«ã¯ååšããŸããã IBM Data Studioããã°ã©ã ã«ãããŠãŒã¶ãŒäœææ©èœã§ãããå®éã«ã¯ãŠãŒã¶ãŒãäœæããŸããããæå®ãããŠãŒã¶ãŒã«ããŒã¿ããŒã¹ã«æ¥ç¶ããç¹æš©ãå²ãåœãŠãŸãã
ããã€ãã®èªèšŒãªãã·ã§ã³ããããŸã;æãŸãããªãã·ã§ã³ã¯ãããŒã¿ããŒã¹ãããŒãžã£ãŒã®AUTHENTICATIONãã©ã¡ãŒã¿ãŒã«ãã£ãŠèŠå¶ãããŸãã ãã®ãã©ã¡ãŒã¿ãŒã®å€ã¯ãã¯ã©ã€ã¢ã³ãèªèšŒãå®è¡ãããå ŽæïŒãµãŒããŒåŽãŸãã¯ã¯ã©ã€ã¢ã³ãåŽïŒãšããŒã¿ãæå·åããã圢åŒã§éä¿¡ããããã©ããïŒ_ENCRYPTã§çµããå€ïŒã«åœ±é¿ããŸãã ãã®ãã©ã¡ãŒã¿ãŒã§ãµããŒããããŠããå€ã¯ã次ã®ã¢ãã¬ã¹ã§å ¥æã§ããŸãã
sysibmadm.dbmcfgããŒãã«ãžã®ã¯ãšãªã䜿çšããŠãããŒã¿ããŒã¹ãããŒãžã£ãŒã®æ§æã衚瀺ã§ããŸããããã®ããã«ã¯ããã¹ãŠã®ããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããå¿ èŠããããŸãããåžžã«ã¢ã¯ã»ã¹ã§ãããšã¯éããŸããã ãµãŒããŒãžã®ããŒã«ã«ã¢ã¯ã»ã¹ãããå Žåã¯ãã³ãã³ãã©ã€ã³ããã»ããµïŒWindowsã§ã¯db2ãŸãã¯db2.exeïŒãéããã€ã³ã¹ã¿ã³ã¹ã«æ¥ç¶ããŠæ¬¡ã®ã³ãã³ããå®è¡ã§ããŸãã
db2 => attach to db2inst1
db2 => get database manager configuration
AUTHENTICATIONã®ããã©ã«ãå€ã¯SERVERã§ãã æäŸããããŠãŒã¶ãŒè³æ Œæ å ±ã®æ€èšŒã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã䜿çšããŠãµãŒããŒåŽã§å®è¡ãããŸããããã¹ãŠã®ããŒã¿ã¯å¹³æã§éä¿¡ãããæ»æè ã«ãã£ãŠååãããå¯èœæ§ããããŸãã
Wiresharkã§ååãããæ å ±ãã©ã®ããã«èŠããããèŠãŠã¿ãŸãããã
EBCDICã衚瀺ãããšãã¯ã©ã€ã¢ã³ãããéä¿¡ããããã°ã€ã³ãšãã¹ã¯ãŒããããã±ãŒãžã«è¡šç€ºãããŸãã
èªèšŒã¿ã€ããSERVER_ENCRYPTã«å€æŽãããšããã°ã€ã³ãšãã¹ã¯ãŒããæå·åããã圢åŒã§éä¿¡ããããµãŒããŒåŽã§ãã§ãã¯ãããŸãã
å€ã¯æ¬¡ã®ããã«å€æŽãããŸãã
db2 => attach to db2inst1
db2 => update database manager configuration using authentication server_encrypt
db2 => db2stop force
db2 => db2start
èªèšŒããã±ãŒãžã¯æ¬¡ã®ããã«ãªããŸãã
ãã ããã¯ãšãªããã¹ããšçµæã¯ã¯ãªã¢ããã¹ãã§éä¿¡ãããŸãã
Wiresharkã®ãªã¯ãšã¹ããã±ããïŒ
Wiresharkå¿çãã±ããïŒ
AUTHENTICATIONãã©ã¡ãŒã¿ãŒãDATA_ENCRYPTã«èšå®ãããŠããå ŽåããŠãŒã¶ãŒè³æ Œæ å ±ã¯æå·åãããã¯ã©ã€ã¢ã³ããšãµãŒããŒéã§éä¿¡ãããæ å ±ãæå·åãããŸãã
å€ã¯äžèšã®äŸãšåæ§ã«å€åããŸãã
db2 => attach to db2inst1
db2 => update database manager configuration using authentication data_encrypt
db2 => db2stop force
db2 => db2start
ãã®åŸãéä¿¡ãããããŒã¿ãæå·åãããŸãã
ãŸããã¯ã©ã€ã¢ã³ãèªèšŒã¿ã€ãã«ã泚æããŠãã ããã ãã®ã¿ã€ãã®èªèšŒã§ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒã®éã«å®å šãªéä¿¡ãã£ãã«ãååšãããšèããããŠããããŠãŒã¶ãŒãã¯ã©ã€ã¢ã³ãã«ã¢ã¯ã»ã¹ã§ããå Žåãè³æ Œæ å ±ã確èªããã«ãµãŒããŒã«ã¢ã¯ã»ã¹ã§ããŸãã ã€ãŸããèªèšŒã¯ã¯ã©ã€ã¢ã³ãåŽã§è¡ããããµãŒããŒåŽã®æ€èšŒã¯å®è¡ãããŸããã ãµãŒããŒã«æ¥ç¶ãããŠãŒã¶ãŒãã¢ã¯ã»ã¹æš©ãæã£ãŠããªããŠããPUBLICã°ã«ãŒãã«å²ãåœãŠãããŠãããã¹ãŠã®ç¹æš©ãååŸããŸãã ãããã£ãŠããã®ã¿ã€ãã®èªèšŒã¯äœ¿çšããªãã§ãã ãããããã«ãããæ»æè ã¯å€ãã®åŽåããããã«ãµãŒããŒã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã
çªç¶äœããã®çç±ã§ãã®ã¿ã€ãã®èªèšŒãå¿ èŠã«ãªã£ãå Žåãæçµçã«ãŠãŒã¶ãŒè³æ Œæ å ±ã®æ€èšŒæ¹æ³ã«åœ±é¿ãäžãã2ã€ã®è¿œå ãã©ã¡ãŒã¿ãŒãããããšãèæ ®ããå¿ èŠããããŸãã ããã¯trust_allclntsãã©ã¡ãŒã¿ãŒã§ãããããã䜿çšããŠä¿¡é Œã§ãããšèŠãªãããã¯ã©ã€ã¢ã³ããæå®ã§ããŸããtrust_clntauthãã©ã¡ãŒã¿ãŒã¯ãæ¥ç¶äžã«è»¢éããããã°ã€ã³ãšãã¹ã¯ãŒãã確èªããå Žæã決å®ããŸãã ãããã®ãã©ã¡ãŒã¿ãŒã¯äž¡æ¹ãšããAUTHENTICATIONãã©ã¡ãŒã¿ãŒãCLIENTã«èšå®ãããŠããå Žåã«ã®ã¿èªèšŒã«åœ±é¿ããŸãã
èªèšŒãæåããå ŽåããŠãŒã¶ãŒIDã¯DB2 IDãšäžèŽããŸãã éåžžãèå¥åã¯ãŠãŒã¶ãŒåãšäžèŽããŸããã倧æåã䜿çšããŸãã
ãã°ã€ã³
æ¿èªããã»ã¹äžã«ããŠãŒã¶ãŒãèŠæ±ããã¢ã¯ã·ã§ã³ã«å¿ èŠãªæš©éããŠãŒã¶ãŒãæã£ãŠãããã©ããããã§ãã¯ãããŸãã DBMSã€ã³ã¹ã¿ã³ã¹ãšããŒã¿ããŒã¹ã®æš©éããããŸãã
ç¹å®ã®ã€ã³ã¹ã¿ã³ã¹ã®æš©éã¬ãã«ã¯ãããŒã¿ããŒã¹ãããŒãžã£ãŒã®æ§æã§æå®ãããŸãã ãããã¯æ¬¡ã®æ©é¢ã§ãã
- SYSADMïŒã·ã¹ãã 管çè ç¹æš©ïŒ
- SYSCTRLïŒã·ã¹ãã 管çæ©é¢ïŒ
- SYSMAINTïŒã·ã¹ãã ã¡ã³ããã³ã¹èªèšŒïŒ
- SYSMONïŒã·ã¹ãã ç£èŠæ©é¢ïŒ
ãããã®ç¹æš©ã¯ããŠãŒã¶ãŒãå±ããã°ã«ãŒããæå®ããããšã«ããèšå®ãããŸãã ãããè¡ãã«ã¯ãdbmcfgãã¡ã€ã«ã®ä»¥äžã®ãã©ã¡ãŒã¿ãŒã䜿çšããŸãïŒäžèšã®èš±å¯ã«åŸã£ãŠïŒã
DB2ããŒã«ã䜿çšããŠã°ã«ãŒãã®äžéšã§ãããŠãŒã¶ãŒã®ãªã¹ããååŸããã®ã¯ç°¡åã§ãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã èªäœã§ãããè¡ãããç¹å®ã®ãŠãŒã¶ãŒãå±ããã°ã«ãŒããåæããå¿ èŠããããŸãïŒã¯ãšãªã®ãæçšãªã¯ãšãªããåç §ïŒã
DB2ãã»ããã¢ãããããšãã¯ãSYSADMæš©éãå²ãåœãŠãããŠãããŠãŒã¶ãŒã®ãªã¹ãã確èªããããšãäžå¯æ¬ ã§ãã ãã®æš©éã«ããããã¹ãŠã®ããŒã¿ããŒã¹ãªããžã§ã¯ãã管çã§ããŸãã
ç¹å®ã®ããŒã¿ããŒã¹ã®è³æ Œæ å ±ã¯ã SYSCAT.DBAUTHãã¥ãŒã§è¡šç€ºã§ããŸã ã ãŠãŒã¶ãŒãããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ã§ãããã©ããã決å®ããCONNECTAUTHç¹æš©ãšããã§ã³ã¹ãããŠããªãããã·ãŒãžã£ããã³é¢æ°ã®äœæãæ åœããNOFENCEAUTHç¹æš©ã«æ³šæããå¿ èŠããããŸãã ãã®ãããªæé ã¯ãããŒã¿ããŒã¹ã®ã¢ãã¬ã¹ç©ºéã§å®è¡ããããšã©ãŒãçºçããå ŽåãããŒã¿ããŒã¹ãšãã®äžã®ããŒãã«ã®æŽåæ§ã«éåããå¯èœæ§ããããŸãã
ç¹å ž
DB2ã®ç¹æš©ã¯ãããŸããŸãªãªããžã§ã¯ãã«ä»äžã§ããŸãã ããŒãã«ã®ã¢ã¯ã»ã¹æš©éã¯ã SYSCAT.TABAUTHãã¥ãŒã§è¡šç€ºã§ããŸãã ä»äžãããç¹æš©ã®ã¿ã€ãã«é¢ããããŒã¿ã¯ãç¹æš©èªäœïŒSELECTAUTHãDELETEAUTHãªã©ïŒã«å¿ããŠåå¥ã®åã«æ ŒçŽãããŸãã REFERENCESããã³UPDATEç¹æš©ã«å¯ŸããŠGRANTã³ãã³ãã䜿çšããŠç¹æš©ãä»äžããå Žåããããã®ç¹æš©ãé©çšãããåã®ååãæå®ã§ããŸãã ããã«é¢ããæ å ±ã¯ã SYSCAT.COLAUTHãã¥ãŒã§èŠã€ããããšãã§ããŸãã
ã«ãŒãã³ïŒé¢æ°ãããã·ãŒãžã£ãŒãããã³ã¡ãœããïŒã®ç¹æš©ã¯ã SYSCAT.ROUTINEAUTHãã¥ãŒã§è¡šç€ºã§ããŸã ã SPECIFICNAMEãã£ãŒã«ããšTYPENAMEãã£ãŒã«ãã«å¿ããŠãããã«ãããã®ã¯ãã¹ãŠäºçŽ°ãªããšã§ã¯ãªããç¹å®ã®ã¹ããŒã ã®ãã¹ãŠã®ã«ãŒãã³ã«ç¹æš©ãä»äžã§ããŸãã
ãŠãŒã¶ãŒãã°ã«ãŒãã圹å²
ãã¹ãŠã®ããŒã¿ããŒã¹èš±å¯ãšããŸããŸãªç¹æš©ããŠãŒã¶ãŒãã°ã«ãŒãããŸãã¯ããŒã«ã«ä»äžã§ããŸãã ãŠãŒã¶ãŒãã°ã«ãŒããããã³ã°ã«ãŒãå ã®ãŠãŒã¶ãŒã¡ã³ããŒã·ããã®ååšã¯ãããŒã¿ããŒã¹èªäœã®å€éšã§èŠå¶ãããŠããŸãã ãã®ç¹ã§ãæš©éãšç¹æš©ãçºè¡ããéã«ã¯ãç¹å®ã®æšå¥šäºé ãèæ ®ããããã€ãã®åŸ®åŠãªç¹ãç¥ã£ãŠããããšããå§ãããŸãã ããŒã¿ããŒã¹ã«ç¹æš©ãšæš©éãç¹ã«ããŒã¿ããŒã¹ã«æ¥ç¶ããæ©èœïŒCONNECTAUTHïŒãã°ã«ãŒãã«ä»äžããããšã¯ãå§ãããŸããã ç¹æš©ã¯ããããå¿ èŠãšããç¹å®ã®ãŠãŒã¶ãŒãŸãã¯ããŒã«ã«ä»äžããå¿ èŠããããŸãã ããŒã«ãµããŒãã¯ãããŒãžã§ã³9.5以éãDB2ã§å°å ¥ãããŸããã ããŒã«ã¡ã³ãã·ãã管çã¯ãããŒã¿ããŒã¹èªäœã®å éšã§å®è¡ãããŸãã
ãŸããDB2ã«ã¯çµã¿èŸŒã¿ã®PUBLICããŒã«ããããŸãã ããŒã¿ããŒã¹ãŠãŒã¶ãŒã¯PUBLICããŒã«ãæäŸããå¿ èŠã¯ãããŸãããPUBLICããŒã«ããŠãŒã¶ãŒããæ€åããããšã¯ã§ããŸããã PUBLICããŒã«ã«ç¹æš©ãä»äžããããšãå®éã«ã¯ãã¹ãŠã®ããŒã¿ããŒã¹ãŠãŒã¶ãŒã«ç¹æš©ãä»äžãããŸãã PUBLICããŒã«ã®ããŒã¿ããŒã¹æš©éã¯ä»äžããªãã§ãã ããã ããŒãã«ããã³ãã¥ãŒã«å¯Ÿããç¹æš©ã¯ã衚瀺ã®ã¿ãç®çãšããŠãåå²ãåœãŠã®å¯èœæ§ãªãã«ã现å¿ã®æ³šæãæã£ãŠçºè¡ããå¿ èŠããããŸãïŒã°ã©ã³ããªãã·ã§ã³ä»ãïŒã
èªèšŒã®æ§è³ªäžãã·ã¹ãã å ã®ãŠãŒã¶ãŒãŸãã¯ã°ã«ãŒãã®ååšã«ã€ããŠç¹æš©ã¯ãã§ãã¯ãããŸããã ãã®çµæãã·ã¹ãã ã®å®éã®ãŠãŒã¶ãŒã«çžãããããšãªããèªèšŒãŠãŒã¶ãŒãã·ã¹ãã ã«è¡šç€ºãããå ŽåããããŸãã 次ã®SQLã¯ãšãªã䜿çšããŠããããã®ãŠãŒã¶ãŒãèŠã€ããããšãã§ããŸãã
SELECT authid FROM sysibmadm.authorizationids WHERE authidtype = 'U' AND authid NOT IN (SELECT username FROM TABLE(sysfun.USERS()) AS W)
ãã®ãããªã°ã«ãŒãã®æ€çŽ¢ã«ã¯åæ§ã®ã¯ãšãªã䜿çšãããŸãããã¯ãšãªã¯PUBLICããŒã¿ã衚瀺ããå¿ èŠããªãããšã瀺ããŠããŸãã
SELECT authid FROM sysibmadm.authorizationids WHERE authidtype = 'G' AND authid NOT IN (SELECT groupname FROM TABLE(sysfun.groups()) AS W) AND authid != 'PUBLIC'
Lbac
DB2ã«ã¯ãããŒãã«å ã®ããŒã¿ã«ã¢ã¯ã»ã¹ããããã®åŒ·åãªã©ãã«ããŒã¹ã®ã¢ã¯ã»ã¹å¶åŸ¡ããããŸãã ãã®ã¡ã«ããºã ã«ãããç¹å®ã®è¡ãŸãã¯åã«ã»ãã¥ãªãã£ã©ãã«ãèšå®ããŠãä¿è·ãããããŒã¿ã«ã¢ã¯ã»ã¹ã§ããªããŠãŒã¶ãŒããã®ååšã«æ°ä»ããªãããã«ããããšãã§ããŸãã 補é å ã«ã¯ãã®ãããã¯ã«é¢ãããã¬ãŒãã³ã°ããã¥ã¢ã«ããããããLBACã®å®è£ æ¹æ³ã«ã€ããŠè©³ãã説æããããšã¯æå³ããããŸããã
www.ibm.com/developerworks/ru/edu/dm0605wong/index.html
èªåã¹ãã£ã³ããŒã«
IBM DB2ãµãŒããŒã®ã»ãã¥ãªãã£ãèšå®ããéã®éèŠãªãã€ã³ãã¯ãã»ãã¥ãªãã£ã¹ãã£ããŒïŒããšãã°ãDB2ãMaxPatrolãªã©ã®NGS SQuirreLïŒã®äœ¿çšã§ãã ã¹ãã£ããŒã¯ãèŠèœãšããèšå®ã®è匱æ§ãæ瀺çã«ç€ºãããåæã«äŸ¿å©ãªåœ¢åŒã§æ å ±ã衚瀺ããŸãã
NGS SQuirreL for DB2ïŒ
MaxPatrolïŒ
䟿å©ãªã¯ãšãªãšã³ãã³ã
ããŒã¿ããŒã¹ãããŒãžã£ãŒã®èšå®ãååŸããŸãã
select name, value from sysibmadm.dbmcfg
ã©ã¡ãã
db2 => get dbm cfg
ããŒã¿ããŒã¹ãããŒãžã£ãŒã®èšå®ãå€æŽããŸãã
db2 => update database manager configuration using
:
db2 => db2stop force
db2 => db2start
:
select name, value from sysibmadm.dbcfg
db2 => get db cfg for
:
select username from table(sysfun.USERS()) AS t
:
select groupname from table(sysfun.GROUPS()) AS t
(, , ):
select AUTHID, AUTHIDTYPE from sysibmadm.AUTHORIZATIONIDS
:
select current server from sysibm.sysdummy1
:
select user from sysibm.sysdummy1
, :
select GROUPNAME from table(sysfun.groups_for_user('<username>')) as t
:
$ db2ls
:
$ db2ilist
:
select * from tabname fetch first 5 rows only