Utilisateurs IBM i et droits


La gestion de la sécurité s'appuie sur la notion de profil utilisateur (objet *USRPRF dans QSYS)


La notion d'environnement s'appuie elle sur la notion de JOBD (objet *JOBD dans la bibliothèque de votre choix)
   n utilisateurs utilisant la même JOBD.

 

• Pour créer une JOBD : CRTJOBD



Remarquez les paramètres :

CRTJOBD, suite ...

Ici :


• Pour gérer la liste des utilisateurs : WRKUSRPRF *ALL


l'option 1 permet de créer un nouvel utilisateur :


remarquons les paramètres :



sur cet écran nous pouvons attribuer à l'utilisateur :

La gestion des utilisateurs pouvant aussi être réalisée depuis NAVIGATOR for i :


La gestion des droits est la base de la sécurité sur IBM i.

 

Tout objet possède des droits privés (nomminatifs) et des droits publics
(indiquant les droits par défaut pour un utilisateur non sité , matérialisés par *PUBLIC)

Les droits sont révisables par EDTOBJAUT (WRKOBJ/opt 2) et WRKAUT pour les fichiers IFS.

F11 permet de voir le détail, soit :


Là encore, vous pouvez utiliser Navigator for i





Quelques conseils :

  Utilisez au maximum la notion de groupe

  1/ groupe d'utilisateur d'une part (profil de groupe)
  2/ groupe d'objets d'autre part.
     et c'est la partie la plus délicate, en effet la notion de groupe       d'objets est représentée sur IBM i,  par les bibliothèques, or les       droits que vous indiquez sur la bibliothèque ne permettent pas de       préciser ce qu'il est possible de faire AVEC LES OBJETS de celle-ci.
    ==> une bibliothèque est un bon moyen d'INTERDIRE.
     mais pour les utilisateurs ayant le droit d'utiliser la bibliothèque       il faudra être plus précis.
     La meilleure solution semble être les listes d'autorisations

 
le principe est de pouvoir définir un "modèle" de droits (une règle)         et d'appliquer ensuite cette règle à x objets.
Le système identifie la liste d'autorisation comme un type         d'objet *AUTL attaché à la bibliothèque QSYS. 

 

     Ordre de recherche des autorisations sur un objet 
    ---------------------------------------------------
     1/ avec le profil de référence           + le profil est il de type QSECOFR ?------OUI ----------->!                                                NON                  !                                                 !                   !           + le profil a-t-il des droits sur l'objet OUI ----------->!                                                NON                  !                                                 !                   !           + le profil est-il indiqué dans la liste  OUI ----------->!                d'autorisation (s'il y a une liste)                  !                                                NON                  !                                                 !                   !       2/ avec le profil de groupe (n fois)      !                   !                  (s'il n'y a pas de profil de groupe -->  3/ )      !                                                 !                   !           + le groupe est il SPCAUT(*ALLOBJ) ?  !   OUI ----------->!                                               NON                  !                                                 !                   !           + le groupe a-t-il des droits sur l'objet OUI ----------->!                                                NON                  !                                                 !                   !
                                               !                   !           + le groupe est-il indiqué dans la liste  OUI ----------->!                d'autorisation (s'il y a une liste)                  !                                                NON                  !                                                 !                   !       3/ avec *PUBLIC                           !                   !                                                 !                   !           + *PUBLIC est-il indiqué sur l'objet  !   OUI ----------->!                                                NON                  !                                                 !                   !           + *PUBLIC EST indiqué dans la liste --------------------->!                                                                         ! 
                                                                   !               #######################                               !               # les droits trouvés  # <-----------------------------!                 #  sont appliqués  #               ####################### 

Quelques remarques

Exemple de mise en place



WRKOBJ COMPTA



Révision des droits


Pour les bibliothèques CPTAGEN / CPTAANA et le répertoire /home/COMPTA, la règle est désormais :

  • QSECOFR a tous les droits (de toutes façons...)
  • GRPCOMPTA a le droit de faire des modifications
  • GRPDRH n'a que le droit de lecture
  • tous les autres (*PUBLIC) n'ont aucun droit


L'option Sécurité de Navigator for i, permet de définir les principales options de sécurité

 

Quelques valeurs système liées à la sécurité :

indiquent le nombre de tentatives d'ouverture de session infructueuses admises et l'action à entreprendre :

     

affiche des informations sur la dernière ouverture de session et le nombre de tentatives infructueuses :

    indique si un profil de type *SECOFR(*ALLOBJ ou *SERVICE) peut se signer sur n'importe quel écran :

    .

    indique un temps d'inactivité maxi (sans E/S écran), ce paramètre est reconnu par TELNET.

    .

    indique si des objets sensibles peuvent être restaurés

    indique la liste des personnes habilitées à gérer des programmes adoptant

    Qu'est-ce qu'un programme adoptant les droits du propriétaire ou "en *OWNER " :

    Il s'agit d'un attribut lié à un programme compilé indiquant que pendant l'exécution de ce programme, toute personne qui va en demander l'exécution (si elle possède le droit d'exécution) aura, pendant cette exécution uniquement, les droits du propriétaire du programme ajoutés à ces propres droits.

    Cela permet de placer dans un programme, CL par exemple, une commande qui serait autrement interdite.

    Deux paramètres sont à considérer :

    USRPRF(*OWNER) indiqué lors d'une compilation ou par CHGPGM

    USEADPTAUT(*YES) indiqué sur CHGPGM qui indique que si ce programme est appelé par un programme en OWNER, cet attribut se répercute en cascade
    (*NO par défaut)

 

    ·       Cas particuliers

    les fichiers IFS

    difficiles à gérer,

    - ne respectent pas la notion de programme adoptant (en *Owner)

    - utilisez au maximum la notion d'héritage à la création

        *INDIR sur la commande MKDIR pour les répertoires

        Pour les droits sur objets pour un fichier stream, le propriétaire du fichier (le créateur) aura les mêmes droit que le propriétaire du répertoire.
           le groupe principal aura les même droit que le groupe principal du répertoire
           *PUBLIC aura les mêmes droits que *PUBLIC sur le répertoire.
       
    Imaginons un répertoire DIR1 ayant :

     
    Objet  . . . . . . . . . . . . :   /DIR1               
    Type . . . . . . . . . . . . . : DIR
    Propriétaire . . . . . . . . . : QPGMR

    Droits sur ---Droits sur objet----
    Opt Utilisat données Exist Gest Modif Réf

    *PUBLIC *R X
    QPGMR *RW X

    la création d'un fichier par FORMATION1 donnera les droits :

    Imaginons un répertorie DIR1 ayant 
    Objet  . . . . . . . . . . . . :   /DIR1/fichier.txt               
    Type . . . . . . . . . . . . . : DIR
    Propriétaire . . . . . . . . . : FORMATION1

    Droits sur ---Droits sur objet----
    Opt Utilisat données Exist Gest Modif Réf

    *PUBLIC *R X
    FORMATION1 *RW X


    Les droits sur les données sont attribués par la commande de création, voyez

    http://www-912.ibm.com/s_dir/SLKBase.nsf/0/e3dc97d7f1aeaf348625685f005c6263?OpenDocument


     

    les fichiers spools.

    la règle est la suivante :

    par défaut, tout le monde peut accéder et manipuler ses propres spools
    avec une OUTQ DSPDTA(*YES), toute personne ayant les droits de lecture sur l'outq peut consulter les spools des autres (ce n'est pas la valeur par défaut)

    - le profil utilisateur possède un attribut droits spéciaux pouvant être *JOBCTL et/ou *SPLCTL
    - l'OUTQ en possède un paramètre OPRCTL

    • avec OPRCTL(*YES), toute personne ayant les droits *JOBCTL peut gérer tous les spools de cette OUTQ.
    • avec OPRCTL(*NO), les droits de l'OUTQ sont alors considérés pour déterminer qui peut manipuler les spools de l'OUTQ :
         > AUTCHK(*OWNER) il faut être le propriétaire de l'OUTQ
         > AUTCHK(*DTAAUT) il faut avoir les droits *CHANGE sur l'outq

    • ATTENTION le droit spécial *SPLCTL donne le droit de gérer les spools d'une OUTQ quelque soit le paramétrage de cette dernière (c'est un peu comme *ALLOBJ , mais sur les spools), sauf à interdire explicitement la bibliothèque de l'OUTQ (enlever le droit *Execute) .

 

 

Ces restrictions sont bien respectées par ACS


Investigations

 

 

 

Nouveautés de la version 7.3


• ET ENFIN, , à défaut d'empêcher peut-être souhaitez-vous savoir qui a fait quoi :

    Audit sécurité

        
            

     Le système propose depuis la V2 une fonction d'audit (via un journal)          
      permettant de garder trace de certaines actions utilisateur.
                                                                                   
     Depuis la V2R30 il est possible de paramétrer cette fonction                   
                                                                                 ...
      . par objet
                                                                                    
            définir les actions entreprises sur cet objet à tracer
    
                    *NONE   aucune trace                 *CHANGE les modifications                 *ALL    toute utilisation                 *USRPRF suivant le profil utilisant cet objet <---------   . par profil                                                         !                                                                        !         définir le niveau de trace pour les objets ayant *USRPRF <------    Fin                                                                                          définir les actions système à tracer *NONE = suivant QAUDLVL                                                          *xxxx = action à tracer           

                                                                
      valeur système QAUDCTL                   ( *NONE = aucune action de trace)
                                   et/ou
             trace/objet             !           trace/actions du profil            
              *OBJAUD                !            *AUDLVL 
                 !                   !               !                             
                 !                   !      ------------------------------          
                 !                   !      !                            !       ...
            CHGOBJAUD OBJ()          !      !                            !
                                     !      !                            !          
               OBJAUD(*NONE)  =rien  !      !                            !
                     (*CHANGE)=modifs!   CHGUSRAUD USRPRF() !           QAUDLVL 
                     (*ALL)   =tout  !                      !           (sysval)
                     (*USRPRF)= <----!--> OBJAUD(*NONE)     !
                                     !          (*CHANGE)   ! actions à tracer
                                     !          (*ALL)      !  pour tous les
     *USRPRF = suivant indications   !                      ! profils du système
                liées au profil.     ! !--AUDLVL(*xxxx)     !
                                     ! !                    !     ^             Fin 
                                     ! ->  actions à tracer !     !                
                                     ! (en plus de QAUDLVL)-!-----!                 
                                     ! pour ce profil       !                      

    Mise en place  1/ création d'un récepteur de journal (CRTJRNRCV)
                2/ création d'un journal QAUDJRN dans QSYS (CRTJRN)
                3/ renseignement des valeurs système QAUDCTL et QAUDLVL
                          voir les valeurs ci_desssous
                4/ CHGOBJAUD pour un audit par objet
                 5/ CHGUSRAUD pour un audit par profil

      Pour les objets :
           La valeur par défaut est *NONE
           Vous pouvez forcer une valeur pour les objets sensibles           (certaines commandes système par exemple)
           ou bien indiquer que cela est fonction du profil
              DANS CE CAS UNIQUEMENT on tiendra compte du paramètre OBJAUD            de la commande CHGUSRAUD.
     Pour les actions utilisateur :
           La valeur système prime avant toutes choses. (dft = *NONE)
           Les actions à auditer indiquées au niveau de l'utilisateur sont         considérées en plus.        SI QAUDLVL = *CREATE et profil P1 = *DELETE, le système audit toutes         les créations ET pour P1 les créations et les suppressions.

     .............................................................................. 
     :               Audit des actions utilisateur (AUDLVL) - Aide                : 
     :                                                                            : 
     :                                                                            : 
     :  *NONE                                                                     : 
     :      Aucun niveau d'audit n'est indiqué. Le niveau d'audit pour cet        : 
     :      utilisateur provient de la valeur système QAUDLVL.                    : 
     :                                                                            : 
     :  *CMD                                                                      : 
     :      Les chaînes de commande CL, les commandes de contrôle opérateur et    : 
     :      les procédures de l'environnement 36 sont consignées pour cet         : 
     :      utilisateur.                                                          : 
     :                                                                            : 
     :  *CREATE                                                                   : 
     :      Des postes d'audit sont envoyés lorsque des objets sont créés par     : 
     :      cet utilisateur.                                                      : 
     :                                                                            : 
     :  *DELETE                                                                   : 
     :      Des postes d'audit sont envoyés lorsque des objets sont supprimés     : 
     :      par cet utilisateur.                                                  : 
     : ...........................................................................: 

                                                                          : 
     :  *JOBDTA                                                                   : 
     :      Audit de toutes les données de démarrage et d'arrêt de travail pour   : 
     :      cet utilisateur.                                                      : 
     :                                                                            : 
     :  *OBJMGT                                                                   : 
     :      Audit des modifications de gestion des objets effectuées par cet      : 
     :      utilisateur (un déplacement ou un changement de nom par exemple).     : 
     :                                                                            :                                                                           : 
     :  *PGMADP                                                                   : 
     :      Audit des droits pour cet utilisateur obtenus via une adoption de     : 
     :      programme.                                                            : 
     :                                                                            : 
     :  *SAVRST                                                                   : 
     :      Audit des actions de sauvegarde et de restauration effectuées par     : 
     :      cet utilisateur.                                                      :                                                                             : 
     :                                                                            : 
     :  *SECURITY                                                                 : 
     :      Audit des modifications de sécurité effectuées par cet utilisateur.   : 
     :                                                                            : 
     :  *SERVICE                                                                  : 
     :      Audit de l'utilisation des outils de maintenance du système (SST)     : 
     :      par cet utilisateur.                                                  : 
     :                                                                            : 
     :  *SPLFDTA                                                                  : 
     :      Audit des opérations sur les fichiers spoule effectuées par cet       : 
     :      utilisateur.                                                          : 
     :                                                                            : 
     :  *SYSMGT                                                                   : 
     :      Audit de l'utilisation des fonctions de gestion du système par cet    : 
     :      utilisateur.                                                          : 
     ..............................................................................                                                       : 


    puis DSPJRN pour analyse ....



    Pour lire le contenu du journal, vous devez utiliser la commande DSPJRN, le type de poste, indique l'événement :

Pour une analyse plus complète, placez le résultat de DSPJRN dans un fichier base de données ou utilisez DSPAUDJRNE

 


    Copyright © 1995,2018 VOLUBIS