IBM Security Z Security

 View Only
  • 1.  CARLa Custom Reporting for CDT Omegamon Products

    Posted Tue January 30, 2024 07:08 PM
    Hello IBM TechXchange,
    I'm using some of the zSecure panels to model some CARLa code to report on resources in the CDT for the Omegamon products.  See the following result of my madness: 


    Enter GO or RUN to execute commands, SUB or SUBMIT to generate batch job      

    n  n=OMEGAMON segment=base required allowrestrict header=no,                  

     ,                                                                            

     tt="OMEGAMON Products-UACC(NONE) AUDIT(ALL(READ))"                           

     def singledsn("Only one data set per volume",flag,p) boolean,                

         where(singleds)                                                          

     s c=general and s=base c=O*CANDL1 ,                                          

       key=CICS.*.INITIAL  or key=CICS.*.INITIAL0 or                              

       key=CICS.*.INITIAL1 or key=CICS.*.INITIAL2 or                              

       key=CICS.*.INITIAL3 or key=CICS.*.INITIAL4 or                              

                                                                                   

       key=DB2*.INITIAL  or key=DB2*.INITIAL0 or                                  

       key=DB2*.INITIAL1 or key=DB2*.INITIAL2 or                                   

       key=DB2*.INITIAL3 or key=DB2*.INITIAL4 or                                  

                                                                                   

       key=MVS*.INITIAL  or key=MVS*.INITIAL0 or                                   

       key=MVS*.INITIAL1 or key=MVS*.INITIAL2 or                                  

       key=MVS*.INITIAL3 or key=MVS*.INITIAL4                                     

                                                                                   

     sortlist class(tt,page) complex(nd,page) searchkey(nd) segment(nd),          

       "complex"(tt) complex(tt) stamp(tt) segment(tt),                           

       searchkey(nondispl),                                                       

       / "= = = = = = = = = = = = = = = = = = = = = = = ="(cp(7)) "= = = = =      

     = = = = = = = = =",                                                          

       / "Identification",                                                        

       / "--------------",                                                         

       / class(p),                                                                

       / key(0,wrap,p,"Profile name"),                                            

       / proftype(p),                                                              

       / owner(p) owner:name owner:instdata(0,wrap),                              

       / volser(p,0,hor,notempty,ww),                                             

       / ,instdata(p,0,wrap,ne),                                                   

       / appldata(p,wrap,notempty,0), ,                                           

       / acl(sort(USER),header,resolve,51) acl:revoke(hb,1) |,                    

       / acl:revoke_inactive(hb,1) acl:name(trunc) acl:dfltgrp(trunc),            

       / acl:instdata(0,trunc),                                                   

     / / memlst(header,0,sort,hor,ww),                                            

     / / "Safeguards"(38,cp(6)) "Other permissions",                              

       / "----------"(38)       "-----------------",                              

       / notify(8,p)      warning(p,yesno),                                       

       / audits(8,p)      uacc(p),                                                 

       / auditf(8,p)      level(d,p),                                             

       / gaudits(p,allowrestrict,notempty),                                       

       / gauditf(p,allowrestrict,notempty),                                        

       / singledsn(p,ne),                                                         

     / / "Mandatory Access Control"(38,cp(5)) "Statistics",                       

       / "------------------------"(38) "----------",                              

       / seclabel(p)      defdate(p,9),                                           

       / seclevel(p,notempty),                                                    

       / category(p,hor,wrap,0,notempty),                                         

     / auditconcern(d,header,ct,0,wordwrap),                                      

       / userdata(header,0),                                                      

       / cngauth(header,0),                                                       

       / cmdspend(header,0),                                                      

       / cmdsact(header,0),                                                       

       / cmdsinact(header,0),

       / cmdsexec(header,0),             

       / ckgauth_internal(header),      

       / cngother(header,0)             

     

     

    The above CARLa program will create this report for me:

    OMEGAMON Products-UACC(NONE) AUDIT(ALL(READ))OCCANDL1 complex TPX      30Jan2024 02:00 BASE                

                                                                                                                

                                                                                                                

    = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =                                 

    Identification                                                                                             

    --------------                                                                                             

    Class                         OCCANDL1                                                                     

    Profile name                  CICS.*.INITIAL                                                               

    Type                          GENERIC                                                                      

    Owner                         DATASEC                       AADB - SECURITY ADMINISTRATION SERVICES        

                                                                                                                

                                                                                                                

                                                                                                                

                                                                                                                

    Safeguards                             Other permissions                                                   

    ----------                             -----------------                                                   

    User to notify of violation            Allow all accesses    WARNING No                                     

    Audit success access level             Universal access authority    NONE                                  

    Audit failures access level   READ     Resource level                 0                                    

                                                                                                                

    Mandatory Access Control               Statistics                                                          

    ------------------------               ----------                                                          

    Security label                         Creation date                 22Sep2006                             

                                                                                                                

    = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =                                

    Identification                                                                                             

    --------------                                                                                              

    Class                         OCCANDL1                                                                     

    Profile name                  CICS.*.INITIAL0                                                               

    Type                          GENERIC                                                                      

    Owner                         DATASEC                       AADB - SECURITY ADMINISTRATION SERVICES        

                                                                                                                

                                                                                                                

                                                                                                                

                                                                                                                

    Safeguards                             Other permissions                                                   

    ----------                             -----------------                                                   

    User to notify of violation            Allow all accesses    WARNING No                                     

    Audit success access level             Universal access authority    READ                                  

    Audit failures access level   READ     Resource level                 0                                    

                                                                                                                

    Mandatory Access Control               Statistics                                                          

    ------------------------               ----------                                                          

    Security label                         Creation date                 22Sep2006  

     

     

     

     

     

    So far so good (I think) but how would I add to this code to list the access list of userid's who are permitted to these different type 'INITIALn' resources?   I haven't been able to adjust or discover just using the panels and testing different selections. I'm hoping you see a tweak to get that information on the report (if possible).  I'm enjoying our auditor ad-hoc requests for information and using zSecure.  ☹  




    Lynn Gilson

    Sr. Systems Programmer, Ensono, Ltd.

    Phone 630-944-1442  Mobile 818-640-4908

    Web www.ensono.com Email lynn.gilson@ensono.com

    3333 Finley Rd., Downers Grove, IL, 60515

     

    Title: LinkedIn - Description: image of LinkedIn icon Title: Twitter - Description: image of Twitter icon Title: google+ - Description: image of google+ icon

     

     

     

     

    © 2021 Ensono, LP. All rights reserved. Ensono is a trademark of Ensono, LP. The information contained in this communication is confidential, is intended only for the use of the recipient named above, and may be legally privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please resend this communication to the sender and delete the original message or any copy of it from your computer system.



  • 2.  RE: CARLa Custom Reporting for CDT Omegamon Products

    Posted Tue January 30, 2024 08:57 PM

    Hi Lynn, 

    when I review your CARLa code, in principle the produced report should already contain the ACL details of the selected profiles in the O%CANDL1 class. 

    On my system, I do not have the OCCANDLE class, but when I change your select statement and select just one of the defined profiles in the JESSPOOL class like so:

    s c=general and s=base c=JESSPOOL,             
      key=&RACLNDE.STCDBXX.DBXXMSTR.STC*.*.JESMSGLG

    When I use the exact same sortlist statement that you have posted, except from removing the non desired "/" in front of the line that starts with "/ acl:revoke_inactive", my generated report shows a following report layout of the selected JESSPOOL profile:

    OMEGAMON Products-UACC(NONE) AUDIT(ALL(READ))JESSPOOL complex RC1D     16May2022 14:02 BASE
                                                                                                
    = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =                 
    Identification                                                                              
    --------------                                                                              
    Class                         JESSPOOL                                                      
    Profile name                  &RACLNDE.STCDBXX.DBXXMSTR.STC*.*.JESMSGLG                     
    Type                          GENERIC                                                       
    Owner                         CRMA                          CRM MANAGEMENT                  
                                                                                                
    User     Access  ACL id   When                      RI Name                 DfltGrp         
    ------------------------------                      -- ----                 -------         
    CRMAROB  ALTER   CRMA                                  VAN, RON             CRMA            
    CRMARO3  ALTER   CRMA                                  VAN, RON             CRMA            
    CRMARO4  ALTER   CRMA                                  VAN, RON             CRMA            
    CRMARO5  ALTER   CRMA                                  VAN, RON             CRMA            
    CRMASCH  ALTER   CRMA                                  RUSS SCHULTE         CRMA            
    CRMASC2  ALTER   CRMA                               R  RUSS SCHULTE         CRMA            
    CRMASC3  ALTER   CRMA                               R  RUSS SCHULTE         CRMA            
    CRMATST  ALTER   CRMA                                  .©¼½7®Ï.             CRMA            
    CRMBGUS  ALTER   CRMA                                  GUSS WHITE  #1       CRMB            
    CRMCRY7  ALTER   CRMA                                  RANDY JONES TEST     CRMC            

    As illustrated on my education system, the ACL information is correctly retrieved and included in the report that your CARLa code generates. 

    Based on the information that you have provided, it's unclear to me why in your output the ACL information is missing whereas the field names that contain the ACL information and their lookups are part of your sortlist statement.

    Does your RACF input source contain the ACL information? If I may ask, what input source are you using?

    If you use option RA.R to list one of the OCCANDL1 profiles, does that include the ACL information that is missing from your report?

    Does the SYSPRINT work data set contain any warning or error messages that might provide a hint as to what might cause this behavior?

    I hope this helps.



    ------------------------------
    Tom Zeehandelaar
    z/OS Security Enablement Specialist - zSecure developer
    IBM
    ------------------------------



  • 3.  RE: CARLa Custom Reporting for CDT Omegamon Products

    IBM Champion
    Posted Wed January 31, 2024 05:31 AM

    Hey Lynn.

    I wonder if the profiles with an * in the 2nd qualifier are (maybe?) catchall profiles, that have an empty ACL (and UACC=NONE) to prevent unexpected access?  Maybe, there are (many?) more profiles with a valid application name in the 2nd qualifier, with a non-empty ACL?

    Also, the profiles you listed have AUDIT(FAILURE(READ)) and do not audit success.

    Anyway, some optimization options for your CARLa (non-exhaustive list).

    n  n=OMEGAMON segment=base required allowrestrict header=no,                  

     tt="OMEGAMON Products-UACC(NONE) AUDIT(ALL(READ))"

     def singledsn("Only one data set per volume",flag,p) boolean,                

         where(singleds)

     def q1 as word(profile,1,'.')

     def q2 as word(profile,2,'.')

     def q3 as word(profile,3,'.')

     s c=general s=base c=O*CANDL1 ,

       q1=(cics,'db2*','mvs*'),

       q2='*',

       q3=(INITIAL,INITIAL0,INITIAL1,INITIAL2,INITIAL3,INITIAL4)

    The quotes around values with an * prevent the generic pattern matching effect of *, so it looks for the actual star symbol.



    ------------------------------
    Rob van Hoboken
    ------------------------------



  • 4.  RE: CARLa Custom Reporting for CDT Omegamon Products

    Posted Mon February 05, 2024 11:36 AM

    Thanks very much for the help.  I think I got the report auditors needed with your recommendations. 

    Very best regards Tom and Rob!  



    ------------------------------
    Lynn Gilson
    Lynn
    ------------------------------